fix partial server metric aggregation
This commit is contained in:
@@ -741,6 +741,41 @@ func TestCoreServiceMetricsAndConfigReadAreRoleScoped(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoreServiceMergesRecentPartialMetricSamples(t *testing.T) {
|
||||
svc := newTestCoreService()
|
||||
plugin, endpoint := createPluginAndRunEndpoint(t, svc)
|
||||
ownerSession := createServiceUserAndLogin(t, svc, domain.User{ID: "user-partial-metrics", DisplayName: "Partial Metrics Owner", Email: "partial-metrics@example.test", Roles: []string{"server-owner"}, PasswordHash: "secret-password"})
|
||||
instance, err := svc.CreateServerInstanceForSession(ownerSession, domain.ServerInstance{ID: "server-partial-metrics", PluginID: plugin.ID, RunEndpointID: endpoint.ID, Name: "Partial Metrics", State: domain.ServerInstanceStateRunning})
|
||||
if err != nil {
|
||||
t.Fatalf("create server: %v", err)
|
||||
}
|
||||
runHello := validRunControlHello()
|
||||
runHello.RunEndpointID = endpoint.ID
|
||||
registered, err := svc.RegisterRunHello(runHello)
|
||||
if err != nil {
|
||||
t.Fatalf("register run: %v", err)
|
||||
}
|
||||
cpu := 37.0
|
||||
memory := 49.0
|
||||
players := 8
|
||||
disk := 78.0
|
||||
staleMemory := 12.0
|
||||
if _, err := svc.IngestMetricBatch(domain.MetricBatchIngest{RunEndpointID: endpoint.ID, SessionToken: registered.SessionToken, Samples: []domain.MetricSample{
|
||||
{ServerInstanceID: instance.ID, Online: true, CPUPercent: &cpu, MemoryPercent: &memory, PlayerCount: &players, Source: "run", CollectedAt: fixedTime.Add(-15 * time.Second)},
|
||||
{ServerInstanceID: instance.ID, Online: true, MemoryPercent: &staleMemory, Source: "run", CollectedAt: fixedTime.Add(-3 * time.Minute)},
|
||||
{ServerInstanceID: instance.ID, Online: true, DiskPercent: &disk, Source: "run", CollectedAt: fixedTime},
|
||||
}}); err != nil {
|
||||
t.Fatalf("ingest partial metrics: %v", err)
|
||||
}
|
||||
metrics, err := svc.ListServerMetricsForSession(ownerSession)
|
||||
if err != nil {
|
||||
t.Fatalf("list merged metrics: %v", err)
|
||||
}
|
||||
if len(metrics) != 1 || metrics[0].CPUPercent == nil || *metrics[0].CPUPercent != cpu || metrics[0].MemoryPercent == nil || *metrics[0].MemoryPercent != memory || metrics[0].PlayerCount == nil || *metrics[0].PlayerCount != players || metrics[0].DiskPercent == nil || *metrics[0].DiskPercent != disk || metrics[0].CollectedAt != fixedTime {
|
||||
t.Fatalf("expected recent partial metrics to merge, got %+v", metrics)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoreServiceConfigWriteAndFileDispatchAreScoped(t *testing.T) {
|
||||
svc := newTestCoreService()
|
||||
plugin, endpoint := createPluginAndRunEndpoint(t, svc)
|
||||
|
||||
Reference in New Issue
Block a user