Skip to content

Commit 9fab08e

Browse files
committed
添加 solon-server http-ws 的单测
1 parent 47f3083 commit 9fab08e

File tree

12 files changed

+263
-3
lines changed

12 files changed

+263
-3
lines changed

solon-jakarta-projects/solon-server/solon-server-jetty-add-websocket-jakarta/pom.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<description>Java project for solon</description>
1919

2020
<dependencies>
21+
<dependency>
22+
<groupId>org.noear</groupId>
23+
<artifactId>solon-server-jetty-jakarta</artifactId>
24+
</dependency>
25+
2126
<dependency>
2227
<groupId>jakarta.servlet</groupId>
2328
<artifactId>jakarta.servlet-api</artifactId>
@@ -29,6 +34,25 @@
2934
<artifactId>jetty-websocket-jetty-server</artifactId>
3035
<version>${jetty.jakarta.version}</version>
3136
</dependency>
37+
38+
<dependency>
39+
<groupId>org.noear</groupId>
40+
<artifactId>solon-test</artifactId>
41+
<scope>test</scope>
42+
</dependency>
43+
44+
<dependency>
45+
<groupId>org.noear</groupId>
46+
<artifactId>solon-logging-simple</artifactId>
47+
<scope>test</scope>
48+
</dependency>
49+
50+
<dependency>
51+
<groupId>org.noear</groupId>
52+
<artifactId>java-websocket-ns</artifactId>
53+
<version>${java-websocket-ns.version}</version>
54+
<scope>test</scope>
55+
</dependency>
3256
</dependencies>
3357

