KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tcsimulator > ContainerBuilder


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tcsimulator;
5
6 import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
7
8 import com.tc.exception.TCRuntimeException;
9 import com.tc.object.config.ConfigVisitor;
10 import com.tc.object.config.DSOApplicationConfig;
11 import com.tc.simulator.app.ApplicationBuilder;
12 import com.tc.simulator.app.DSOApplicationBuilder;
13 import com.tc.simulator.app.ErrorContext;
14 import com.tc.simulator.app.GlobalIdGenerator;
15 import com.tc.simulator.container.Container;
16 import com.tc.simulator.container.ContainerConfig;
17 import com.tc.simulator.container.ContainerStateFactory;
18 import com.tc.simulator.control.Control;
19 import com.tc.simulator.crasher.ControlProvider;
20 import com.tc.simulator.listener.ResultsListener;
21 import com.tcsimulator.container.ContainerStateFactoryObject;
22
23 public class ContainerBuilder implements Runnable JavaDoc, ResultsListener {
24
25   private static final LinkedQueue statsOutputQueue = new LinkedQueue();
26
27   private final TestSpec testSpec;
28   private final String JavaDoc vmName;
29
30   public ContainerBuilder(String JavaDoc vmName) {
31     this.vmName = vmName;
32     testSpec = new TestSpec();
33   }
34
35   public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig cfg) {
36     cfg.addRoot("testSpec", ContainerBuilder.class.getName() + ".testSpec");
37     cfg.addIncludePattern(ContainerBuilder.class.getName());
38     cfg.addWriteAutolock("* " + ContainerBuilder.class.getName() + ".*(..)");
39     visitor.visitDSOApplicationConfig(cfg, ControlProviderImpl.class);
40     visitor.visitDSOApplicationConfig(cfg, ControlImpl.class);
41     visitor.visitDSOApplicationConfig(cfg, DistributedGlobalIdGenerator.class);
42     visitor.visitDSOApplicationConfig(cfg, ContainerStateFactoryObject.class);
43   }
44
45   private void println(Object JavaDoc msg) {
46     System.out.println("ContainerBuilder: " + msg);
47   }
48
49   public void run() {
50     ContainerStateFactory containerStateFactory;
51     Control control;
52     GlobalIdGenerator globalIdGenerator;
53     ApplicationBuilder appBuilder;
54
55     try {
56       containerStateFactory = new ContainerStateFactoryObject(statsOutputQueue);
57       globalIdGenerator = new DistributedGlobalIdGenerator();
58       ControlProvider provider = new ControlProviderImpl();
59       control = provider.getOrCreateControlByName(getClass().getName(), this.testSpec.getGlobalVmCount());
60       appBuilder = new DSOApplicationBuilder(testSpec.getTestConfig(), Thread.currentThread().getContextClassLoader());
61     } catch (Throwable JavaDoc t) {
62       throw new TCRuntimeException(t);
63     }
64     Container container = new Container(new ContainerConfigObject(), containerStateFactory, globalIdGenerator, control,
65                                         this, appBuilder);
66     container.run();
67   }
68
69   public static void main(String JavaDoc[] args) throws Exception JavaDoc {
70     String JavaDoc vmName = args[0];
71     new ContainerBuilder(vmName).run();
72   }
73
74   private final class ContainerConfigObject implements ContainerConfig {
75
76     public int getApplicationInstanceCount() {
77       synchronized (testSpec) {
78         return testSpec.getContainerSpecFor(vmName).getExecutionCount();
79       }
80     }
81
82     public long getContainerStartTimeout() {
83       return 5 * 60 * 1000;
84     }
85
86     public long getApplicationStartTimeout() {
87       return 5 * 60 * 1000;
88     }
89
90     public long getApplicationExecutionTimeout() {
91       synchronized (testSpec) {
92         return testSpec.getAppExecutionTimeout();
93       }
94     }
95
96     public boolean dumpErrors() {
97       return true;
98     }
99
100     public boolean dumpOutput() {
101       return true;
102     }
103
104     public boolean aggregate() {
105       return false;
106     }
107
108     public boolean stream() {
109       return false;
110     }
111
112     public boolean isMaster() {
113       return false;
114     }
115
116   }
117
118   /*********************************************************************************************************************
119    * ResultsListener interface
120    */

121
122   public void setGlobalId(long globalId) {
123     return;
124   }
125
126   public void notifyStartTimeout() {
127     println("Start timeout!");
128     Thread.dumpStack();
129   }
130
131   public void notifyExecutionTimeout() {
132     println("Execution timeout!");
133     Thread.dumpStack();
134   }
135
136   public void notifyError(ErrorContext ectxt) {
137     ectxt.dump(System.err);
138   }
139
140   public void notifyResult(Object JavaDoc result) {
141     println("Result: " + result);
142   }
143 }
144
Popular Tags