MCPcopy
hub / github.com/grafana/dskit / switchState

Method switchState

grpcutil/health_check_test.go:162–206  ·  view source on GitHub ↗
(desiredState services.State)

Source from the content-addressed store, hash-verified

160}
161
162func (s *mockService) switchState(desiredState services.State) {
163 // Simulate all the states between the current state and the desired one.
164 orderedStates := []services.State{services.New, services.Starting, services.Running, services.Failed, services.Stopping, services.Terminated}
165 simulationStarted := false
166
167 for _, orderedState := range orderedStates {
168 // Skip until we reach the current state.
169 if !simulationStarted && orderedState != s.state {
170 continue
171 }
172
173 // Start the simulation once we reach the current state.
174 if orderedState == s.state {
175 simulationStarted = true
176 continue
177 }
178
179 // Skip the failed state, unless it's the desired one.
180 if orderedState == services.Failed && desiredState != services.Failed {
181 continue
182 }
183
184 s.state = orderedState
185
186 // Synchronously call listeners to avoid flaky tests.
187 for _, listener := range s.listeners {
188 switch orderedState {
189 case services.Starting:
190 listener.Starting()
191 case services.Running:
192 listener.Running()
193 case services.Stopping:
194 listener.Stopping(services.Running)
195 case services.Failed:
196 listener.Failed(services.Running, errors.New("mocked error"))
197 case services.Terminated:
198 listener.Terminated(services.Stopping)
199 }
200 }
201
202 if orderedState == desiredState {
203 break
204 }
205 }
206}
207
208func (s *mockService) State() services.State {
209 return s.state

Calls 5

StartingMethod · 0.65
RunningMethod · 0.65
StoppingMethod · 0.65
FailedMethod · 0.65
TerminatedMethod · 0.65

Tested by

no test coverage detected