✅ Improve test by adding wait-for-scan method
authorDavid Roden <github-a8in@qsheltier.de>
Mon, 27 Jan 2025 20:37:11 +0000 (21:37 +0100)
committerDavid Roden <github-a8in@qsheltier.de>
Mon, 27 Jan 2025 20:37:11 +0000 (21:37 +0100)
server/src/main/java/de/qsheltier/msta/Server.java
server/src/test/java/de/qsheltier/msta/ServerTest.java

index f64c852..9cb7cb7 100644 (file)
@@ -129,6 +129,12 @@ public class Server implements Closeable {
                return serverSocket.getLocalPort();
        }
 
+       public void waitForNextScan() throws InterruptedException {
+               synchronized (this) {
+                       wait();
+               }
+       }
+
        private void scanForWindows() {
                while (!closed.get()) {
                        var currentlyOpenWindows = stream(Window.getWindows()).filter(Component::isVisible).toList();
@@ -140,6 +146,9 @@ public class Server implements Closeable {
                                windows.put(newWindow.getName(), newWindow);
                        });
                        Thread.yield();
+                       synchronized (this) {
+                               notifyAll();
+                       }
                }
        }
 
index cfc8776..780826f 100644 (file)
@@ -88,9 +88,13 @@ public class ServerTest {
                var window = new Window(null);
                window.setVisible(true);
                try {
-                       connectToServer(verifyConnectedEvent((reader, ready, writer) -> {
-                               assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS));
-                       }));
+                       try (var server = new Server()) {
+                               server.start();
+                               server.waitForNextScan();
+                               createConnection(server, verifyConnectedEvent((reader, ready, writer) -> {
+                                       assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS));
+                               }));
+                       }
                } finally {
                        window.setVisible(false);
                }