From 5b42ad0f8f6d8f7ed8e51efc4c4dfc7fb8966fd4 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 2 Dec 2023 11:36:12 -0500 Subject: [PATCH] Weeding out JobsHubTest errors --- .../Live/Instance/JobsHubTests.cs | 39 ++++++++++++++----- .../Live/TestLiveServer.cs | 2 +- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/tests/Tgstation.Server.Tests/Live/Instance/JobsHubTests.cs b/tests/Tgstation.Server.Tests/Live/Instance/JobsHubTests.cs index d9456c22bc..e5f6bd0225 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/JobsHubTests.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/JobsHubTests.cs @@ -84,7 +84,7 @@ namespace Tgstation.Server.Tests.Live.Instance } } - public async Task Run(CancellationToken cancellationToken) + public async Task Run(CancellationToken cancellationToken) { var neverReceiver = new ShouldNeverReceiveUpdates() { @@ -98,16 +98,32 @@ namespace Tgstation.Server.Tests.Live.Instance }, }; - await using (permedConn = (HubConnection)await permedUser.SubscribeToJobUpdates( + permedConn = (HubConnection)await permedUser.SubscribeToJobUpdates( this, null, null, - cancellationToken)) - await using (permlessConn = (HubConnection)await permlessUser.SubscribeToJobUpdates( - neverReceiver, - null, - null, - cancellationToken)) + cancellationToken); + + try + { + permlessConn = (HubConnection)await permlessUser.SubscribeToJobUpdates( + neverReceiver, + null, + null, + cancellationToken); + } + catch + { + await permedConn.DisposeAsync(); + } + + return FinishAsync(cancellationToken); + } + + async Task FinishAsync(CancellationToken cancellationToken) + { + await using (permedConn) + await using (permlessConn) { Console.WriteLine($"Initial conn1: {permedConn.ConnectionId}"); Console.WriteLine($"Initial conn2: {permlessConn.ConnectionId}"); @@ -193,10 +209,15 @@ namespace Tgstation.Server.Tests.Live.Instance } } + static string JobListFormatter(IEnumerable jobs) => String.Join(Environment.NewLine, jobs.Select(x => $"- I:{x.InstanceId}|JID:{x.Id}|JC:{x.JobCode}|Desc:{x.Description}")); + // some instances may be detached, but our cache remains var accountedJobs = allJobs.Count - missableMissedJobs; var accountedSeenJobs = seenJobs.Where(x => allInstances.Any(i => i.Id.Value == x.Value.InstanceId)).ToList(); - Assert.AreEqual(accountedJobs, accountedSeenJobs.Count, $"Mismatch in seen jobs:{Environment.NewLine}{String.Join(Environment.NewLine, allJobs.Where(x => !seenJobs.Any(y => y.Key == x.Id.Value)).Select(x => $"- I:{x.InstanceId}|JID:{x.Id}|JC:{x.JobCode}|Desc:{x.Description}"))}"); + Assert.AreEqual( + accountedJobs, + accountedSeenJobs.Count, + $"Mismatch in seen jobs:{Environment.NewLine}Not seen in seen:{Environment.NewLine}{JobListFormatter(allJobs.Where(x => !seenJobs.Any(y => y.Key == x.Id.Value)))}{Environment.NewLine}Seen not in all:{Environment.NewLine}{JobListFormatter(seenJobs.Values.Where(x => !allJobs.Any(y => y.Id.Value == x.Id.Value)))}"); Assert.IsTrue(accountedJobs <= seenJobs.Count); Assert.AreNotEqual(0, permlessSeenJobs.Count); Assert.IsTrue(permlessSeenJobs.Count < seenJobs.Count); diff --git a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs index a419fc648c..8aea9eb1ea 100644 --- a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs +++ b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs @@ -1395,11 +1395,11 @@ namespace Tgstation.Server.Tests.Live InstanceResponse odInstance, compatInstance; if (!openDreamOnly) { + jobsHubTestTask = FailFast(await jobsHubTest.Run(cancellationToken)); // returns Task var rootTest = FailFast(RawRequestTests.Run(clientFactory, firstAdminClient, cancellationToken)); var adminTest = FailFast(new AdministrationTest(firstAdminClient.Administration).Run(cancellationToken)); var usersTest = FailFast(new UsersTest(firstAdminClient).Run(cancellationToken)); - jobsHubTestTask = FailFast(jobsHubTest.Run(cancellationToken)); var instanceManagerTest = new InstanceManagerTest(firstAdminClient, server.Directory); var compatInstanceTask = instanceManagerTest.CreateTestInstance("CompatTestsInstance", cancellationToken); var odInstanceTask = instanceManagerTest.CreateTestInstance("OdTestsInstance", cancellationToken);