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

Function TestTracker_Track_Concurrent

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

Source from the content-addressed store, hash-verified

111}
112
113func TestTracker_Track_Concurrent(t *testing.T) {
114 t.Parallel()
115
116 db, _ := dbtestutil.NewDB(t)
117 ctx := testutil.Context(t, testutil.WaitShort)
118
119 tracker := boundaryusage.NewTracker()
120 replicaID := uuid.New()
121
122 const numGoroutines = 100
123 const requestsPerGoroutine = 10
124
125 var wg sync.WaitGroup
126 for i := 0; i < numGoroutines; i++ {
127 wg.Add(1)
128 go func() {
129 defer wg.Done()
130 workspaceID := uuid.New()
131 ownerID := uuid.New()
132 for j := 0; j < requestsPerGoroutine; j++ {
133 tracker.Track(workspaceID, ownerID, 1, 1)
134 }
135 }()
136 }
137 wg.Wait()
138
139 err := tracker.FlushToDB(ctx, db, replicaID)
140 require.NoError(t, err)
141
142 boundaryCtx := dbauthz.AsBoundaryUsageTracker(ctx)
143 summary, err := db.GetAndResetBoundaryUsageSummary(boundaryCtx, 60000)
144 require.NoError(t, err)
145 require.Equal(t, int64(numGoroutines), summary.UniqueWorkspaces)
146 require.Equal(t, int64(numGoroutines), summary.UniqueUsers)
147 require.Equal(t, int64(numGoroutines*requestsPerGoroutine), summary.AllowedRequests)
148 require.Equal(t, int64(numGoroutines*requestsPerGoroutine), summary.DeniedRequests)
149}
150
151func TestTracker_FlushToDB_Accumulates(t *testing.T) {
152 t.Parallel()

Callers

nothing calls this directly

Calls 12

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

Tested by

no test coverage detected