github.com/kubeshop/testkube@v1.17.23/contrib/executor/k6/pkg/runner/runner_test.go (about)

     1  package runner
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    10  )
    11  
    12  func TestExecutionResult(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	t.Run("Get default k6 execution result", func(t *testing.T) {
    16  		t.Parallel()
    17  		// setup
    18  		summary, err := os.ReadFile("../../examples/k6-test-summary.txt")
    19  		if err != nil {
    20  			assert.FailNow(t, "Unable to read k6 test summary")
    21  		}
    22  
    23  		result := finalExecutionResult(string(summary), nil)
    24  		assert.Equal(t, testkube.ExecutionStatusPassed, result.Status)
    25  		assert.Len(t, result.Steps, 1)
    26  	})
    27  
    28  	t.Run("Get custom scenario k6 execution result", func(t *testing.T) {
    29  		t.Parallel()
    30  		// setup
    31  		summary, err := os.ReadFile("../../examples/k6-test-scenarios.txt")
    32  		if err != nil {
    33  			assert.FailNow(t, "Unable to read k6 test summary")
    34  		}
    35  
    36  		result := finalExecutionResult(string(summary), nil)
    37  		assert.Equal(t, testkube.ExecutionStatusPassed, result.Status)
    38  		assert.Len(t, result.Steps, 2)
    39  	})
    40  
    41  	t.Run("Get successful checks for k6 execution result", func(t *testing.T) {
    42  		t.Parallel()
    43  		// setup
    44  		summary, err := os.ReadFile("../../examples/k6-test-scenarios.txt")
    45  		if err != nil {
    46  			assert.FailNow(t, "Unable to read k6 test summary")
    47  		}
    48  
    49  		result := areChecksSuccessful(string(summary))
    50  		assert.Equal(t, true, result)
    51  	})
    52  
    53  }
    54  
    55  func TestParse(t *testing.T) {
    56  	t.Parallel()
    57  
    58  	t.Run("Split scenario name", func(t *testing.T) {
    59  		t.Parallel()
    60  
    61  		name := splitScenarioName("default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)")
    62  		assert.Equal(t, "default", name)
    63  	})
    64  
    65  	t.Run("Parse k6 default summary", func(t *testing.T) {
    66  		// setup
    67  		summary, err := os.ReadFile("../../examples/k6-test-summary.txt")
    68  		if err != nil {
    69  			assert.FailNow(t, "Unable to read k6 test summary")
    70  		}
    71  
    72  		t.Run("Parse scenario names", func(t *testing.T) {
    73  			t.Parallel()
    74  
    75  			names := parseScenarioNames(string(summary))
    76  			assert.Len(t, names, 1)
    77  			assert.Equal(t, "default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)", names[0])
    78  		})
    79  
    80  		t.Run("Parse default scenario duration", func(t *testing.T) {
    81  			t.Parallel()
    82  
    83  			duration := parseScenarioDuration(string(summary), "default")
    84  			assert.Equal(t, "00m01.0s/10m0s", duration)
    85  		})
    86  	})
    87  
    88  	t.Run("Parse k6 scenario summary", func(t *testing.T) {
    89  		t.Parallel()
    90  		// setup
    91  		summary, err := os.ReadFile("../../examples/k6-test-scenarios.txt")
    92  		if err != nil {
    93  			assert.FailNow(t, "Unable to read k6 test summary")
    94  		}
    95  
    96  		t.Run("Parse scenario names", func(t *testing.T) {
    97  			t.Parallel()
    98  
    99  			names := parseScenarioNames(string(summary))
   100  			assert.Len(t, names, 2)
   101  			assert.Equal(t, "testkube: 5 looping VUs for 10s (exec: testkube, gracefulStop: 30s)", names[0])
   102  			assert.Equal(t, "monokle: 10 iterations for each of 5 VUs (maxDuration: 1m0s, exec: monokle, startTime: 5s, gracefulStop: 30s)", names[1])
   103  		})
   104  
   105  		t.Run("Parse teskube scenario duration", func(t *testing.T) {
   106  			t.Parallel()
   107  
   108  			duration := parseScenarioDuration(string(summary), "testkube")
   109  			assert.Equal(t, "10.0s/10s", duration)
   110  		})
   111  
   112  		t.Run("Parse monokle scenario duration", func(t *testing.T) {
   113  			t.Parallel()
   114  
   115  			duration := parseScenarioDuration(string(summary), "monokle")
   116  			assert.Equal(t, "0m10.2s/1m0s", duration)
   117  		})
   118  	})
   119  }