Author: markt
Date: Thu Aug 31 08:50:16 2017
New Revision: 1806767
URL: http://svn.apache.org/viewvc?rev=1806767&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61393
Account for resolution of System.nanoTime() to avoid incorrect test failures.
Modified:
tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServer.java
Modified: tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServer.java?rev=1806767&r1=1806766&r2=1806767&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServer.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServer.java Thu Aug 31
08:50:16 2017
@@ -30,11 +30,23 @@ import org.junit.Test;
public class TestSocketServer extends AbstractJniTest {
private static final String HOST = "localhost";
+ private static final long ERROR_MARGIN;
private int port = 0;
private long serverSocket = 0;
private long clientSocket = 0;
+ // Determine the resolution of System.nanoTime() so an appropriate error
+ // margin can be used in tests that use nanoTime()
+ static {
+ long start = System.nanoTime();
+ long end = System.nanoTime();
+ while (end == start) {
+ end = System.nanoTime();
+ }
+ ERROR_MARGIN = 2 * (end - start);
+ }
+
@Before
public void init() throws Exception {
@@ -96,8 +108,10 @@ public class TestSocketServer extends Ab
while (Socket.recv(clientSocket, buf, 0, 1) == 1) {
}
long wait = System.nanoTime() - start;
- Assert.assertFalse("Socket.timeoutSet failed (<1s) [" + wait + "]",
wait < 1000000000);
- Assert.assertFalse("Socket.timeoutSet failed (>2s) [" + wait + "]",
wait > 2000000000);
+ Assert.assertFalse("Socket.timeoutSet failed (<1s) [" + wait + "]",
+ wait < 1000000000 - ERROR_MARGIN);
+ Assert.assertFalse("Socket.timeoutSet failed (>2s) [" + wait + "]",
+ wait > 2000000000 + ERROR_MARGIN);
client.countDown();
client.join();
@@ -124,7 +138,7 @@ public class TestSocketServer extends Ab
}
long wait = System.nanoTime() - start;
Assert.assertFalse("non_blocking client Socket.APR_SO_NONBLOCK failed
(>1ms)",
- wait > 1000000);
+ wait > 1000000 + ERROR_MARGIN);
client.countDown();
client.join();
@@ -149,7 +163,7 @@ public class TestSocketServer extends Ab
}
long wait = System.nanoTime() - start;
Assert.assertFalse("non_blocking client Socket.APR_SO_NONBLOCK failed
(>1ms)",
- wait > 1000000);
+ wait > 1000000 + ERROR_MARGIN);
/* Configure for blocking */
Socket.optSet(clientSocket, Socket.APR_SO_NONBLOCK, 0);
@@ -159,7 +173,7 @@ public class TestSocketServer extends Ab
}
wait = System.nanoTime() - start;
Assert.assertFalse("non_blocking client Socket.APR_SO_NONBLOCK false
failed",
- wait < 1000000);
+ wait < 1000000 - ERROR_MARGIN);
client.countDown();
client.join();
@@ -182,7 +196,7 @@ public class TestSocketServer extends Ab
long wait = System.nanoTime() - start;
Assert.assertTrue("Timeout failed", ok);
Assert.assertFalse("non_blocking accept Socket.APR_SO_NONBLOCK failed
([" + wait + "]>1ms)",
- wait > 1000000);
+ wait > 1000000 + ERROR_MARGIN);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]