Shinwayy / internal /usage /logger_plugin_test.go
Shinway Deploy
track binary files with git-lfs
db492de
Raw
History Blame Contribute Delete
1.63 kB
package usage
import (
"context"
"testing"
"time"
coreusage "github.com/router-for-me/CLIProxyAPI/v6/sdk/cliproxy/usage"
)
func TestRecordStoresRequestIDAndDuration(t *testing.T) {
stats := NewRequestStatistics()
recordedAt := time.Date(2026, 2, 12, 12, 0, 0, 0, time.UTC)
stats.Record(context.Background(), coreusage.Record{
APIKey: "key-1",
Model: "gpt-4-turbo",
RequestID: "req-12345",
RequestedAt: recordedAt,
DurationMs: 245,
Failed: false,
Detail: coreusage.Detail{
InputTokens: 120,
OutputTokens: 80,
TotalTokens: 200,
},
})
snapshot := stats.Snapshot()
api := snapshot.APIs["key-1"]
model := api.Models["gpt-4-turbo"]
if len(model.Details) != 1 {
t.Fatalf("expected exactly one request detail, got %d", len(model.Details))
}
detail := model.Details[0]
if detail.RequestID != "req-12345" {
t.Fatalf("expected request_id to be preserved, got %q", detail.RequestID)
}
if detail.DurationMs != 245 {
t.Fatalf("expected duration_ms=245, got %d", detail.DurationMs)
}
}
func TestRecordNormalizesNegativeDuration(t *testing.T) {
stats := NewRequestStatistics()
stats.Record(context.Background(), coreusage.Record{
APIKey: "key-1",
Model: "gpt-4-turbo",
RequestID: "req-negative",
RequestedAt: time.Now(),
DurationMs: -99,
Detail: coreusage.Detail{
InputTokens: 10,
OutputTokens: 20,
TotalTokens: 30,
},
})
snapshot := stats.Snapshot()
detail := snapshot.APIs["key-1"].Models["gpt-4-turbo"].Details[0]
if detail.DurationMs != 0 {
t.Fatalf("expected normalized duration_ms=0, got %d", detail.DurationMs)
}
}