mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
160e63558f
Honest TTL cleanup semantics; enqueue-safe dedup with flush retry and writer metrics; model insert hooks; latest-per-node and hourly metric/openresty rollups; small-host pool/async defaults, traffic hourly TTL, and UV labeling.
76 lines
2.3 KiB
Go
76 lines
2.3 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package model
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
analyticsmodel "github.com/Rain-kl/Wavelet/internal/model/analytics"
|
|
)
|
|
|
|
// Hook setters are process-global; keep these tests serial.
|
|
|
|
func TestObservabilityInsertHooksAreInvoked(t *testing.T) {
|
|
var gotSnapshot analyticsmodel.NodeMetricSnapshot
|
|
SetObservabilityInsertHooks(ObservabilityInsertHooks{
|
|
QueueMetricSnapshot: func(s analyticsmodel.NodeMetricSnapshot) {
|
|
gotSnapshot = s
|
|
},
|
|
})
|
|
t.Cleanup(func() {
|
|
SetObservabilityInsertHooks(ObservabilityInsertHooks{})
|
|
})
|
|
|
|
record := &OpenFlareMetricSnapshot{
|
|
NodeID: "node-1",
|
|
CapturedAt: time.Unix(100, 0).UTC(),
|
|
}
|
|
if err := (clickhouseObservabilityStore{}).InsertMetricSnapshot(context.Background(), record); err != nil {
|
|
t.Fatalf("InsertMetricSnapshot error = %v", err)
|
|
}
|
|
if gotSnapshot.NodeID != "node-1" {
|
|
t.Fatalf("hook node id = %q, want node-1", gotSnapshot.NodeID)
|
|
}
|
|
}
|
|
|
|
func TestAccessLogInsertHooksAreInvoked(t *testing.T) {
|
|
var got []analyticsmodel.NodeAccessLog
|
|
SetAccessLogInsertHooks(AccessLogInsertHooks{
|
|
QueueNodeAccessLogs: func(logs []analyticsmodel.NodeAccessLog) {
|
|
got = append([]analyticsmodel.NodeAccessLog(nil), logs...)
|
|
},
|
|
})
|
|
t.Cleanup(func() {
|
|
SetAccessLogInsertHooks(AccessLogInsertHooks{})
|
|
})
|
|
|
|
records := []*OpenFlareAccessLog{
|
|
{NodeID: "n1", Path: "/a"},
|
|
{NodeID: "n1", Path: "/b"},
|
|
}
|
|
if err := (clickhouseAccessLogStore{}).InsertBatch(context.Background(), records); err != nil {
|
|
t.Fatalf("InsertBatch error = %v", err)
|
|
}
|
|
if len(got) != 2 {
|
|
t.Fatalf("hook logs = %d, want 2", len(got))
|
|
}
|
|
if got[0].Path != "/a" || got[1].Path != "/b" {
|
|
t.Fatalf("hook paths = %q/%q, want /a /b", got[0].Path, got[1].Path)
|
|
}
|
|
}
|
|
|
|
func TestInsertHooksNoopWhenUnset(t *testing.T) {
|
|
SetObservabilityInsertHooks(ObservabilityInsertHooks{})
|
|
SetAccessLogInsertHooks(AccessLogInsertHooks{})
|
|
|
|
if err := (clickhouseObservabilityStore{}).InsertMetricSnapshot(context.Background(), &OpenFlareMetricSnapshot{NodeID: "x"}); err != nil {
|
|
t.Fatalf("InsertMetricSnapshot with nil hook error = %v", err)
|
|
}
|
|
if err := (clickhouseAccessLogStore{}).InsertBatch(context.Background(), []*OpenFlareAccessLog{{NodeID: "x"}}); err != nil {
|
|
t.Fatalf("InsertBatch with nil hook error = %v", err)
|
|
}
|
|
}
|