mirror of
https://github.com/henrygd/beszel.git
synced 2026-05-06 10:51:50 +02:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
//go:build testing
|
|
|
|
package records_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/henrygd/beszel/internal/records"
|
|
"github.com/henrygd/beszel/internal/tests"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAverageProbeStats(t *testing.T) {
|
|
hub, err := tests.NewTestHub(t.TempDir())
|
|
require.NoError(t, err)
|
|
defer hub.Cleanup()
|
|
|
|
rm := records.NewRecordManager(hub)
|
|
user, err := tests.CreateUser(hub, "probe-avg@example.com", "testtesttest")
|
|
require.NoError(t, err)
|
|
system, err := tests.CreateRecord(hub, "systems", map[string]any{
|
|
"name": "probe-avg-system",
|
|
"host": "localhost",
|
|
"port": "45876",
|
|
"status": "up",
|
|
"users": []string{user.Id},
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
recordA, err := tests.CreateRecord(hub, "network_probe_stats", map[string]any{
|
|
"system": system.Id,
|
|
"type": "1m",
|
|
"stats": `{"icmp:1.1.1.1":[10,5,20,1.5]}`,
|
|
})
|
|
require.NoError(t, err)
|
|
recordB, err := tests.CreateRecord(hub, "network_probe_stats", map[string]any{
|
|
"system": system.Id,
|
|
"type": "1m",
|
|
"stats": `{"icmp:1.1.1.1":[22.5,10,60,0]}`,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
result := rm.AverageProbeStats(hub.DB(), records.RecordIds{
|
|
{Id: recordA.Id},
|
|
{Id: recordB.Id},
|
|
})
|
|
|
|
stats, ok := result["icmp:1.1.1.1"]
|
|
require.True(t, ok)
|
|
require.Len(t, stats, 4)
|
|
assert.InDelta(t, 16.25, stats[0], 0.001) // avg of avg
|
|
assert.InDelta(t, 5, stats[1], 0.001) // min of mins
|
|
assert.InDelta(t, 60, stats[2], 0.001) // max of maxes
|
|
assert.InDelta(t, 0.75, stats[3], 0.001) // avg of packet loss
|
|
}
|