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
|
package process
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/user"
|
"os/user"
|
||||||
"runtime"
|
"runtime"
|
||||||
@ -339,3 +340,30 @@ func Test_Username(t *testing.T) {
|
|||||||
pidUsername, _ := process.Username()
|
pidUsername, _ := process.Username()
|
||||||
assert.Equal(t, myUsername, pidUsername)
|
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