diff --git a/agent/agentcontainers/api_test.go b/agent/agentcontainers/api_test.go index 4e7926cf1d..f9fb89c16a 100644 --- a/agent/agentcontainers/api_test.go +++ b/agent/agentcontainers/api_test.go @@ -234,6 +234,8 @@ func (w *fakeWatcher) sendEventWaitNextCalled(ctx context.Context, event fsnotif // fakeSubAgentClient implements SubAgentClient for testing purposes. type fakeSubAgentClient struct { logger slog.Logger + + mu sync.Mutex // Protects following. agents map[uuid.UUID]agentcontainers.SubAgent listErrC chan error // If set, send to return error, close to return nil. @@ -254,6 +256,8 @@ func (m *fakeSubAgentClient) List(ctx context.Context) ([]agentcontainers.SubAge } } } + m.mu.Lock() + defer m.mu.Unlock() var agents []agentcontainers.SubAgent for _, agent := range m.agents { agents = append(agents, agent) @@ -283,6 +287,9 @@ func (m *fakeSubAgentClient) Create(ctx context.Context, agent agentcontainers.S return agentcontainers.SubAgent{}, xerrors.New("operating system must be set") } + m.mu.Lock() + defer m.mu.Unlock() + for _, a := range m.agents { if a.Name == agent.Name { return agentcontainers.SubAgent{}, &pq.Error{ @@ -314,6 +321,8 @@ func (m *fakeSubAgentClient) Delete(ctx context.Context, id uuid.UUID) error { } } } + m.mu.Lock() + defer m.mu.Unlock() if m.agents == nil { m.agents = make(map[uuid.UUID]agentcontainers.SubAgent) } @@ -2162,6 +2171,10 @@ func TestAPI(t *testing.T) { nowRecreateSuccessTrap.MustWait(ctx).MustRelease(ctx) nowRecreateSuccessTrap.Close() + // Advance the clock to run the devcontainer state update routine. + _, aw := mClock.AdvanceNext() + aw.MustWait(ctx) + req = httptest.NewRequest(http.MethodGet, "/", nil) rec = httptest.NewRecorder() r.ServeHTTP(rec, req) @@ -2178,7 +2191,7 @@ func TestAPI(t *testing.T) { // available for use. require.Len(t, response.Devcontainers, 1) assert.Equal(t, codersdk.WorkspaceAgentDevcontainerStatusRunning, response.Devcontainers[0].Status) - assert.NotNil(t, response.Devcontainers[0].Container) + require.NotNil(t, response.Devcontainers[0].Container) assert.Equal(t, testContainer.ID, response.Devcontainers[0].Container.ID) })