99 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package cpu
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"runtime"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| func TestCpu_times(t *testing.T) {
 | |
| 	v, err := CPUTimes(false)
 | |
| 	if err != nil {
 | |
| 		t.Errorf("error %v", err)
 | |
| 	}
 | |
| 	if len(v) == 0 {
 | |
| 		t.Error("could not get CPUs ", err)
 | |
| 	}
 | |
| 	empty := CPUTimesStat{}
 | |
| 	for _, vv := range v {
 | |
| 		if vv == empty {
 | |
| 			t.Errorf("could not get CPU User: %v", vv)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCpu_counts(t *testing.T) {
 | |
| 	v, err := CPUCounts(true)
 | |
| 	if err != nil {
 | |
| 		t.Errorf("error %v", err)
 | |
| 	}
 | |
| 	if v == 0 {
 | |
| 		t.Errorf("could not get CPU counts: %v", v)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCPUTimeStat_String(t *testing.T) {
 | |
| 	v := CPUTimesStat{
 | |
| 		CPU:    "cpu0",
 | |
| 		User:   100.1,
 | |
| 		System: 200.1,
 | |
| 		Idle:   300.1,
 | |
| 	}
 | |
| 	e := `{"cpu":"cpu0","user":100.1,"system":200.1,"idle":300.1,"nice":0.0,"iowait":0.0,"irq":0.0,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"stolen":0.0}`
 | |
| 	if e != fmt.Sprintf("%v", v) {
 | |
| 		t.Errorf("CPUTimesStat string is invalid: %v", v)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCpuInfo(t *testing.T) {
 | |
| 	v, err := CPUInfo()
 | |
| 	if err != nil {
 | |
| 		t.Errorf("error %v", err)
 | |
| 	}
 | |
| 	if len(v) == 0 {
 | |
| 		t.Errorf("could not get CPU Info")
 | |
| 	}
 | |
| 	for _, vv := range v {
 | |
| 		if vv.ModelName == "" {
 | |
| 			t.Errorf("could not get CPU Info: %v", vv)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func testCPUPercent(t *testing.T, percpu bool) {
 | |
| 	numcpu := runtime.NumCPU()
 | |
| 	testCount := 3
 | |
| 
 | |
| 	if runtime.GOOS != "windows" {
 | |
| 		testCount = 100
 | |
| 		v, err := CPUPercent(time.Millisecond, percpu)
 | |
| 		if err != nil {
 | |
| 			t.Errorf("error %v", err)
 | |
| 		}
 | |
| 		if (percpu && len(v) != numcpu) || (!percpu && len(v) != 1) {
 | |
| 			t.Fatalf("wrong number of entries from CPUPercent: %v", v)
 | |
| 		}
 | |
| 	}
 | |
| 	for i := 0; i < testCount; i++ {
 | |
| 		duration := time.Duration(10) * time.Microsecond
 | |
| 		v, err := CPUPercent(duration, percpu)
 | |
| 		if err != nil {
 | |
| 			t.Errorf("error %v", err)
 | |
| 		}
 | |
| 		for _, percent := range v {
 | |
| 			if percent < 0.0 || int(percent) > 100*numcpu {
 | |
| 				t.Fatalf("CPUPercent value is invalid: %f", percent)
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCPUPercent(t *testing.T) {
 | |
| 	testCPUPercent(t, false)
 | |
| }
 | |
| 
 | |
| func TestCPUPercentPerCpu(t *testing.T) {
 | |
| 	testCPUPercent(t, true)
 | |
| }
 |