From 66be81b148a1c6693c44cf52d8172d512eedc233 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Thu, 17 Sep 2015 18:20:25 +0200 Subject: [PATCH] integration-cli: add cli/api stats tests when container not found Signed-off-by: Antonio Murdaca --- integration-cli/docker_api_stats_test.go | 19 ++++++++++++++++--- integration-cli/docker_cli_stats_test.go | 19 +++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/integration-cli/docker_api_stats_test.go b/integration-cli/docker_api_stats_test.go index a13d4c7321..97b6fdc5d2 100644 --- a/integration-cli/docker_api_stats_test.go +++ b/integration-cli/docker_api_stats_test.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "fmt" + "net/http" "os/exec" "runtime" "strconv" @@ -13,7 +14,7 @@ import ( "github.com/go-check/check" ) -func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) { +func (s *DockerSuite) TestApiStatsNoStreamGetCpu(c *check.C) { testRequires(c, DaemonIsLinux) out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true;do echo 'Hello'; usleep 100000; done") @@ -39,7 +40,7 @@ func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) { } } -func (s *DockerSuite) TestStoppedContainerStatsGoroutines(c *check.C) { +func (s *DockerSuite) TestApiStatsStoppedContainerInGoroutines(c *check.C) { testRequires(c, DaemonIsLinux) out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo 1") id := strings.TrimSpace(out) @@ -75,7 +76,7 @@ func (s *DockerSuite) TestStoppedContainerStatsGoroutines(c *check.C) { } } -func (s *DockerSuite) TestApiNetworkStats(c *check.C) { +func (s *DockerSuite) TestApiStatsNetworkStats(c *check.C) { testRequires(c, SameHostDaemon) testRequires(c, DaemonIsLinux) // Run container for 30 secs @@ -133,3 +134,15 @@ func getNetworkStats(c *check.C, id string) map[string]types.NetworkStats { return st.Networks } + +func (s *DockerSuite) TestApiStatsContainerNotFound(c *check.C) { + testRequires(c, DaemonIsLinux) + + status, _, err := sockRequest("GET", "/containers/nonexistent/stats", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusNotFound) + + status, _, err = sockRequest("GET", "/containers/nonexistent/stats?stream=0", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusNotFound) +} diff --git a/integration-cli/docker_cli_stats_test.go b/integration-cli/docker_cli_stats_test.go index f2d2a9dcf4..9c2089f827 100644 --- a/integration-cli/docker_cli_stats_test.go +++ b/integration-cli/docker_cli_stats_test.go @@ -9,7 +9,7 @@ import ( "github.com/go-check/check" ) -func (s *DockerSuite) TestCliStatsNoStream(c *check.C) { +func (s *DockerSuite) TestStatsNoStream(c *check.C) { testRequires(c, DaemonIsLinux) out, _ := dockerCmd(c, "run", "-d", "busybox", "top") id := strings.TrimSpace(out) @@ -39,5 +39,20 @@ func (s *DockerSuite) TestCliStatsNoStream(c *check.C) { statsCmd.Process.Kill() c.Fatalf("stats did not return immediately when not streaming") } - +} + +func (s *DockerSuite) TestStatsContainerNotFound(c *check.C) { + testRequires(c, DaemonIsLinux) + + out, _, err := dockerCmdWithError("stats", "notfound") + c.Assert(err, check.NotNil) + if !strings.Contains(out, "no such id: notfound") { + c.Fatalf("Expected to fail on not found container stats, got %q instead", out) + } + + out, _, err = dockerCmdWithError("stats", "--no-stream", "notfound") + c.Assert(err, check.NotNil) + if !strings.Contains(out, "no such id: notfound") { + c.Fatalf("Expected to fail on not found container stats with --no-stream, got %q instead", out) + } }