Author: jukka
Date: Tue Mar 25 03:28:24 2014
New Revision: 1581211

URL: http://svn.apache.org/r1581211
Log:
OAK-1564: ClockTest on Windows fails

Add 3ms to allow for Thread.sleep() anomalies

Modified:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java?rev=1581211&r1=1581210&r2=1581211&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
 Tue Mar 25 03:28:24 2014
@@ -29,16 +29,22 @@ public class ClockTest {
      * Helper for checking how accurate the system clock is.
      */
     public static void main(String[] args) {
-        System.out.println("average clock granularity: " + 
getAverageClockGranularity());
+        System.out.println(
+                "average clock granularity: " + getAverageClockGranularity());
     }
 
     @Test
     public void testClockDrift() throws InterruptedException {
         ScheduledExecutorService executor =
                 Executors.newSingleThreadScheduledExecutor();
+
+        // Set the drift limit to twice as high as granularity,
+        // plus 3ms for Thread.sleep() inaccuracy in the fast clock
         final long granularity = getAverageClockGranularity();
-        final long limit = (2 * granularity) / 1000; // allow a drift twice as 
high
-        final String diag = "(estimated limit was " + limit + "ms, measured 
granularity was " + ( granularity / 1000f) + "ms)";
+        final long limit = (2 * granularity) / 1000 + 3;
+        final String diag =
+                "(estimated limit was " + limit + "ms,"
+                + " measured granularity was " + (granularity / 1000f) + "ms)";
 
         try {
             Clock[] clocks = new Clock[] {
@@ -49,14 +55,18 @@ public class ClockTest {
 
             for (Clock clock : clocks) {
                 long drift = clock.getTime() - System.currentTimeMillis();
-                assertTrue("unexpected drift: " + Math.abs(drift) + "ms " + 
diag, Math.abs(drift) <= limit);
+                assertTrue(
+                        clock + " unexpected drift: " + drift + "ms " + diag,
+                        Math.abs(drift) <= limit);
             }
 
             Thread.sleep(100);
 
             for (Clock clock : clocks) {
                 long drift = clock.getTime() - System.currentTimeMillis();
-                assertTrue("unexpected drift: " + Math.abs(drift) + "ms " + 
diag, Math.abs(drift) <= limit);
+                assertTrue(
+                        clock + " unexpected drift ater 100ms: " + drift + "ms 
" + diag,
+                        Math.abs(drift) <= limit);
             }
         } finally {
             executor.shutdown();


Reply via email to