From 2e9bb7870a0ea4a2fdc3fdbe6686ed6159f08803 Mon Sep 17 00:00:00 2001 From: Zhang Wei Date: Wed, 27 Jan 2016 00:05:44 +0800 Subject: [PATCH] Optimize `TestRunSeccompDefaultProfile` Optimize performance of `TestRunSeccompDefaultProfile` Signed-off-by: Zhang Wei --- integration-cli/docker_cli_run_unix_test.go | 53 +++++++++++++++------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/integration-cli/docker_cli_run_unix_test.go b/integration-cli/docker_cli_run_unix_test.go index d1583ca460..5c32907de9 100644 --- a/integration-cli/docker_cli_run_unix_test.go +++ b/integration-cli/docker_cli_run_unix_test.go @@ -12,6 +12,7 @@ import ( "regexp" "strconv" "strings" + "sync" "time" "github.com/docker/docker/pkg/homedir" @@ -867,24 +868,46 @@ func (s *DockerSuite) TestRunSeccompAllowAptKey(c *check.C) { func (s *DockerSuite) TestRunSeccompDefaultProfile(c *check.C) { testRequires(c, SameHostDaemon, seccompEnabled, NotUserNamespace) - out, _, err := dockerCmdWithError("run", "--cap-add", "ALL", "syscall-test", "acct-test") - if err == nil || !strings.Contains(out, "Operation not permitted") { - c.Fatalf("expected Operation not permitted, got: %s", out) - } + var group sync.WaitGroup + group.Add(4) + errChan := make(chan error, 4) + go func() { + out, _, err := dockerCmdWithError("run", "--cap-add", "ALL", "syscall-test", "acct-test") + if err == nil || !strings.Contains(out, "Operation not permitted") { + errChan <- fmt.Errorf("expected Operation not permitted, got: %s", out) + } + group.Done() + }() - out, _, err = dockerCmdWithError("run", "--cap-add", "ALL", "syscall-test", "ns-test", "echo", "hello") - if err == nil || !strings.Contains(out, "Operation not permitted") { - c.Fatalf("expected Operation not permitted, got: %s", out) - } + go func() { + out, _, err := dockerCmdWithError("run", "--cap-add", "ALL", "syscall-test", "ns-test", "echo", "hello") + if err == nil || !strings.Contains(out, "Operation not permitted") { + errChan <- fmt.Errorf("expected Operation not permitted, got: %s", out) + } + group.Done() + }() - out, _, err = dockerCmdWithError("run", "--cap-add", "ALL", "--security-opt", "seccomp:unconfined", "syscall-test", "acct-test") - if err == nil || !strings.Contains(out, "No such file or directory") { - c.Fatalf("expected No such file or directory, got: %s", out) - } + go func() { + out, _, err := dockerCmdWithError("run", "--cap-add", "ALL", "--security-opt", "seccomp:unconfined", "syscall-test", "acct-test") + if err == nil || !strings.Contains(out, "No such file or directory") { + errChan <- fmt.Errorf("expected No such file or directory, got: %s", out) + } + group.Done() + }() - out, _, err = dockerCmdWithError("run", "--cap-add", "ALL", "--security-opt", "seccomp:unconfined", "syscall-test", "ns-test", "echo", "hello") - if err != nil || !strings.Contains(out, "hello") { - c.Fatalf("expected hello, got: %s, %v", out, err) + go func() { + out, _, err := dockerCmdWithError("run", "--cap-add", "ALL", "--security-opt", "seccomp:unconfined", "syscall-test", "ns-test", "echo", "hello") + if err != nil || !strings.Contains(out, "hello") { + errChan <- fmt.Errorf("expected hello, got: %s, %v", out, err) + } + group.Done() + }() + + group.Wait() + close(errChan) + + for err := range errChan { + c.Assert(err, checker.IsNil) } }