mirror of
https://github.com/henrygd/beszel.git
synced 2026-09-30 21:37:47 +02:00
refactor(agent): avoid deprecated CPU time total helper (#2459)
This commit is contained in:
@@ -119,7 +119,8 @@ func calculateBusy(t1, t2 cpu.TimesStat) float64 {
|
||||
// On Linux, it excludes guest and guest_nice time from the total to match kernel behavior.
|
||||
// Returns total CPU time and busy CPU time (total minus idle and I/O wait time).
|
||||
func getAllBusy(t cpu.TimesStat) (float64, float64) {
|
||||
tot := t.Total()
|
||||
tot := t.User + t.System + t.Idle + t.Nice + t.Iowait + t.Irq +
|
||||
t.Softirq + t.Steal + t.Guest + t.GuestNice
|
||||
if runtime.GOOS == "linux" {
|
||||
tot -= t.Guest // Linux 2.6.24+
|
||||
tot -= t.GuestNice // Linux 3.2.0+
|
||||
|
||||
28
agent/cpu_test.go
Normal file
28
agent/cpu_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
//go:build testing
|
||||
|
||||
package agent
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/shirou/gopsutil/v4/cpu"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGetAllBusy(t *testing.T) {
|
||||
times := cpu.TimesStat{
|
||||
User: 1, System: 2, Idle: 3, Nice: 4, Iowait: 5,
|
||||
Irq: 6, Softirq: 7, Steal: 8, Guest: 9, GuestNice: 10,
|
||||
}
|
||||
wantTotal, wantBusy := 55.0, 47.0
|
||||
if runtime.GOOS == "linux" {
|
||||
wantTotal, wantBusy = 36, 28
|
||||
}
|
||||
total, busy := getAllBusy(times)
|
||||
assert.Equal(t, wantTotal, total)
|
||||
assert.Equal(t, wantBusy, busy)
|
||||
assert.InDelta(t, wantBusy/wantTotal*100, calculateBusy(cpu.TimesStat{}, times), 1e-10)
|
||||
assert.Zero(t, calculateBusy(times, times))
|
||||
assert.Zero(t, calculateBusy(times, cpu.TimesStat{}))
|
||||
}
|
||||
Reference in New Issue
Block a user