1 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 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 className = SingleOswegoQueueThroughputTestApp.class.getName(); 29 spec = config.getOrCreateSpec(className); 30 String 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 className = SingleOswegoQueueThroughputTestApp.class.getName(); 39 config.addIncludePattern(className); 40 String 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 data) throws InterruptedException { 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 { 56 Object 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 title() { 67 return "Single Shared Oswego Queue Throughput"; 68 } 69 } 70 | Popular Tags |