Skip to content

Commit b3cc420

Browse files
committed
support server side events
1 parent 652fdcc commit b3cc420

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package BehaviorTests;
2+
3+
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.net.URI;
7+
import java.net.http.HttpClient;
8+
import java.net.http.HttpRequest;
9+
import java.net.http.HttpResponse;
10+
import java.time.Duration;
11+
import java.util.Queue;
12+
import java.util.concurrent.CompletableFuture;
13+
import java.util.concurrent.ConcurrentLinkedQueue;
14+
15+
import static org.junit.jupiter.api.Assertions.assertTrue;
16+
17+
public class SSETest extends BddTest {
18+
19+
@Test
20+
void example() throws Exception {
21+
Queue<String> receivedMessages = new ConcurrentLinkedQueue<>();
22+
23+
HttpRequest request = HttpRequest
24+
.newBuilder()
25+
.header("Accept", "text/event-stream")
26+
.timeout(Duration.ofSeconds(5))
27+
.GET()
28+
.uri(URI.create(MockServer.SSE))
29+
.build();
30+
31+
var process = new Thread(() -> {
32+
var client = HttpClient.newBuilder().build();
33+
CompletableFuture<Void> fut = client.sendAsync(request, HttpResponse.BodyHandlers.ofLines())
34+
.thenAccept(response -> {
35+
response.body().forEach(line -> {
36+
if (!line.isBlank()) {
37+
System.out.println("line = " + line);
38+
receivedMessages.add(line);
39+
}
40+
});
41+
})
42+
.exceptionally(ex -> {
43+
System.err.println("Error: " + ex.getMessage());
44+
return null;
45+
});
46+
47+
while(!fut.isDone()){}
48+
});
49+
50+
process.start();
51+
Thread.sleep(1000);
52+
53+
TestSSEConsumer.sendMessage("hey1");
54+
TestSSEConsumer.sendMessage("hey2");
55+
56+
// Wait for messages to be received (simple sleep or use Awaitility for better control)
57+
Thread.sleep(1000);
58+
59+
assertTrue(receivedMessages.stream().anyMatch(msg -> msg.contains("hey1")));
60+
assertTrue(receivedMessages.stream().anyMatch(msg -> msg.contains("hey2")));
61+
62+
}
63+
64+
65+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package BehaviorTests;
2+
3+
public class TestSSEConsumer {
4+
public static void sendMessage(String message) {
5+
6+
}
7+
}

0 commit comments

Comments
 (0)