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

Function TestWatcher_ClosedAfterDial

coderd/workspaceconnwatcher/watcher_test.go:429–472  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

427}
428
429func TestWatcher_ClosedAfterDial(t *testing.T) {
430 t.Parallel()
431
432 ctx := testutil.Context(t, testutil.WaitShort)
433 logger := testutil.Logger(t)
434 h := newHarness(ctx, t, logger)
435
436 h.db.EXPECT().GetLatestWorkspaceBuildWithStatusByWorkspaceID(gomock.Any(), h.workspace.ID).
437 Times(1).
438 Return(database.GetLatestWorkspaceBuildWithStatusByWorkspaceIDRow{
439 Transition: database.WorkspaceTransitionStop,
440 BuildNumber: 1,
441 JobStatus: database.ProvisionerJobStatusSucceeded,
442 WorkspaceTable: database.WorkspaceTable{
443 ID: h.workspace.ID,
444 OwnerID: userID,
445 OrganizationID: orgID,
446 },
447 }, nil)
448
449 dec, err := h.Dial(ctx, "wss://local.test/")
450 require.NoError(t, err)
451 events := dec.Chan()
452 _ = testutil.RequireReceive(ctx, t, events)
453
454 closed := make(chan struct{})
455 go func() {
456 defer close(closed)
457 h.watcher.Close()
458 }()
459
460 e := testutil.RequireReceive(ctx, t, events)
461 require.NotNil(t, e.Error)
462 require.Equal(t, workspacesdk.WatchErrorServerShutdown, e.Error.Code)
463 require.True(t, e.Error.Retryable)
464
465 select {
466 case <-ctx.Done():
467 t.Fatal("context timed out")
468 case _, ok := <-events:
469 require.False(t, ok, "socket not closed")
470 }
471 testutil.TryReceive(ctx, t, closed)
472}

Callers

nothing calls this directly

Calls 13

ContextFunction · 0.92
LoggerFunction · 0.92
RequireReceiveFunction · 0.92
TryReceiveFunction · 0.92
newHarnessFunction · 0.85
FatalMethod · 0.80
DialMethod · 0.65
CloseMethod · 0.65
EXPECTMethod · 0.45
ChanMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected