github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/testkube/model_execution_result_extended.go (about)

     1  package testkube
     2  
     3  func NewRunningExecutionResult() *ExecutionResult {
     4  	return &ExecutionResult{
     5  		Status: StatusPtr(RUNNING_ExecutionStatus),
     6  	}
     7  }
     8  
     9  // NewPendingExecutionResult DEPRECATED since testkube@1.0.0
    10  func NewPendingExecutionResult() ExecutionResult {
    11  	return ExecutionResult{
    12  		Status: StatusPtr(RUNNING_ExecutionStatus),
    13  	}
    14  }
    15  
    16  func NewErrorExecutionResult(err error) ExecutionResult {
    17  	return ExecutionResult{
    18  		Status:       StatusPtr(FAILED_ExecutionStatus),
    19  		ErrorMessage: err.Error(),
    20  		Output:       err.Error(),
    21  	}
    22  }
    23  
    24  func (e *ExecutionResult) Abort() {
    25  	e.Status = StatusPtr(ABORTED_ExecutionStatus)
    26  }
    27  
    28  func (e *ExecutionResult) Timeout() {
    29  	e.Status = StatusPtr(TIMEOUT_ExecutionStatus)
    30  }
    31  
    32  func (e *ExecutionResult) InProgress() {
    33  	e.Status = StatusPtr(RUNNING_ExecutionStatus)
    34  }
    35  
    36  func (e *ExecutionResult) Success() {
    37  	e.Status = StatusPtr(PASSED_ExecutionStatus)
    38  }
    39  
    40  func (e *ExecutionResult) Error() {
    41  	e.Status = StatusPtr(FAILED_ExecutionStatus)
    42  }
    43  
    44  func (e *ExecutionResult) IsCompleted() bool {
    45  	return e.IsPassed() || e.IsFailed() || e.IsAborted() || e.IsTimeout()
    46  }
    47  
    48  func (e *ExecutionResult) IsRunning() bool {
    49  	return *e.Status == RUNNING_ExecutionStatus
    50  }
    51  
    52  func (e *ExecutionResult) IsQueued() bool {
    53  	return *e.Status == QUEUED_ExecutionStatus
    54  }
    55  
    56  func (e *ExecutionResult) IsPassed() bool {
    57  	return *e.Status == PASSED_ExecutionStatus
    58  }
    59  
    60  func (e *ExecutionResult) IsFailed() bool {
    61  	return *e.Status == FAILED_ExecutionStatus
    62  }
    63  
    64  func (e *ExecutionResult) IsAborted() bool {
    65  	return *e.Status == ABORTED_ExecutionStatus
    66  }
    67  func (e *ExecutionResult) IsTimeout() bool {
    68  	return *e.Status == TIMEOUT_ExecutionStatus
    69  }
    70  
    71  func (e *ExecutionResult) Err(err error) *ExecutionResult {
    72  	e.Status = ExecutionStatusFailed
    73  	e.ErrorMessage = err.Error()
    74  	return e
    75  }
    76  
    77  // WithErrors return error result if any of passed errors is not nil
    78  func (e *ExecutionResult) WithErrors(errors ...error) *ExecutionResult {
    79  	for _, err := range errors {
    80  		if err != nil {
    81  			return e.Err(err)
    82  		}
    83  	}
    84  	return e
    85  }
    86  
    87  func (e *ExecutionResult) FailedStepsCount() int {
    88  	count := 0
    89  	for _, v := range e.Steps {
    90  		if v.Status != string(PASSED_ExecutionStatus) {
    91  			count++
    92  		}
    93  	}
    94  	return count
    95  }
    96  
    97  func (e *ExecutionResult) FailedSteps() (steps []ExecutionStepResult) {
    98  	for _, s := range e.Steps {
    99  		if s.Status != string(PASSED_ExecutionStatus) {
   100  			steps = append(steps, s)
   101  		}
   102  	}
   103  
   104  	return
   105  }
   106  
   107  // GetDeepCopy gives a copy of ExecutionResult with new pointers
   108  func (e *ExecutionResult) GetDeepCopy() *ExecutionResult {
   109  	if e == nil {
   110  		return nil
   111  	}
   112  
   113  	status := new(ExecutionStatus)
   114  	if e.Status != nil {
   115  		*status = *e.Status
   116  	}
   117  
   118  	reports := new(ExecutionResultReports)
   119  	if e.Reports != nil {
   120  		*reports = *e.Reports
   121  	}
   122  
   123  	result := ExecutionResult{
   124  		Status:       status,
   125  		Output:       e.Output,
   126  		OutputType:   e.OutputType,
   127  		ErrorMessage: e.ErrorMessage,
   128  		Steps:        e.Steps,
   129  		Reports:      reports,
   130  	}
   131  	return &result
   132  }