Skip to content

Commit 7674a8c

Browse files
committed
update test coverage for container devcontainer status
1 parent 8f12b3c commit 7674a8c

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

agent/agentcontainers/api_test.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,8 @@ func TestAPI(t *testing.T) {
477477
require.NoError(t, err, "unmarshal response failed")
478478
require.Len(t, resp.Devcontainers, 1, "expected one devcontainer in response")
479479
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusStarting, resp.Devcontainers[0].Status, "devcontainer is not starting")
480+
require.NotNil(t, resp.Devcontainers[0].Container, "devcontainer should have container reference")
481+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusStarting, resp.Devcontainers[0].Container.DevcontainerStatus, "container dc status is not starting")
480482

481483
// Allow the devcontainer CLI to continue the up process.
482484
close(tt.devcontainerCLI.continueUp)
@@ -503,6 +505,8 @@ func TestAPI(t *testing.T) {
503505
require.NoError(t, err, "unmarshal response failed after error")
504506
require.Len(t, resp.Devcontainers, 1, "expected one devcontainer in response after error")
505507
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusError, resp.Devcontainers[0].Status, "devcontainer is not in an error state after up failure")
508+
require.NotNil(t, resp.Devcontainers[0].Container, "devcontainer should have container reference after up failure")
509+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusError, resp.Devcontainers[0].Container.DevcontainerStatus, "container dc status is not error after up failure")
506510
return
507511
}
508512

@@ -525,7 +529,9 @@ func TestAPI(t *testing.T) {
525529
err = json.NewDecoder(rec.Body).Decode(&resp)
526530
require.NoError(t, err, "unmarshal response failed after recreation")
527531
require.Len(t, resp.Devcontainers, 1, "expected one devcontainer in response after recreation")
528-
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, resp.Devcontainers[0].Status, "devcontainer is not stopped after recreation")
532+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, resp.Devcontainers[0].Status, "devcontainer is not running after recreation")
533+
require.NotNil(t, resp.Devcontainers[0].Container, "devcontainer should have container reference after recreation")
534+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, resp.Devcontainers[0].Container.DevcontainerStatus, "container dc status is not running after recreation")
529535
})
530536
}
531537
})
@@ -620,6 +626,7 @@ func TestAPI(t *testing.T) {
620626
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, dc.Status)
621627
require.NotNil(t, dc.Container)
622628
assert.Equal(t, "runtime-container-1", dc.Container.ID)
629+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, dc.Container.DevcontainerStatus)
623630
},
624631
},
625632
{
@@ -660,12 +667,14 @@ func TestAPI(t *testing.T) {
660667
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusStopped, known2.Status)
661668
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, runtime1.Status)
662669

663-
require.NotNil(t, known1.Container)
664670
assert.Nil(t, known2.Container)
665-
require.NotNil(t, runtime1.Container)
666671

672+
require.NotNil(t, known1.Container)
667673
assert.Equal(t, "known-container-1", known1.Container.ID)
674+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, known1.Container.DevcontainerStatus)
675+
require.NotNil(t, runtime1.Container)
668676
assert.Equal(t, "runtime-container-1", runtime1.Container.ID)
677+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, runtime1.Container.DevcontainerStatus)
669678
},
670679
},
671680
{
@@ -704,10 +713,12 @@ func TestAPI(t *testing.T) {
704713
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusStopped, nonRunning.Status)
705714

706715
require.NotNil(t, running.Container, "running container should have container reference")
707-
require.NotNil(t, nonRunning.Container, "non-running container should have container reference")
708-
709716
assert.Equal(t, "running-container", running.Container.ID)
717+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, running.Container.DevcontainerStatus)
718+
719+
require.NotNil(t, nonRunning.Container, "non-running container should have container reference")
710720
assert.Equal(t, "non-running-container", nonRunning.Container.ID)
721+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusStopped, nonRunning.Container.DevcontainerStatus)
711722
},
712723
},
713724
{
@@ -743,6 +754,7 @@ func TestAPI(t *testing.T) {
743754
assert.NotEmpty(t, dc2.ConfigPath)
744755
require.NotNil(t, dc2.Container)
745756
assert.Equal(t, "known-container-2", dc2.Container.ID)
757+
assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, dc2.Container.DevcontainerStatus)
746758
},
747759
},
748760
{
@@ -811,9 +823,14 @@ func TestAPI(t *testing.T) {
811823

812824
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
813825

826+
mClock := quartz.NewMock(t)
827+
mClock.Set(time.Now()).MustWait(testutil.Context(t, testutil.WaitShort))
828+
tickerTrap := mClock.Trap().TickerFunc("updaterLoop")
829+
814830
// Setup router with the handler under test.
815831
r := chi.NewRouter()
816832
apiOptions := []agentcontainers.Option{
833+
agentcontainers.WithClock(mClock),
817834
agentcontainers.WithLister(tt.lister),
818835
agentcontainers.WithWatcher(watcher.NewNoop()),
819836
}
@@ -838,6 +855,15 @@ func TestAPI(t *testing.T) {
838855

839856
ctx := testutil.Context(t, testutil.WaitShort)
840857

858+
// Make sure the ticker function has been registered
859+
// before advancing the clock.
860+
tickerTrap.MustWait(ctx).Release()
861+
tickerTrap.Close()
862+
863+
// Advance the clock to run the updater loop.
864+
_, aw := mClock.AdvanceNext()
865+
aw.MustWait(ctx)
866+
841867
req := httptest.NewRequest(http.MethodGet, "/devcontainers", nil).
842868
WithContext(ctx)
843869
rec := httptest.NewRecorder()

0 commit comments

Comments
 (0)