You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/02/06 21:00:52 UTC
svn commit: r1823392 -
/tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
Author: markt
Date: Tue Feb 6 21:00:52 2018
New Revision: 1823392
URL: http://svn.apache.org/viewvc?rev=1823392&view=rev
Log:
Make test more robust
Modified:
tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
Modified: tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java?rev=1823392&r1=1823391&r2=1823392&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java Tue Feb 6 21:00:52 2018
@@ -33,6 +33,9 @@ import org.junit.Test;
*/
public class TestSocketServerAnyLocalAddress extends AbstractJniTest {
+ // Excessive but allows for slow systems
+ private static final int TIMEOUT_MICROSECONDS = 10 * 1000 * 1000;
+
private long serverSocket = 0;
private long clientSocket = 0;
@@ -80,8 +83,8 @@ public class TestSocketServerAnyLocalAdd
/* Accept the client connection */
clientSocket = Socket.accept(serverSocket);
- /* Configure a 2ms timeout for reading from client */
- Socket.timeoutSet(clientSocket, 10000);
+ /* Configure a 1s timeout for reading from client */
+ Socket.timeoutSet(clientSocket, TIMEOUT_MICROSECONDS);
byte [] buf = new byte[1];
while (Socket.recv(clientSocket, buf, 0, 1) == 1) {
@@ -122,8 +125,8 @@ public class TestSocketServerAnyLocalAdd
try {
InetSocketAddress connectAddress = getConnectAddress(serverSocket);
java.net.Socket sock = new java.net.Socket();
- sock.connect(connectAddress, 10000);
- sock.setSoTimeout(10000);
+ sock.connect(connectAddress, TIMEOUT_MICROSECONDS);
+ sock.setSoTimeout(TIMEOUT_MICROSECONDS);
OutputStream ou = sock.getOutputStream();
InputStream in = sock.getInputStream();
ou.write('A');
@@ -135,8 +138,8 @@ public class TestSocketServerAnyLocalAdd
}
sock = new java.net.Socket();
- sock.connect(connectAddress, 10000);
- sock.setSoTimeout(10000);
+ sock.connect(connectAddress, TIMEOUT_MICROSECONDS);
+ sock.setSoTimeout(TIMEOUT_MICROSECONDS);
ou = sock.getOutputStream();
ou.write('E');
ou.flush();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1823392 - /tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
Posted by Konstantin Kolinko <kn...@gmail.com>.
2018-02-07 0:00 GMT+03:00 <ma...@apache.org>:
> Author: markt
> Date: Tue Feb 6 21:00:52 2018
> New Revision: 1823392
>
> URL: http://svn.apache.org/viewvc?rev=1823392&view=rev
> Log:
> Make test more robust
>
> Modified:
> tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
>
> Modified: tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java?rev=1823392&r1=1823391&r2=1823392&view=diff
> ==============================================================================
> --- tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java (original)
> +++ tomcat/trunk/test/org/apache/tomcat/jni/TestSocketServerAnyLocalAddress.java Tue Feb 6 21:00:52 2018
> @@ -33,6 +33,9 @@ import org.junit.Test;
> */
> public class TestSocketServerAnyLocalAddress extends AbstractJniTest {
>
> + // Excessive but allows for slow systems
> + private static final int TIMEOUT_MICROSECONDS = 10 * 1000 * 1000;
> +
> private long serverSocket = 0;
> private long clientSocket = 0;
>
> @@ -80,8 +83,8 @@ public class TestSocketServerAnyLocalAdd
> /* Accept the client connection */
> clientSocket = Socket.accept(serverSocket);
>
> - /* Configure a 2ms timeout for reading from client */
> - Socket.timeoutSet(clientSocket, 10000);
> + /* Configure a 1s timeout for reading from client */
> + Socket.timeoutSet(clientSocket, TIMEOUT_MICROSECONDS);
The above comment is wrong. The constant value is 10 seconds.
(The old comment was wrong as well.)
Constant name is ok. JNI Socket method expects microseconds (10^-6 second)
http://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/tomcat/jni/Socket.html#timeoutSet-long-long-
https://en.wikipedia.org/wiki/Microsecond
(Looking up. To be sure I count the zeros correctly).
APR api called here:
http://apr.apache.org/docs/apr/1.6/group__apr__network__io.html#ga945bdbe807ec5635d65a6fd9ddb78c29
http://apr.apache.org/docs/apr/1.6/group__apr__time.html#gaae2129185a395cc393f76fabf4f43e47
> byte [] buf = new byte[1];
> while (Socket.recv(clientSocket, buf, 0, 1) == 1) {
> @@ -122,8 +125,8 @@ public class TestSocketServerAnyLocalAdd
> try {
> InetSocketAddress connectAddress = getConnectAddress(serverSocket);
> java.net.Socket sock = new java.net.Socket();
> - sock.connect(connectAddress, 10000);
> - sock.setSoTimeout(10000);
> + sock.connect(connectAddress, TIMEOUT_MICROSECONDS);
> + sock.setSoTimeout(TIMEOUT_MICROSECONDS);
The above is 1000 times more than expected.
https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#connect(java.net.SocketAddress,%20int)
https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#setSoTimeout(int)
java.net.Socket here expects milliseconds (10^-3 second)
> OutputStream ou = sock.getOutputStream();
> InputStream in = sock.getInputStream();
> ou.write('A');
> @@ -135,8 +138,8 @@ public class TestSocketServerAnyLocalAdd
> }
>
> sock = new java.net.Socket();
Again, a JRE Socket here. Milliseconds (10^-3).
> - sock.connect(connectAddress, 10000);
> - sock.setSoTimeout(10000);
> + sock.connect(connectAddress, TIMEOUT_MICROSECONDS);
> + sock.setSoTimeout(TIMEOUT_MICROSECONDS);
> ou = sock.getOutputStream();
> ou.write('E');
> ou.flush();
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org