@Override public Void call() throws Exception { ticker.read(); return null; } });
/** @return the current time in milliseconds */ protected final long currentTimeMillis() { return TimeUnit.NANOSECONDS.toMillis(ticker.read()); }
public void testAutoIncrementStep_resetToZero() { FakeTicker ticker = new FakeTicker().setAutoIncrementStep(10, TimeUnit.NANOSECONDS); assertEquals(0, ticker.read()); assertEquals(10, ticker.read()); assertEquals(20, ticker.read()); for (TimeUnit timeUnit : EnumSet.allOf(TimeUnit.class)) { ticker.setAutoIncrementStep(0, timeUnit); assertEquals( "Expected no auto-increment when setting autoIncrementStep to 0 " + timeUnit, 30, ticker.read()); } }
static void expireEntries(LocalCache<?, ?> cchm, long expiringTime, FakeTicker ticker) { for (Segment<?, ?> segment : cchm.segments) { drainRecencyQueue(segment); } ticker.advance(2 * expiringTime, TimeUnit.MILLISECONDS); long now = ticker.read(); for (Segment<?, ?> segment : cchm.segments) { expireEntries(segment, now); assertEquals("Expiration queue must be empty by now", 0, writeQueueSize(segment)); assertEquals("Expiration queue must be empty by now", 0, accessQueueSize(segment)); assertEquals("Segments must be empty by now", 0, segmentSize(segment)); } cchm.processPendingNotifications(); }
@GwtIncompatible // concurrency public void testConcurrentAdvance() throws Exception { final FakeTicker ticker = new FakeTicker(); int numberOfThreads = 64; runConcurrentTest( numberOfThreads, new Callable<Void>() { @Override public Void call() throws Exception { // adds two nanoseconds to the ticker ticker.advance(1L); Thread.sleep(10); ticker.advance(1L); return null; } }); assertEquals(numberOfThreads * 2, ticker.read()); }
map.put(key, value); ReferenceEntry<Object, Object> entry = map.getEntry(key); assertTrue(map.isLive(entry, ticker.read())); assertEquals(1, segment.writeQueue.size()); segment.recordRead(entry, ticker.read()); segment.expireEntries(ticker.read()); assertSame(value, map.get(key)); assertSame(entry, segment.writeQueue.peek()); segment.recordRead(entry, ticker.read()); segment.expireEntries(ticker.read()); assertSame(value, map.get(key)); assertSame(entry, segment.writeQueue.peek()); segment.expireEntries(ticker.read()); assertNull(map.get(key)); assertTrue(segment.writeQueue.isEmpty());
@GwtIncompatible // concurrency public void testConcurrentAutoIncrementStep() throws Exception { int incrementByNanos = 3; final FakeTicker ticker = new FakeTicker().setAutoIncrementStep(incrementByNanos, TimeUnit.NANOSECONDS); int numberOfThreads = 64; runConcurrentTest( numberOfThreads, new Callable<Void>() { @Override public Void call() throws Exception { ticker.read(); return null; } }); assertEquals(incrementByNanos * numberOfThreads, ticker.read()); }
map.put(key, value); ReferenceEntry<Object, Object> entry = map.getEntry(key); assertTrue(map.isLive(entry, ticker.read())); segment.recordRead(entry, ticker.read()); segment.expireEntries(ticker.read()); assertTrue(map.containsKey(key)); assertSame(entry, segment.accessQueue.peek()); segment.recordRead(entry, ticker.read()); segment.expireEntries(ticker.read()); assertTrue(map.containsKey(key)); assertSame(entry, segment.accessQueue.peek()); segment.recordRead(entry, ticker.read()); segment.expireEntries(ticker.read()); assertTrue(map.containsKey(key)); assertSame(entry, segment.accessQueue.peek()); segment.expireEntries(ticker.read()); assertTrue(map.containsKey(key)); assertSame(entry, segment.accessQueue.peek()); assertFalse(map.containsKey(key)); assertNull(map.get(key)); segment.expireEntries(ticker.read()); assertFalse(map.containsKey(key)); assertNull(map.get(key));
dummy.setAccessTime(ticker.read() - 2); assertNull(segment.get(key, hash)); assertFalse(segment.containsKey(key, hash));
@Override public Void call() throws Exception { ticker.read(); return null; } });
@Test public void testRunTimeoutWithTimeoutLess() { queue.sendRequest(mockRequest, mockCallback); ticker.advance(AbstractClientConnection.DEFAULT_BACKEND_ALIVE_TIMEOUT_NANOS - 1); Optional<Long> ret = queue.checkTimeout(ticker.read()); assertNotNull(ret); assertTrue(ret.isPresent()); }
@Test public void testRunTimeoutWithTimeoutExact() { setupBackend(); queue.sendRequest(mockRequest, mockCallback); ticker.advance(AbstractClientConnection.DEFAULT_BACKEND_ALIVE_TIMEOUT_NANOS); Optional<Long> ret = queue.checkTimeout(ticker.read()); assertNull(ret); }