Files

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)
}