public void testExpiredData() throws InterruptedException { dc.put("k", "v", -1, 6000000); Thread.sleep(100); InternalCacheEntry entry = dc.get("k"); assert entry.getClass().equals(transienttype()); assert entry.getLastUsed() <= System.currentTimeMillis(); long entryLastUsed = entry.getLastUsed(); Thread.sleep(100); entry = dc.get("k"); assert entry.getLastUsed() > entryLastUsed; dc.put("k", "v", -1, 0); dc.purgeExpired(); dc.put("k", "v", 6000000, -1); Thread.sleep(100); assert dc.size() == 1; entry = dc.get("k"); assert entry != null : "Entry should not be null!"; assert entry.getClass().equals(mortaltype()) : "Expected " + mortaltype() + ", was " + entry.getClass().getSimpleName(); assert entry.getCreated() <= System.currentTimeMillis(); dc.put("k", "v", 0, -1); Thread.sleep(10); assert dc.get("k") == null; assert dc.size() == 0; dc.put("k", "v", 0, -1); Thread.sleep(100); assert dc.size() == 1; dc.purgeExpired(); assert dc.size() == 0; }