]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
a184cd7d5c77eb231d72b1f93b6a1d7f9fa73581
[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         if (replay.masterConfigFileExists(masterFile)){           // CSPACE-4027
36              List<List<ServiceResult>> list = replay.runMaster(masterFile);
37              logTestForGroup(list, "XmlReplayMasterTest");
38         } else {
39             System.out.println("XmlReplayDevTest skipping local dev test "+masterFile+" because it doesn't exist in "+replay.getBaseDir()+".  This is expected behavior on a production installation.");
40         }
41
42
43        //used for testing load.
44        // bigLoop(masterFile);
45     }
46
47     private void bigLoop(String masterFile){
48         int MAXWORKERS = 20;
49         long start = System.currentTimeMillis();
50         for (int t=0; t<MAXWORKERS; t++){
51             Worker w = new Worker(masterFile, "Worker"+t, this);
52             synchronized (workers){
53                 workers.add(w);
54             }
55             w.start();
56         }
57         while (!quitNow) {
58             Thread.yield();
59         }
60         System.out.println("DONE. workers: "+MAXWORKERS+" time: "+(System.currentTimeMillis()-start));
61         for (Long l: stats){
62             System.out.println(""+l);
63         }
64     }
65
66     private List<Worker> workers = new ArrayList<Worker>();
67     private List<Long> stats = new ArrayList<Long>();
68     private volatile boolean quitNow = false;
69     protected void finished(Worker worker, Long time){
70         synchronized(workers){
71             workers.remove(worker);
72             stats.add(time);
73             if (workers.size()==0){
74                 quitNow = true;
75             }
76             System.out.println("Workers left: "+workers.size());
77             workers.notifyAll();
78         }
79
80     }
81
82     public static class Worker extends Thread{
83         public Worker(String masterFile, String ID, XmlReplayDevTest dtest){
84             super(ID);
85             this.masterFile = masterFile;
86             this.dtest = dtest;
87         }
88         private String masterFile;
89         private XmlReplayDevTest dtest;
90
91         public void run(){
92             try {
93                 long start = System.currentTimeMillis();
94                 System.out.println("RUNNING Master in Worker: "+this.getName());
95                 XmlReplay replay = createXmlReplayUsingIntegrationTestsModule("..");
96                 List<List<ServiceResult>> list = replay.runMaster(masterFile);
97                 logTestForGroup(list, "XmlReplayMasterTest");
98                 long stop = System.currentTimeMillis();
99                 dtest.finished(this, stop-start);
100             } catch (Exception e){
101                 System.out.println("ERROR in Worker: "+e);
102                 return;
103             }
104
105         }
106     }
107 }