@Test public void testAcquireAndGet() throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException { int entries = 1000 * 1000; SharedHashMap<CharSequence, LongValue> map = getSharedMap(entries, 128, 24); LongValue value = new LongValueNative(); LongValue value2 = new LongValueNative(); LongValue value3 = new LongValueNative(); for (int j = 1; j <= 3; j++) { for (int i = 0; i < entries; i++) { CharSequence userCS = getUserCharSequence(i); if (j > 1) { assertNotNull(map.getUsing(userCS, value)); } else { map.acquireUsing(userCS, value); } assertEquals(j - 1, value.getValue()); value.addAtomicValue(1); assertEquals(value2, map.acquireUsing(userCS, value2)); assertEquals(j, value2.getValue()); assertEquals(value3, map.getUsing(userCS, value3)); assertEquals(j, value3.getValue()); } } map.close(); }
@Test public void testPutAndRemove() throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException { String TMP = System.getProperty("java.io.tmpdir"); File file = new File(TMP + "/shm-remove-test"); file.delete(); file.deleteOnExit(); int entries = 100 * 1000; SharedHashMap<CharSequence, CharSequence> map = new SharedHashMapBuilder() .entries(entries) .minSegments(16) .entrySize(32) .putReturnsNull(true) .removeReturnsNull(true) .create(file, CharSequence.class, CharSequence.class); StringBuilder key = new StringBuilder(); StringBuilder value = new StringBuilder(); StringBuilder value2 = new StringBuilder(); for (int j = 1; j <= 3; j++) { for (int i = 0; i < entries; i++) { key.setLength(0); key.append("user:"******"value:").append(i); // System.out.println(key); assertNull(map.getUsing(key, value)); assertNull(map.put(key, value)); assertNotNull(map.getUsing(key, value2)); assertEquals(value.toString(), value2.toString()); assertNull(map.remove(key)); assertNull(map.getUsing(key, value)); } } map.close(); }
@Test public void testGetWithNullContainer() throws Exception { SharedHashMap<CharSequence, LongValue> map = getSharedMap(10 * 1000, 128, 24); map.acquireUsing("key", new LongValueNative()); assertEquals(0, map.getUsing("key", null).getValue()); }
@Test public void testGetWithoutAcquireFirst() throws Exception { SharedHashMap<CharSequence, LongValue> map = getSharedMap(10 * 1000, 128, 24); assertNull(map.getUsing("key", new LongValueNative())); }
@Test public void testGetWithNullKey() throws Exception { SharedHashMap<CharSequence, LongValue> map = getSharedMap(10 * 1000, 128, 24); assertNull(map.getUsing(null, new LongValueNative())); }