Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Continuous Integration

on: [push]
on: [push, pull_request]

jobs:
Build:
Expand All @@ -12,6 +12,8 @@ jobs:
with:
java-version: '17'
distribution: 'temurin'
- name: Maven Version
run: mvn --version
- name: Build
run: mvn -DskipTests package --file pom.xml

Expand All @@ -25,5 +27,7 @@ jobs:
with:
java-version: '17'
distribution: 'temurin'
- name: Maven Version
run: mvn --version
- name: Test
run: mvn test --file pom.xml
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ publishing {
}

dependencies {
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.13'
testImplementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.13'
testImplementation group: 'junit', name: 'junit', version: '4.13.1'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.15'
testImplementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.15'
testImplementation group: 'org.junit', name: 'junit-bom', version: '5.11.4', ext: 'pom'
}
19 changes: 11 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@
<description>A barebones WebSocket client and server implementation written 100% in Java</description>
<url>https://github.com/TooTallNate/Java-WebSocket</url>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>2.0.13</slf4j.version>
<slf4j.version>2.0.16</slf4j.version>

<!-- Test dependencies versions -->
<junit.version>4.13.1</junit.version>
<junit.version>5.11.4</junit.version>

<!-- Maven plugin versions -->
<bnd.maven.plugin.version>6.4.0</bnd.maven.plugin.version>
Expand Down Expand Up @@ -57,10 +59,11 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Expand Down Expand Up @@ -101,7 +104,7 @@
<goal>compile</goal>
</goals>
<configuration>
<release>7</release>
<release>8</release>
</configuration>
</execution>

Expand Down Expand Up @@ -288,8 +291,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
4 changes: 2 additions & 2 deletions src/main/example/SSLServerLetsEncryptExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.xml.bind.DatatypeConverter;
import org.java_websocket.server.DefaultSSLWebSocketServerFactory;


Expand Down Expand Up @@ -98,7 +97,8 @@ private static byte[] parseDERFromPEM(byte[] pem, String beginDelimiter, String
String data = new String(pem);
String[] tokens = data.split(beginDelimiter);
tokens = tokens[1].split(endDelimiter);
return DatatypeConverter.parseBase64Binary(tokens[0]);
// return DatatypeConverter.parseBase64Binary(tokens[0]);
return null;
}

private static RSAPrivateKey generatePrivateKeyFromDER(byte[] keyBytes)
Expand Down
2 changes: 1 addition & 1 deletion src/main/example/simplelogger.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
org.slf4j.simpleLogger.logFile=System.out
org.slf4j.simpleLogger.defaultLogLevel=trace
org.slf4j.simpleLogger.defaultLogLevel=off
org.slf4j.simpleLogger.showDateTime=true
org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss.SSS
org.slf4j.simpleLogger.showThreadName=false
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/java_websocket/AbstractWebSocket.java
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ protected void startConnectionLostTimer() {
private void restartConnectionLostTimer() {
cancelConnectionLostTimer();
connectionLostCheckerService = Executors
.newSingleThreadScheduledExecutor(new NamedThreadFactory("connectionLostChecker", daemon));
.newSingleThreadScheduledExecutor(new NamedThreadFactory("WebSocketConnectionLostChecker", daemon));
Runnable connectionLostChecker = new Runnable() {

/**
Expand Down
49 changes: 0 additions & 49 deletions src/test/java/org/java_websocket/AllTests.java

This file was deleted.

43 changes: 0 additions & 43 deletions src/test/java/org/java_websocket/client/AllClientTests.java

This file was deleted.

7 changes: 4 additions & 3 deletions src/test/java/org/java_websocket/client/AttachmentTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@

package org.java_websocket.client;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import java.net.URI;
import java.net.URISyntaxException;
import org.java_websocket.handshake.ServerHandshake;
import org.junit.Test;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

public class AttachmentTest {

Expand Down
102 changes: 56 additions & 46 deletions src/test/java/org/java_websocket/client/ConnectBlockingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,65 +4,75 @@
import java.net.*;
import java.util.Set;
import java.util.concurrent.*;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.*;
import org.java_websocket.client.*;
import org.java_websocket.server.WebSocketServer;
import org.java_websocket.util.SocketUtil;
import org.java_websocket.enums.ReadyState;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;

import static org.junit.jupiter.api.Assertions.*;

public class ConnectBlockingTest {

@Test(timeout = 1000)
public void test_ConnectBlockingCleanup() throws Throwable {
@Test
@Timeout(1000)
public void test_ConnectBlockingCleanup() throws Throwable {

Set<Thread> threadSet1 = Thread.getAllStackTraces().keySet();
final CountDownLatch ready = new CountDownLatch(1);
final CountDownLatch accepted = new CountDownLatch(1);

final int port = SocketUtil.getAvailablePort();

/* TCP server which listens to a port, but does not answer handshake */
Thread server = new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.setReuseAddress(true);
ready.countDown();
Socket clientSocket = serverSocket.accept();
accepted.countDown();
} catch (Throwable t) {
assertInstanceOf(InterruptedException.class, t);
}
}
});
server.start();
ready.await();

