fix: complete retail parity stability pass
This commit is contained in:
parent
d3df4cb20a
commit
f7aa8e0eb7
131 changed files with 7765 additions and 1190 deletions
|
|
@ -0,0 +1,77 @@
|
|||
using AcDream.Core.Net.Transport;
|
||||
|
||||
namespace AcDream.Core.Net.Tests.Transport;
|
||||
|
||||
public sealed class RetailPacketLossAveragerTests
|
||||
{
|
||||
[Fact]
|
||||
public void Sweep_BeforeRetailHeartbeat_DoesNotPublishPartialSample()
|
||||
{
|
||||
long now = 0;
|
||||
var clock = new TransportClock(() => now, frequency: 10);
|
||||
var stats = new TransportStats { PacketsSent = 5, NakIdsSent = 1 };
|
||||
var sut = new RetailPacketLossAverager(clock, stats);
|
||||
|
||||
stats.PacketsSent += 10;
|
||||
stats.NakIdsSent += 2;
|
||||
now = 19;
|
||||
sut.Sweep(now, stats);
|
||||
|
||||
Assert.Equal(0d, sut.Percentage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Sweep_UsesRetailNakPlusRetransmitOverReceivedPlusSentFormula()
|
||||
{
|
||||
long now = 0;
|
||||
var clock = new TransportClock(() => now, frequency: 10);
|
||||
var stats = new TransportStats();
|
||||
var sut = new RetailPacketLossAverager(clock, stats);
|
||||
|
||||
stats.PacketsSent = 60;
|
||||
stats.PacketsReceived = 40;
|
||||
stats.NakIdsSent = 2;
|
||||
stats.ResendsSent = 3;
|
||||
now = 20;
|
||||
sut.Sweep(now, stats);
|
||||
|
||||
Assert.Equal(5d, sut.Percentage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Sweep_EvictsTheOldestSampleAfterFortyHeartbeats()
|
||||
{
|
||||
long now = 0;
|
||||
var clock = new TransportClock(() => now, frequency: 10);
|
||||
var stats = new TransportStats();
|
||||
var sut = new RetailPacketLossAverager(clock, stats);
|
||||
|
||||
stats.PacketsSent = 10;
|
||||
stats.NakIdsSent = 10;
|
||||
now = 20;
|
||||
sut.Sweep(now, stats);
|
||||
|
||||
for (int i = 0; i < RetailPacketLossAverager.WindowSize; i++)
|
||||
{
|
||||
stats.PacketsSent += 10;
|
||||
now += 20;
|
||||
sut.Sweep(now, stats);
|
||||
}
|
||||
|
||||
Assert.Equal(0d, sut.Percentage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Sweep_ZeroTrafficReportsZero()
|
||||
{
|
||||
long now = 0;
|
||||
var clock = new TransportClock(() => now, frequency: 10);
|
||||
var stats = new TransportStats();
|
||||
var sut = new RetailPacketLossAverager(clock, stats);
|
||||
|
||||
now = 20;
|
||||
sut.Sweep(now, stats);
|
||||
|
||||
Assert.Equal(0d, sut.Percentage);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue