Quellcode durchsuchen

Migrate TestAPIStatsContainerGetMemoryLimit from integration-cli to api tests

This fix migrates TestAPIStatsContainerGetMemoryLimit from
integration-cli to api test.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Yong Tang vor 7 Jahren
Ursprung
Commit
d5cbde514f
2 geänderte Dateien mit 56 neuen und 42 gelöschten Zeilen
  1. 0 42
      integration-cli/docker_api_stats_unix_test.go
  2. 56 0
      integration/container/stats_test.go

+ 0 - 42
integration-cli/docker_api_stats_unix_test.go

@@ -1,42 +0,0 @@
-// +build !windows
-
-package main
-
-import (
-	"encoding/json"
-	"fmt"
-	"net/http"
-
-	"github.com/docker/docker/api/types"
-	"github.com/docker/docker/integration-cli/checker"
-	"github.com/docker/docker/integration-cli/request"
-	"github.com/go-check/check"
-)
-
-func (s *DockerSuite) TestAPIStatsContainerGetMemoryLimit(c *check.C) {
-	testRequires(c, DaemonIsLinux, memoryLimitSupport)
-
-	resp, body, err := request.Get("/info", request.JSON)
-	c.Assert(err, checker.IsNil)
-	c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
-	var info types.Info
-	err = json.NewDecoder(body).Decode(&info)
-	c.Assert(err, checker.IsNil)
-	body.Close()
-
-	// don't set a memory limit, the memory limit should be system memory
-	conName := "foo"
-	dockerCmd(c, "run", "-d", "--name", conName, "busybox", "top")
-	c.Assert(waitRun(conName), checker.IsNil)
-
-	resp, body, err = request.Get(fmt.Sprintf("/containers/%s/stats?stream=false", conName))
-	c.Assert(err, checker.IsNil)
-	c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
-	c.Assert(resp.Header.Get("Content-Type"), checker.Equals, "application/json")
-
-	var v *types.Stats
-	err = json.NewDecoder(body).Decode(&v)
-	c.Assert(err, checker.IsNil)
-	body.Close()
-	c.Assert(fmt.Sprintf("%d", v.MemoryStats.Limit), checker.Equals, fmt.Sprintf("%d", info.MemTotal))
-}

+ 56 - 0
integration/container/stats_test.go

@@ -0,0 +1,56 @@
+package container
+
+import (
+	"context"
+	"encoding/json"
+	"io"
+	"testing"
+	"time"
+
+	"github.com/docker/docker/api/types"
+	"github.com/docker/docker/api/types/container"
+	"github.com/docker/docker/api/types/network"
+	"github.com/docker/docker/integration/util/request"
+	"github.com/gotestyourself/gotestyourself/poll"
+	"github.com/gotestyourself/gotestyourself/skip"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+)
+
+func TestStats(t *testing.T) {
+	skip.If(t, !testEnv.DaemonInfo.MemoryLimit)
+
+	defer setupTest(t)()
+	client := request.NewAPIClient(t)
+	ctx := context.Background()
+
+	info, err := client.Info(ctx)
+	require.NoError(t, err)
+
+	c, err := client.ContainerCreate(ctx,
+		&container.Config{
+			Cmd:   []string{"top"},
+			Image: "busybox",
+		},
+		&container.HostConfig{},
+		&network.NetworkingConfig{},
+		"",
+	)
+	require.NoError(t, err)
+
+	err = client.ContainerStart(ctx, c.ID, types.ContainerStartOptions{})
+	require.NoError(t, err)
+
+	poll.WaitOn(t, containerIsInState(ctx, client, c.ID, "running"), poll.WithDelay(100*time.Millisecond))
+
+	resp, err := client.ContainerStats(context.Background(), c.ID, false)
+	require.NoError(t, err)
+	defer resp.Body.Close()
+
+	var v *types.Stats
+	err = json.NewDecoder(resp.Body).Decode(&v)
+	require.NoError(t, err)
+	assert.Equal(t, int64(v.MemoryStats.Limit), info.MemTotal)
+	err = json.NewDecoder(resp.Body).Decode(&v)
+	require.Error(t, err, io.EOF)
+}