mirror of
https://github.com/shirou/gopsutil.git
synced 2025-04-29 13:49:21 +08:00
Merge pull request #1155 from lufia/add-plan9-cpu
[v3][cpu] add plan9 support
This commit is contained in:
commit
fb65e185a9
@ -157,8 +157,8 @@ Some code is ported from Ohai. many thanks.
|
||||
|
||||
|name |Linux |FreeBSD |OpenBSD |macOS |Windows |Solaris |Plan 9 |
|
||||
|----------------------|-------|---------|---------|--------|---------|---------|---------|
|
||||
|cpu\_times |x |x |x |x |x | | |
|
||||
|cpu\_count |x |x |x |x |x | | |
|
||||
|cpu\_times |x |x |x |x |x | |b |
|
||||
|cpu\_count |x |x |x |x |x | |x |
|
||||
|cpu\_percent |x |x |x |x |x | | |
|
||||
|cpu\_times\_percent |x |x |x |x |x | | |
|
||||
|virtual\_memory |x |x |x |x |x | b |x |
|
||||
|
@ -1,4 +1,4 @@
|
||||
// +build !darwin,!linux,!freebsd,!openbsd,!solaris,!windows,!dragonfly
|
||||
// +build !darwin,!linux,!freebsd,!openbsd,!solaris,!windows,!dragonfly,!plan9
|
||||
|
||||
package cpu
|
||||
|
||||
|
49
v3/cpu/cpu_plan9.go
Normal file
49
v3/cpu/cpu_plan9.go
Normal file
@ -0,0 +1,49 @@
|
||||
// +build plan9
|
||||
|
||||
package cpu
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
stats "github.com/lufia/plan9stats"
|
||||
"github.com/shirou/gopsutil/v3/internal/common"
|
||||
)
|
||||
|
||||
func Times(percpu bool) ([]TimesStat, error) {
|
||||
return TimesWithContext(context.Background(), percpu)
|
||||
}
|
||||
|
||||
func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) {
|
||||
// BUG: percpu flag is not supported yet.
|
||||
root := os.Getenv("HOST_ROOT")
|
||||
c, err := stats.ReadCPUType(ctx, stats.WithRootDir(root))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s, err := stats.ReadCPUStats(ctx, stats.WithRootDir(root))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return []TimesStat{
|
||||
{
|
||||
CPU: c.Name,
|
||||
User: s.User.Seconds(),
|
||||
System: s.Sys.Seconds(),
|
||||
Idle: s.Idle.Seconds(),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func Info() ([]InfoStat, error) {
|
||||
return InfoWithContext(context.Background())
|
||||
}
|
||||
|
||||
func InfoWithContext(ctx context.Context) ([]InfoStat, error) {
|
||||
return []InfoStat{}, common.ErrNotImplementedError
|
||||
}
|
||||
|
||||
func CountsWithContext(ctx context.Context, logical bool) (int, error) {
|
||||
return runtime.NumCPU(), nil
|
||||
}
|
50
v3/cpu/cpu_plan9_test.go
Normal file
50
v3/cpu/cpu_plan9_test.go
Normal file
@ -0,0 +1,50 @@
|
||||
// +build plan9
|
||||
|
||||
package cpu
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
)
|
||||
|
||||
var timesTests = []struct {
|
||||
mockedRootFS string
|
||||
stats []TimesStat
|
||||
}{
|
||||
{
|
||||
"2cores",
|
||||
[]TimesStat{
|
||||
{
|
||||
CPU: "Core i7/Xeon",
|
||||
User: 2780.0 / 1000.0,
|
||||
System: 30020.0 / 1000.0,
|
||||
Idle: (1412961713341830*2)/1000000000.0 - 2.78 - 30.02,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func TestTimesPlan9(t *testing.T) {
|
||||
origRoot := os.Getenv("HOST_ROOT")
|
||||
t.Cleanup(func() {
|
||||
os.Setenv("HOST_ROOT", origRoot)
|
||||
})
|
||||
for _, tt := range timesTests {
|
||||
t.Run(tt.mockedRootFS, func(t *testing.T) {
|
||||
os.Setenv("HOST_ROOT", filepath.Join("testdata/plan9", tt.mockedRootFS))
|
||||
stats, err := Times(false)
|
||||
skipIfNotImplementedErr(t, err)
|
||||
if err != nil {
|
||||
t.Errorf("error %v", err)
|
||||
}
|
||||
eps := cmpopts.EquateApprox(0, 0.00000001)
|
||||
if !cmp.Equal(stats, tt.stats, eps) {
|
||||
t.Errorf("got: %+v\nwant: %+v", stats, tt.stats)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
1
v3/cpu/testdata/plan9/2cores/dev/cputype
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/dev/cputype
vendored
Normal file
@ -0,0 +1 @@
|
||||
Core i7/Xeon 2403
|
2
v3/cpu/testdata/plan9/2cores/dev/sysstat
vendored
Normal file
2
v3/cpu/testdata/plan9/2cores/dev/sysstat
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
0 59251106 37524162 1208203 65907 0 0 7 100 0
|
||||
1 219155408 28582838 5017097 1002072 0 0 0 98 1
|
1
v3/cpu/testdata/plan9/2cores/dev/time
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/dev/time
vendored
Normal file
@ -0,0 +1 @@
|
||||
1633882064 1633882064926300833 2825920097745864 1999997644
|
1
v3/cpu/testdata/plan9/2cores/proc/1/status
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/proc/1/status
vendored
Normal file
@ -0,0 +1 @@
|
||||
init bootes Await 10 20 1404307210 110 20 0 116 10 10
|
0
v3/cpu/testdata/plan9/2cores/proc/331/.gitkeep
vendored
Normal file
0
v3/cpu/testdata/plan9/2cores/proc/331/.gitkeep
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/proc/54384/status
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/proc/54384/status
vendored
Normal file
@ -0,0 +1 @@
|
||||
rc lufia Await 0 0 589160 8770 3260 0 248 10 10
|
1
v3/cpu/testdata/plan9/2cores/proc/54412/status
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/proc/54412/status
vendored
Normal file
@ -0,0 +1 @@
|
||||
git-remote-https lufia Semacquire 390 310 370670 0 0 0 98368 10 10
|
1
v3/cpu/testdata/plan9/2cores/proc/72/status
vendored
Normal file
1
v3/cpu/testdata/plan9/2cores/proc/72/status
vendored
Normal file
@ -0,0 +1 @@
|
||||
httpd none Open 2380 29690 1404804330 0 0 0 23616 10 10
|
@ -4,8 +4,9 @@ go 1.15
|
||||
|
||||
require (
|
||||
github.com/StackExchange/wmi v1.2.1
|
||||
github.com/google/go-cmp v0.5.6
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20211008203909-9b7c2b47d7c3
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0
|
||||
github.com/stretchr/testify v1.7.0
|
||||
github.com/tklauser/go-sysconf v0.3.9
|
||||
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c
|
||||
|
@ -6,9 +6,13 @@ github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/lufia/plan9stats v0.0.0-20211008203909-9b7c2b47d7c3 h1:zvvlSubuP3jgjD69jAfrprCEKZkjn0D9FpZ168E1rDc=
|
||||
github.com/lufia/plan9stats v0.0.0-20211008203909-9b7c2b47d7c3/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
Loading…
x
Reference in New Issue
Block a user