]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
a99cb6cd07cb2f4aa37762b25eb1576dfa409990
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.IntegrationTests.test;
2
3 import org.collectionspace.services.IntegrationTests.xmlreplay.ServiceResult;
4 import org.collectionspace.services.IntegrationTests.xmlreplay.XmlReplay;
5 import org.collectionspace.services.IntegrationTests.xmlreplay.XmlReplayTest;
6 import org.collectionspace.services.common.api.Tools;
7
8 import org.testng.annotations.Test;
9
10 import java.util.ArrayList;
11 import java.util.List;
12
13 /**
14         Maven surefire doesn't let you pass stuff on the command line
15         unless you define -DforkMode=never inn the command-line args.
16         So be sure to use a command-line like:
17            mvn -e test -DxmlReplayMaster=dev-master.xml -DforkMode=never -Dtest=XmlReplayDevTest
18  *
19  * User: laramie
20  * $LastChangedRevision:  $
21  * $LastChangedDate:  $
22  */
23 public class XmlReplayDevTest extends XmlReplayTest {
24
25 //    @Test
26     public void runMaster() throws Exception {
27         String masterFile = System.getProperty("xmlReplayMaster");
28         if (Tools.notEmpty(masterFile)){
29             System.out.println("Using masterFile specified in System property: "+masterFile);
30         } else {
31             masterFile = XmlReplay.DEFAULT_DEV_MASTER_CONTROL;
32             System.out.println("Using default masterFile: "+masterFile);
33         }
34         XmlReplay replay = createXmlReplayUsingIntegrationTestsModule("..");
35         List<List<ServiceResult>> list = replay.runMaster(masterFile);
36         logTestForGroup(list, "XmlReplayMasterTest");
37
38        //used for testing load.
39        // bigLoop(masterFile);
40     }
41
42     private void bigLoop(String masterFile){
43         int MAXWORKERS = 20;
44         long start = System.currentTimeMillis();
45         for (int t=0; t<MAXWORKERS; t++){
46             Worker w = new Worker(masterFile, "Worker"+t, this);
47             synchronized (workers){
48                 workers.add(w);
49             }
50             w.start();
51         }
52         while (!quitNow) {
53             Thread.yield();
54         }
55         System.out.println("DONE. workers: "+MAXWORKERS+" time: "+(System.currentTimeMillis()-start));
56         for (Long l: stats){
57             System.out.println(""+l);
58         }
59     }
60
61     private List<Worker> workers = new ArrayList<Worker>();
62     private List<Long> stats = new ArrayList<Long>();
63     private volatile boolean quitNow = false;
64     protected void finished(Worker worker, Long time){
65         synchronized(workers){
66             workers.remove(worker);
67             stats.add(time);
68             if (workers.size()==0){
69                 quitNow = true;
70             }
71             System.out.println("Workers left: "+workers.size());
72             workers.notifyAll();
73         }
74
75     }
76
77     public static class Worker extends Thread{
78         public Worker(String masterFile, String ID, XmlReplayDevTest dtest){
79             super(ID);
80             this.masterFile = masterFile;
81             this.dtest = dtest;
82         }
83         private String masterFile;
84         private XmlReplayDevTest dtest;
85
86         public void run(){
87             try {
88                 long start = System.currentTimeMillis();
89                 System.out.println("RUNNING Master in Worker: "+this.getName());
90                 XmlReplay replay = createXmlReplayUsingIntegrationTestsModule("..");
91                 List<List<ServiceResult>> list = replay.runMaster(masterFile);
92                 logTestForGroup(list, "XmlReplayMasterTest");
93                 long stop = System.currentTimeMillis();
94                 dtest.finished(this, stop-start);
95             } catch (Exception e){
96                 System.out.println("ERROR in Worker: "+e);
97                 return;
98             }
99
100         }
101     }
102 }