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.
|
// 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).
|
// Returns total CPU time and busy CPU time (total minus idle and I/O wait time).
|
||||||
func getAllBusy(t cpu.TimesStat) (float64, float64) {
|
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" {
|
if runtime.GOOS == "linux" {
|
||||||
tot -= t.Guest // Linux 2.6.24+
|
tot -= t.Guest // Linux 2.6.24+
|
||||||
tot -= t.GuestNice // Linux 3.2.0+
|
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