38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
|
|
"telesrv/internal/observability/dbtrace"
|
|
)
|
|
|
|
func TestQueryStatsTracerRecordsContextStats(t *testing.T) {
|
|
ctx, stats := dbtrace.WithStats(context.Background())
|
|
tracer := queryStatsTracer{}
|
|
|
|
ctx = tracer.TraceQueryStart(ctx, nil, pgx.TraceQueryStartData{})
|
|
tracer.TraceQueryEnd(ctx, nil, pgx.TraceQueryEndData{})
|
|
|
|
snap := stats.Snapshot()
|
|
if snap.Queries != 1 || snap.Errors != 0 {
|
|
t.Fatalf("Snapshot() = %+v, want 1 query without errors", snap)
|
|
}
|
|
|
|
ctx = tracer.TraceQueryStart(ctx, nil, pgx.TraceQueryStartData{})
|
|
tracer.TraceQueryEnd(ctx, nil, pgx.TraceQueryEndData{Err: errors.New("boom")})
|
|
|
|
snap = stats.Snapshot()
|
|
if snap.Queries != 2 || snap.Errors != 1 {
|
|
t.Fatalf("Snapshot() = %+v, want 2 queries with 1 error", snap)
|
|
}
|
|
}
|
|
|
|
func TestQueryStatsTracerIgnoresContextWithoutStats(t *testing.T) {
|
|
tracer := queryStatsTracer{}
|
|
ctx := tracer.TraceQueryStart(context.Background(), nil, pgx.TraceQueryStartData{})
|
|
tracer.TraceQueryEnd(ctx, nil, pgx.TraceQueryEndData{Err: errors.New("boom")})
|
|
}
|