From cf586996f45672377ee6de1eba3a0ab6934f6212 Mon Sep 17 00:00:00 2001 From: Samuel BERTHE Date: Wed, 29 Mar 2017 16:55:30 +0200 Subject: [PATCH] test(docker driver): testing sysctls and ulimits --- client/driver/docker_test.go | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/client/driver/docker_test.go b/client/driver/docker_test.go index b8114fbb8..1127f4709 100644 --- a/client/driver/docker_test.go +++ b/client/driver/docker_test.go @@ -858,6 +858,60 @@ func TestDockerDriver_NetworkAliases_Bridge(t *testing.T) { } } +func TestDockerDriver_Sysctls_Ulimits(t *testing.T) { + task, _, _ := dockerTask() + expectedUlimits := map[string]string{ + "nproc": "4242", + "nofiles": "2048:4096", + } + task.Config["sysctls"] = []map[string]string{ + map[string]string{ + "net.core.somaxconn": "16384", + }, + } + task.Config["ulimits"] = []map[string]string{ + expectedUlimits, + } + + client, handle, cleanup := dockerSetup(t, task) + defer cleanup() + + waitForExist(t, client, handle.(*DockerHandle)) + + container, err := client.InspectContainer(handle.(*DockerHandle).ContainerID()) + if err != nil { + t.Fatalf("err: %v", err) + } + + if want, got := "16384", container.HostConfig.Sysctls["net.core.somaxconn"]; want != got { + t.Errorf("Wrong net.core.somaxconn config for docker job. Expect: %s, got: %s", want, got) + } + + if want, got := 2, len(container.HostConfig.Ulimits); want != got { + t.Errorf("Wrong number of ulimit configs for docker job. Expect: %s, got: %s", want, got) + } + for _, got := range container.HostConfig.Ulimits { + if expectedStr, ok := expectedUlimits[got.Name]; ok == false { + t.Errorf("%s config unexpected for docker job.", got.Name) + } else { + if strings.Contains(expectedStr, ":") == false { + expectedStr = expectedStr + ":" + expectedStr + } + + splitted := strings.SplitN(expectedStr, ":", 2) + soft, _ := strconv.Atoi(splitted[0]) + hard, _ := strconv.Atoi(splitted[1]) + + if got.Soft != int64(soft) { + t.Errorf("Wrong soft %s ulimit for docker job. Expect: %d, got: %d", got.Name, soft, got.Soft) + } + if got.Hard != int64(hard) { + t.Errorf("Wrong hard %s ulimit for docker job. Expect: %d, got: %d", got.Name, hard, got.Hard) + } + } + } +} + func TestDockerDriver_Labels(t *testing.T) { if !tu.IsTravis() { t.Parallel()