stats_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "encoding/json"
  4. "io"
  5. "reflect"
  6. "testing"
  7. "github.com/docker/docker/api/types"
  8. "github.com/docker/docker/integration/internal/container"
  9. "gotest.tools/v3/assert"
  10. is "gotest.tools/v3/assert/cmp"
  11. "gotest.tools/v3/skip"
  12. )
  13. func TestStats(t *testing.T) {
  14. skip.If(t, testEnv.DaemonInfo.CgroupDriver == "none")
  15. skip.If(t, !testEnv.DaemonInfo.MemoryLimit)
  16. ctx := setupTest(t)
  17. apiClient := testEnv.APIClient()
  18. info, err := apiClient.Info(ctx)
  19. assert.NilError(t, err)
  20. cID := container.Run(ctx, t, apiClient)
  21. resp, err := apiClient.ContainerStats(ctx, cID, false)
  22. assert.NilError(t, err)
  23. defer resp.Body.Close()
  24. var v types.Stats
  25. err = json.NewDecoder(resp.Body).Decode(&v)
  26. assert.NilError(t, err)
  27. assert.Check(t, is.Equal(int64(v.MemoryStats.Limit), info.MemTotal))
  28. assert.Check(t, !reflect.DeepEqual(v.PreCPUStats, types.CPUStats{}))
  29. err = json.NewDecoder(resp.Body).Decode(&v)
  30. assert.Assert(t, is.ErrorContains(err, ""), io.EOF)
  31. resp, err = apiClient.ContainerStatsOneShot(ctx, cID)
  32. assert.NilError(t, err)
  33. defer resp.Body.Close()
  34. v = types.Stats{}
  35. err = json.NewDecoder(resp.Body).Decode(&v)
  36. assert.NilError(t, err)
  37. assert.Check(t, is.Equal(int64(v.MemoryStats.Limit), info.MemTotal))
  38. assert.Check(t, is.DeepEqual(v.PreCPUStats, types.CPUStats{}))
  39. err = json.NewDecoder(resp.Body).Decode(&v)
  40. assert.Assert(t, is.ErrorContains(err, ""), io.EOF)
  41. }