/** Tests removing an entry, after it has been written */ @Test public void testRemoveSlow() throws Exception { final CompoundStore diskStore = (CompoundStore) createDiskStore(); // Add the entry final String value = "value"; diskStore.put(new Element("key1", value)); diskStore.put(new Element("key2", value)); // Wait for the entry waitShorter(); // Check the entry is there assertEquals(1, diskStore.getOnDiskSize()); assertEquals(2, diskStore.getSize()); Object o1 = diskStore.unretrievedGet("key1"); Object o2 = diskStore.unretrievedGet("key2"); if (o1 instanceof Element) { assertEquals("DiskMarker", o2.getClass().getSimpleName()); } else if (o2 instanceof Element) { assertEquals("DiskMarker", o1.getClass().getSimpleName()); } else { fail("One of the elements should be in memory"); } // Remove it diskStore.remove("key1"); diskStore.remove("key2"); // Check the entry is not there assertEquals(0, diskStore.getSize()); assertEquals(0, diskStore.getOnDiskSize()); assertNull(diskStore.get("key1")); assertNull(diskStore.get("key2")); }
/** Tests adding an entry and waiting for it to be written. */ @Test public void testPutSlow() throws Exception { final CompoundStore diskStore = (CompoundStore) createDiskStore(); // Make sure the element is not found assertEquals(0, diskStore.getSize()); assertNull(diskStore.get("key")); // Add the element final String value = "value"; diskStore.put(new Element("key1", value)); diskStore.put(new Element("key2", value)); // Wait waitShorter(); // Get the element assertEquals(1, diskStore.getOnDiskSize()); assertEquals(2, diskStore.getSize()); Object o1 = diskStore.unretrievedGet("key1"); Object o2 = diskStore.unretrievedGet("key2"); if (o1 instanceof Element) { assertEquals("DiskMarker", o2.getClass().getSimpleName()); } else if (o2 instanceof Element) { assertEquals("DiskMarker", o1.getClass().getSimpleName()); } else { fail("One of the elements should be in memory"); } Element element1 = diskStore.get("key1"); Element element2 = diskStore.get("key2"); assertNotNull(element1); assertNotNull(element2); assertEquals(value, element1.getObjectValue()); assertEquals(value, element2.getObjectValue()); }