Skip to content

Commit

Permalink
Merge pull request #850 from Andreas-Bur/bug-834
Browse files Browse the repository at this point in the history
Fix issue #834 by starting WebSocketWorker of the WebSocketServer in the start function
  • Loading branch information
marci4 authored Feb 10, 2019
2 parents 564b8aa + f7b7cee commit 8a89706
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/main/java/org/java_websocket/server/WebSocketServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ public WebSocketServer( InetSocketAddress address , int decodercount , List<Draf
for( int i = 0 ; i < decodercount ; i++ ) {
WebSocketWorker ex = new WebSocketWorker();
decoders.add( ex );
ex.start();
}
}

Expand All @@ -229,6 +228,10 @@ public void start() {
if( selectorthread != null )
throw new IllegalStateException( getClass().getName() + " can only be started once." );
new Thread( this ).start();

for( WebSocketWorker ex : decoders ){
ex.start();
}
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/java_websocket/issues/AllIssueTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@
org.java_websocket.issues.Issue732Test.class,
org.java_websocket.issues.Issue764Test.class,
org.java_websocket.issues.Issue765Test.class,
org.java_websocket.issues.Issue825Test.class
org.java_websocket.issues.Issue825Test.class,
org.java_websocket.issues.Issue834Test.class
})
/**
* Start all tests for issues
Expand Down
50 changes: 50 additions & 0 deletions src/test/java/org/java_websocket/issues/Issue834Test.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package org.java_websocket.issues;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import org.java_websocket.util.SocketUtil;
import org.junit.Assert;
import org.junit.Test;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.Set;

public class Issue834Test {

@Test(timeout = 1000)
public void testNoNewThreads() throws IOException {

Set<Thread> threadSet1 = Thread.getAllStackTraces().keySet();

new WebSocketServer(new InetSocketAddress(SocketUtil.getAvailablePort())) {
@Override
public void onOpen(WebSocket conn, ClientHandshake handshake) {
}

@Override
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
}

@Override
public void onMessage(WebSocket conn, String message) {
}

@Override
public void onError(WebSocket conn, Exception ex) {
}

@Override
public void onStart() {
}
};

Set<Thread> threadSet2 = Thread.getAllStackTraces().keySet();

//checks that no threads are started in the constructor
Assert.assertEquals(threadSet1, threadSet2);

}

}

0 comments on commit 8a89706

Please sign in to comment.