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

Function TestRunner_Cleanup

scaletest/taskstatus/run_internal_test.go:656–707  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

654}
655
656func TestRunner_Cleanup(t *testing.T) {
657 t.Parallel()
658
659 ctx := testutil.Context(t, testutil.WaitMedium)
660
661 fakeClient := &fakeClientWithCleanupTracking{
662 fakeClient: newFakeClient(t),
663 deleteWorkspaceCalls: make([]uuid.UUID, 0),
664 }
665 fakeClient.initialize(slog.Make(sloghuman.Sink(testutil.NewTestLogWriter(t))).Leveled(slog.LevelDebug))
666
667 cfg := Config{
668 AppSlug: "test-app",
669 TemplateID: uuid.UUID{5, 6, 7, 8},
670 WorkspaceName: "test-workspace",
671 MetricLabelValues: []string{"test"},
672 Metrics: NewMetrics(prometheus.NewRegistry(), "test"),
673 ReportStatusPeriod: 100 * time.Millisecond,
674 ReportStatusDuration: 200 * time.Millisecond,
675 StartReporting: make(chan struct{}),
676 ConnectedWaitGroup: &sync.WaitGroup{},
677 }
678
679 runner := &Runner{
680 client: fakeClient,
681 updater: newFakeAppStatusUpdater(t),
682 cfg: cfg,
683 clock: quartz.NewMock(t),
684 randFloat64: func() float64 { return 0.5 }, // not random in tests
685 }
686
687 logWriter := testutil.NewTestLogWriter(t)
688
689 // Case 1: No workspace created - Cleanup should do nothing
690 err := runner.Cleanup(ctx, "test-runner", logWriter)
691 require.NoError(t, err)
692 require.Len(t, fakeClient.deleteWorkspaceCalls, 0, "deleteWorkspace should not be called when no workspace was created")
693
694 // Case 2: Workspace created - Cleanup should delete it
695 runner.workspaceID = uuid.UUID{1, 2, 3, 4}
696 err = runner.Cleanup(ctx, "test-runner", logWriter)
697 require.NoError(t, err)
698 require.Len(t, fakeClient.deleteWorkspaceCalls, 1, "deleteWorkspace should be called once")
699 require.Equal(t, runner.workspaceID, fakeClient.deleteWorkspaceCalls[0], "deleteWorkspace should be called with correct workspace ID")
700
701 // Case 3: Cleanup with error
702 fakeClient.deleteError = xerrors.New("delete failed")
703 runner.workspaceID = uuid.UUID{5, 6, 7, 8}
704 err = runner.Cleanup(ctx, "test-runner", logWriter)
705 require.Error(t, err)
706 require.Contains(t, err.Error(), "delete external workspace")
707}
708
709// fakeClientWithCleanupTracking extends fakeClient to track deleteWorkspace calls
710type fakeClientWithCleanupTracking struct {

Callers

nothing calls this directly

Calls 12

CleanupMethod · 0.95
ContextFunction · 0.92
NewTestLogWriterFunction · 0.92
newFakeAppStatusUpdaterFunction · 0.85
newFakeClientFunction · 0.70
NewMetricsFunction · 0.70
initializeMethod · 0.65
NewMethod · 0.65
LenMethod · 0.45
EqualMethod · 0.45
ErrorMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected