--- jsr166/src/test/tck/SystemTest.java 2015/04/25 04:55:31 1.13 +++ jsr166/src/test/tck/SystemTest.java 2017/05/14 03:09:25 1.14 @@ -27,43 +27,22 @@ public class SystemTest extends JSR166Te /** * Nanos between readings of millis is no longer than millis (plus - * possible rounding). + * possible rounding), and vice versa. * This shows only that nano timing not (much) worse than milli. */ - public void testNanoTime1() throws InterruptedException { - long m1 = System.currentTimeMillis(); - Thread.sleep(1); - long n1 = System.nanoTime(); - Thread.sleep(SHORT_DELAY_MS); - long n2 = System.nanoTime(); - Thread.sleep(1); - long m2 = System.currentTimeMillis(); - long millis = m2 - m1; - long nanos = n2 - n1; - assertTrue(nanos >= 0); - long nanosAsMillis = nanos / 1000000; - assertTrue(nanosAsMillis <= millis + MILLIS_ROUND); - } - - /** - * Millis between readings of nanos is less than nanos, adjusting - * for rounding. - * This shows only that nano timing not (much) worse than milli. - */ - public void testNanoTime2() throws InterruptedException { - long n1 = System.nanoTime(); + public void testNanoTime() throws InterruptedException { + long m0 = System.currentTimeMillis(); + long n0 = System.nanoTime(); Thread.sleep(1); long m1 = System.currentTimeMillis(); - Thread.sleep(SHORT_DELAY_MS); + long n1 = System.nanoTime(); + Thread.sleep(50); // avoid possibly scaled SHORT_DELAY_MS long m2 = System.currentTimeMillis(); - Thread.sleep(1); long n2 = System.nanoTime(); - long millis = m2 - m1; - long nanos = n2 - n1; - - assertTrue(nanos >= 0); - long nanosAsMillis = nanos / 1000000; - assertTrue(millis <= nanosAsMillis + MILLIS_ROUND); + Thread.sleep(1); + long m3 = System.currentTimeMillis(); + long n3 = System.nanoTime(); + assertTrue((n2 - n1) / 1_000_000 <= m3 - m0 + MILLIS_ROUND); + assertTrue(m2 - m1 <= (n3 - n0) / 1_000_000 + MILLIS_ROUND); } - }