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

Function TestManager_Register

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

Source from the content-addressed store, hash-verified

48}
49
50func TestManager_Register(t *testing.T) {
51 t.Parallel()
52
53 t.Run("RegisterNewUnit", func(t *testing.T) {
54 t.Parallel()
55
56 manager := unit.NewManager()
57
58 // Given: a unit is registered
59 err := manager.Register(unitA)
60 require.NoError(t, err)
61
62 // Then: the unit should be ready (no dependencies)
63 u, err := manager.Unit(unitA)
64 require.NoError(t, err)
65 assert.Equal(t, unitA, u.ID())
66 assert.Equal(t, unit.StatusPending, u.Status())
67 isReady, err := manager.IsReady(unitA)
68 require.NoError(t, err)
69 assert.True(t, isReady)
70 })
71
72 t.Run("RegisterDuplicateUnit", func(t *testing.T) {
73 t.Parallel()
74
75 manager := unit.NewManager()
76
77 // Given: a unit is registered
78 err := manager.Register(unitA)
79 require.NoError(t, err)
80
81 // Newly registered units have StatusPending. We update the unit status to StatusStarted,
82 // so we can later assert that it is not overwritten back to StatusPending by the second
83 // register call
84 manager.UpdateStatus(unitA, unit.StatusStarted)
85
86 // When: the unit is registered again
87 err = manager.Register(unitA)
88
89 // Then: a descriptive error should be returned
90 require.ErrorIs(t, err, unit.ErrUnitAlreadyRegistered)
91
92 // Then: the unit status should not be overwritten
93 u, err := manager.Unit(unitA)
94 require.NoError(t, err)
95 assert.Equal(t, unit.StatusStarted, u.Status())
96 isReady, err := manager.IsReady(unitA)
97 require.NoError(t, err)
98 assert.True(t, isReady)
99 })
100
101 t.Run("RegisterMultipleUnits", func(t *testing.T) {
102 t.Parallel()
103
104 manager := unit.NewManager()
105
106 // Given: multiple units are registered
107 unitIDs := []unit.ID{unitA, unitB, unitC}

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected