test: stabilize load-sensitive release contracts
This commit is contained in:
parent
c8c764a40e
commit
dfc841b779
8 changed files with 199 additions and 43 deletions
|
|
@ -759,7 +759,7 @@ public sealed class NakEmissionTests
|
|||
/// retail-faithful steady state). The session survives the whole run.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void LossSoak_TwoPercentBidirectional_ZeroMessageLoss_LedgersConverge()
|
||||
public async Task LossSoak_TwoPercentBidirectional_ZeroMessageLoss_LedgersConverge()
|
||||
{
|
||||
var transport = new FakeAceTransport();
|
||||
var session = new WorldSession(
|
||||
|
|
@ -808,7 +808,7 @@ public sealed class NakEmissionTests
|
|||
session.Tick();
|
||||
|
||||
if ((i & 15) == 0)
|
||||
Thread.Sleep(1);
|
||||
await Task.Yield();
|
||||
|
||||
if (i % 500 == 0)
|
||||
{
|
||||
|
|
@ -837,16 +837,18 @@ public sealed class NakEmissionTests
|
|||
// recoverable once further sequenced C2S traffic arrives. Real
|
||||
// clients keep talking; the trickle models that.
|
||||
int trickle = 0;
|
||||
DateTime deadline = DateTime.UtcNow.AddSeconds(60);
|
||||
while (DateTime.UtcNow < deadline
|
||||
&& (s2cReceived != MessagesEachWay
|
||||
|| c2sDispatched != MessagesEachWay))
|
||||
const int MaxConvergenceSteps = 120; // 60 virtual seconds at 0.5 s/step
|
||||
for (int step = 0;
|
||||
step < MaxConvergenceSteps
|
||||
&& (s2cReceived != MessagesEachWay
|
||||
|| c2sDispatched != MessagesEachWay);
|
||||
step++)
|
||||
{
|
||||
transport.Clock.Advance(TimeSpan.FromMilliseconds(500));
|
||||
session.SendTalk($"trickle {trickle++}");
|
||||
transport.PumpServer();
|
||||
session.Tick();
|
||||
Thread.Sleep(1);
|
||||
await Task.Yield();
|
||||
}
|
||||
|
||||
// Convergence phase 2: quiet drain. Acks keep flowing on the
|
||||
|
|
@ -856,7 +858,7 @@ public sealed class NakEmissionTests
|
|||
// traffic (two arrivals) before ACE's gap detection can fire —
|
||||
// an occasional healer send, only while the cache is stuck.
|
||||
int quietIterations = 0;
|
||||
while (DateTime.UtcNow < deadline)
|
||||
for (int step = 0; step < MaxConvergenceSteps; step++)
|
||||
{
|
||||
transport.Clock.Advance(TimeSpan.FromMilliseconds(500));
|
||||
if (session.Transport!.Outbound.CacheDepth > 1
|
||||
|
|
@ -867,7 +869,7 @@ public sealed class NakEmissionTests
|
|||
|
||||
transport.PumpServer();
|
||||
session.Tick();
|
||||
Thread.Sleep(1);
|
||||
await Task.Yield();
|
||||
|
||||
if (s2cReceived == MessagesEachWay
|
||||
&& c2sDispatched == MessagesEachWay
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue