Skip to content

Commit 3b45255

Browse files
authored
Merge pull request #535 from neelanjan00/refactor-feedbacks
Refactored Feedback Messages Validation
2 parents f4892a7 + d959634 commit 3b45255

File tree

7 files changed

+42
-145
lines changed

7 files changed

+42
-145
lines changed

chaoslib/litmus/cpu-stress/lib/cpu-stress.go

+10-65
Original file line numberDiff line numberDiff line change
@@ -109,19 +109,8 @@ func injectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
109109
return errors.Errorf("failed while sending message to agent, err: %v", err)
110110
}
111111

112-
// ACTION_SUCCESSFUL feedback is received only if the cpu stress chaos has been injected successfully
113-
if feedback != "ACTION_SUCCESSFUL" {
114-
if feedback == "ERROR" {
115-
116-
agentError, err := messages.GetErrorMessage(payload)
117-
if err != nil {
118-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
119-
}
120-
121-
return errors.Errorf("error occured while injecting CPU stress chaos for %s agent endpoint, err: %s", agentEndpointList[i], agentError)
122-
}
123-
124-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
112+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
113+
return errors.Errorf("error occured while injecting CPU stress chaos for %s agent endpoint, err: %v", agentEndpointList[i], err)
125114
}
126115

127116
underChaosEndpoints = append(underChaosEndpoints, i)
@@ -150,19 +139,8 @@ func injectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
150139
return errors.Errorf("failed while sending message to agent, err: %v", err)
151140
}
152141

153-
// ACTION_SUCCESSFUL feedback is received only if the cpu stress chaos has been injected successfully
154-
if feedback != "ACTION_SUCCESSFUL" {
155-
if feedback == "ERROR" {
156-
157-
agentError, err := messages.GetErrorMessage(payload)
158-
if err != nil {
159-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
160-
}
161-
162-
return errors.Errorf("error occured while reverting CPU stress chaos for %s agent endpoint, err: %s", agentEndpointList[i], agentError)
163-
}
164-
165-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
142+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
143+
return errors.Errorf("error occured while reverting CPU stress chaos for %s agent endpoint, err: %v", agentEndpointList[i], err)
166144
}
167145

168146
underChaosEndpoints = underChaosEndpoints[:len(underChaosEndpoints)-1]
@@ -200,19 +178,8 @@ func injectChaosInParallelMode(experimentsDetails *experimentTypes.ExperimentDet
200178
return errors.Errorf("failed while sending message to agent, err: %v", err)
201179
}
202180

203-
// ACTION_SUCCESSFUL feedback is received only if the cpu stress chaos has been injected successfully
204-
if feedback != "ACTION_SUCCESSFUL" {
205-
if feedback == "ERROR" {
206-
207-
agentError, err := messages.GetErrorMessage(payload)
208-
if err != nil {
209-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
210-
}
211-
212-
return errors.Errorf("error occured while injecting CPU stress chaos for %s agent endpoint, err: %s", agentEndpointList[i], agentError)
213-
}
214-
215-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
181+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
182+
return errors.Errorf("error occured while injecting CPU stress chaos for %s agent endpoint, err: %v", agentEndpointList[i], err)
216183
}
217184

218185
underChaosEndpoints = append(underChaosEndpoints, i)
@@ -244,19 +211,8 @@ func injectChaosInParallelMode(experimentsDetails *experimentTypes.ExperimentDet
244211
return errors.Errorf("failed while sending message to agent, err: %v", err)
245212
}
246213

247-
// ACTION_SUCCESSFUL feedback is received only if the cpu stress chaos has been injected successfully
248-
if feedback != "ACTION_SUCCESSFUL" {
249-
if feedback == "ERROR" {
250-
251-
agentError, err := messages.GetErrorMessage(payload)
252-
if err != nil {
253-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
254-
}
255-
256-
return errors.Errorf("error occured while reverting CPU stress chaos for %s agent endpoint, err: %s", agentEndpointList[i], agentError)
257-
}
258-
259-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
214+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
215+
return errors.Errorf("error occured while reverting CPU stress chaos for %s agent endpoint, err: %v", agentEndpointList[i], err)
260216
}
261217

262218
common.SetTargets(agentEndpointList[i], "reverted", "Machine", chaosDetails)
@@ -285,19 +241,8 @@ func AbortWatcher(connections []*websocket.Conn, agentEndpointList []string, abo
285241
log.Errorf("unable to send abort chaos message to %s agent endpoint, err: %v", agentEndpointList[i], err)
286242
}
287243

288-
// ACTION_SUCCESSFUL feedback is received only if the cpu stress chaos has been aborted successfully
289-
if feedback != "ACTION_SUCCESSFUL" {
290-
if feedback == "ERROR" {
291-
292-
agentError, err := messages.GetErrorMessage(payload)
293-
if err != nil {
294-
log.Errorf("failed to interpret error message from agent, err: %v", err)
295-
}
296-
297-
log.Errorf("error occured while aborting the experiment for %s agent endpoint, err: %s", agentEndpointList[i], agentError)
298-
}
299-
300-
log.Errorf("unintelligible feedback received from agent: %s", feedback)
244+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
245+
log.Errorf("error occured while aborting CPU stress chaos for %s agent endpoint, err: %v", agentEndpointList[i], err)
301246
}
302247

303248
common.SetTargets(agentEndpointList[i], "reverted", "Machine", chaosDetails)

chaoslib/litmus/process-kill/lib/process-kill.go

+4-26
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,8 @@ func injectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
8989

9090
common.SetTargets(strconv.Itoa(pid), "injected", "Process", chaosDetails)
9191

