1 4 package com.tctest; 5 6 import EDU.oswego.cs.dl.util.concurrent.CyclicBarrier; 7 8 import com.tc.object.config.ConfigVisitor; 9 import com.tc.object.config.DSOClientConfigHelper; 10 import com.tc.object.config.TransparencyClassSpec; 11 import com.tc.object.config.spec.CyclicBarrierSpec; 12 import com.tc.simulator.app.ApplicationConfig; 13 import com.tc.simulator.listener.ListenerProvider; 14 import com.tctest.runner.AbstractTransparentApp; 15 16 import java.util.HashSet ; 17 import java.util.Set ; 18 19 public class LiteralAutoLockTestApp extends AbstractTransparentApp { 20 private Set nodes = new HashSet (); 21 private CyclicBarrier barrier = new CyclicBarrier(2); 22 23 public LiteralAutoLockTestApp(String appId, ApplicationConfig cfg, ListenerProvider listenerProvider) { 24 super(appId, cfg, listenerProvider); 25 } 26 27 public void run() { 28 int size = 0; 29 synchronized ("Steve") { 30 nodes.add(new Object ()); 31 size = nodes.size(); 32 } 33 try { 34 System.out.println("barrier:" + size); 35 barrier.barrier(); 36 System.out.println("barrier out:" + size); 37 } catch (InterruptedException ie) { 38 notifyError(ie); 39 } 40 } 41 42 public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) { 43 String testClass = LiteralAutoLockTestApp.class.getName(); 44 TransparencyClassSpec spec = config.getOrCreateSpec(testClass); 45 46 String methodExpression = "* " + testClass + "*.*(..)"; 47 config.addWriteAutolock(methodExpression); 48 spec.addRoot("nodes", "nodes"); 49 spec.addRoot("barrier", "barrier"); 50 new CyclicBarrierSpec().visit(visitor, config); 51 } 52 } 53 | Popular Tags |