From 9bfafaca7118719c6ad907a3c56d83c2bb11ec78 Mon Sep 17 00:00:00 2001 From: Tianze Shan Date: Thu, 3 Oct 2024 16:11:48 -0700 Subject: [PATCH] Remove internal error messages from fault injection HTTP response (#4381) * Remove internal error messages from fault injection HTTP response --------- Co-authored-by: mye956 Co-authored-by: xingzhen Co-authored-by: Tianze Shan --- .../handlers/fault/v1/handlers/handlers.go | 41 ++++++++++--------- .../handlers/fault/v1/handlers/handlers.go | 41 ++++++++++--------- .../fault/v1/handlers/handlers_test.go | 7 ++-- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go b/agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go index 4c5b5a3a520..f3f3bf3acef 100644 --- a/agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go +++ b/agent/vendor/github.com/aws/amazon-ecs-agent/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go @@ -42,12 +42,15 @@ import ( ) const ( + // Request types startFaultRequestType = "start %s" stopFaultRequestType = "stop %s" checkStatusFaultRequestType = "check status %s" - invalidNetworkModeError = "%s mode is not supported. Please use either host or awsvpc mode." - faultInjectionEnabledError = "enableFaultInjection is not enabled for task: %s" - requestTimedOutError = "%s: request timed out" + // Error messages + internalError = "internal error" + invalidNetworkModeError = "%s mode is not supported. Please use either host or awsvpc mode." + faultInjectionEnabledError = "enableFaultInjection is not enabled for task: %s" + requestTimedOutError = "%s: request timed out" // This is our initial assumption of how much time it would take for the Linux commands used to inject faults // to finish. This will be confirmed/updated after more testing. requestTimeoutDuration = 5 * time.Second @@ -147,14 +150,14 @@ func (h *FaultHandler) StartNetworkBlackholePort() func(http.ResponseWriter, *ht insertTable = "OUTPUT" } - cmdOutput, cmdErr := h.startNetworkBlackholePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + _, cmdErr := h.startNetworkBlackholePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, insertTable, taskArn) if err := ctxWithTimeout.Err(); errors.Is(err, context.DeadlineExceeded) { statusCode = http.StatusInternalServerError responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK responseBody = types.NewNetworkFaultInjectionSuccessResponse("running") @@ -293,7 +296,7 @@ func (h *FaultHandler) StopNetworkBlackHolePort() func(http.ResponseWriter, *htt insertTable = "OUTPUT" } - cmdOutput, cmdErr := h.stopNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + _, cmdErr := h.stopNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, insertTable, taskArn) if err := ctxWithTimeout.Err(); errors.Is(err, context.DeadlineExceeded) { @@ -301,7 +304,7 @@ func (h *FaultHandler) StopNetworkBlackHolePort() func(http.ResponseWriter, *htt responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK responseBody = types.NewNetworkFaultInjectionSuccessResponse("stopped") @@ -436,7 +439,7 @@ func (h *FaultHandler) CheckNetworkBlackHolePort() func(http.ResponseWriter, *ht stringToBeLogged := "Failed to check fault" port := strconv.FormatUint(uint64(aws.Uint16Value(request.Port)), 10) chainName := fmt.Sprintf("%s-%s-%s", aws.StringValue(request.TrafficType), aws.StringValue(request.Protocol), port) - running, cmdOutput, cmdErr := h.checkNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + running, _, cmdErr := h.checkNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, taskArn) // We've timed out trying to check if the black hole port fault injection is running @@ -445,7 +448,7 @@ func (h *FaultHandler) CheckNetworkBlackHolePort() func(http.ResponseWriter, *ht responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK if running { @@ -553,7 +556,7 @@ func (h *FaultHandler) StartNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there already exists a fault in the task network namespace. @@ -570,7 +573,7 @@ func (h *FaultHandler) StartNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully started fault" @@ -625,7 +628,7 @@ func (h *FaultHandler) StopNetworkLatency() func(http.ResponseWriter, *http.Requ responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there doesn't already exist a network-latency fault @@ -640,7 +643,7 @@ func (h *FaultHandler) StopNetworkLatency() func(http.ResponseWriter, *http.Requ responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully stopped fault" @@ -696,7 +699,7 @@ func (h *FaultHandler) CheckNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully checked fault status" @@ -766,7 +769,7 @@ func (h *FaultHandler) StartNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there already exists a fault in the task network namespace. @@ -783,7 +786,7 @@ func (h *FaultHandler) StartNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully started fault" @@ -838,7 +841,7 @@ func (h *FaultHandler) StopNetworkPacketLoss() func(http.ResponseWriter, *http.R responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there doesn't already exist a network-packet-loss fault @@ -853,7 +856,7 @@ func (h *FaultHandler) StopNetworkPacketLoss() func(http.ResponseWriter, *http.R responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully stopped fault" @@ -909,7 +912,7 @@ func (h *FaultHandler) CheckNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully checked fault status" diff --git a/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go b/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go index 4c5b5a3a520..f3f3bf3acef 100644 --- a/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go +++ b/ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go @@ -42,12 +42,15 @@ import ( ) const ( + // Request types startFaultRequestType = "start %s" stopFaultRequestType = "stop %s" checkStatusFaultRequestType = "check status %s" - invalidNetworkModeError = "%s mode is not supported. Please use either host or awsvpc mode." - faultInjectionEnabledError = "enableFaultInjection is not enabled for task: %s" - requestTimedOutError = "%s: request timed out" + // Error messages + internalError = "internal error" + invalidNetworkModeError = "%s mode is not supported. Please use either host or awsvpc mode." + faultInjectionEnabledError = "enableFaultInjection is not enabled for task: %s" + requestTimedOutError = "%s: request timed out" // This is our initial assumption of how much time it would take for the Linux commands used to inject faults // to finish. This will be confirmed/updated after more testing. requestTimeoutDuration = 5 * time.Second @@ -147,14 +150,14 @@ func (h *FaultHandler) StartNetworkBlackholePort() func(http.ResponseWriter, *ht insertTable = "OUTPUT" } - cmdOutput, cmdErr := h.startNetworkBlackholePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + _, cmdErr := h.startNetworkBlackholePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, insertTable, taskArn) if err := ctxWithTimeout.Err(); errors.Is(err, context.DeadlineExceeded) { statusCode = http.StatusInternalServerError responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK responseBody = types.NewNetworkFaultInjectionSuccessResponse("running") @@ -293,7 +296,7 @@ func (h *FaultHandler) StopNetworkBlackHolePort() func(http.ResponseWriter, *htt insertTable = "OUTPUT" } - cmdOutput, cmdErr := h.stopNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + _, cmdErr := h.stopNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, insertTable, taskArn) if err := ctxWithTimeout.Err(); errors.Is(err, context.DeadlineExceeded) { @@ -301,7 +304,7 @@ func (h *FaultHandler) StopNetworkBlackHolePort() func(http.ResponseWriter, *htt responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK responseBody = types.NewNetworkFaultInjectionSuccessResponse("stopped") @@ -436,7 +439,7 @@ func (h *FaultHandler) CheckNetworkBlackHolePort() func(http.ResponseWriter, *ht stringToBeLogged := "Failed to check fault" port := strconv.FormatUint(uint64(aws.Uint16Value(request.Port)), 10) chainName := fmt.Sprintf("%s-%s-%s", aws.StringValue(request.TrafficType), aws.StringValue(request.Protocol), port) - running, cmdOutput, cmdErr := h.checkNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, + running, _, cmdErr := h.checkNetworkBlackHolePort(ctxWithTimeout, aws.StringValue(request.Protocol), port, chainName, networkMode, networkNSPath, taskArn) // We've timed out trying to check if the black hole port fault injection is running @@ -445,7 +448,7 @@ func (h *FaultHandler) CheckNetworkBlackHolePort() func(http.ResponseWriter, *ht responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) } else if cmdErr != nil { statusCode = http.StatusInternalServerError - responseBody = types.NewNetworkFaultInjectionErrorResponse(cmdOutput) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) } else { statusCode = http.StatusOK if running { @@ -553,7 +556,7 @@ func (h *FaultHandler) StartNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there already exists a fault in the task network namespace. @@ -570,7 +573,7 @@ func (h *FaultHandler) StartNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully started fault" @@ -625,7 +628,7 @@ func (h *FaultHandler) StopNetworkLatency() func(http.ResponseWriter, *http.Requ responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there doesn't already exist a network-latency fault @@ -640,7 +643,7 @@ func (h *FaultHandler) StopNetworkLatency() func(http.ResponseWriter, *http.Requ responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully stopped fault" @@ -696,7 +699,7 @@ func (h *FaultHandler) CheckNetworkLatency() func(http.ResponseWriter, *http.Req responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully checked fault status" @@ -766,7 +769,7 @@ func (h *FaultHandler) StartNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there already exists a fault in the task network namespace. @@ -783,7 +786,7 @@ func (h *FaultHandler) StartNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully started fault" @@ -838,7 +841,7 @@ func (h *FaultHandler) StopNetworkPacketLoss() func(http.ResponseWriter, *http.R responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { // If there doesn't already exist a network-packet-loss fault @@ -853,7 +856,7 @@ func (h *FaultHandler) StopNetworkPacketLoss() func(http.ResponseWriter, *http.R responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully stopped fault" @@ -909,7 +912,7 @@ func (h *FaultHandler) CheckNetworkPacketLoss() func(http.ResponseWriter, *http. responseBody = types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf(requestTimedOutError, requestType)) httpStatusCode = http.StatusInternalServerError } else if err != nil { - responseBody = types.NewNetworkFaultInjectionErrorResponse(err.Error()) + responseBody = types.NewNetworkFaultInjectionErrorResponse(internalError) httpStatusCode = http.StatusInternalServerError } else { stringToBeLogged = "Successfully checked fault status" diff --git a/ecs-agent/tmds/handlers/fault/v1/handlers/handlers_test.go b/ecs-agent/tmds/handlers/fault/v1/handlers/handlers_test.go index 590af933acd..f350cce4090 100644 --- a/ecs-agent/tmds/handlers/fault/v1/handlers/handlers_test.go +++ b/ecs-agent/tmds/handlers/fault/v1/handlers/handlers_test.go @@ -54,7 +54,6 @@ const ( awsvpcNetworkMode = "awsvpc" deviceName = "eth0" invalidNetworkMode = "invalid" - internalError = "internal error" iptablesChainAlreadyExistError = "iptables: Chain already exists." iptablesChainNotFoundError = "iptables: Bad rule (does a matching rule exist in that chain?)." tcLatencyFaultExistsCommandOutput = `[{"kind":"netem","handle":"10:","parent":"1:1","options":{"limit":1000,"delay":{"delay":123456789,"jitter":4567,"correlation":0},"ecn":false,"gap":0}}]` @@ -581,7 +580,7 @@ func generateStartBlackHolePortFaultTestCases() []networkFaultInjectionTestCase name: fmt.Sprintf("%s fail duplicate chain", startNetworkBlackHolePortTestPrefix), expectedStatusCode: 500, requestBody: happyBlackHolePortReqBody, - expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse(iptablesChainAlreadyExistError), + expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse(internalError), setAgentStateExpectations: func(agentState *mock_state.MockAgentState, netConfigClient *netconfig.NetworkConfigClient) { agentState.EXPECT().GetTaskMetadataWithTaskNetworkConfig(endpointId, netConfigClient). Return(happyTaskResponse, nil). @@ -1009,7 +1008,7 @@ func generateCommonNetworkLatencyTestCases(name string) []networkFaultInjectionT "Sources": ipSources, "Unknown": "", }, - expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse("failed to check existing network fault: failed to unmarshal tc command output: unexpected end of JSON input. TaskArn: taskArn"), + expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse(internalError), setAgentStateExpectations: func(agentState *mock_state.MockAgentState, netConfigClient *netconfig.NetworkConfigClient) { agentState.EXPECT().GetTaskMetadataWithTaskNetworkConfig(endpointId, netConfigClient).Return(happyTaskResponse, nil) }, @@ -1564,7 +1563,7 @@ func generateCommonNetworkPacketLossTestCases(name string) []networkFaultInjecti "Unknown": "", "SourcesToFilter": []string{}, }, - expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse("failed to check existing network fault: failed to unmarshal tc command output: unexpected end of JSON input. TaskArn: taskArn"), + expectedResponseBody: types.NewNetworkFaultInjectionErrorResponse(internalError), setAgentStateExpectations: func(agentState *mock_state.MockAgentState, netConfigClient *netconfig.NetworkConfigClient) { agentState.EXPECT().GetTaskMetadataWithTaskNetworkConfig(endpointId, netConfigClient).Return(happyTaskResponse, nil) },