cgroup_test.go 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package cgroup
  2. import (
  3. "github.com/stretchr/testify/assert"
  4. "path"
  5. "testing"
  6. )
  7. func TestNewFromProcessCgroupFile(t *testing.T) {
  8. cg, err := NewFromProcessCgroupFile(path.Join("fixtures/proc/100/cgroup"))
  9. assert.Nil(t, err)
  10. assert.Equal(t, "/system.slice/ssh.service", cg.Id)
  11. assert.Equal(t, "/system.slice/ssh.service", cg.ContainerId)
  12. assert.Equal(t, ContainerTypeSystemdService, cg.ContainerType)
  13. assert.Equal(t,
  14. map[string]string{
  15. "blkio": "/system.slice/ssh.service",
  16. "cpu": "/system.slice/ssh.service",
  17. "cpuacct": "/system.slice/ssh.service",
  18. "cpuset": "/",
  19. "devices": "/system.slice/ssh.service",
  20. "freezer": "/",
  21. "hugetlb": "/",
  22. "memory": "/system.slice/ssh.service",
  23. "name=systemd": "/system.slice/ssh.service",
  24. "net_cls": "/",
  25. "net_prio": "/",
  26. "perf_event": "/",
  27. "pids": "/system.slice/ssh.service",
  28. },
  29. cg.subsystems,
  30. )
  31. cg, err = NewFromProcessCgroupFile(path.Join("fixtures/proc/200/cgroup"))
  32. assert.Nil(t, err)
  33. assert.Equal(t, "/docker/b43d92bf1e5c6f78bb9b7bc6f40721280299855ba692092716e3a1b6c0b86f3f", cg.Id)
  34. assert.Equal(t, "b43d92bf1e5c6f78bb9b7bc6f40721280299855ba692092716e3a1b6c0b86f3f", cg.ContainerId)
  35. assert.Equal(t, ContainerTypeDocker, cg.ContainerType)
  36. cg, err = NewFromProcessCgroupFile(path.Join("fixtures/proc/300/cgroup"))
  37. assert.Nil(t, err)
  38. assert.Equal(t, "/kubepods/burstable/pod6a4ce4a0-ba47-11ea-b2a7-0cc47ac5979e/17db96a24ae1e9dd57143e62b1cb0d2d35e693c65c774c7470e87b0572e07c1a", cg.Id)
  39. assert.Equal(t, "17db96a24ae1e9dd57143e62b1cb0d2d35e693c65c774c7470e87b0572e07c1a", cg.ContainerId)
  40. assert.Equal(t, ContainerTypeDocker, cg.ContainerType)
  41. }
  42. func TestContainerByCgroup(t *testing.T) {
  43. as := assert.New(t)
  44. typ, id, err := containerByCgroup("/kubepods/burstable/pod9729a196c4723b60ab401eaff722982d/d166c6190614efc91956b78e96d74c3fbc96ca8e91948c36de3bc5b0e7b27d48")
  45. as.Equal(typ, ContainerTypeDocker)
  46. as.Equal("d166c6190614efc91956b78e96d74c3fbc96ca8e91948c36de3bc5b0e7b27d48", id)
  47. as.Nil(err)
  48. typ, id, err = containerByCgroup("/kubepods/besteffort/pod0d08203e-255a-11e9-8cd9-0007cb0b2cc8/671a50f5d60566556912f61511d0ec9e4d5c78d53fbc4676727180438bbbbc55/kube-proxy")
  49. as.Equal(typ, ContainerTypeDocker)
  50. as.Equal("671a50f5d60566556912f61511d0ec9e4d5c78d53fbc4676727180438bbbbc55", id)
  51. as.Nil(err)
  52. typ, id, err = containerByCgroup("/kubepods/poda38c12e8-255a-11e9-8cd9-0007cb0b2cc8/32c562ed81a2622b37b80cb216859820ba51bd694f60ee4cf10d07a4011266f8")
  53. as.Equal(typ, ContainerTypeDocker)
  54. as.Equal("32c562ed81a2622b37b80cb216859820ba51bd694f60ee4cf10d07a4011266f8", id)
  55. as.Nil(err)
  56. typ, id, err = containerByCgroup("/docker/63425c4a8b4291744a79dd9011fddc7a1f8ffda61f65d72196aa01d00cae2e2d")
  57. as.Equal(typ, ContainerTypeDocker)
  58. as.Equal("63425c4a8b4291744a79dd9011fddc7a1f8ffda61f65d72196aa01d00cae2e2d", id)
  59. as.Nil(err)
  60. typ, id, err = containerByCgroup("/lxc/mysql-primary-db")
  61. as.Equal(typ, ContainerTypeLxc)
  62. as.Equal("mysql-primary-db", id)
  63. as.Nil(err)
  64. typ, id, err = containerByCgroup("/kubepods/poda48c12e8-255a-11e9-8cd9-0007cb0b2cc8/crio-63425c4a8b4291744a79dd9011fddc7a1f8ffda61f65d72196aa01d00cae2e2e")
  65. as.Equal(typ, ContainerTypeCrio)
  66. as.Equal("63425c4a8b4291744a79dd9011fddc7a1f8ffda61f65d72196aa01d00cae2e2e", id)
  67. as.Nil(err)
  68. typ, id, err = containerByCgroup("/system.slice/system-serial\\x2dgetty.slice")
  69. as.Equal(typ, ContainerTypeSystemdService)
  70. as.Equal("/system.slice/system-serial\\x2dgetty.slice", id)
  71. as.Nil(err)
  72. typ, id, err = containerByCgroup("/system.slice/system-postgresql.slice/[email protected]")
  73. as.Equal(typ, ContainerTypeSystemdService)
  74. as.Equal("/system.slice/system-postgresql.slice", id)
  75. as.Nil(err)
  76. }