92-
// ACTION_SUCCESSFUL feedback is received only if the process is killed successfully
93-
if feedback != "ACTION_SUCCESSFUL" {
94-
if feedback == "ERROR" {
95-
96-
agentError, err := messages.GetErrorMessage(payload)
97-
if err != nil {
98-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
99-
}
100-
101-
return errors.Errorf("error occured while killing %d process, err: %s", pid, agentError)
102-
}
103-
104-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
92+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
93+
return errors.Errorf("error occured while killing %d process, err: %v", pid, err)
10594
}
10695

10796
log.Infof("[Chaos]: %d process killed successfully", pid)
@@ -157,19 +146,8 @@ func injectChaosInParallelMode(experimentsDetails *experimentTypes.ExperimentDet
157146
common.SetTargets(strconv.Itoa(pid), "injected", "Process", chaosDetails)
158147
}
159148

160-
// ACTION_SUCCESSFUL feedback is received only if all the processes are killed successfully
161-
if feedback != "ACTION_SUCCESSFUL" {
162-
if feedback == "ERROR" {
163-
164-
agentError, err := messages.GetErrorMessage(payload)
165-
if err != nil {
166-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
167-
}
168-
169-
return errors.Errorf("error during process kill, err: %s", agentError)
170-
}
171-
172-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
149+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
150+
return errors.Errorf("error occured while trying to kill the process, err: %v", err)
173151
}
174152

175153
log.Infof("[Chaos]: %v processes killed successfully", pids)

pkg/machine/common/messages/messages.go

+20
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,23 @@ func GetErrorMessage(payload []byte) (string, error) {
126126

127127
return agentError, nil
128128
}
129+
130+
// ValidateAgentFeedback interprets the feedback received from the agent for an earlier sent message
131+
func ValidateAgentFeedback(feedback string, payload []byte) error {
132+
133+
if feedback != "ACTION_SUCCESSFUL" {
134+
if feedback == "ERROR" || feedback == "PROBE_ERROR" {
135+
136+
agentError, err := GetErrorMessage(payload)
137+
if err != nil {
138+
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
139+
}
140+
141+
return errors.Errorf(agentError)
142+
}
143+
144+
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
145+
}
146+
147+
return nil
148+
}

pkg/machine/cpu/cpu-status.go

+2-13
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,8 @@ func CheckPrerequisites(cpus, loadPercentage string, connections []*websocket.Co
3333
return errors.Errorf("failed to send message to agent, err: %v", err)
3434
}
3535

36-
// ACTION_SUCCESSFUL feedback is received only if all the processes exist in the target machine
37-
if feedback != "ACTION_SUCCESSFUL" {
38-
if feedback == "ERROR" {
39-
40-
agentError, err := messages.GetErrorMessage(payload)
41-
if err != nil {
42-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
43-
}
44-
45-
return errors.Errorf("error during steady-state validation, err: %s", agentError)
46-
}
47-
48-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
36+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
37+
return errors.Errorf("error during steady-state validation, err: %v", err)
4938
}
5039
}
5140

pkg/machine/process/process-status.go

+2-13
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,8 @@ func ProcessStateCheck(conn *websocket.Conn, processIds string) error {
3737
return errors.Errorf("failed to send message to agent, err: %v", err)
3838
}
3939

40-
// ACTION_SUCCESSFUL feedback is received only if all the processes exist in the target machine
41-
if feedback != "ACTION_SUCCESSFUL" {
42-
if feedback == "ERROR" {
43-
44-
agentError, err := messages.GetErrorMessage(payload)
45-
if err != nil {
46-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
47-
}
48-
49-
return errors.Errorf("error during steady-state validation, err: %s", agentError)
50-
}
51-
52-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
40+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
41+
return errors.Errorf("error during steady-state validation, err: %v", err)
5342
}
5443

5544
return nil

pkg/probe/cmdprobe.go

+2-16
Original file line numberDiff line numberDiff line change
@@ -96,22 +96,8 @@ func triggerInlineCmdProbe(probe v1alpha1.ProbeAttributes, resultDetails *types.
9696
return errors.Errorf("unable to send message to the agent, %v", err)
9797
}
9898

99-
// ACTION_SUCCESSFUL feedback is received only if the command execution was successful
100-
if feedback != "ACTION_SUCCESSFUL" {
101-
102-
var agentError string
103-
104-
if feedback == "PROBE_ERROR" {
105-
106-
if err := json.Unmarshal(payload, &agentError); err != nil {
107-
return errors.Errorf("failed to interpret error message from agent, %v", err)
108-
}
109-
110-
return errors.Errorf(agentError)
111-
} else {
112-
113-
return errors.Errorf("unintelligible feedback: %v", feedback)
114-
}
99+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
100+
return err
115101
}
116102

117103
if err := json.Unmarshal(payload, &stdout); err != nil {

pkg/utils/common/common.go

+2-12
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,8 @@ func WaitForDurationAndCheckLiveness(connections []*websocket.Conn, agentEndpoin
6565
chaosRevert.Wait()
6666

6767
default:
68-
if feedback != "ACTION_SUCCESSFUL" {
69-
if feedback == "ERROR" {
70-
71-
agentError, err := messages.GetErrorMessage(payload)
72-
if err != nil {
73-
return errors.Errorf("failed to interpret error message from agent, err: %v", err)
74-
}
75-
76-
return errors.Errorf("received error feedback from %s agent endpoint, err: %s", agentEndpointList[i], agentError)
77-
}
78-
79-
return errors.Errorf("unintelligible feedback received from agent: %s", feedback)
68+
if err := messages.ValidateAgentFeedback(feedback, payload); err != nil {
69+
return errors.Errorf("error during liveness check for %s agent endpoint, err: %v", agentEndpointList[i], err)
8070
}
8171
}
8272
}

0 commit comments

Comments
 (0)