KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > performance > throughput > SingleOswegoQueueThroughputTestApp


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.throughput;
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 SingleOswegoQueueThroughputTestApp extends AbstractSingleQueueThroughputTestApp {
18
19   private final LinkedQueue rootQueue;
20
21   public SingleOswegoQueueThroughputTestApp(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 = config.getOrCreateSpec(Metronome.class.getName());
28     String JavaDoc className = SingleOswegoQueueThroughputTestApp.class.getName();
29     spec = config.getOrCreateSpec(className);
30     String JavaDoc methodExpression = "* " + className + "*.*(..)";
31     config.addWriteAutolock(methodExpression);
32     spec.addRoot("rootQueue", "rootQueue");
33     new LinkedQueueSpec().visit(visitor, config);
34   }
35   
36   public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig config) {
37     config.addIncludePattern(Metronome.class.getName());
38     String JavaDoc className = SingleOswegoQueueThroughputTestApp.class.getName();
39     config.addIncludePattern(className);
40     String JavaDoc methodExpression = "* " + className + "*.*(..)";
41     config.addWriteAutolock(methodExpression);
42     config.addRoot("rootQueue", className + ".rootQueue");
43     new LinkedQueueSpec().visit(visitor, config);
44   }
45
46   protected void populate(Object JavaDoc data) throws InterruptedException JavaDoc {
47     if (data instanceof Metronome) {
48       synchronized (data) {
49         ((Metronome) data).starttime = System.nanoTime();
50       }
51     }
52     rootQueue.put(data);
53   }
54
55   protected void retrieve() throws InterruptedException JavaDoc {
56     Object JavaDoc data;
57     data = rootQueue.take();
58     if (data instanceof Metronome) {
59       synchronized (data) {
60         ((Metronome) data).endtime = System.nanoTime();
61       }
62       results().add(data);
63     }
64   }
65
66   protected String JavaDoc title() {
67     return "Single Shared Oswego Queue Throughput";
68   }
69 }
70
Popular Tags