Skip to content

Commit 5d7f789

Browse files
valfirstjekh
authored andcommitted
Fix flaky tests: use nanoseconds instead of milliseconds
Operations may take less than 1 millisecond at powerful machines, so rounding to milliseconds results to 0 time duration. Usage of nanoseconds allows to make tests more stable
1 parent c4cb0fe commit 5d7f789

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

browsermob-core/src/test/java/net/lightbody/bmp/proxy/dns/AdvancedHostResolverCacheTest.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void testCanClearDNSCache() {
7070
resolver.resolve("www.msn.com");
7171
long finish = System.nanoTime();
7272

73-
assertNotEquals("Expected non-zero DNS lookup time for www.msn.com after clearing DNS cache", 0, TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS));
73+
assertNotEquals("Expected non-zero DNS lookup time for www.msn.com after clearing DNS cache", 0, finish - start);
7474
}
7575

7676
@Test
@@ -80,17 +80,17 @@ public void testCachedPositiveLookup() {
8080
resolver.resolve("news.bing.com");
8181
long finish = System.nanoTime();
8282

83-
long uncachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
83+
long uncachedLookupNs = finish - start;
8484

85-
assertNotEquals("Expected non-zero DNS lookup time for news.bing.com on first lookup", 0, uncachedLookupMs);
85+
assertNotEquals("Expected non-zero DNS lookup time for news.bing.com on first lookup", 0, uncachedLookupNs);
8686

8787
start = System.nanoTime();
8888
resolver.resolve("news.bing.com");
8989
finish = System.nanoTime();
9090

91-
long cachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
91+
long cachedLookupNs = finish - start;
9292

93-
assertTrue("Expected extremely fast DNS lookup time for news.bing.com on second (cached) lookup. Uncached: " + uncachedLookupMs + "ms; cached: " + cachedLookupMs + "ms.", cachedLookupMs <= uncachedLookupMs / 2);
93+
assertTrue("Expected extremely fast DNS lookup time for news.bing.com on second (cached) lookup. Uncached: " + uncachedLookupNs + "ns; cached: " + cachedLookupNs + "ns.", cachedLookupNs <= uncachedLookupNs / 2);
9494
}
9595

9696
@Test
@@ -99,17 +99,17 @@ public void testCachedNegativeLookup() {
9999
resolver.resolve("fake.notarealaddress");
100100
long finish = System.nanoTime();
101101

102-
long uncachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
102+
long uncachedLookupNs = finish - start;
103103

104-
assertNotEquals("Expected non-zero DNS lookup time for fake.notarealaddress on first lookup", 0, uncachedLookupMs);
104+
assertNotEquals("Expected non-zero DNS lookup time for fake.notarealaddress on first lookup", 0, uncachedLookupNs);
105105

106106
start = System.nanoTime();
107107
resolver.resolve("fake.notarealaddress");
108108
finish = System.nanoTime();
109109

110-
long cachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
110+
long cachedLookupNs = finish - start;
111111

112-
assertTrue("Expected extremely fast DNS lookup time for fake.notarealaddress on second (cached) lookup. Uncached: " + uncachedLookupMs + "ms; cached: " + cachedLookupMs + "ms.", cachedLookupMs <= uncachedLookupMs / 2);
112+
assertTrue("Expected extremely fast DNS lookup time for fake.notarealaddress on second (cached) lookup. Uncached: " + uncachedLookupNs + "ns; cached: " + cachedLookupNs + "ns.", cachedLookupNs <= uncachedLookupNs / 2);
113113
}
114114

115115
@Test
@@ -134,7 +134,7 @@ public void testSetPositiveCacheTtl() throws InterruptedException {
134134
assertNotNull("Collection of resolved addresses should never be null", addresses);
135135
assertNotEquals("Expected to find addresses for www.msn.com", 0, addresses.size());
136136

137-
assertNotEquals("Expected non-zero DNS lookup time for www.msn.com after setting positive cache TTL", 0, TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS));
137+
assertNotEquals("Expected non-zero DNS lookup time for www.msn.com after setting positive cache TTL", 0, finish - start);
138138
}
139139

140140
@Test
@@ -162,7 +162,7 @@ public void testSetNegativeCacheTtl() throws InterruptedException {
162162
assertNotNull("Collection of resolved addresses should never be null", addresses);
163163
assertEquals("Expected to find no addresses for " + fakeAddress, 0, addresses.size());
164164

165-
assertNotEquals("Expected non-zero DNS lookup time for " + fakeAddress + " after setting negative cache TTL", 0, TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS));
165+
assertNotEquals("Expected non-zero DNS lookup time for " + fakeAddress + " after setting negative cache TTL", 0, finish - start);
166166
}
167167

168168
@Test
@@ -184,12 +184,12 @@ public void testSetEternalNegativeCacheTtl() {
184184
addresses = resolver.resolve(fakeAddress);
185185
long finish = System.nanoTime();
186186

187-
long cachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
187+
long cachedLookupNs = finish - start;
188188

189189
assertNotNull("Collection of resolved addresses should never be null", addresses);
190190
assertEquals("Expected to find no addresses for " + fakeAddress, 0, addresses.size());
191191

192-
assertTrue("Expected extremely fast DNS lookup time for " + fakeAddress + " after setting eternal negative cache TTL. Cached lookup time: " + cachedLookupMs + "ms.", cachedLookupMs <= 10);
192+
assertTrue("Expected extremely fast DNS lookup time for " + fakeAddress + " after setting eternal negative cache TTL. Cached lookup time: " + cachedLookupNs + "ns.", cachedLookupNs <= TimeUnit.NANOSECONDS.convert(10, TimeUnit.MILLISECONDS));
193193
}
194194

195195
@Test
@@ -203,7 +203,7 @@ public void testSetEternalPositiveCacheTtl() {
203203
long one = System.nanoTime();
204204
Collection<InetAddress> addresses = resolver.resolve("www.msn.com");
205205
long two = System.nanoTime();
206-
log.info("Time to resolve address without cache: {}ms", TimeUnit.MILLISECONDS.convert(two - one, TimeUnit.NANOSECONDS));
206+
log.info("Time to resolve address without cache: {}ns", two - one);
207207

208208
// make sure there are addresses, since this is a *positive* TTL test
209209
assertNotNull("Collection of resolved addresses should never be null", addresses);
@@ -213,13 +213,13 @@ public void testSetEternalPositiveCacheTtl() {
213213
addresses = resolver.resolve("www.msn.com");
214214
long finish = System.nanoTime();
215215

216-
long cachedLookupMs = TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS);
216+
long cachedLookupNs = finish - start;
217217

218-
log.info("Time to resolve address with cache: {}ms", TimeUnit.MILLISECONDS.convert(finish - start, TimeUnit.NANOSECONDS));
218+
log.info("Time to resolve address with cache: {}ns", cachedLookupNs);
219219

220220
assertNotNull("Collection of resolved addresses should never be null", addresses);
221221
assertNotEquals("Expected to find addresses for www.msn.com", 0, addresses.size());
222222

223-
assertTrue("Expected extremely fast DNS lookup time for www.msn.com after setting eternal negative cache TTL. Cached lookup time: " + cachedLookupMs + "ms.", cachedLookupMs <= 10);
223+
assertTrue("Expected extremely fast DNS lookup time for www.msn.com after setting eternal negative cache TTL. Cached lookup time: " + cachedLookupNs + "ns.", cachedLookupNs <= TimeUnit.NANOSECONDS.convert(10, TimeUnit.MILLISECONDS));
224224
}
225225
}

0 commit comments

Comments
 (0)