35 lines
964 B
Go
35 lines
964 B
Go
package dbtrace
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestStatsSnapshotAndDelta(t *testing.T) {
|
|
ctx, stats := WithStats(context.Background())
|
|
if got, ok := FromContext(ctx); !ok || got != stats {
|
|
t.Fatalf("FromContext() = (%v, %v), want installed stats", got, ok)
|
|
}
|
|
|
|
stats.Add(10*time.Millisecond, nil)
|
|
before := stats.Snapshot()
|
|
stats.Add(5*time.Millisecond, errors.New("boom"))
|
|
|
|
snap := stats.Snapshot()
|
|
if snap.Queries != 2 || snap.Errors != 1 || snap.Duration != 15*time.Millisecond {
|
|
t.Fatalf("Snapshot() = %+v, want 2 queries, 1 error, 15ms", snap)
|
|
}
|
|
|
|
delta := snap.Sub(before)
|
|
if delta.Queries != 1 || delta.Errors != 1 || delta.Duration != 5*time.Millisecond {
|
|
t.Fatalf("delta = %+v, want 1 query, 1 error, 5ms", delta)
|
|
}
|
|
}
|
|
|
|
func TestSnapshotFromContextWithoutStats(t *testing.T) {
|
|
if snap := SnapshotFromContext(context.Background()); !snap.Empty() {
|
|
t.Fatalf("SnapshotFromContext() = %+v, want empty", snap)
|
|
}
|
|
}
|