DefaultMockTickerTest Class — netty Architecture
Architecture documentation for the DefaultMockTickerTest class in DefaultMockTickerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 15c7b7ca_db5e_f063_6092_a6f83d0d82e5["DefaultMockTickerTest"] 77c6296e_b29e_2d4e_8756_8114654fcb42["DefaultMockTickerTest.java"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|defined in| 77c6296e_b29e_2d4e_8756_8114654fcb42 3321a680_fd0e_d10e_4c0c_22429c80a985["newMockTickerShouldReturnDefaultMockTicker()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| 3321a680_fd0e_d10e_4c0c_22429c80a985 94944c49_08ce_bec0_f24d_9bab512ce669["defaultValues()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| 94944c49_08ce_bec0_f24d_9bab512ce669 c3ab7c1d_7895_3674_0556_577d02511cc9["advanceWithoutWaiters()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| c3ab7c1d_7895_3674_0556_577d02511cc9 9b918b13_8c4e_dbf0_35f0_eceaf65b261f["advanceWithNegativeAmount()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| 9b918b13_8c4e_dbf0_35f0_eceaf65b261f 3d2e9786_8639_114f_37ea_2ade1cf467ad["advanceWithWaiters()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| 3d2e9786_8639_114f_37ea_2ade1cf467ad 6ac2d952_ea1e_74ec_47c5_bd33f9c485df["sleepZero()"] 15c7b7ca_db5e_f063_6092_a6f83d0d82e5 -->|method| 6ac2d952_ea1e_74ec_47c5_bd33f9c485df
Relationship Graph
Source Code
common/src/test/java/io/netty/util/concurrent/DefaultMockTickerTest.java lines 32–148
class DefaultMockTickerTest {
@Test
void newMockTickerShouldReturnDefaultMockTicker() {
assertTrue(Ticker.newMockTicker() instanceof DefaultMockTicker);
}
@Test
void defaultValues() {
final MockTicker ticker = Ticker.newMockTicker();
assertEquals(0, ticker.initialNanoTime());
assertEquals(0, ticker.nanoTime());
}
@Test
void advanceWithoutWaiters() {
final MockTicker ticker = Ticker.newMockTicker();
ticker.advance(42, TimeUnit.NANOSECONDS);
assertEquals(0, ticker.initialNanoTime());
assertEquals(42, ticker.nanoTime());
ticker.advanceMillis(42);
assertEquals(42_000_042, ticker.nanoTime());
}
@Test
void advanceWithNegativeAmount() {
final MockTicker ticker = Ticker.newMockTicker();
assertThrows(IllegalArgumentException.class, () -> {
ticker.advance(-1, TimeUnit.SECONDS);
});
assertThrows(IllegalArgumentException.class, () -> {
ticker.advanceMillis(-1);
});
}
@Timeout(60)
@Test
void advanceWithWaiters() throws Exception {
final List<Thread> threads = new ArrayList<>();
final DefaultMockTicker ticker = (DefaultMockTicker) Ticker.newMockTicker();
final int numWaiters = 4;
final List<FutureTask<Void>> futures = new ArrayList<>();
for (int i = 0; i < numWaiters; i++) {
FutureTask<Void> task = new FutureTask<>(() -> {
try {
ticker.sleep(1, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
throw new CompletionException(e);
}
return null;
});
Thread thread = new Thread(task);
threads.add(thread);
futures.add(task);
thread.start();
}
try {
// Wait for all threads to be sleeping.
for (Thread thread : threads) {
ticker.awaitSleepingThread(thread);
}
// Time did not advance at all, and thus future will not complete.
for (int i = 0; i < numWaiters; i++) {
final int finalCnt = i;
assertThrows(TimeoutException.class, () -> {
futures.get(finalCnt).get(1, TimeUnit.MILLISECONDS);
});
}
// Advance just one nanosecond before completion.
ticker.advance(999_999, TimeUnit.NANOSECONDS);
// All threads should still be sleeping.
for (Thread thread : threads) {
ticker.awaitSleepingThread(thread);
}
Source
Frequently Asked Questions
What is the DefaultMockTickerTest class?
DefaultMockTickerTest is a class in the netty codebase, defined in common/src/test/java/io/netty/util/concurrent/DefaultMockTickerTest.java.
Where is DefaultMockTickerTest defined?
DefaultMockTickerTest is defined in common/src/test/java/io/netty/util/concurrent/DefaultMockTickerTest.java at line 32.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free