stats_test.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "encoding/json"
  5. "io"
  6. "testing"
  7. "time"
  8. "github.com/docker/docker/api/types"
  9. "github.com/docker/docker/integration/internal/container"
  10. "gotest.tools/assert"
  11. is "gotest.tools/assert/cmp"
  12. "gotest.tools/poll"
  13. "gotest.tools/skip"
  14. )
  15. func TestStats(t *testing.T) {
  16. skip.If(t, !testEnv.DaemonInfo.MemoryLimit)
  17. defer setupTest(t)()
  18. client := testEnv.APIClient()
  19. ctx := context.Background()
  20. info, err := client.Info(ctx)
  21. assert.NilError(t, err)
  22. cID := container.Run(t, ctx, client)
  23. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  24. resp, err := client.ContainerStats(ctx, cID, false)
  25. assert.NilError(t, err)
  26. defer resp.Body.Close()
  27. var v *types.Stats
  28. err = json.NewDecoder(resp.Body).Decode(&v)
  29. assert.NilError(t, err)
  30. assert.Check(t, is.Equal(int64(v.MemoryStats.Limit), info.MemTotal))
  31. err = json.NewDecoder(resp.Body).Decode(&v)
  32. assert.Assert(t, is.ErrorContains(err, ""), io.EOF)
  33. }