using NATS.Client.Core; namespace NATS.E2E.Tests.Infrastructure; public sealed class MonitorServerFixture : IAsyncLifetime { private NatsServerProcess _server = null!; public int Port => _server.Port; public int MonitorPort => _server.MonitorPort!.Value; public HttpClient MonitorClient { get; private set; } = null!; public async Task InitializeAsync() { _server = new NatsServerProcess(enableMonitoring: true); await _server.StartAsync(); // StartAsync polls both the NATS port and the monitor TCP port before returning MonitorClient = new HttpClient { BaseAddress = new Uri($"http://127.0.0.1:{MonitorPort}") }; } public async Task DisposeAsync() { MonitorClient?.Dispose(); await _server.DisposeAsync(); } public NatsConnection CreateClient() { return new NatsConnection(new NatsOpts { Url = $"nats://127.0.0.1:{Port}" }); } } [CollectionDefinition("E2E-Monitor")] public class MonitorCollection : ICollectionFixture;