diff --git a/test/dorkboxTest/network/DisconnectReconnectTest.kt b/test/dorkboxTest/network/DisconnectReconnectTest.kt index 4b56265a..61117d05 100644 --- a/test/dorkboxTest/network/DisconnectReconnectTest.kt +++ b/test/dorkboxTest/network/DisconnectReconnectTest.kt @@ -62,6 +62,64 @@ class DisconnectReconnectTest : BaseTest() { } + waitForThreads() + + System.err.println("Connection count (after reconnecting) is: " + reconnectCount.value) + Assert.assertEquals(4, reconnectCount.value) + } + + @Test + fun reconnectWithFallbackClient() { + run { + val config = serverConfig() + config.enableIpc = false + + val server: Server = Server(config) + addEndPoint(server) + server.bind() + + server.onConnect { connection -> + connection.logger.error("Disconnecting after 2 seconds.") + delay(2000) + + connection.logger.error("Disconnecting....") + connection.close() + } + } + + run { + val config = clientConfig() + config.enableIpc = true + config.enableIpcForLoopback = true + + val client: Client = Client(config) + addEndPoint(client) + + + client.onDisconnect { connection -> + connection.logger.error("Disconnected!") + + val count = reconnectCount.getAndIncrement() + if (count == 3) { + connection.logger.error("Shutting down") + stopEndPoints() + } + else { + connection.logger.error("Reconnecting: $count") + try { + client.connect(LOOPBACK) + } catch (e: IOException) { + e.printStackTrace() + } + } + } + + runBlocking { + client.connect(LOOPBACK) + } + } + + waitForThreads() System.err.println("Connection count (after reconnecting) is: " + reconnectCount.value)