github.com/kubeshop/testkube@v1.17.23/contrib/executor/jmeterd/pkg/parser/mapper.go (about)

     1  package parser
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
     7  )
     8  
     9  func mapCSVResultsToExecutionResults(out []byte, results CSVResults) (result testkube.ExecutionResult) {
    10  	result = MakeSuccessExecution(out)
    11  	// TODO: Is it enough to just disable it here?
    12  	//if results.HasError {
    13  	//	result.Status = testkube.ExecutionStatusFailed
    14  	//	result.ErrorMessage = results.LastErrorMessage
    15  	//}
    16  
    17  	for _, r := range results.Results {
    18  		result.Steps = append(
    19  			result.Steps,
    20  			testkube.ExecutionStepResult{
    21  				Name:     r.Label,
    22  				Duration: r.Duration.String(),
    23  				Status:   mapCSVResultStatus(r),
    24  				AssertionResults: []testkube.AssertionResult{{
    25  					Name:   r.Label,
    26  					Status: mapCSVResultStatus(r),
    27  				}},
    28  			})
    29  	}
    30  
    31  	return result
    32  }
    33  
    34  func mapCSVResultStatus(result CSVResult) string {
    35  	if result.Success {
    36  		return string(testkube.PASSED_ExecutionStatus)
    37  	}
    38  
    39  	return string(testkube.FAILED_ExecutionStatus)
    40  }
    41  
    42  func mapXMLResultsToExecutionResults(out []byte, results XMLResults) (result testkube.ExecutionResult) {
    43  	result = MakeSuccessExecution(out)
    44  
    45  	samples := append(results.HTTPSamples, results.Samples...)
    46  	for _, r := range samples {
    47  		// TODO: Is it enough to disable it here?
    48  		//if !r.Success {
    49  		//	result.Status = testkube.ExecutionStatusFailed
    50  		//	if r.AssertionResult != nil {
    51  		//		result.ErrorMessage = r.AssertionResult.FailureMessage
    52  		//	}
    53  		//}
    54  
    55  		result.Steps = append(
    56  			result.Steps,
    57  			testkube.ExecutionStepResult{
    58  				Name:     r.Label,
    59  				Duration: fmt.Sprintf("%dms", r.Time),
    60  				Status:   mapXMLResultStatus(r.Success),
    61  				AssertionResults: []testkube.AssertionResult{{
    62  					Name:   r.Label,
    63  					Status: mapXMLResultStatus(r.Success),
    64  				}},
    65  			})
    66  	}
    67  
    68  	return result
    69  }
    70  
    71  func mapXMLResultStatus(success bool) string {
    72  	if success {
    73  		return string(testkube.PASSED_ExecutionStatus)
    74  	}
    75  
    76  	return string(testkube.FAILED_ExecutionStatus)
    77  }
    78  
    79  func MakeSuccessExecution(out []byte) (result testkube.ExecutionResult) {
    80  	status := testkube.PASSED_ExecutionStatus
    81  	result.Status = &status
    82  	result.Output = string(out)
    83  	result.OutputType = "text/plain"
    84  
    85  	return result
    86  }