KickJava   Java API By Example, From Geeks To Geeks.

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


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 com.tc.object.config.ConfigVisitor;
7 import com.tc.object.config.DSOApplicationConfig;
8 import com.tc.object.config.DSOClientConfigHelper;
9 import com.tc.object.config.TransparencyClassSpec;
10 import com.tc.simulator.app.ApplicationConfig;
11 import com.tc.simulator.listener.ListenerProvider;
12 import com.tctest.performance.generate.load.Metronome;
13
14 import java.util.concurrent.BlockingQueue JavaDoc;
15 import java.util.concurrent.LinkedBlockingQueue JavaDoc;
16
17 public final class SingleQueueFaultTestApp extends AbstractSingleQueueFaultTestApp {
18
19   private final BlockingQueue JavaDoc rootQueue;
20
21   public SingleQueueFaultTestApp(String JavaDoc appId, ApplicationConfig cfg, ListenerProvider listenerProvider) {
22     super(appId, cfg, listenerProvider);
23     rootQueue = new LinkedBlockingQueue JavaDoc(100);
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 = SingleQueueFaultTestApp.class.getName();
30     spec = config.getOrCreateSpec(className);
31     String JavaDoc methodExpression = "* " + className + "*.*(..)";
32     config.addWriteAutolock(methodExpression);
33     spec.addRoot("rootQueue", "rootQueue");
34   }
35   
36   public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig config) {
37     visitConfig(visitor, config);
38     config.addIncludePattern(Metronome.class.getName());
39     String JavaDoc className = SingleQueueFaultTestApp.class.getName();
40     config.addIncludePattern(className);
41     String JavaDoc methodExpression = "* " + className + "*.*(..)";
42     config.addWriteAutolock(methodExpression);
43     config.addRoot("rootQueue", className + ".rootQueue");
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         ((Metronome) data).object = null; // reference no longer needed
62
}
63       results().add(data);
64     }
65   }
66
67   protected String JavaDoc title() {
68     return "Single Shared Queue Faulting Throughput";
69   }
70 }
71
Popular Tags