Преглед на файлове

integration-cli: add cli/api stats tests when container not found

Signed-off-by: Antonio Murdaca <runcom@linux.com>
Antonio Murdaca преди 9 години
родител
ревизия
66be81b148
променени са 2 файла, в които са добавени 32 реда и са изтрити 4 реда
  1. 16 3
      integration-cli/docker_api_stats_test.go
  2. 16 1
      integration-cli/docker_cli_stats_test.go

+ 16 - 3
integration-cli/docker_api_stats_test.go

@@ -3,6 +3,7 @@ package main
 import (
 import (
 	"encoding/json"
 	"encoding/json"
 	"fmt"
 	"fmt"
+	"net/http"
 	"os/exec"
 	"os/exec"
 	"runtime"
 	"runtime"
 	"strconv"
 	"strconv"
@@ -13,7 +14,7 @@ import (
 	"github.com/go-check/check"
 	"github.com/go-check/check"
 )
 )
 
 
-func (s *DockerSuite) TestCliStatsNoStreamGetCpu(c *check.C) {
+func (s *DockerSuite) TestApiStatsNoStreamGetCpu(c *check.C) {
 	testRequires(c, DaemonIsLinux)
 	testRequires(c, DaemonIsLinux)
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "while true;do echo 'Hello'; usleep 100000; done")
 	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)
 	testRequires(c, DaemonIsLinux)
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo 1")
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "echo 1")
 	id := strings.TrimSpace(out)
 	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, SameHostDaemon)
 	testRequires(c, DaemonIsLinux)
 	testRequires(c, DaemonIsLinux)
 	// Run container for 30 secs
 	// Run container for 30 secs
@@ -133,3 +134,15 @@ func getNetworkStats(c *check.C, id string) map[string]types.NetworkStats {
 
 
 	return st.Networks
 	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)
+}

+ 16 - 1
integration-cli/docker_cli_stats_test.go

@@ -9,7 +9,7 @@ import (
 	"github.com/go-check/check"
 	"github.com/go-check/check"
 )
 )
 
 
-func (s *DockerSuite) TestCliStatsNoStream(c *check.C) {
+func (s *DockerSuite) TestStatsNoStream(c *check.C) {
 	testRequires(c, DaemonIsLinux)
 	testRequires(c, DaemonIsLinux)
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
 	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
 	id := strings.TrimSpace(out)
 	id := strings.TrimSpace(out)
@@ -39,5 +39,20 @@ func (s *DockerSuite) TestCliStatsNoStream(c *check.C) {
 		statsCmd.Process.Kill()
 		statsCmd.Process.Kill()
 		c.Fatalf("stats did not return immediately when not streaming")
 		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)
+	}
 }
 }