mirror of
https://github.com/shirou/gopsutil.git
synced 2025-04-29 13:49:21 +08:00
Merge pull request #163 from walles/walles/test_proc_cputimes
Add test for process.CPUTimes()
This commit is contained in:
commit
cfe7e5f1ca
@ -1,6 +1,7 @@
|
||||
package process
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/user"
|
||||
"runtime"
|
||||
@ -339,3 +340,30 @@ func Test_Username(t *testing.T) {
|
||||
pidUsername, _ := process.Username()
|
||||
assert.Equal(t, myUsername, pidUsername)
|
||||
}
|
||||
|
||||
func Test_CPUTimes(t *testing.T) {
|
||||
pid := os.Getpid()
|
||||
process, err := NewProcess(int32(pid))
|
||||
assert.Nil(t, err)
|
||||
|
||||
spinSeconds := 0.2
|
||||
cpuTimes0, err := process.CPUTimes()
|
||||
assert.Nil(t, err)
|
||||
|
||||
// Spin for a duration of spinSeconds
|
||||
t0 := time.Now()
|
||||
tGoal := t0.Add(time.Duration(spinSeconds*1000) * time.Millisecond)
|
||||
assert.Nil(t, err)
|
||||
for time.Now().Before(tGoal) {
|
||||
// This block intentionally left blank
|
||||
}
|
||||
|
||||
cpuTimes1, err := process.CPUTimes()
|
||||
assert.Nil(t, err)
|
||||
|
||||
measuredElapsed := cpuTimes1.Total() - cpuTimes0.Total()
|
||||
message := fmt.Sprintf("Measured %fs != spun time of %fs\ncpuTimes0=%v\ncpuTimes1=%v",
|
||||
measuredElapsed, spinSeconds, cpuTimes0, cpuTimes1)
|
||||
assert.True(t, measuredElapsed > float64(spinSeconds)/5, message)
|
||||
assert.True(t, measuredElapsed < float64(spinSeconds)*5, message)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user