4921171587
This patch adds the untilRemoved option to the ContainerWait API which allows the client to wait until the container is not only exited but also removed. This patch also adds some more CLI integration tests for waiting for a created container and waiting with the new --until-removed flag. Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Handle detach sequence in CLI Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Update Container Wait Conditions Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Apply container wait changes to API 1.30 The set of changes to the containerWait API missed the cut for the Docker 17.05 release (API version 1.29). This patch bumps the version checks to use 1.30 instead. This patch also makes a minor update to a testfile which was added to the builder/dockerfile package. Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Remove wait changes from CLI Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Address minor nits on wait changes - Changed the name of the tty Proxy wrapper to `escapeProxy` - Removed the unnecessary Error() method on container.State - Fixes a typo in comment (repeated word) Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Use router.WithCancel in the containerWait handler This handler previously added this functionality manually but now uses the existing wrapper which does it for us. Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Add WaitCondition constants to api/types/container Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Address more ContainerWait review comments - Update ContainerWait backend interface to not return pointer values for container.StateStatus type. - Updated container state's Wait() method comments to clarify that a context MUST be used for cancelling the request, setting timeouts, and to avoid goroutine leaks. - Removed unnecessary buffering when making channels in the client's ContainerWait methods. - Renamed result and error channels in client's ContainerWait methods to clarify that only a single result or error value would be sent on the channel. Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Move container.WaitCondition type to separate file ... to avoid conflict with swagger-generated code for API response Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) Address more ContainerWait review comments Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn) |
||
---|---|---|
.. | ||
agent | ||
host | ||
README.md |
Integration Testing on Swarm
IT on Swarm allows you to execute integration test in parallel across a Docker Swarm cluster
Architecture
Master service
- Works as a funker caller
- Calls a worker funker (
-worker-service
) with a chunk of-check.f
filter strings (passed as a file via-input
flag, typically/mnt/input
)
Worker service
- Works as a funker callee
- Executes an equivalent of
TESTFLAGS=-check.f TestFoo|TestBar|TestBaz ... make test-integration-cli
using the bind-mounted API socket (docker.sock
)
Client
- Controls master and workers via
docker stack
- No need to have a local daemon
Typically, the master and workers are supposed to be running on a cloud environment, while the client is supposed to be running on a laptop, e.g. Docker for Mac/Windows.
Requirement
- Docker daemon 1.13 or later
- Private registry for distributed execution with multiple nodes
Usage
Step 1: Prepare images
$ make build-integration-cli-on-swarm
Following environment variables are known to work in this step:
BUILDFLAGS
DOCKER_INCREMENTAL_BINARY
Note: during the transition into Moby Project, you might need to create a symbolic link $GOPATH/src/github.com/docker/docker
to $GOPATH/src/github.com/moby/moby
.
Step 2: Execute tests
$ ./hack/integration-cli-on-swarm/integration-cli-on-swarm -replicas 40 -push-worker-image YOUR_REGISTRY.EXAMPLE.COM/integration-cli-worker:latest
Following environment variables are known to work in this step:
DOCKER_GRAPHDRIVER
DOCKER_EXPERIMENTAL
Flags
Basic flags:
-replicas N
: the number of worker service replicas. i.e. degree of parallelism.-chunks N
: the number of chunks. By default,chunks
==replicas
.-push-worker-image REGISTRY/IMAGE:TAG
: push the worker image to the registry. Note that if you have only single node and hence you do not need a private registry, you do not need to specify-push-worker-image
.
Experimental flags for mitigating makespan nonuniformity:
-shuffle
: Shuffle the test filter strings
Flags for debugging IT on Swarm itself:
-rand-seed N
: the random seed. This flag is useful for deterministic replaying. By default(0), the timestamp is used.-filters-file FILE
: the file contains-check.f
strings. By default, the file is automatically generated.-dry-run
: skip the actual workloadkeep-executor
: do not auto-remove executor containers, which is used for running privileged programs on Swarm