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

Function TestManager_UpdateStatus

agent/unit/manager_test.go:304–435  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

302}
303
304func TestManager_UpdateStatus(t *testing.T) {
305 t.Parallel()
306
307 t.Run("UpdateStatusTriggersReadinessRecalculation", func(t *testing.T) {
308 t.Parallel()
309
310 manager := unit.NewManager()
311
312 // Given units A and B are registered
313 err := manager.Register(unitA)
314 require.NoError(t, err)
315 err = manager.Register(unitB)
316 require.NoError(t, err)
317
318 // Given Unit A depends on Unit B being unit.StatusStarted
319 err = manager.AddDependency(unitA, unitB, unit.StatusStarted)
320 require.NoError(t, err)
321
322 // Then: Unit A should not be ready (depends on B)
323 u, err := manager.Unit(unitA)
324 require.NoError(t, err)
325 assert.Equal(t, unit.StatusPending, u.Status())
326 isReady, err := manager.IsReady(unitA)
327 require.NoError(t, err)
328 assert.False(t, isReady)
329
330 // When: Unit B is started
331 err = manager.UpdateStatus(unitB, unit.StatusStarted)
332 require.NoError(t, err)
333
334 // Then: Unit A should be ready, because its dependency is now in the desired state.
335 u, err = manager.Unit(unitA)
336 require.NoError(t, err)
337 assert.Equal(t, unit.StatusPending, u.Status())
338 isReady, err = manager.IsReady(unitA)
339 require.NoError(t, err)
340 assert.True(t, isReady)
341 })
342
343 t.Run("UpdateStatusWithUnregisteredUnit", func(t *testing.T) {
344 t.Parallel()
345
346 manager := unit.NewManager()
347
348 // Given Unit A is not registered
349 // When: Unit A is updated to unit.StatusStarted
350 err := manager.UpdateStatus(unitA, unit.StatusStarted)
351
352 // Then: a descriptive error communicates that the unit must be registered first.
353 require.ErrorIs(t, err, unit.ErrUnitNotFound)
354 })
355
356 t.Run("LinearChainDependencies", func(t *testing.T) {
357 t.Parallel()
358
359 manager := unit.NewManager()
360
361 // Given units A, B, and C are registered

Callers

nothing calls this directly

Calls 9

RegisterMethod · 0.95
AddDependencyMethod · 0.95
UnitMethod · 0.95
IsReadyMethod · 0.95
UpdateStatusMethod · 0.95
NewManagerFunction · 0.92
RunMethod · 0.65
EqualMethod · 0.45
StatusMethod · 0.45

Tested by

no test coverage detected