github.com/elastic/gosigar@v0.14.3/cgroup/cpu_test.go (about)

     1  package cgroup
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  const cpuPath = "testdata/docker/sys/fs/cgroup/cpu/docker/b29faf21b7eff959f64b4192c34d5d67a707fe8561e9eaa608cb27693fba4242"
    11  
    12  func TestCpuStats(t *testing.T) {
    13  	cpu := CPUSubsystem{}
    14  	if err := cpuStat(cpuPath, &cpu); err != nil {
    15  		t.Fatal(err)
    16  	}
    17  
    18  	assert.Equal(t, uint64(769021), cpu.Stats.Periods)
    19  	assert.Equal(t, uint64(1046), cpu.Stats.ThrottledPeriods)
    20  	assert.Equal(t, uint64(352597023453), cpu.Stats.ThrottledTimeNanos)
    21  }
    22  
    23  func TestCpuCFS(t *testing.T) {
    24  	cpu := CPUSubsystem{}
    25  	if err := cpuCFS(cpuPath, &cpu); err != nil {
    26  		t.Fatal(err)
    27  	}
    28  
    29  	assert.Equal(t, uint64(100000), cpu.CFS.PeriodMicros)
    30  	assert.Equal(t, uint64(0), cpu.CFS.QuotaMicros) // -1 is changed to 0.
    31  	assert.Equal(t, uint64(1024), cpu.CFS.Shares)
    32  }
    33  
    34  func TestCpuRT(t *testing.T) {
    35  	cpu := CPUSubsystem{}
    36  	if err := cpuRT(cpuPath, &cpu); err != nil {
    37  		t.Fatal(err)
    38  	}
    39  
    40  	assert.Equal(t, uint64(1000000), cpu.RT.PeriodMicros)
    41  	assert.Equal(t, uint64(0), cpu.RT.RuntimeMicros)
    42  }
    43  
    44  func TestCpuSubsystemGet(t *testing.T) {
    45  	cpu := CPUSubsystem{}
    46  	if err := cpu.get(cpuPath); err != nil {
    47  		t.Fatal(err)
    48  	}
    49  
    50  	assert.Equal(t, uint64(769021), cpu.Stats.Periods)
    51  	assert.Equal(t, uint64(100000), cpu.CFS.PeriodMicros)
    52  	assert.Equal(t, uint64(1000000), cpu.RT.PeriodMicros)
    53  }
    54  
    55  func TestCpuSubsystemJSON(t *testing.T) {
    56  	cpu := CPUSubsystem{}
    57  	if err := cpu.get(cpuPath); err != nil {
    58  		t.Fatal(err)
    59  	}
    60  
    61  	json, err := json.MarshalIndent(cpu, "", "  ")
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  
    66  	t.Log(string(json))
    67  }