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

Function TestTracker_FlushToDB_NewPeriod

coderd/boundaryusage/tracker_test.go:186–224  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

184}
185
186func TestTracker_FlushToDB_NewPeriod(t *testing.T) {
187 t.Parallel()
188
189 db, _ := dbtestutil.NewDB(t)
190 ctx := testutil.Context(t, testutil.WaitShort)
191 boundaryCtx := dbauthz.AsBoundaryUsageTracker(ctx)
192
193 tracker := boundaryusage.NewTracker()
194 replicaID := uuid.New()
195 workspaceID := uuid.New()
196 ownerID := uuid.New()
197
198 tracker.Track(workspaceID, ownerID, 10, 5)
199
200 // First flush.
201 err := tracker.FlushToDB(ctx, db, replicaID)
202 require.NoError(t, err)
203
204 // Simulate telemetry reset (new period).
205 _, err = db.GetAndResetBoundaryUsageSummary(boundaryCtx, 60000)
206 require.NoError(t, err)
207
208 // Track new data.
209 workspace2 := uuid.New()
210 owner2 := uuid.New()
211 tracker.Track(workspace2, owner2, 3, 1)
212
213 // Flushing again should detect new period and reset in-memory stats.
214 err = tracker.FlushToDB(ctx, db, replicaID)
215 require.NoError(t, err)
216
217 // The summary should only contain the new data after reset.
218 summary, err := db.GetAndResetBoundaryUsageSummary(boundaryCtx, 60000)
219 require.NoError(t, err)
220 require.Equal(t, int64(1), summary.UniqueWorkspaces, "should only count new workspace")
221 require.Equal(t, int64(1), summary.UniqueUsers, "should only count new user")
222 require.Equal(t, int64(3), summary.AllowedRequests, "should only count new requests")
223 require.Equal(t, int64(1), summary.DeniedRequests, "should only count new requests")
224}
225
226func TestTracker_FlushToDB_NoActivity(t *testing.T) {
227 t.Parallel()

Callers

nothing calls this directly

Calls 9

TrackMethod · 0.95
FlushToDBMethod · 0.95
NewDBFunction · 0.92
ContextFunction · 0.92
AsBoundaryUsageTrackerFunction · 0.92
NewTrackerFunction · 0.92
NewMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected