github.com/kubeshop/testkube@v1.17.23/pkg/repository/common/metrics_test.go (about) 1 package common 2 3 import ( 4 "testing" 5 6 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 7 ) 8 9 func Test_ShouldCalculatePercentile_AndGiveNearestIndexResult(t *testing.T) { 10 11 durations := []string{"5.34s", "5.74s", "5.93s", "6.16s", "6.56s", "11.56s"} 12 var executions []testkube.ExecutionsMetricsExecutions 13 14 for _, duration := range durations { 15 executions = append(executions, testkube.ExecutionsMetricsExecutions{Duration: duration}) 16 } 17 18 result := CalculateMetrics(executions) 19 if result.ExecutionDurationP50 != "5.93s" { 20 t.Fatalf("Expected 5.93s but got %s", result.ExecutionDurationP50) 21 } 22 if result.ExecutionDurationP90 != "11.56s" { 23 t.Fatalf("Expected 11.56s but got %s", result.ExecutionDurationP90) 24 } 25 if result.ExecutionDurationP95 != "11.56s" { 26 t.Fatalf("Expected 11.56s but got %s", result.ExecutionDurationP95) 27 } 28 if result.ExecutionDurationP99 != "11.56s" { 29 t.Fatalf("Expected 11.56s but got %s", result.ExecutionDurationP99) 30 } 31 } 32 33 func Test_WhenNoDurations_ShouldReturn0FromCalculations(t *testing.T) { 34 assert := func(t *testing.T, actual string) { 35 if actual != "0s" { 36 t.Fatalf("Expected 0s but got %s", actual) 37 } 38 } 39 40 var executions []testkube.ExecutionsMetricsExecutions 41 42 result := CalculateMetrics(executions) 43 assert(t, result.ExecutionDurationP50) 44 assert(t, result.ExecutionDurationP90) 45 assert(t, result.ExecutionDurationP95) 46 assert(t, result.ExecutionDurationP99) 47 }