From 7bc40ab13d027632b9ea7b716ea4f4a1822e1958 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 26 Jan 2020 23:53:48 +0100 Subject: [PATCH] Add test asserting reconnect works. --- .../Tests/ReconnectTest.cs | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Content.IntegrationTests/Tests/ReconnectTest.cs diff --git a/Content.IntegrationTests/Tests/ReconnectTest.cs b/Content.IntegrationTests/Tests/ReconnectTest.cs new file mode 100644 index 0000000000..d1f916f40d --- /dev/null +++ b/Content.IntegrationTests/Tests/ReconnectTest.cs @@ -0,0 +1,70 @@ +using System.Threading.Tasks; +using NUnit.Framework; +using Robust.Client.Console; +using Robust.Shared.Interfaces.Network; +using Robust.Shared.IoC; + +namespace Content.IntegrationTests.Tests +{ + [TestFixture] + public class ReconnectTest : ContentIntegrationTest + { + [Test] + public async Task Test() + { + var client = StartClient(); + var server = StartServer(); + + await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync()); + + // Connect. + + client.SetConnectTarget(server); + + client.Post(() => IoCManager.Resolve().ClientConnect(null, 0, null)); + + // Run some ticks for the handshake to complete and such. + + for (var i = 0; i < 10; i++) + { + server.RunTicks(1); + await server.WaitIdleAsync(); + client.RunTicks(1); + await client.WaitIdleAsync(); + } + + await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync()); + + client.Post(() => IoCManager.Resolve().ProcessCommand("disconnect")); + + // Run some ticks for the disconnect to complete and such. + for (var i = 0; i < 5; i++) + { + server.RunTicks(1); + await server.WaitIdleAsync(); + client.RunTicks(1); + await client.WaitIdleAsync(); + } + + await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync()); + + // Reconnect. + + client.SetConnectTarget(server); + + client.Post(() => IoCManager.Resolve().ClientConnect(null, 0, null)); + + // Run some ticks for the handshake to complete and such. + + for (var i = 0; i < 10; i++) + { + server.RunTicks(1); + await server.WaitIdleAsync(); + client.RunTicks(1); + await client.WaitIdleAsync(); + } + + await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync()); + } + } +}