Files
worker/internal/distworker/server_metrics_test.go
Gleb Tv 2c7a0236da feat: publish standalone worker
Separate worker packaging and service lifecycle from the control plane.
2026-07-13 17:55:14 +03:00

56 строки
1.8 KiB
Go

package distworker
import (
"fmt"
"os"
"path/filepath"
"strconv"
"testing"
)
func TestReadLinuxHostMetrics(t *testing.T) {
root := t.TempDir()
if err := os.WriteFile(filepath.Join(root, "meminfo"), []byte("MemTotal: 100 kB\nMemAvailable: 25 kB\n"), 0o600); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(root, "loadavg"), []byte("1.5 2.5 3.5 1/1 1\n"), 0o600); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(root, "uptime"), []byte("42.9 0\n"), 0o600); err != nil {
t.Fatal(err)
}
total, available, one, five, fifteen, uptime, ok := readLinuxHostMetrics(root)
if !ok || total != 102400 || available != 25600 || one != 1.5 || five != 2.5 || fifteen != 3.5 || uptime != 42 {
t.Fatalf("unexpected host metric parse: %d %d %g %g %g %d %t", total, available, one, five, fifteen, uptime, ok)
}
}
func TestCollectProcessesLimitsAndSortsByRSS(t *testing.T) {
root := t.TempDir()
for i := 1; i <= maxServerMetricProcesses+2; i++ {
dir := filepath.Join(root, strconv.Itoa(i))
if err := os.Mkdir(dir, 0o700); err != nil {
t.Fatal(err)
}
status := fmt.Sprintf("Name:\tproc%d\nVmRSS:\t%d kB\n", i, i)
if err := os.WriteFile(filepath.Join(dir, "status"), []byte(status), 0o600); err != nil {
t.Fatal(err)
}
}
processes := collectProcesses(root)
if len(processes) != maxServerMetricProcesses || processes[0].PID != maxServerMetricProcesses+2 {
t.Fatalf("unexpected bounded process snapshot: %#v", processes)
}
}
func TestReadCPUCounters(t *testing.T) {
path := filepath.Join(t.TempDir(), "stat")
if err := os.WriteFile(path, []byte("cpu 10 2 8 70 10 0 0 0\n"), 0o600); err != nil {
t.Fatal(err)
}
total, idle, ok := readCPUCounters(path)
if !ok || total != 100 || idle != 80 {
t.Fatalf("unexpected cpu counters: %d %d %t", total, idle, ok)
}
}