kata-containers/tests/metrics/cmd/checkmetrics/metric_test.go
Gabriela Cervantes c4ee601bf4 metrics: Add checkmetrics for kata metrics CI
This PR adds the checkmetrics scripts that will be used for the kata metrics CI.

Fixes #7160

Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
2023-06-22 21:06:46 +00:00

98 lines
2.6 KiB
Go

// Copyright (c) 2023 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
package main
import (
"math"
"testing"
"github.com/stretchr/testify/assert"
)
func TestCalculate(t *testing.T) {
assert := assert.New(t)
var m = metrics{
Name: "name",
Description: "desc",
Type: "type",
CheckType: "json",
CheckVar: "Results",
MinVal: 1.9,
MaxVal: 2.1,
Gap: 0,
stats: statistics{
Results: []float64{1.0, 2.0, 3.0},
Iterations: 3,
Mean: 0.0,
Min: 0.0,
Max: 0.0,
Range: 0.0,
RangeSpread: 0.0,
SD: 0.0,
CoV: 0.0}}
m.calculate()
// Constants here calculated from info coded in struct above
// We do a little funky math on Gap to round it to within 0.1% - as the actual
// gap math gave us 10.000000000000009 ...
roundedGap := math.Round(m.Gap/0.001) * 0.001
assert.Equal(10.0, roundedGap, "Should be equal")
assert.Equal(2.0, m.stats.Mean, "Should be equal")
assert.Equal(1.0, m.stats.Min, "Should be equal")
assert.Equal(3.0, m.stats.Max, "Should be equal")
assert.Equal(2.0, m.stats.Range, "Should be equal")
assert.Equal(200.0, m.stats.RangeSpread, "Should be equal")
assert.Equal(0.816496580927726, m.stats.SD, "Should be equal")
assert.Equal(40.8248290463863, m.stats.CoV, "Should be equal")
}
// Test that only setting a % range works
func TestCalculate2(t *testing.T) {
assert := assert.New(t)
var m = metrics{
Name: "name",
Description: "desc",
Type: "type",
CheckType: "json",
CheckVar: "Results",
//MinVal: 1.9,
//MaxVal: 2.1,
MinPercent: 20,
MaxPercent: 25,
MidVal: 2.0,
Gap: 0,
stats: statistics{
Results: []float64{1.0, 2.0, 3.0},
Iterations: 3,
Mean: 0.0,
Min: 0.0,
Max: 0.0,
Range: 0.0,
RangeSpread: 0.0,
SD: 0.0,
CoV: 0.0}}
m.calculate()
// Constants here calculated from info coded in struct above
// We do a little funky math on Gap to round it to within 0.1% - as the actual
// gap math gave us 10.000000000000009 ...
roundedGap := math.Round(m.Gap/0.001) * 0.001
// This is not a nice (20+25), as the 'midval' will skew it.
assert.Equal(43.902, roundedGap, "Should be equal")
assert.Equal(2.0, m.stats.Mean, "Should be equal")
assert.Equal(1.0, m.stats.Min, "Should be equal")
assert.Equal(3.0, m.stats.Max, "Should be equal")
assert.Equal(2.0, m.stats.Range, "Should be equal")
assert.Equal(200.0, m.stats.RangeSpread, "Should be equal")
assert.Equal(0.816496580927726, m.stats.SD, "Should be equal")
assert.Equal(40.8248290463863, m.stats.CoV, "Should be equal")
}