Set<Thread> threadSet1 = Thread.getAllStackTraces().keySet();
final CountDownLatch ready = new CountDownLatch(1);
final CountDownLatch accepted = new CountDownLatch(1);
WebSocketClient client = new WebSocketClient(URI.create("ws://localhost:" + port)) {
@Override
public void onOpen(ServerHandshake handshake) {
}

final int port = SocketUtil.getAvailablePort();
@Override
public void onClose(int code, String reason, boolean remote) {
}

/* TCP server which listens to a port, but does not answer handshake */
Thread server = new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(port);
ready.countDown();
Socket clientSocket = serverSocket.accept();
accepted.countDown();
} catch (Throwable t) {
assertTrue(t instanceof InterruptedException);
}
}
});
server.start();
ready.await();
@Override
public void onMessage(String message) {
}

WebSocketClient client = new WebSocketClient(URI.create("ws://localhost:" + port)) {
@Override
public void onOpen(ServerHandshake handshake) {
}
@Override
public void onClose(int code, String reason, boolean remote) {}
@Override
public void onMessage(String message) {}
@Override
public void onError(Exception ex) {
ex.printStackTrace();
}
};
boolean connected = client.connectBlocking(100, TimeUnit.MILLISECONDS);
assertEquals("TCP socket should have been accepted", 0, accepted.getCount());
assertFalse("WebSocket should not be connected (as server didn't send handshake)", connected);
@Override
public void onError(Exception ex) {
ex.printStackTrace();
}
};
boolean connected = client.connectBlocking(100, TimeUnit.MILLISECONDS);
assertEquals( 0, accepted.getCount(), "TCP socket should have been accepted");
assertFalse(connected, "WebSocket should not be connected (as server didn't send handshake)");

server.interrupt();
server.join();
server.interrupt();
server.join();

Set<Thread> threadSet2 = Thread.getAllStackTraces().keySet();
assertEquals("no threads left over", threadSet1, threadSet2);
assertTrue("WebSocket is in closed state", client.getReadyState() == ReadyState.CLOSED || client.getReadyState() == ReadyState.NOT_YET_CONNECTED);
}
Set<Thread> threadSet2 = Thread.getAllStackTraces().keySet();
assertEquals(threadSet1, threadSet2, "no threads left over");
assertTrue(client.getReadyState() == ReadyState.CLOSED || client.getReadyState() == ReadyState.NOT_YET_CONNECTED, "WebSocket is in closed state");
}
}
8 changes: 4 additions & 4 deletions src/test/java/org/java_websocket/client/HeadersTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@

package org.java_websocket.client;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import org.java_websocket.handshake.ServerHandshake;
import org.junit.Test;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

public class HeadersTest {

Expand Down
Loading
Loading