Skip to content

Instantly share code, notes, and snippets.

@ehazlett
Created July 22, 2019 14:46
Show Gist options
  • Save ehazlett/e3a6df6f97dfe2039cf53481751eb667 to your computer and use it in GitHub Desktop.
Save ehazlett/e3a6df6f97dfe2039cf53481751eb667 to your computer and use it in GitHub Desktop.
package utils
import (
"bytes"
"os"
"testing"
)
var (
testCgroup = `11:rdma:/
10:memory:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
9:net_cls,net_prio:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
8:cpuset:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
7:freezer:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
6:perf_event:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
5:cpu,cpuacct:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
4:devices:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
3:pids:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
2:blkio:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
1:name=systemd:/docker/e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f/docker/660367f1c56b07dea97fa353e08bc4b0ae6ccd4f567a3e70d45addf2fbac7d14
0::/system.slice/containerd.service`
)
func TestGetContainerID(t *testing.T) {
if os.Getenv("TRAVIS") != "" {
t.Skip("skipping GetContainerID test; in Travis container infra")
}
if _, err := os.Stat("/proc/self/cgroup"); err != nil {
if os.IsNotExist(err) {
t.Skipf("skipping GetContainerID; does not look like I am in a container")
}
}
id, err := GetContainerID()
if err != nil {
if err == ErrNotContainer {
t.Skipf("skipping GetContainerID; does not look like I am in a normal container")
}
t.Fatalf("error getting container id: %s", err)
}
if id == "" {
t.Fatalf("expected ID")
}
}
func TestGetContainerIDMultiCgroup(t *testing.T) {
buf := bytes.NewBufferString(testCgroup)
expected := "e142bed7672d4e4bc9dd3c50fbc9a19b9a13bc06b498d0afc7a2229a9c698e6f"
id, err := parseContainerIDFromReader(buf)
if err != nil {
t.Fatal(err)
}
if id != expected {
t.Fatalf("expected %s; received %s", expected, id)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment