Changes required for frozen event bus PR (#23493)

* Changes required for frozen event bus PR

* Fix RoundEndTest
This commit is contained in:
Leon Friedrich
2024-01-03 21:26:25 -05:00
committed by GitHub
parent d15ff373d8
commit 377be6fcca
3 changed files with 30 additions and 22 deletions

View File

@@ -8,8 +8,24 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests
{
[TestFixture]
public sealed class RoundEndTest : IEntityEventSubscriber
public sealed class RoundEndTest
{
private sealed class RoundEndTestSystem : EntitySystem
{
public int Count;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RoundEndSystemChangedEvent>(OnRoundEnd);
}
private void OnRoundEnd(RoundEndSystemChangedEvent ev)
{
Interlocked.Increment(ref Count);
}
}
[Test]
public async Task Test()
{
@@ -22,13 +38,12 @@ namespace Content.IntegrationTests.Tests
var server = pair.Server;
var entManager = server.ResolveDependency<IEntityManager>();
var config = server.ResolveDependency<IConfigurationManager>();
var sysManager = server.ResolveDependency<IEntitySystemManager>();
var ticker = sysManager.GetEntitySystem<GameTicker>();
var roundEndSystem = sysManager.GetEntitySystem<RoundEndSystem>();
var eventCount = 0;
var sys = server.System<RoundEndTestSystem>();
sys.Count = 0;
await server.WaitAssertion(() =>
{
@@ -43,11 +58,6 @@ namespace Content.IntegrationTests.Tests
await server.WaitAssertion(() =>
{
var bus = entManager.EventBus;
bus.SubscribeEvent<RoundEndSystemChangedEvent>(EventSource.Local, this, _ =>
{
Interlocked.Increment(ref eventCount);
});
// Press the shuttle call button
roundEndSystem.RequestRoundEnd();
@@ -118,8 +128,8 @@ namespace Content.IntegrationTests.Tests
async Task WaitForEvent()
{
var timeout = Task.Delay(TimeSpan.FromSeconds(10));
var currentCount = Thread.VolatileRead(ref eventCount);
while (currentCount == Thread.VolatileRead(ref eventCount) && !timeout.IsCompleted)
var currentCount = Thread.VolatileRead(ref sys.Count);
while (currentCount == Thread.VolatileRead(ref sys.Count) && !timeout.IsCompleted)
{
await pair.RunTicksSync(5);
}