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

Function TestManager_AddDependency

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

Source from the content-addressed store, hash-verified

123}
124
125func TestManager_AddDependency(t *testing.T) {
126 t.Parallel()
127
128 t.Run("AddDependencyBetweenRegisteredUnits", func(t *testing.T) {
129 t.Parallel()
130
131 manager := unit.NewManager()
132
133 // Given: units A and B are registered
134 err := manager.Register(unitA)
135 require.NoError(t, err)
136 err = manager.Register(unitB)
137 require.NoError(t, err)
138
139 // Given: Unit A depends on Unit B being unit.StatusStarted
140 err = manager.AddDependency(unitA, unitB, unit.StatusStarted)
141 require.NoError(t, err)
142
143 // Then: Unit A should not be ready (depends on B)
144 u, err := manager.Unit(unitA)
145 require.NoError(t, err)
146 assert.Equal(t, unit.StatusPending, u.Status())
147 isReady, err := manager.IsReady(unitA)
148 require.NoError(t, err)
149 assert.False(t, isReady)
150
151 // Then: Unit B should still be ready (no dependencies)
152 u, err = manager.Unit(unitB)
153 require.NoError(t, err)
154 assert.Equal(t, unit.StatusPending, u.Status())
155 isReady, err = manager.IsReady(unitB)
156 require.NoError(t, err)
157 assert.True(t, isReady)
158
159 // When: Unit B is started
160 err = manager.UpdateStatus(unitB, unit.StatusStarted)
161 require.NoError(t, err)
162
163 // Then: Unit A should be ready, because its dependency is now in the desired state.
164 isReady, err = manager.IsReady(unitA)
165 require.NoError(t, err)
166 assert.True(t, isReady)
167
168 // When: Unit B is stopped
169 err = manager.UpdateStatus(unitB, unit.StatusPending)
170 require.NoError(t, err)
171
172 // Then: Unit A should no longer be ready, because its dependency is not in the desired state.
173 isReady, err = manager.IsReady(unitA)
174 require.NoError(t, err)
175 assert.False(t, isReady)
176 })
177
178 t.Run("AddDependencyByAnUnregisteredDependentUnit", func(t *testing.T) {
179 t.Parallel()
180
181 manager := unit.NewManager()
182

Callers

nothing calls this directly

Calls 11

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

Tested by

no test coverage detected