github.com/elastic/gosigar@v0.14.3/cgroup/reader_test.go (about) 1 package cgroup 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 const ( 12 path = "/docker/b29faf21b7eff959f64b4192c34d5d67a707fe8561e9eaa608cb27693fba4242" 13 id = "b29faf21b7eff959f64b4192c34d5d67a707fe8561e9eaa608cb27693fba4242" 14 ) 15 16 func TestReaderGetStats(t *testing.T) { 17 reader, err := NewReader("testdata/docker", true) 18 if err != nil { 19 t.Fatal(err) 20 } 21 22 stats, err := reader.GetStatsForProcess(985) 23 if err != nil { 24 t.Fatal(err) 25 } 26 if stats == nil { 27 t.Fatal("no cgroup stats found") 28 } 29 30 assert.Equal(t, id, stats.ID) 31 assert.Equal(t, id, stats.BlockIO.ID) 32 assert.Equal(t, id, stats.CPU.ID) 33 assert.Equal(t, id, stats.CPUAccounting.ID) 34 assert.Equal(t, id, stats.Memory.ID) 35 36 assert.Equal(t, path, stats.Path) 37 assert.Equal(t, path, stats.BlockIO.Path) 38 assert.Equal(t, path, stats.CPU.Path) 39 assert.Equal(t, path, stats.CPUAccounting.Path) 40 assert.Equal(t, path, stats.Memory.Path) 41 42 json, err := json.MarshalIndent(stats, "", " ") 43 if err != nil { 44 t.Fatal(err) 45 } 46 47 t.Log(string(json)) 48 } 49 50 func TestReaderGetStatsHierarchyOverride(t *testing.T) { 51 // In testdata/docker, process 1's cgroup paths have 52 // no corresponding paths under /sys/fs/cgroup/<subsystem>. 53 // 54 // Setting CgroupsHierarchyOverride means that we use 55 // the root cgroup path instead. This is intended to test 56 // the scenario where we're reading cgroup metrics from 57 // within a Docker container. 58 59 reader, err := NewReaderOptions(ReaderOptions{ 60 RootfsMountpoint: "testdata/docker", 61 IgnoreRootCgroups: true, 62 CgroupsHierarchyOverride: "/", 63 }) 64 if err != nil { 65 t.Fatal(err) 66 } 67 68 stats, err := reader.GetStatsForProcess(1) 69 if err != nil { 70 t.Fatal(err) 71 } 72 if stats == nil { 73 t.Fatal("no cgroup stats found") 74 } 75 76 require.NotNil(t, stats.CPU) 77 assert.NotZero(t, stats.CPU.CFS.Shares) 78 }