|
17 | 17 |
|
18 | 18 | package org.apache.mnemonic.collections;
|
19 | 19 |
|
| 20 | +import java.util.Iterator; |
20 | 21 | import java.nio.ByteBuffer;
|
21 | 22 | import java.util.Random;
|
22 | 23 | import java.util.zip.Checksum;
|
23 |
| -//import java.util.zip.CRC32; |
24 |
| -//import org.apache.commons.lang3.tuple.Pair; |
25 |
| -//import org.apache.commons.lang3.ArrayUtils; |
26 | 24 |
|
27 | 25 | import org.apache.mnemonic.Utils;
|
28 | 26 | import org.apache.mnemonic.NonVolatileMemAllocator;
|
29 |
| -//import org.apache.mnemonic.RestorableAllocator; |
| 27 | +import org.apache.mnemonic.RestorableAllocator; |
| 28 | +import org.apache.mnemonic.ParameterHolder; |
30 | 29 | import org.apache.mnemonic.OutOfHybridMemory;
|
31 | 30 | import org.apache.mnemonic.DurableBuffer;
|
32 | 31 | import org.apache.mnemonic.DurableChunk;
|
33 | 32 | import org.apache.mnemonic.DurableType;
|
34 |
| -//import org.apache.mnemonic.Durable; |
35 |
| -//import org.apache.mnemonic.EntityFactoryProxy; |
| 33 | +import org.apache.mnemonic.EntityFactoryProxy; |
36 | 34 | import org.apache.mnemonic.Reclaim;
|
37 | 35 | import org.apache.commons.lang3.RandomUtils;
|
38 | 36 | import org.testng.annotations.AfterClass;
|
39 | 37 | import org.testng.annotations.BeforeClass;
|
40 | 38 | import org.testng.annotations.Test;
|
| 39 | +import org.testng.AssertJUnit; |
41 | 40 | import org.testng.Assert;
|
42 | 41 |
|
43 | 42 | import sun.misc.Unsafe;
|
@@ -126,33 +125,182 @@ public void tearDown() {
|
126 | 125 | }
|
127 | 126 |
|
128 | 127 | @Test(enabled = true)
|
129 |
| - public void testAddRemoveSetPrimitives() { |
| 128 | + public void testAddRemoveSetIntegers() { |
130 | 129 | DurableType gtypes[] = {DurableType.INTEGER};
|
131 | 130 | DurableHashSet<Integer> set = DurableHashSetFactory.create(m_act, null, gtypes, initialCapacity, false);
|
132 | 131 |
|
133 | 132 | Long handler = set.getHandler();
|
134 | 133 | boolean val;
|
135 |
| - /*for (int i = 0; i < 100; i++) { |
| 134 | + for (int i = 0; i < 10; i++) { |
136 | 135 | val = set.add(i);
|
137 |
| - Assert.assertFalse(val) |
| 136 | + Assert.assertTrue(val); |
138 | 137 | }
|
139 | 138 |
|
140 |
| - for (int i = 0; i < 100; i++) { |
| 139 | + for (int i = 0; i < 10; i++) { |
141 | 140 | val = set.contains(i);
|
142 |
| - Assert.assertTrue(val) |
| 141 | + Assert.assertTrue(val); |
143 | 142 | }
|
144 | 143 |
|
145 |
| - for (int i = 0; i < 100; i++) { |
| 144 | + for (int i = 0; i < 10; i++) { |
146 | 145 | val = set.remove(i);
|
147 |
| - Assert.assertTrue(val) |
| 146 | + Assert.assertTrue(val); |
148 | 147 | }
|
149 | 148 |
|
150 |
| - for (int i = 0; i < 100; i++) { |
| 149 | + for (int i = 0; i < 10; i++) { |
151 | 150 | val = set.contains(i);
|
152 |
| - Assert.assertFalse(val) |
153 |
| - }*/ |
| 151 | + Assert.assertFalse(val); |
| 152 | + } |
| 153 | + |
| 154 | + set.destroy(); |
| 155 | + } |
| 156 | + |
| 157 | + @Test(enabled = true) |
| 158 | + public void testAddRemoveSetStrings() { |
| 159 | + DurableType gtypes[] = {DurableType.STRING}; |
| 160 | + DurableHashSet<String> set = DurableHashSetFactory.create(m_act, null, gtypes, initialCapacity, false); |
| 161 | + |
| 162 | + Long handler = set.getHandler(); |
| 163 | + boolean val; |
| 164 | + for (int i = 0; i < 10; i++) { |
| 165 | + val = set.add("str" + i); |
| 166 | + Assert.assertTrue(val); |
| 167 | + } |
| 168 | + |
| 169 | + for (int i = 0; i < 10; i++) { |
| 170 | + val = set.contains("str" + i); |
| 171 | + Assert.assertTrue(val); |
| 172 | + } |
| 173 | + |
| 174 | + for (int i = 0; i < 10; i++) { |
| 175 | + val = set.remove("str" + i); |
| 176 | + Assert.assertTrue(val); |
| 177 | + } |
| 178 | + |
| 179 | + for (int i = 0; i < 10; i++) { |
| 180 | + val = set.contains("str" + i); |
| 181 | + Assert.assertFalse(val); |
| 182 | + } |
| 183 | + |
| 184 | + set.destroy(); |
| 185 | + } |
| 186 | + |
| 187 | + @Test(enabled = true) |
| 188 | + public void testAddRemoveDurable() { |
| 189 | + DurableType gtypes[] = {DurableType.DURABLE}; |
| 190 | + EntityFactoryProxy efproxies[] = {new EntityFactoryProxy() { |
| 191 | + @Override |
| 192 | + public <A extends RestorableAllocator<A>> Person<Long> restore( |
| 193 | + A allocator, EntityFactoryProxy[] factoryproxys, |
| 194 | + DurableType[] gfields, long phandler, boolean autoreclaim) { |
| 195 | + return PersonFactory.restore(allocator, factoryproxys, gfields, phandler, autoreclaim); |
| 196 | + } |
| 197 | + @Override |
| 198 | + public <A extends RestorableAllocator<A>> Person<Long> restore(ParameterHolder<A> ph) { |
| 199 | + return PersonFactory.restore(ph.getAllocator(), |
| 200 | + ph.getEntityFactoryProxies(), ph.getGenericTypes(), ph.getHandler(), ph.getAutoReclaim()); |
| 201 | + } |
| 202 | + @Override |
| 203 | + public <A extends RestorableAllocator<A>> Person<Long> create( |
| 204 | + A allocator, EntityFactoryProxy[] factoryproxys, |
| 205 | + DurableType[] gfields, boolean autoreclaim) { |
| 206 | + return PersonFactory.create(allocator, factoryproxys, gfields, autoreclaim); |
| 207 | + } |
| 208 | + @Override |
| 209 | + public <A extends RestorableAllocator<A>> Person<Long> create(ParameterHolder<A> ph) { |
| 210 | + return PersonFactory.create(ph.getAllocator(), |
| 211 | + ph.getEntityFactoryProxies(), ph.getGenericTypes(), ph.getAutoReclaim()); |
| 212 | + } |
| 213 | + } }; |
| 214 | + |
| 215 | + Person<Long> person = (Person<Long>) efproxies[0].create(m_act, null, null, false); |
| 216 | + person.setAge((short) 31); |
| 217 | + person.setName("Bob", true); |
| 218 | + |
| 219 | + Person<Long> anotherPerson = (Person<Long>) efproxies[0].create(m_act, null, null, false); |
| 220 | + anotherPerson.setAge((short) 30); |
| 221 | + anotherPerson.setName("Alice", true); |
| 222 | + |
| 223 | + DurableHashSet<Person<Long>> set = DurableHashSetFactory.create(m_act, efproxies, gtypes, initialCapacity, false); |
| 224 | + boolean val = set.add(person); |
| 225 | + AssertJUnit.assertTrue(val); |
| 226 | + val = set.contains(person); |
| 227 | + AssertJUnit.assertTrue(val); |
| 228 | + val = set.contains(anotherPerson); |
| 229 | + AssertJUnit.assertFalse(val); |
| 230 | + val = set.add(anotherPerson); |
| 231 | + AssertJUnit.assertTrue(val); |
| 232 | + val = set.contains(anotherPerson); |
| 233 | + AssertJUnit.assertTrue(val); |
| 234 | + |
| 235 | + val = set.remove(person); |
| 236 | + AssertJUnit.assertTrue(val); |
| 237 | + val = set.contains(person); |
| 238 | + AssertJUnit.assertFalse(val); |
| 239 | + val = set.contains(anotherPerson); |
| 240 | + AssertJUnit.assertTrue(val); |
| 241 | + |
| 242 | + val = set.remove(anotherPerson); |
| 243 | + AssertJUnit.assertTrue(val); |
| 244 | + val = set.contains(anotherPerson); |
| 245 | + AssertJUnit.assertFalse(val); |
154 | 246 |
|
155 | 247 | set.destroy();
|
156 | 248 | }
|
| 249 | + |
| 250 | + @Test(enabled = true) |
| 251 | + public void testSetIterator() { |
| 252 | + DurableType gtypes[] = {DurableType.STRING}; |
| 253 | + DurableHashSet<String> set = DurableHashSetFactory.create(m_act, null, gtypes, initialCapacity, false); |
| 254 | + |
| 255 | + Long handler = set.getHandler(); |
| 256 | + set.add("hello"); |
| 257 | + set.add("world"); |
| 258 | + AssertJUnit.assertEquals(set.getSize(), 2); |
| 259 | + |
| 260 | + Iterator<String> iter = set.iterator(); |
| 261 | + int count = 0; |
| 262 | + String entry = ""; |
| 263 | + while (iter.hasNext()) { |
| 264 | + entry = iter.next(); |
| 265 | + count++; |
| 266 | + if (entry.equals("world")) { |
| 267 | + iter.remove(); |
| 268 | + } |
| 269 | + } |
| 270 | + AssertJUnit.assertEquals(count, 2); |
| 271 | + AssertJUnit.assertEquals(set.getSize(), 1); |
| 272 | + iter = set.iterator(); |
| 273 | + count = 0; |
| 274 | + while (iter.hasNext()) { |
| 275 | + entry = iter.next(); |
| 276 | + iter.remove(); |
| 277 | + count++; |
| 278 | + } |
| 279 | + AssertJUnit.assertEquals(count, 1); |
| 280 | + AssertJUnit.assertEquals(set.getSize(), 0); |
| 281 | + AssertJUnit.assertEquals(entry, "hello"); |
| 282 | + |
| 283 | + iter = set.iterator(); |
| 284 | + count = 0; |
| 285 | + while (iter.hasNext()) { |
| 286 | + entry = iter.next(); |
| 287 | + count++; |
| 288 | + } |
| 289 | + AssertJUnit.assertEquals(count, 0); |
| 290 | + set.add("hello"); |
| 291 | + set.add("world"); |
| 292 | + AssertJUnit.assertEquals(set.getSize(), 2); |
| 293 | + |
| 294 | + iter = set.iterator(); |
| 295 | + count = 0; |
| 296 | + while (iter.hasNext()) { |
| 297 | + entry = iter.next(); |
| 298 | + count++; |
| 299 | + } |
| 300 | + AssertJUnit.assertEquals(count, 2); |
| 301 | + |
| 302 | + set.destroy(); |
| 303 | + } |
| 304 | + |
157 | 305 | }
|
158 | 306 |
|
0 commit comments