52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using System.Text.Json;
|
|
using NATS.E2E.Tests.Infrastructure;
|
|
|
|
namespace NATS.E2E.Tests;
|
|
|
|
[Collection("E2E-Monitor")]
|
|
public class MonitoringTests(MonitorServerFixture fixture)
|
|
{
|
|
[Fact]
|
|
public async Task Varz_ReturnsServerInfo()
|
|
{
|
|
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
|
|
var response = await fixture.MonitorClient.GetAsync("/varz", cts.Token);
|
|
response.StatusCode.ShouldBe(System.Net.HttpStatusCode.OK);
|
|
|
|
var json = await response.Content.ReadAsStringAsync(cts.Token);
|
|
using var doc = JsonDocument.Parse(json);
|
|
var root = doc.RootElement;
|
|
|
|
root.TryGetProperty("server_name", out _).ShouldBeTrue();
|
|
root.TryGetProperty("version", out _).ShouldBeTrue();
|
|
root.TryGetProperty("max_payload", out _).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Connz_ReflectsConnectedClients()
|
|
{
|
|
await using var client = fixture.CreateClient();
|
|
await client.ConnectAsync();
|
|
await client.PingAsync();
|
|
|
|
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
|
|
var response = await fixture.MonitorClient.GetAsync("/connz", cts.Token);
|
|
response.StatusCode.ShouldBe(System.Net.HttpStatusCode.OK);
|
|
|
|
var json = await response.Content.ReadAsStringAsync(cts.Token);
|
|
using var doc = JsonDocument.Parse(json);
|
|
var root = doc.RootElement;
|
|
|
|
root.TryGetProperty("num_connections", out var numConns).ShouldBeTrue();
|
|
numConns.GetInt32().ShouldBeGreaterThanOrEqualTo(1);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Healthz_ReturnsOk()
|
|
{
|
|
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
|
|
var response = await fixture.MonitorClient.GetAsync("/healthz", cts.Token);
|
|
response.StatusCode.ShouldBe(System.Net.HttpStatusCode.OK);
|
|
}
|
|
}
|