3458
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package features.jetty.ws;
2+
3+
import org.java_websocket.client.WebSocketClient;
4+
import org.junit.jupiter.api.Test;
5+
import org.noear.java_websocket.client.SimpleWebSocketClient;
6+
import org.noear.solon.test.SolonTest;
7+
8+
import java.net.URI;
9+
import java.util.concurrent.CompletableFuture;
10+
import java.util.concurrent.TimeUnit;
11+
12+
/**
13+
*
14+
* @author noear 2025/12/3 created
15+
*
16+
*/
17+
@SolonTest(ServerApp.class)
18+
public class ClientTest {
19+
@Test
20+
public void test_async_message3_self_ws() throws Throwable {
21+
CompletableFuture<Boolean> check = new CompletableFuture<>();
22+
WebSocketClient webSocketClient = new SimpleWebSocketClient(URI.create("ws://localhost:8080/demo")){
23+
@Override
24+
public void onMessage(String message) {
25+
System.out.println("异步发送-ws-self::实例监到,收到了:" + message);
26+
check.complete(true);
27+
}
28+
};
29+
webSocketClient.connectBlocking();
30+
31+
//异步发
32+
webSocketClient.send("test0");
33+
webSocketClient.send("test1");
34+
webSocketClient.send("test2");
35+
webSocketClient.send("test3");
36+
37+
assert check.get(2, TimeUnit.SECONDS);
38+
39+
webSocketClient.close();
40+
41+
Thread.sleep(100);
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package features.jetty.ws;
2+
3+
import org.noear.solon.Solon;
4+
import org.noear.solon.net.annotation.ServerEndpoint;
5+
import org.noear.solon.net.websocket.WebSocket;
6+
import org.noear.solon.net.websocket.listener.SimpleWebSocketListener;
7+
8+
import java.io.IOException;
9+
10+
@ServerEndpoint("/demo")
11+
public class ServerApp extends SimpleWebSocketListener {
12+
public static void main(String[] args) throws Exception {
13+
Solon.start(ServerApp.class, args, app -> {
14+
app.enableWebSocket(true);
15+
});
16+
}
17+
18+
@Override
19+
public void onMessage(WebSocket socket, String text) throws IOException {
20+
socket.send("收到" + text);
21+
}
22+
}

solon-jakarta-projects/solon-server/solon-server-tomcat-add-websocket-jakarta/pom.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<description>Java project for solon</description>
1919

2020
<dependencies>
21+
<dependency>
22+
<groupId>org.noear</groupId>
23+
<artifactId>solon-server-tomcat-jakarta</artifactId>
24+
</dependency>
25+
2126
<dependency>
2227
<groupId>jakarta.servlet</groupId>
2328
<artifactId>jakarta.servlet-api</artifactId>
@@ -29,6 +34,25 @@
2934
<artifactId>tomcat-embed-websocket</artifactId>
3035
<version>${tomcat.jakarta.version}</version>
3136
</dependency>
37+
38+
<dependency>
39+
<groupId>org.noear</groupId>
40+
<artifactId>solon-test</artifactId>
41+
<scope>test</scope>
42+
</dependency>
43+
44+
<dependency>
45+
<groupId>org.noear</groupId>
46+
<artifactId>solon-logging-simple</artifactId>
47+
<scope>test</scope>
48+
</dependency>
49+
50+
<dependency>
51+
<groupId>org.noear</groupId>
52+
<artifactId>java-websocket-ns</artifactId>
53+
<version>${java-websocket-ns.version}</version>
54+
<scope>test</scope>
55+
</dependency>
3256
</dependencies>
3357

3458
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package features.tomcat.ws;
2+
3+
import org.java_websocket.client.WebSocketClient;
4+
import org.junit.jupiter.api.Test;
5+
import org.noear.java_websocket.client.SimpleWebSocketClient;
6+
import org.noear.solon.test.SolonTest;
7+
8+
import java.net.URI;
9+
import java.util.concurrent.CompletableFuture;
10+
import java.util.concurrent.TimeUnit;
11+
12+
@SolonTest(ServerApp.class)
13+
public class ClientTest {
14+
@Test
15+
public void test_async_message3_self_ws() throws Throwable {
16+
CompletableFuture<Boolean> check = new CompletableFuture<>();
17+
WebSocketClient webSocketClient = new SimpleWebSocketClient(URI.create("ws://localhost:8080/demo")){
18+
@Override
19+
public void onMessage(String message) {
20+
System.out.println("异步发送-ws-self::实例监到,收到了:" + message);
21+
check.complete(true);
22+
}
23+
};
24+
webSocketClient.connectBlocking();
25+
26+
//异步发
27+
webSocketClient.send("test0");
28+
webSocketClient.send("test1");
29+
webSocketClient.send("test2");
30+
webSocketClient.send("test3");
31+
32+
assert check.get(2, TimeUnit.SECONDS);
33+
34+
webSocketClient.close();
35+
36+
Thread.sleep(100);
37+
}
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package features.tomcat.ws;
2+
3+
import org.noear.solon.Solon;
4+
import org.noear.solon.net.annotation.ServerEndpoint;
5+
import org.noear.solon.net.websocket.WebSocket;
6+
import org.noear.solon.net.websocket.listener.SimpleWebSocketListener;
7+
8+
import java.io.IOException;
9+
10+
@ServerEndpoint("/demo")
11+
public class ServerApp extends SimpleWebSocketListener {
12+
public static void main(String[] args) throws Exception {
13+
Solon.start(ServerApp.class, args, app -> {
14+
app.enableWebSocket(true);
15+
});
16+
}
17+
18+
@Override
19+
public void onMessage(WebSocket socket, String text) throws IOException {
20+
socket.send("收到" + text);
21+
}
22+
}

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@
120120
<scope>test</scope>
121121
</dependency>
122122

123+
<dependency>
124+
<groupId>org.noear</groupId>
125+
<artifactId>java-websocket-ns</artifactId>
126+
<version>${java-websocket-ns.version}</version>
127+
<scope>test</scope>
128+
</dependency>
129+
123130
<dependency>
124131
<groupId>org.noear</groupId>
125132
<artifactId>solon-view-jsp-jakarta</artifactId>

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/App.java renamed to solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/http/App.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package features.undertow;
1+
package features.undertow.http;
22

33
import org.noear.solon.Solon;
44
import org.noear.solon.annotation.Controller;

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/ContentTypeHandler.java renamed to solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/http/ContentTypeHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package features.undertow;
1+
package features.undertow.http;
22

33
import org.noear.solon.annotation.Component;
44
import org.noear.solon.annotation.Mapping;

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/ServerTest.java renamed to solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/java/features/undertow/http/ServerTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package features.undertow;
1+
package features.undertow.http;
22

3+
import org.junit.jupiter.api.AfterAll;
34
import org.junit.jupiter.api.Test;
5+
import org.noear.solon.Solon;
46
import org.noear.solon.core.util.MimeType;
57
import org.noear.solon.core.util.MultiMap;
68
import org.noear.solon.net.http.HttpResponse;
@@ -50,4 +52,12 @@ public void ct1() {
5052
assert path("/hello").exec("GET").contentType()
5153
.startsWith(MimeType.TEXT_PLAIN_VALUE);
5254
}
55+
56+
@AfterAll
57+
public static void allAft() {
58+
//避免与同项目的,边上的 app 冲突
59+
if (Solon.app() != null) {
60+
Solon.stopBlock();
61+
}
62+
}
5363
}

0 commit comments

Comments
 (0)