| package container // import "github.com/docker/docker/integration/container" |
| |
| import ( |
| "context" |
| "testing" |
| |
| "github.com/docker/docker/api/types" |
| "github.com/docker/docker/api/types/container" |
| "github.com/docker/docker/api/types/filters" |
| "github.com/docker/docker/api/types/network" |
| "github.com/docker/docker/integration/internal/request" |
| "github.com/stretchr/testify/assert" |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func TestPsFilter(t *testing.T) { |
| defer setupTest(t)() |
| client := request.NewAPIClient(t) |
| ctx := context.Background() |
| |
| createContainerForFilter := func(ctx context.Context, name string) string { |
| body, err := client.ContainerCreate(ctx, |
| &container.Config{ |
| Cmd: []string{"top"}, |
| Image: "busybox", |
| }, |
| &container.HostConfig{}, |
| &network.NetworkingConfig{}, |
| name, |
| ) |
| require.NoError(t, err) |
| return body.ID |
| } |
| |
| prev := createContainerForFilter(ctx, "prev") |
| createContainerForFilter(ctx, "top") |
| next := createContainerForFilter(ctx, "next") |
| |
| containerIDs := func(containers []types.Container) []string { |
| entries := []string{} |
| for _, container := range containers { |
| entries = append(entries, container.ID) |
| } |
| return entries |
| } |
| |
| f1 := filters.NewArgs() |
| f1.Add("since", "top") |
| q1, err := client.ContainerList(ctx, types.ContainerListOptions{ |
| All: true, |
| Filters: f1, |
| }) |
| require.NoError(t, err) |
| assert.Contains(t, containerIDs(q1), next) |
| |
| f2 := filters.NewArgs() |
| f2.Add("before", "top") |
| q2, err := client.ContainerList(ctx, types.ContainerListOptions{ |
| All: true, |
| Filters: f2, |
| }) |
| require.NoError(t, err) |
| assert.Contains(t, containerIDs(q2), prev) |
| } |