1 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 ; 15 import java.util.concurrent.LinkedBlockingQueue ; 16 17 public final class SingleQueueFaultTestApp extends AbstractSingleQueueFaultTestApp { 18 19 private final BlockingQueue rootQueue; 20 21 public SingleQueueFaultTestApp(String appId, ApplicationConfig cfg, ListenerProvider listenerProvider) { 22 super(appId, cfg, listenerProvider); 23 rootQueue = new LinkedBlockingQueue (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 className = SingleQueueFaultTestApp.class.getName(); 30 spec = config.getOrCreateSpec(className); 31 String 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 className = SingleQueueFaultTestApp.class.getName(); 40 config.addIncludePattern(className); 41 String methodExpression = "* " + className + "*.*(..)"; 42 config.addWriteAutolock(methodExpression); 43 config.addRoot("rootQueue", className + ".rootQueue"); 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 ((Metronome) data).object = null; } 63 results().add(data); 64 } 65 } 66 67 protected String title() { 68 return "Single Shared Queue Faulting Throughput"; 69 } 70 } 71 | Popular Tags |