Files
RobustToolbox/Robust.UnitTesting/RobustIntegrationTestSetup.cs
Javier Guardia Fernández 04d029b9a2 Add test pooling (#2146)
* Add test pooling and global test setup

* WIP test pooling changes

* Make asynchronous tests the default again

* Finish fixing tests, make test threads background threads

* Un-pool tests with custom cvars

* Fix not changing FailureLogLevel cvar on instance return

* Fix error when overriding already overriden cvar

* Don't pool some physics integration tests

* Unpool engine tests, the technology just isn't there yet

* Remove explicit Pool = false from physics tests

* Change default pooling setting to false

* Didn't need this anyway

* Remove ConfigurationManager.ResetOverrides

* Bring back enum cvar override parsing

* Make integrationInstances name clearer > notPooledInstaces
Make clients ready and servers ready internal

* Add logging test instances

* Give more info on ran tests

* Show total clients and servers in test output

* Wipe LayerMap on SpriteComponent.AfterDeserialize

* Fix server not properly kicking clients

* Rider shut

* Make all test metrics report totals

* Format tests ran better

* Replace Console.WriteLine with TestContext.Out.WriteLine

* Fix two server test pooling info prints using total clients instead of total servers

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2021-11-06 11:18:18 +01:00

52 lines
1.6 KiB
C#

using System.Collections.Concurrent;
using NUnit.Framework;
using static Robust.UnitTesting.RobustIntegrationTest;
[SetUpFixture]
// ReSharper disable once CheckNamespace
public class RobustIntegrationTestSetup
{
public void Shutdown()
{
foreach (var client in ClientsReady)
{
client.Dispose();
}
ClientsReady.Clear();
foreach (var server in ServersReady)
{
server.Dispose();
}
ServersReady.Clear();
}
public void PrintTestPoolingInfo()
{
string QueueToString(ConcurrentQueue<string> queue, int total)
{
return $"({queue.Count}/{total}):\n{string.Join("\n", queue)}\n\n";
}
var totalClients = ClientsPooled.Count + ClientsNotPooled.Count;
TestContext.Out.WriteLine($"Clients created {QueueToString(ClientsCreated, totalClients)}");
TestContext.Out.WriteLine($"Clients pooled {QueueToString(ClientsPooled, totalClients)}");
TestContext.Out.WriteLine($"Clients not pooled {QueueToString(ClientsNotPooled, totalClients)}");
var totalServers = ServersPooled.Count + ServersNotPooled.Count;
TestContext.Out.WriteLine($"Servers created {QueueToString(ServersCreated, totalServers)}");
TestContext.Out.WriteLine($"Servers pooled {QueueToString(ServersPooled, totalServers)}");
TestContext.Out.WriteLine($"Servers not pooled {QueueToString(ServersNotPooled, totalServers)}");
}
[OneTimeTearDown]
public void TearDown()
{
Shutdown();
PrintTestPoolingInfo();
}
}