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  }