github.com/moby/docker@v26.1.3+incompatible/integration/container/stats_test.go (about)

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