github.com/elastic/gosigar@v0.14.3/cgroup/cpuacct_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 cpuacctPath = "testdata/docker/sys/fs/cgroup/cpuacct/docker/b29faf21b7eff959f64b4192c34d5d67a707fe8561e9eaa608cb27693fba4242"
    11  
    12  func TestCPUAccountingStats(t *testing.T) {
    13  	cpuacct := CPUAccountingSubsystem{}
    14  	if err := cpuacctStat(cpuacctPath, &cpuacct); err != nil {
    15  		t.Fatal(err)
    16  	}
    17  
    18  	assert.Equal(t, uint64(61950000000), cpuacct.Stats.UserNanos)
    19  	assert.Equal(t, uint64(7730000000), cpuacct.Stats.SystemNanos)
    20  }
    21  
    22  func TestCpuacctUsage(t *testing.T) {
    23  	cpuacct := CPUAccountingSubsystem{}
    24  	if err := cpuacctUsage(cpuacctPath, &cpuacct); err != nil {
    25  		t.Fatal(err)
    26  	}
    27  
    28  	assert.Equal(t, uint64(95996653175), cpuacct.TotalNanos)
    29  }
    30  
    31  func TestCpuacctUsagePerCPU(t *testing.T) {
    32  	cpuacct := CPUAccountingSubsystem{}
    33  	if err := cpuacctUsagePerCPU(cpuacctPath, &cpuacct); err != nil {
    34  		t.Fatal(err)
    35  	}
    36  
    37  	assert.Equal(t, []uint64{26571825468, 23185259690, 24300973729, 21937433730}, cpuacct.UsagePerCPU)
    38  }
    39  
    40  func TestCPUAccountingSubsystem_Get(t *testing.T) {
    41  	cpuacct := CPUAccountingSubsystem{}
    42  	if err := cpuacct.get(cpuacctPath); err != nil {
    43  		t.Fatal(err)
    44  	}
    45  
    46  	assert.Equal(t, uint64(61950000000), cpuacct.Stats.UserNanos)
    47  	assert.Equal(t, uint64(95996653175), cpuacct.TotalNanos)
    48  	assert.Len(t, cpuacct.UsagePerCPU, 4)
    49  }
    50  
    51  func TestCPUAccountingSubsystemJSON(t *testing.T) {
    52  	cpuacct := CPUAccountingSubsystem{}
    53  	if err := cpuacct.get(cpuacctPath); err != nil {
    54  		t.Fatal(err)
    55  	}
    56  
    57  	json, err := json.MarshalIndent(cpuacct, "", "  ")
    58  	if err != nil {
    59  		t.Fatal(err)
    60  	}
    61  
    62  	t.Log(string(json))
    63  }