Use dictionary and hashset for admin log entities and players respectively

Add test for duplicate player ids in an admin log not throwing
This commit is contained in:
DrSmugleaf
2021-12-26 00:50:10 +01:00
parent 82d9c38c96
commit 0ca8c705ab
5 changed files with 65 additions and 25 deletions

View File

@@ -336,4 +336,49 @@ public class AddTests : ContentIntegrationTest
Assert.Pass();
}
[Test]
public async Task DuplicatePlayerIdDoesNotThrowTest()
{
var (client, server) = await StartConnectedServerClientPair(serverOptions: new ServerContentIntegrationOption
{
CVarOverrides =
{
[CCVars.AdminLogsQueueSendDelay.Name] = "0"
},
});
await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());
var sPlayers = server.ResolveDependency<IPlayerManager>();
var sSystems = server.ResolveDependency<IEntitySystemManager>();
var sAdminLogSystem = sSystems.GetEntitySystem<AdminLogSystem>();
var guid = Guid.NewGuid();
await server.WaitPost(() =>
{
var player = sPlayers.ServerSessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}");
});
await WaitUntil(server, async () =>
{
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
{
Search = guid.ToString()
});
if (logs.Count == 0)
{
return false;
}
return true;
});
Assert.Pass();
}
}