After the code inspection, I found that the test was failing because some threads could not finish its task. On the other hand, another thread finishes countDownLatch() and starts assertion execution. This solution will wait which lets other threads finish their task before the assertion execution.
How Has This Been Tested?
With my solution, I run the test 10,000 times with the following command, and the test is never failed.
mvn test -Dtest=org.java_websocket.issues.Issue677Test#testIssue
Types of changes
[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
Checklist:
[X] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
I used mvn clean install -DskipTests -Dcheckstyle.skip
Then I run the mvn test -Dtest=org.java_websocket.issues.Issue677Test#testIssue
The flaky test failure is resolved with my fixes. I run the test 10,000 times, and every time the test passes.
Description
I only added the following code snippet at Line 898 of WebSocketClient.java try { Thread.sleep(100); } catch(InterruptedException e) {}
Related Issue
https://github.com/TooTallNate/Java-WebSocket/issues/1291
Motivation and Context
After the code inspection, I found that the test was failing because some threads could not finish its task. On the other hand, another thread finishes countDownLatch() and starts assertion execution. This solution will wait which lets other threads finish their task before the assertion execution.
How Has This Been Tested?
With my solution, I run the test 10,000 times with the following command, and the test is never failed. mvn test -Dtest=org.java_websocket.issues.Issue677Test#testIssue
Types of changes
Checklist: