Publish Docker image (Multi-arch) / Build & push (amd64) (push) Failing after 9m20s
Release (Linux, macOS, Windows) / Linux Release (push) Failing after 55m7s
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Canceled after 0s
Release (Linux, macOS, Windows) / macOS Release (push) Canceled after 0s
Release (Linux, macOS, Windows) / Windows Release (push) Canceled after 0s
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Canceled after 0s
45 lines
1.6 KiB
Go
45 lines
1.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
perfmetrics "github.com/QuantumNous/new-api/pkg/perf_metrics"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRequestStatusReplacesReachableProbe(t *testing.T) {
|
|
monitor := Monitor{Status: 1, Uptime: 1, LastChecked: "probe"}
|
|
stats := perfmetrics.GroupResult{Group: "test", SuccessRate: 67.9, AvgTtftMs: 7420, Series: []perfmetrics.BucketPoint{{Ts: time.Now().Unix(), SuccessRate: 67.9, AvgTtftMs: 7420}}}
|
|
applyRequestMetrics(&monitor, stats)
|
|
require.Equal(t, 0, monitor.Status)
|
|
require.InDelta(t, 0.679, monitor.Uptime, 0.00001)
|
|
require.Equal(t, 7420, monitor.History[0].Ping)
|
|
require.Equal(t, int64(7420), monitor.Metrics.AvgTtftMs)
|
|
}
|
|
|
|
func TestRequestStatusNoSamplesAndDisabled(t *testing.T) {
|
|
monitor := Monitor{Status: 1, Uptime: 1}
|
|
applyRequestMetrics(&monitor, perfmetrics.GroupResult{})
|
|
require.Equal(t, -1, monitor.Status)
|
|
require.Empty(t, monitor.LastChecked)
|
|
require.Empty(t, monitor.History)
|
|
monitor.ChannelDisabled = true
|
|
applyRequestMetrics(&monitor, perfmetrics.GroupResult{SuccessRate: 100, Series: []perfmetrics.BucketPoint{{Ts: time.Now().Unix(), SuccessRate: 100}}})
|
|
require.Equal(t, 0, monitor.Status)
|
|
}
|
|
|
|
func TestRequestStatusStaleSamplesStayUnknown(t *testing.T) {
|
|
monitor := Monitor{}
|
|
applyRequestMetrics(&monitor, perfmetrics.GroupResult{
|
|
SuccessRate: 100,
|
|
Series: []perfmetrics.BucketPoint{{
|
|
Ts: time.Now().Add(-3 * time.Hour).Unix(),
|
|
SuccessRate: 100,
|
|
}},
|
|
})
|
|
require.Equal(t, -1, monitor.Status)
|
|
require.NotEmpty(t, monitor.LastChecked)
|
|
require.NotNil(t, monitor.Metrics)
|
|
}
|