MCPcopy Index your code
hub / github.com/coder/coder / TestTelemetry_BoundaryUsageSummary

Function TestTelemetry_BoundaryUsageSummary

coderd/telemetry/telemetry_test.go:1434–1552  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1432}
1433
1434func TestTelemetry_BoundaryUsageSummary(t *testing.T) {
1435 t.Parallel()
1436
1437 t.Run("IncludedInSnapshot", func(t *testing.T) {
1438 t.Parallel()
1439
1440 db, _ := dbtestutil.NewDB(t)
1441 ctx := testutil.Context(t, testutil.WaitMedium)
1442
1443 tracker := boundaryusage.NewTracker()
1444 workspace1, workspace2 := uuid.New(), uuid.New()
1445 user1, user2 := uuid.New(), uuid.New()
1446 replicaID := uuid.New()
1447
1448 tracker.Track(workspace1, user1, 10, 2)
1449 tracker.Track(workspace2, user1, 5, 1)
1450 tracker.Track(workspace2, user2, 3, 0)
1451
1452 // Flush the tracker to the database.
1453 err := tracker.FlushToDB(ctx, db, replicaID)
1454 require.NoError(t, err)
1455
1456 // Collect a snapshot and verify boundary usage is included.
1457 clock := quartz.NewMock(t)
1458 clock.Set(dbtime.Now())
1459
1460 _, snapshot := collectSnapshot(ctx, t, db, func(opts telemetry.Options) telemetry.Options {
1461 opts.Clock = clock
1462 return opts
1463 })
1464
1465 require.NotNil(t, snapshot.BoundaryUsageSummary)
1466 require.Equal(t, int64(2), snapshot.BoundaryUsageSummary.UniqueWorkspaces)
1467 require.Equal(t, int64(2), snapshot.BoundaryUsageSummary.UniqueUsers)
1468 require.Equal(t, int64(10+5+3), snapshot.BoundaryUsageSummary.AllowedRequests)
1469 require.Equal(t, int64(2+1+0), snapshot.BoundaryUsageSummary.DeniedRequests)
1470 require.Equal(t, clock.Now().Add(-telemetry.DefaultSnapshotFrequency), snapshot.BoundaryUsageSummary.PeriodStart)
1471 require.Equal(t, int64(telemetry.DefaultSnapshotFrequency/time.Millisecond), snapshot.BoundaryUsageSummary.PeriodDurationMilliseconds)
1472 })
1473
1474 t.Run("ResetAfterCollection", func(t *testing.T) {
1475 t.Parallel()
1476
1477 db, _ := dbtestutil.NewDB(t)
1478 ctx := testutil.Context(t, testutil.WaitMedium)
1479
1480 tracker := boundaryusage.NewTracker()
1481 replicaID := uuid.New()
1482
1483 tracker.Track(uuid.New(), uuid.New(), 5, 1)
1484 err := tracker.FlushToDB(ctx, db, replicaID)
1485 require.NoError(t, err)
1486
1487 clock := quartz.NewMock(t)
1488 clock.Set(dbtime.Now())
1489
1490 // First snapshot should have the data.
1491 _, snapshot1 := collectSnapshot(ctx, t, db, func(opts telemetry.Options) telemetry.Options {

Callers

nothing calls this directly

Calls 12

TrackMethod · 0.95
FlushToDBMethod · 0.95
NewDBFunction · 0.92
ContextFunction · 0.92
NewTrackerFunction · 0.92
NowFunction · 0.92
collectSnapshotFunction · 0.85
RunMethod · 0.65
NewMethod · 0.65
SetMethod · 0.65
AddMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected