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

Function TestMeasureLatency

coderd/database/pubsub/pubsub_linux_test.go:296–377  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

294}
295
296func TestMeasureLatency(t *testing.T) {
297 t.Parallel()
298
299 newPubsub := func() (pubsub.Pubsub, func()) {
300 ctx, cancel := context.WithCancel(context.Background())
301 logger := testutil.Logger(t)
302 connectionURL, err := dbtestutil.Open(t)
303 require.NoError(t, err)
304 db, err := sql.Open("postgres", connectionURL)
305 require.NoError(t, err)
306 t.Cleanup(func() {
307 _ = db.Close()
308 })
309 ps, err := pubsub.New(ctx, logger, db, connectionURL)
310 require.NoError(t, err)
311
312 return ps, func() {
313 _ = ps.Close()
314 _ = db.Close()
315 cancel()
316 }
317 }
318
319 t.Run("MeasureLatency", func(t *testing.T) {
320 t.Parallel()
321
322 logger := testutil.Logger(t)
323 ps, done := newPubsub()
324 defer done()
325
326 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
327 defer cancel()
328
329 send, recv, err := pubsub.NewLatencyMeasurer(logger).Measure(ctx, ps)
330 require.NoError(t, err)
331 require.Greater(t, send.Seconds(), 0.0)
332 require.Greater(t, recv.Seconds(), 0.0)
333 })
334
335 t.Run("MeasureLatencyRecvTimeout", func(t *testing.T) {
336 t.Parallel()
337
338 logger := testutil.Logger(t)
339 ctrl := gomock.NewController(t)
340 ps := psmock.NewMockPubsub(ctrl)
341
342 ps.EXPECT().Subscribe(gomock.Any(), gomock.Any()).Return(func() {}, (error)(nil))
343 ps.EXPECT().Publish(gomock.Any(), gomock.Any()).Return((error)(nil))
344
345 ctx, cancel := context.WithCancel(context.Background())
346 cancel()
347
348 send, recv, err := pubsub.NewLatencyMeasurer(logger).Measure(ctx, ps)
349 require.ErrorContains(t, err, context.Canceled.Error())
350 require.GreaterOrEqual(t, send.Nanoseconds(), int64(0))
351 require.EqualValues(t, recv, time.Duration(-1))
352 })
353

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
MeasureMethod · 0.95
EXPECTMethod · 0.95
LoggerFunction · 0.92
OpenFunction · 0.92
NewFunction · 0.92
NewLatencyMeasurerFunction · 0.92
NewMockPubsubFunction · 0.92
newRacyPubsubFunction · 0.85
DurationMethod · 0.80
CleanupMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected