]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
0389953bad7f4759145602b4957f2cd7a122e4bf
[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
28         if (true) return;
29         //This was a hack test.
30
31         String masterFile = System.getProperty("xmlReplayMaster");
32         if (Tools.notEmpty(masterFile)){
33             System.out.println("Using masterFile specified in System property: "+masterFile);
34         } else {
35             masterFile = XmlReplay.DEFAULT_DEV_MASTER_CONTROL;
36             System.out.println("Using default masterFile: "+masterFile);
37         }
38         //XmlReplay replay = createXmlReplayUsingIntegrationTestsModule("..");
39         //List<List<ServiceResult>> list = replay.runMaster(masterFile);
40         //logTestForGroup(list, "XmlReplayMasterTest");
41         int MAXWORKERS = 20;
42         long start = System.currentTimeMillis();
43         for (int t=0; t<MAXWORKERS; t++){
44             Worker w = new Worker(masterFile, "Worker"+t, this);
45             synchronized (workers){
46                 workers.add(w);
47             }
48             w.start();
49         }
50         while (!quitNow) {
51             Thread.yield();
52         }
53         System.out.println("DONE. workers: "+MAXWORKERS+" time: "+(System.currentTimeMillis()-start));
54         for (Long l: stats){
55             System.out.println(""+l);
56         }
57     }
58
59     private List<Worker> workers = new ArrayList<Worker>();
60     private List<Long> stats = new ArrayList<Long>();
61     private volatile boolean quitNow = false;
62     protected void finished(Worker worker, Long time){
63         synchronized(workers){
64             workers.remove(worker);
65             stats.add(time);
66             if (workers.size()==0){
67                 quitNow = true;
68             }
69             System.out.println("Workers left: "+workers.size());
70             workers.notifyAll();
71         }
72
73     }
74
75     public static class Worker extends Thread{
76         public Worker(String masterFile, String ID, XmlReplayDevTest dtest){
77             super(ID);
78             this.masterFile = masterFile;
79             this.dtest = dtest;
80         }
81         private String masterFile;
82         private XmlReplayDevTest dtest;
83
84         public void run(){
85             try {
86                 long start = System.currentTimeMillis();
87                 System.out.println("RUNNING Master in Worker: "+this.getName());
88                 XmlReplay replay = createXmlReplayUsingIntegrationTestsModule("..");
89                 List<List<ServiceResult>> list = replay.runMaster(masterFile);
90                 logTestForGroup(list, "XmlReplayMasterTest");
91                 long stop = System.currentTimeMillis();
92                 dtest.finished(this, stop-start);
93             } catch (Exception e){
94                 System.out.println("ERROR in Worker: "+e);
95                 return;
96             }
97
98         }
99     }
100 }