Files
natsdotnet/tests/NATS.Server.Tests/Internal/InternalDsPeriodicSamplerParityTests.cs
Joseph Doherty c30e67a69d Fix E2E test gaps and add comprehensive E2E + parity test suites
- Fix pull consumer fetch: send original stream subject in HMSG (not inbox)
  so NATS client distinguishes data messages from control messages
- Fix MaxAge expiry: add background timer in StreamManager for periodic pruning
- Fix JetStream wire format: Go-compatible anonymous objects with string enums,
  proper offset-based pagination for stream/consumer list APIs
- Add 42 E2E black-box tests (core messaging, auth, TLS, accounts, JetStream)
- Add ~1000 parity tests across all subsystems (gaps closure)
- Update gap inventory docs to reflect implementation status
2026-03-12 14:09:23 -04:00

38 lines
1.3 KiB
C#

using System.Reflection;
using Microsoft.Extensions.Logging.Abstractions;
using NATS.Server.Monitoring;
namespace NATS.Server.Tests.Internal;
public class InternalDsPeriodicSamplerParityTests
{
[Fact]
[SlopwatchSuppress("SW004", "Test must observe a real 1-second CPU sampling timer tick; wall-clock elapsed time is the observable under test")]
public async Task VarzHandler_uses_periodic_background_cpu_sampler()
{
var options = new NatsOptions { Host = "127.0.0.1", Port = 0 };
var server = new NatsServer(options, NullLoggerFactory.Instance);
using var cts = new CancellationTokenSource();
_ = server.StartAsync(cts.Token);
await server.WaitForReadyAsync();
try
{
using var handler = new VarzHandler(server, options, NullLoggerFactory.Instance);
var field = typeof(VarzHandler).GetField("_lastCpuSampleTime", BindingFlags.NonPublic | BindingFlags.Instance);
field.ShouldNotBeNull();
var before = (DateTime)field!.GetValue(handler)!;
await Task.Delay(TimeSpan.FromMilliseconds(1200));
var after = (DateTime)field.GetValue(handler)!;
after.ShouldBeGreaterThan(before);
}
finally
{
await cts.CancelAsync();
server.Dispose();
}
}
}