| 1 4 package com.tctest.performance.throughput; 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 ; 15 import java.util.concurrent.LinkedBlockingQueue ; 16 17 public final class SingleQueueThroughputTestApp extends AbstractSingleQueueThroughputTestApp { 18 19 private final BlockingQueue rootQueue; 20 21 public SingleQueueThroughputTestApp(String appId, ApplicationConfig cfg, ListenerProvider listenerProvider) { 22 super(appId, cfg, listenerProvider); 23 rootQueue = new LinkedBlockingQueue (); 24 } 25 26 public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) { 27 TransparencyClassSpec spec = config.getOrCreateSpec(Metronome.class.getName()); 28 String className = SingleQueueThroughputTestApp.class.getName(); 29 spec = config.getOrCreateSpec(className); 30 String methodExpression = "* " + className + "*.*(..)"; 31 config.addWriteAutolock(methodExpression); 32 spec.addRoot("rootQueue", "rootQueue"); 33 } 34 35 public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig config) { 36 config.addIncludePattern(Metronome.class.getName()); 37 String className = SingleQueueThroughputTestApp.class.getName(); 38 config.addIncludePattern(className); 39 String methodExpression = "* " + className + "*.*(..)"; 40 config.addWriteAutolock(methodExpression); 41 config.addRoot("rootQueue", className + ".rootQueue"); 42 } 43 44 protected void populate(Object data) throws InterruptedException { 45 if (data instanceof Metronome) { 46 synchronized (data) { 47 ((Metronome) data).starttime = System.nanoTime(); 48 } 49 } 50 rootQueue.put(data); 51 } 52 53 protected void retrieve() throws InterruptedException { 54 Object data; 55 data = rootQueue.take(); 56 if (data instanceof Metronome) { 57 synchronized (data) { 58 ((Metronome) data).endtime = System.nanoTime(); 59 } 60 results().add(data); 61 } 62 } 63 64 protected String title() { 65 return "Single Shared Queue Throughput"; 66 } 67 } 68 | Popular Tags |