KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > performance > faulting > SingleOswegoQueueFaultTestApp


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.tctest.performance.faulting;
5
6 import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
7
8 import com.tc.object.config.ConfigVisitor;
9 import com.tc.object.config.DSOApplicationConfig;
10 import com.tc.object.config.DSOClientConfigHelper;
11 import com.tc.object.config.TransparencyClassSpec;
12 import com.tc.object.config.spec.LinkedQueueSpec;
13 import com.tc.simulator.app.ApplicationConfig;
14 import com.tc.simulator.listener.ListenerProvider;
15 import com.tctest.performance.generate.load.Metronome;
16
17 public final class SingleOswegoQueueFaultTestApp extends AbstractSingleQueueFaultTestApp {
18
19   private final LinkedQueue rootQueue;
20
21   public SingleOswegoQueueFaultTestApp(String JavaDoc appId, ApplicationConfig cfg, ListenerProvider listenerProvider) {
22     super(appId, cfg, listenerProvider);
23     rootQueue = new LinkedQueue();
24   }
25
26   public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) {
27     TransparencyClassSpec spec = visitConfig(visitor, config);
28     spec = config.getOrCreateSpec(Metronome.class.getName());
29     String JavaDoc className = SingleOswegoQueueFaultTestApp.class.getName();
30     spec = config.getOrCreateSpec(className);
31     String JavaDoc methodExpression = "* " + className + "*.*(..)";
32     config.addWriteAutolock(methodExpression);
33     spec.addRoot("rootQueue", "rootQueue");
34     new LinkedQueueSpec().visit(visitor, config);
35   }
36   
37   public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig config) {
38     visitConfig(visitor, config);
39     config.addIncludePattern(Metronome.class.getName());
40     String JavaDoc className = SingleOswegoQueueFaultTestApp.class.getName();
41     config.addIncludePattern(className);
42     String JavaDoc methodExpression = "* " + className + "*.*(..)";
43     config.addWriteAutolock(methodExpression);
44     config.addRoot("rootQueue", className + ".rootQueue");
45     new LinkedQueueSpec().visit(visitor, config);
46   }
47
48   protected void populate(Object JavaDoc data) throws InterruptedException JavaDoc {
49     if (data instanceof Metronome) {
50       synchronized (data) {
51         ((Metronome) data).starttime = System.nanoTime();
52       }
53     }
54     rootQueue.put(data);
55   }
56
57   protected void retrieve() throws InterruptedException JavaDoc {
58     Object JavaDoc data;
59     data = rootQueue.take();
60     if (data instanceof Metronome) {
61       synchronized (data) {
62         ((Metronome) data).endtime = System.nanoTime();
63         ((Metronome) data).object = null; // reference no longer needed
64
}
65       results().add(data);
66     }
67   }
68
69   protected String JavaDoc title() {
70     return "Single Oswego Shared Queue Faulting Throughput";
71   }
72 }
73
Popular Tags