Running
Tomcat
Set the following system properties
- org.apache.tomcat.websocket.DISABLE_BUILTIN_EXTENSIONS=true
- org.apache.tomcat.websocket.ALLOW_UNSUPPORTED_EXTENSIONS=true
- org.apache.tomcat.websocket.STREAMSDEFAULT_DROPPROCESS_EMPTY_MESSAGESPERIOD=trueorg.apache.tomcat.websocket.DEFAULT_PROCESS_PERIOD=00
Make the following changes to server.xml
- add backgroundProcessorDelay="1" to the <Engine ... > element
Test Suite
Download latest nightly promoted build
httpshttp://download.eclipse.org/ee4j/jakartaee-tck/8.0.1/nightly/websockettck-jakartaee8/promoted/websocket-tck-1.1.1_latest.zip
Extract to WEBSOCKET_TCK_HOME
...
websocket.classes=/home/mark/repos/asf-public/tomcat/trunk/output/build/lib/tomcat-websocket.jar:/home/mark/repos/asf-public/tomcat/trunk/output/build/lib/servlet-api.jar:/home/mark/repos/asf-public/tomcat/trunk/output/build/lib/tomcat-util.jar:/home/mark/repos/asf-public/tomcat/trunk/output/build/lib/tomcat-api.jar:/home/mark/repos/asf-public/tomcat/trunk/output/build/bin/tomcat-juli.jar
Add the following to the command.testExecute property (to prevent entropy issues slowing the tests down)
-Djava.security.egd=file:/dev/./urandom
Do not reduce ws_wait below the default of 5s as it is likely to trigger test failures.
set JAVA_HOME
Run ant gui
Accept the defaults and then run the tests
Expected results (Java EE 8)
A default 9.0.x build (as of yyyy-mm-dd) without any configuration triggers 24 test failures20 test failures
To be confirmed. Tomcat 9 was last tested with a nightly build of the WebSocket 1.1 TCK. It has yet to be tested with the 1.1.1 release of the TCK.
2 unclear specification (URI)
3 11 Faulty tests (batching)
- 1 x https://github.com/eclipse-ee4j/jakartaee-tck/issues/33 (batching)
- 2 x https://github.com/eclipse-ee4j/jakartaee-tck/issues/35 (batching)
- 8 x https://github.com/eclipse-ee4j/jakartaee-tck/issues/37 (async concurrency)
5 9 Tests 'fixed' by appropriate system property configuration (see above)
- 4 x extensions (TCK assumes invalid extensions are ignored)4 x exception in encoder leading (incorrectly?) to empty message
- 1 x timeout related test expects more frequent expiration checks
8 failures due to concurrent messages
- com/sun/ts/tests/websocket/ee/javax/websocket/remoteendpoint/async/*
- Need to raise a spec issue
2 intermittent failures (cause unknown)
- com/sun/ts/tests/websocket/ee/javax/websocket/session/WSClient.java#setTimeout1Test
- com/sun/ts/tests/websocket/spec/servercontainer/addendpoint/WSClient.java#setTimeout1Test
- This looks caused by the client side and a race condition of some sort on the session open state, if I add debug information in WsFrameClient.processSocketRead, the issue becomes very hard to reproduce. I propose adding if (wsSession.isOpen()) around the processInputBuffer(); in WsFrameClient.processSocketRead, this explicitly avoids writing any new input data after the session timeout.
2 Tests 'fixed' by appropriate server.xml configuration
- 2 x timeout related tests requiring even more frequent expiration checks
- Still see intermittent failures on these
A further 19 A further 15 test failures caused by Tomcat bugs have been fixed
- 4 x Deployment failure didn't undeploy all WebSockets
- 4 x @PathParam not validated for correct type
- 6 x Throw DeploymentException rather than IAE
- 1 x Improve checking of multiple @OnMessage for the same type
- 4 x exception in encoder leading (incorrectly) to empty message