KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > util > ObjectIDSetTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.util;
5
6 import com.tc.object.ObjectID;
7 import com.tc.test.TCTestCase;
8
9 import java.security.SecureRandom JavaDoc;
10 import java.util.ArrayList JavaDoc;
11 import java.util.Collection JavaDoc;
12 import java.util.Collections JavaDoc;
13 import java.util.HashSet JavaDoc;
14 import java.util.Iterator JavaDoc;
15 import java.util.List JavaDoc;
16 import java.util.Random JavaDoc;
17 import java.util.Set JavaDoc;
18
19 public class ObjectIDSetTest extends TCTestCase {
20
21   interface SetCreator {
22     public Set JavaDoc create();
23
24     public Set JavaDoc create(Collection JavaDoc c);
25   }
26
27   // I am disabling these test coz it times out in Solaris for some reason. Threaddumps show that they are running
28
// iteratorRemoveTest. I think it jsut timesout.
29
public void DISABLEDtestObjectIDSet() {
30     SetCreator creator = new SetCreator() {
31       public Set JavaDoc create() {
32         return new ObjectIDSet();
33       }
34
35       public Set JavaDoc create(Collection JavaDoc c) {
36         return new ObjectIDSet(c);
37       }
38
39     };
40     basicTest(creator);
41     iteratorRemoveTest(creator);
42   }
43
44   public void basicTest(SetCreator creator) {
45     basicTest(creator, 100000, 100000);
46     basicTest(creator, 500000, 100000);
47     basicTest(creator, 100000, 1000000);
48   }
49
50   public void basicTest(SetCreator creator, int distRange, int iterationCount) {
51     long test_start = System.currentTimeMillis();
52     Set JavaDoc s = new HashSet JavaDoc();
53     Set JavaDoc small = creator.create();
54     String JavaDoc cname = small.getClass().getName();
55     System.err.println("Running tests for " + cname + " distRange = " + distRange + " iterationCount = "
56                        + iterationCount);
57     assertTrue(small.isEmpty());
58     assertTrue(small.size() == 0);
59     SecureRandom JavaDoc sr = new SecureRandom JavaDoc();
60     long seed = sr.nextLong();
61     System.err.println("Seed for Random is " + seed);
62     Random JavaDoc r = new Random JavaDoc(seed);
63     for (int i = 0; i < iterationCount; i++) {
64       long l = r.nextInt(distRange);
65       ObjectID id = new ObjectID(l);
66       s.add(id);
67       small.add(id);
68       assertEquals(s.size(), small.size());
69     }
70     Iterator JavaDoc sit = small.iterator();
71     List JavaDoc all = new ArrayList JavaDoc();
72     all.addAll(s);
73     while (sit.hasNext()) {
74       ObjectID i = (ObjectID) sit.next();
75       Assert.eval("FAILED:" + i.toString(), s.remove(i));
76     }
77     Assert.eval(s.size() == 0);
78
79     // test new set creation (which uses cloning
80
long start = System.currentTimeMillis();
81     Set JavaDoc copy = creator.create(all);
82     System.err.println("Time to add all IDs from a collection to a new " + cname + " = "
83                        + (System.currentTimeMillis() - start) + " ms");
84     start = System.currentTimeMillis();
85     Set JavaDoc clone = creator.create(small);
86     System.err.println("Time to add all IDs from an ObjectIDSet to a new " + cname + " = "
87                        + (System.currentTimeMillis() - start) + " ms");
88
89     Collections.shuffle(all);
90     for (Iterator JavaDoc i = all.iterator(); i.hasNext();) {
91       ObjectID rid = (ObjectID) i.next();
92       Assert.eval(small.contains(rid));
93       Assert.eval(clone.contains(rid));
94       Assert.eval(copy.contains(rid));
95       if (!small.remove(rid)) { throw new AssertionError JavaDoc("couldn't remove:" + rid); }
96       if (small.contains(rid)) { throw new AssertionError JavaDoc(rid); }
97       if (!clone.remove(rid)) { throw new AssertionError JavaDoc("couldn't remove:" + rid); }
98       if (clone.contains(rid)) { throw new AssertionError JavaDoc(rid); }
99       if (!copy.remove(rid)) { throw new AssertionError JavaDoc("couldn't remove:" + rid); }
100       if (copy.contains(rid)) { throw new AssertionError JavaDoc(rid); }
101     }
102     for (Iterator JavaDoc i = all.iterator(); i.hasNext();) {
103       ObjectID rid = (ObjectID) i.next();
104       Assert.eval(!small.contains(rid));
105       if (small.remove(rid)) { throw new AssertionError JavaDoc("shouldn't have removed:" + rid); }
106       if (small.contains(rid)) { throw new AssertionError JavaDoc(rid); }
107       if (clone.remove(rid)) { throw new AssertionError JavaDoc("shouldn't have removed:" + rid); }
108       if (clone.contains(rid)) { throw new AssertionError JavaDoc(rid); }
109       if (copy.remove(rid)) { throw new AssertionError JavaDoc("shouldn't have removed:" + rid); }
110       if (copy.contains(rid)) { throw new AssertionError JavaDoc(rid); }
111     }
112     Assert.eval(s.size() == 0);
113     Assert.eval(small.size() == 0);
114     Assert.eval(copy.size() == 0);
115     Assert.eval(clone.size() == 0);
116     System.err.println("Time taken to run basic Test for " + small.getClass().getName() + " is "
117                        + (System.currentTimeMillis() - test_start) + " ms");
118   }
119
120   public void testObjectIDSet2() {
121     SetCreator creator = new SetCreator() {
122       public Set JavaDoc create() {
123         return new ObjectIDSet2();
124       }
125
126       public Set JavaDoc create(Collection JavaDoc c) {
127         return new ObjectIDSet2(c);
128       }
129
130     };
131     basicTest(creator);
132   }
133
134   public void iteratorRemoveTest(SetCreator creator) {
135     SecureRandom JavaDoc sr = new SecureRandom JavaDoc();
136     long seed = sr.nextLong();
137     iteratorRemoveTest(creator, seed);
138   }
139
140   private void iteratorRemoveTest(SetCreator creator, long seed) {
141     Set JavaDoc all = new HashSet JavaDoc();
142     Set JavaDoc oidSet = creator.create();
143     System.err.println("Running iteratorRemoveTest for " + oidSet.getClass().getName() + " and seed is " + seed);
144     Random JavaDoc r = new Random JavaDoc(seed);
145     for (int i = 0; i < 50000; i++) {
146       long l = r.nextInt(100000);
147       ObjectID id = new ObjectID(l);
148       all.add(id);
149       oidSet.add(id);
150     }
151     for (Iterator JavaDoc i = all.iterator(); i.hasNext();) {
152       ObjectID rid = (ObjectID) i.next();
153       Assert.eval(oidSet.contains(rid));
154       for (Iterator JavaDoc j = oidSet.iterator(); j.hasNext();) {
155         ObjectID crid = (ObjectID) j.next();
156         if (crid.equals(rid)) {
157           j.remove();
158           break;
159         }
160       }
161     }
162     Assert.eval(oidSet.size() == 0);
163   }
164
165   // See the comment above
166
public void DISABLEDtestFailedCase() {
167     System.err.println("\nRunning testFailedCase()... ");
168     SetCreator creator = new SetCreator() {
169       public Set JavaDoc create() {
170         return new ObjectIDSet();
171       }
172
173       public Set JavaDoc create(Collection JavaDoc c) {
174         return new ObjectIDSet(c);
175       }
176
177     };
178     long seed = 1576555335886137186L;
179     iteratorRemoveTest(creator, seed);
180   }
181
182 }
183
Popular Tags