1
0
mirror of https://github.com/shirou/gopsutil.git synced 2025-04-26 13:48:59 +08:00
shirou_gopsutil/host/host_test.go

197 lines
4.2 KiB
Go
Raw Normal View History

2014-12-30 22:09:05 +09:00
package host
2014-04-18 16:34:47 +09:00
import (
2021-12-04 22:29:38 +01:00
"errors"
2014-05-12 11:51:08 +09:00
"fmt"
2018-01-09 11:30:38 +09:00
"os"
"sync"
2014-04-18 16:34:47 +09:00
"testing"
"github.com/shirou/gopsutil/v3/internal/common"
2014-04-18 16:34:47 +09:00
)
func skipIfNotImplementedErr(t *testing.T, err error) {
2021-12-04 22:29:38 +01:00
if errors.Is(err, common.ErrNotImplementedError) {
t.Skip("not implemented")
}
}
2014-04-18 16:34:47 +09:00
func TestHostInfo(t *testing.T) {
v, err := Info()
skipIfNotImplementedErr(t, err)
2014-04-18 16:34:47 +09:00
if err != nil {
t.Errorf("error %v", err)
}
empty := &InfoStat{}
2014-05-12 11:51:08 +09:00
if v == empty {
t.Errorf("Could not get hostinfo %v", v)
}
if v.Procs == 0 {
t.Errorf("Could not determine the number of host processes")
}
t.Log(v)
}
func TestUptime(t *testing.T) {
2018-01-09 11:30:38 +09:00
if os.Getenv("CIRCLECI") == "true" {
t.Skip("Skip CI")
}
v, err := Uptime()
skipIfNotImplementedErr(t, err)
if err != nil {
t.Errorf("error %v", err)
}
if v == 0 {
t.Errorf("Could not get up time %v", v)
}
}
func TestBoot_time(t *testing.T) {
2018-01-09 11:30:38 +09:00
if os.Getenv("CIRCLECI") == "true" {
t.Skip("Skip CI")
}
v, err := BootTime()
skipIfNotImplementedErr(t, err)
if err != nil {
t.Errorf("error %v", err)
}
if v == 0 {
t.Errorf("Could not get boot time %v", v)
2014-04-18 16:34:47 +09:00
}
if v < 946652400 {
t.Errorf("Invalid Boottime, older than 2000-01-01")
}
t.Logf("first boot time: %d", v)
v2, err := BootTime()
skipIfNotImplementedErr(t, err)
2018-06-21 16:58:40 +02:00
if err != nil {
t.Errorf("error %v", err)
}
if v != v2 {
t.Errorf("cached boot time is different")
}
t.Logf("second boot time: %d", v2)
2014-04-18 16:34:47 +09:00
}
2014-04-22 17:38:47 +09:00
func TestUsers(t *testing.T) {
v, err := Users()
skipIfNotImplementedErr(t, err)
2014-04-22 17:38:47 +09:00
if err != nil {
t.Errorf("error %v", err)
}
empty := UserStat{}
2016-04-23 23:43:00 +09:00
if len(v) == 0 {
t.Skip("Users is empty")
2016-04-23 23:43:00 +09:00
}
2014-04-22 17:39:51 +09:00
for _, u := range v {
2014-05-12 11:51:08 +09:00
if u == empty {
2014-04-22 17:38:47 +09:00
t.Errorf("Could not Users %v", v)
}
}
}
2014-05-12 11:51:08 +09:00
func TestHostInfoStat_String(t *testing.T) {
v := InfoStat{
2020-10-25 19:01:38 +09:00
Hostname: "test",
Uptime: 3000,
Procs: 100,
OS: "linux",
Platform: "ubuntu",
BootTime: 1447040000,
HostID: "edfd25ff-3c9c-b1a4-e660-bd826495ad35",
KernelArch: "x86_64",
2014-05-12 11:51:08 +09:00
}
e := `{"hostname":"test","uptime":3000,"bootTime":1447040000,"procs":100,"os":"linux","platform":"ubuntu","platformFamily":"","platformVersion":"","kernelVersion":"","kernelArch":"x86_64","virtualizationSystem":"","virtualizationRole":"","hostId":"edfd25ff-3c9c-b1a4-e660-bd826495ad35"}`
2014-05-12 11:51:08 +09:00
if e != fmt.Sprintf("%v", v) {
t.Errorf("HostInfoStat string is invalid:\ngot %v\nwant %v", v, e)
2014-05-12 11:51:08 +09:00
}
}
func TestUserStat_String(t *testing.T) {
v := UserStat{
2014-05-12 11:51:08 +09:00
User: "user",
Terminal: "term",
Host: "host",
Started: 100,
}
e := `{"user":"user","terminal":"term","host":"host","started":100}`
if e != fmt.Sprintf("%v", v) {
t.Errorf("UserStat string is invalid: %v", v)
}
}
func TestHostGuid(t *testing.T) {
2020-10-25 19:01:38 +09:00
id, err := HostID()
skipIfNotImplementedErr(t, err)
if err != nil {
t.Error(err)
}
2020-10-25 19:01:38 +09:00
if id == "" {
t.Error("Host id is empty")
} else {
2020-10-25 19:01:38 +09:00
t.Logf("Host id value: %v", id)
}
}
func TestTemperatureStat_String(t *testing.T) {
v := TemperatureStat{
SensorKey: "CPU",
Temperature: 1.1,
High: 30.1,
Critical: 0.1,
}
s := `{"sensorKey":"CPU","temperature":1.1,"sensorHigh":30.1,"sensorCritical":0.1}`
if s != fmt.Sprintf("%v", v) {
t.Errorf("TemperatureStat string is invalid, %v", fmt.Sprintf("%v", v))
}
}
func TestVirtualization(t *testing.T) {
wg := sync.WaitGroup{}
testCount := 10
wg.Add(testCount)
for i := 0; i < testCount; i++ {
go func(j int) {
system, role, err := Virtualization()
wg.Done()
skipIfNotImplementedErr(t, err)
if err != nil {
t.Errorf("Virtualization() failed, %v", err)
}
if j == 9 {
t.Logf("Virtualization(): %s, %s", system, role)
}
}(i)
}
wg.Wait()
}
2017-08-03 11:08:35 +09:00
func TestKernelVersion(t *testing.T) {
version, err := KernelVersion()
skipIfNotImplementedErr(t, err)
2017-08-03 11:08:35 +09:00
if err != nil {
t.Errorf("KernelVersion() failed, %v", err)
}
if version == "" {
2019-03-18 02:52:26 +09:00
t.Errorf("KernelVersion() returns empty: %s", version)
2017-08-03 11:08:35 +09:00
}
t.Logf("KernelVersion(): %s", version)
}
func TestPlatformInformation(t *testing.T) {
platform, family, version, err := PlatformInformation()
skipIfNotImplementedErr(t, err)
if err != nil {
t.Errorf("PlatformInformation() failed, %v", err)
}
if platform == "" {
2019-03-18 02:52:26 +09:00
t.Errorf("PlatformInformation() returns empty: %v", platform)
}
t.Logf("PlatformInformation(): %v, %v, %v", platform, family, version)
}