Remove tickrate dependence from power tests (#14326)

This commit is contained in:
Leon Friedrich
2023-03-01 15:58:05 +13:00
committed by GitHub
parent e9fd16f8f6
commit b4bfbbcbe8

View File

@@ -1,4 +1,5 @@
#nullable enable #nullable enable
using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Content.Server.NodeContainer; using Content.Server.NodeContainer;
using Content.Server.NodeContainer.Nodes; using Content.Server.NodeContainer.Nodes;
@@ -310,8 +311,8 @@ namespace Content.IntegrationTests.Tests.Power
}); });
// Exact values can/will be off by a tick, add tolerance for that. // Exact values can/will be off by a tick, add tolerance for that.
var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds;
var tickDev = 400 * tickRate * 1.1f; var tickDev = 400 * tickPeriod * 1.1f;
server.RunTicks(1); server.RunTicks(1);
@@ -322,7 +323,9 @@ namespace Content.IntegrationTests.Tests.Power
Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1)); Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1));
}); });
server.RunTicks(14); // run for 0.25 seconds (minus the previous tick)
var ticks = (int) Math.Round(0.25 * gameTiming.TickRate) - 1;
server.RunTicks(ticks);
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -332,7 +335,11 @@ namespace Content.IntegrationTests.Tests.Power
Assert.That(consumer.ReceivedPower, Is.EqualTo(200).Within(tickDev)); Assert.That(consumer.ReceivedPower, Is.EqualTo(200).Within(tickDev));
}); });
server.RunTicks(45);
// run for 0.75 seconds
ticks = (int) Math.Round(0.75 * gameTiming.TickRate);
server.RunTicks(ticks);
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -387,8 +394,8 @@ namespace Content.IntegrationTests.Tests.Power
}); });
// Exact values can/will be off by a tick, add tolerance for that. // Exact values can/will be off by a tick, add tolerance for that.
var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds;
var tickDev = 400 * tickRate * 1.1f; var tickDev = 400 * tickPeriod * 1.1f;
server.RunTicks(1); server.RunTicks(1);
@@ -399,7 +406,9 @@ namespace Content.IntegrationTests.Tests.Power
Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1)); Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1));
}); });
server.RunTicks(14); // run for 0.25 seconds (minus the previous tick)
var ticks = (int) Math.Round(0.25 * gameTiming.TickRate) - 1;
server.RunTicks(ticks);
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -413,7 +422,9 @@ namespace Content.IntegrationTests.Tests.Power
Assert.That(battery.CurrentCharge, Is.EqualTo(startingCharge - spentExpected).Within(tickDev)); Assert.That(battery.CurrentCharge, Is.EqualTo(startingCharge - spentExpected).Within(tickDev));
}); });
server.RunTicks(45); // run for 0.75 seconds
ticks = (int) Math.Round(0.75 * gameTiming.TickRate);
server.RunTicks(ticks);
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -524,6 +535,7 @@ namespace Content.IntegrationTests.Tests.Power
await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true, ExtraPrototypes = Prototypes}); await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true, ExtraPrototypes = Prototypes});
var server = pairTracker.Pair.Server; var server = pairTracker.Pair.Server;
var mapManager = server.ResolveDependency<IMapManager>(); var mapManager = server.ResolveDependency<IMapManager>();
var gameTiming = server.ResolveDependency<IGameTiming>();
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
PowerSupplierComponent supplier = default!; PowerSupplierComponent supplier = default!;
BatteryComponent battery = default!; BatteryComponent battery = default!;
@@ -554,7 +566,9 @@ namespace Content.IntegrationTests.Tests.Power
netBattery.Efficiency = 0.5f; netBattery.Efficiency = 0.5f;
}); });
server.RunTicks(30); // 60 TPS, 0.5 seconds // run for 0.5 seconds
var ticks = (int) Math.Round(0.5 * gameTiming.TickRate);
server.RunTicks(ticks);
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -617,11 +631,11 @@ namespace Content.IntegrationTests.Tests.Power
}); });
// Run some ticks so everything is stable. // Run some ticks so everything is stable.
server.RunTicks(60); server.RunTicks(gameTiming.TickRate);
// Exact values can/will be off by a tick, add tolerance for that. // Exact values can/will be off by a tick, add tolerance for that.
var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds;
var tickDev = 400 * tickRate * 1.1f; var tickDev = 400 * tickPeriod * 1.1f;
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
@@ -692,11 +706,11 @@ namespace Content.IntegrationTests.Tests.Power
}); });
// Run some ticks so everything is stable. // Run some ticks so everything is stable.
server.RunTicks(60); server.RunTicks(gameTiming.TickRate);
// Exact values can/will be off by a tick, add tolerance for that. // Exact values can/will be off by a tick, add tolerance for that.
var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds;
var tickDev = 400 * tickRate * 1.1f; var tickDev = 400 * tickPeriod * 1.1f;
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {