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

     1  package testkube
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  func StatusPtr(status ExecutionStatus) *ExecutionStatus {
     9  	return &status
    10  }
    11  
    12  var (
    13  	ExecutionStatusFailed  = StatusPtr(FAILED_ExecutionStatus)
    14  	ExecutionStatusPassed  = StatusPtr(PASSED_ExecutionStatus)
    15  	ExecutionStatusQueued  = StatusPtr(QUEUED_ExecutionStatus)
    16  	ExecutionStatusRunning = StatusPtr(RUNNING_ExecutionStatus)
    17  	ExecutionStatusAborted = StatusPtr(ABORTED_ExecutionStatus)
    18  	ExecutionStatusTimeout = StatusPtr(TIMEOUT_ExecutionStatus)
    19  )
    20  
    21  // ExecutionStatuses is an array of ExecutionStatus
    22  type ExecutionStatuses []ExecutionStatus
    23  
    24  // ToMap generates map from ExecutionStatuses
    25  func (statuses ExecutionStatuses) ToMap() map[ExecutionStatus]struct{} {
    26  	statusMap := map[ExecutionStatus]struct{}{}
    27  	for _, status := range statuses {
    28  		statusMap[status] = struct{}{}
    29  	}
    30  
    31  	return statusMap
    32  }
    33  
    34  // ParseExecutionStatusList parse a list of execution statuses from string
    35  func ParseExecutionStatusList(source, separator string) (statusList ExecutionStatuses, err error) {
    36  	statusMap := map[ExecutionStatus]struct{}{
    37  		FAILED_ExecutionStatus:  {},
    38  		PASSED_ExecutionStatus:  {},
    39  		QUEUED_ExecutionStatus:  {},
    40  		RUNNING_ExecutionStatus: {},
    41  		ABORTED_ExecutionStatus: {},
    42  		TIMEOUT_ExecutionStatus: {},
    43  	}
    44  
    45  	if source == "" {
    46  		return nil, nil
    47  	}
    48  
    49  	values := strings.Split(source, separator)
    50  	for _, value := range values {
    51  		status := ExecutionStatus(value)
    52  		if _, ok := statusMap[status]; ok {
    53  			statusList = append(statusList, status)
    54  		} else {
    55  			return nil, fmt.Errorf("unknown execution status %v", status)
    56  		}
    57  	}
    58  
    59  	return statusList, nil
    60  }
    61  
    62  func ExecutionStatusString(ptr *ExecutionStatus) string {
    63  	return string(*ptr)
    64  }