KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > FastHashMapTestApp


1 package com.tctest;
2
3 import java.lang.reflect.Field JavaDoc;
4 import java.util.concurrent.BrokenBarrierException JavaDoc;
5 import java.util.concurrent.CyclicBarrier JavaDoc;
6
7 import org.apache.commons.collections.FastHashMap;
8
9 import com.tc.object.config.ConfigVisitor;
10 import com.tc.object.config.DSOClientConfigHelper;
11 import com.tc.object.config.TransparencyClassSpec;
12 import com.tc.simulator.app.ApplicationConfig;
13 import com.tc.simulator.listener.ListenerProvider;
14 import com.tc.util.Assert;
15 import com.tctest.runner.AbstractErrorCatchingTransparentApp;
16
17 public final class FastHashMapTestApp extends
18         AbstractErrorCatchingTransparentApp {
19
20     static final int EXPECTED_THREAD_COUNT = 2;
21
22     private final CyclicBarrier JavaDoc barrier;
23
24     private final FastHashMap clusteredFastHashMap;
25
26     public static void visitL1DSOConfig(final ConfigVisitor visitor,
27             final DSOClientConfigHelper config) {
28         config.addNewModule("clustered-commons-collections-3.1", "1.0.0");
29
30         final String JavaDoc testClass = FastHashMapTestApp.class.getName();
31         config.addIncludePattern(testClass + "$*");
32         
33         final TransparencyClassSpec spec = config.getOrCreateSpec(testClass);
34         spec.addRoot("barrier", "barrier");
35         spec.addRoot("clusteredFastHashMap", "clusteredFastHashMap");
36     }
37
38     public FastHashMapTestApp(final String JavaDoc appId, final ApplicationConfig cfg,
39             final ListenerProvider listenerProvider) {
40         super(appId, cfg, listenerProvider);
41         barrier = new CyclicBarrier JavaDoc(getParticipantCount());
42         clusteredFastHashMap = new FastHashMap();
43         clusteredFastHashMap.setFast(true);
44     }
45
46     protected void runTest() throws Throwable JavaDoc {
47         if (barrier.await() == 0) {
48             addDataToMap(2);
49             letOtherNodeProceed();
50             waitForPermissionToProceed();
51             verifyEntries(4);
52             removeDataFromMap(2);
53             letOtherNodeProceed();
54             waitForPermissionToProceed();
55             verifyEntries(0);
56         } else {
57             waitForPermissionToProceed();
58             verifyEntries(2);
59             addDataToMap(2);
60             letOtherNodeProceed();
61             waitForPermissionToProceed();
62             verifyEntries(2);
63             clusteredFastHashMap.clear();
64             letOtherNodeProceed();
65         }
66         barrier.await();
67     }
68
69     // This is lame but it makes runTest() slightly more readable
70
private void letOtherNodeProceed() throws InterruptedException JavaDoc,
71             BrokenBarrierException JavaDoc {
72         barrier.await();
73     }
74
75     // This is lame but it makes runTest() slightly more readable
76
private void waitForPermissionToProceed() throws InterruptedException JavaDoc,
77             BrokenBarrierException JavaDoc {
78         barrier.await();
79     }
80
81     private void addDataToMap(final int count) {
82         for (int pos = 0; pos < count; ++pos) {
83             clusteredFastHashMap.put(new Object JavaDoc(), new Object JavaDoc());
84         }
85     }
86
87     private void removeDataFromMap(final int count) {
88         for (int pos = 0; pos < count; ++pos) {
89             clusteredFastHashMap.remove(clusteredFastHashMap.keySet()
90                     .iterator().next());
91         }
92     }
93
94     private void verifyEntries(final int count) {
95         Assert.assertEquals(count, clusteredFastHashMap.size());
96         Assert.assertEquals(count, clusteredFastHashMap.keySet().size());
97         Assert.assertEquals(count, clusteredFastHashMap.values().size());
98     }
99
100 }
101
Popular Tags