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 }