mirror of https://github.com/docker/docs.git
Merge pull request #716 from aluzzardi/integration-cli
integration: Run tests with Docker master
This commit is contained in:
commit
2a3a32274b
|
@ -7,6 +7,23 @@ function teardown() {
|
||||||
stop_docker
|
stop_docker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ensure that the client and server are running the same version.
|
||||||
|
@test "api version" {
|
||||||
|
start_docker 1
|
||||||
|
run docker -H "${HOSTS[0]}" version
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
|
||||||
|
# First line should contain the client version.
|
||||||
|
[[ "${lines[0]}" == "Client version: "* ]]
|
||||||
|
local cli_version=`echo "${lines[0]}" | cut -d':' -f2`
|
||||||
|
[[ "${output}" == *"Server version:$cli_version"* ]]
|
||||||
|
|
||||||
|
# Second line should be client API version.
|
||||||
|
[[ "${lines[1]}" == "Client API version: "* ]]
|
||||||
|
local cli_api_version=`echo "${lines[1]}" | cut -d':' -f2`
|
||||||
|
[[ "${output}" == *"Server API version:$cli_api_version"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
@test "docker attach" {
|
@test "docker attach" {
|
||||||
start_docker 3
|
start_docker 3
|
||||||
swarm_manage
|
swarm_manage
|
||||||
|
@ -41,7 +58,7 @@ function teardown() {
|
||||||
# if connected successfull, it returns two lines, "Session Open" and "Session Closed"
|
# if connected successfull, it returns two lines, "Session Open" and "Session Closed"
|
||||||
# Note: with stdout=1&stdin=1&stream=1: it can be used as SSH
|
# Note: with stdout=1&stdin=1&stream=1: it can be used as SSH
|
||||||
URL="ws://${SWARM_HOST}/${CLIENT_API_VERSION}/containers/test_container/attach/ws?stderr=1"
|
URL="ws://${SWARM_HOST}/${CLIENT_API_VERSION}/containers/test_container/attach/ws?stderr=1"
|
||||||
run docker run --rm --net=host jimmyxian/centos7-wssh wssh $URL
|
run docker_host run --rm --net=host jimmyxian/centos7-wssh wssh $URL
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
[ "${#lines[@]}" -eq 2 ]
|
[ "${#lines[@]}" -eq 2 ]
|
||||||
[[ "${lines[0]}" == *"Session Open"* ]]
|
[[ "${lines[0]}" == *"Session Open"* ]]
|
||||||
|
@ -304,7 +321,8 @@ function teardown() {
|
||||||
swarm_manage
|
swarm_manage
|
||||||
run docker_swarm info
|
run docker_swarm info
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
[[ "${lines[3]}" == *"Nodes: 1" ]]
|
echo $output
|
||||||
|
[[ "${output}" == *"Nodes: 1"* ]]
|
||||||
[[ "${output}" == *"└ Labels:"*"foo=bar"* ]]
|
[[ "${output}" == *"└ Labels:"*"foo=bar"* ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,13 +341,16 @@ function teardown() {
|
||||||
# inspect and verify
|
# inspect and verify
|
||||||
run docker_swarm inspect test_container
|
run docker_swarm inspect test_container
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
[[ "${lines[1]}" == *"AppArmorProfile"* ]]
|
[[ "${output}" == *"NetworkSettings"* ]]
|
||||||
# the specific information of swarm node
|
# the specific information of swarm node
|
||||||
[[ ${output} == *'"Node": {'* ]]
|
[[ "${output}" == *'"Node": {'* ]]
|
||||||
[[ ${output} == *'"Name": "node-'* ]]
|
[[ "${output}" == *'"Name": "node-'* ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "docker inspect --format" {
|
@test "docker inspect --format" {
|
||||||
|
# FIXME: Broken in docker master. See #717
|
||||||
|
skip
|
||||||
|
|
||||||
start_docker 3
|
start_docker 3
|
||||||
swarm_manage
|
swarm_manage
|
||||||
# run container
|
# run container
|
||||||
|
@ -382,8 +403,8 @@ function teardown() {
|
||||||
IMAGE_FILE=$(mktemp)
|
IMAGE_FILE=$(mktemp)
|
||||||
|
|
||||||
# create a tar file
|
# create a tar file
|
||||||
docker pull busybox:latest
|
docker_host pull busybox:latest
|
||||||
docker save -o $IMAGE_FILE busybox:latest
|
docker_host save -o $IMAGE_FILE busybox:latest
|
||||||
|
|
||||||
start_docker 2
|
start_docker 2
|
||||||
swarm_manage
|
swarm_manage
|
||||||
|
|
|
@ -8,6 +8,9 @@ function teardown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "shared volumes dependency" {
|
@test "shared volumes dependency" {
|
||||||
|
# FIXME: docker inspect --format is broken in docker master. See #717
|
||||||
|
skip
|
||||||
|
|
||||||
start_docker 2
|
start_docker 2
|
||||||
swarm_manage
|
swarm_manage
|
||||||
|
|
||||||
|
@ -33,6 +36,9 @@ function teardown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "links dependency" {
|
@test "links dependency" {
|
||||||
|
# FIXME: docker inspect --format is broken in docker master. See #717
|
||||||
|
skip
|
||||||
|
|
||||||
start_docker 2
|
start_docker 2
|
||||||
swarm_manage
|
swarm_manage
|
||||||
|
|
||||||
|
@ -58,6 +64,9 @@ function teardown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "shared network stack dependency" {
|
@test "shared network stack dependency" {
|
||||||
|
# FIXME: docker inspect --format is broken in docker master. See #717
|
||||||
|
skip
|
||||||
|
|
||||||
start_docker 2
|
start_docker 2
|
||||||
swarm_manage
|
swarm_manage
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,12 @@ function setup_file_discovery() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "docker info should return the number of nodes with file discovery" {
|
@test "file discovery" {
|
||||||
start_docker 2
|
start_docker 2
|
||||||
setup_file_discovery
|
setup_file_discovery
|
||||||
swarm_manage file://$DISCOVERY_FILE
|
swarm_manage file://$DISCOVERY_FILE
|
||||||
|
|
||||||
run docker_swarm info
|
run docker_swarm info
|
||||||
[ "$status" -eq 0 ]
|
[ "$status" -eq 0 ]
|
||||||
[[ "${lines[3]}" == *"Nodes: 2" ]]
|
[[ "$output" == *"Nodes: 2"* ]]
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,9 @@ SWARM_ROOT=${SWARM_ROOT:-${BATS_TEST_DIRNAME}/../..}
|
||||||
SWARM_BINARY=${SWARM_BINARY:-${SWARM_ROOT}/swarm}
|
SWARM_BINARY=${SWARM_BINARY:-${SWARM_ROOT}/swarm}
|
||||||
|
|
||||||
# Docker image and version to use for integration tests.
|
# Docker image and version to use for integration tests.
|
||||||
DOCKER_IMAGE=${DOCKER_IMAGE:-dockerswarm/dind}
|
DOCKER_IMAGE=${DOCKER_IMAGE:-dockerswarm/dind-master}
|
||||||
DOCKER_VERSION=${DOCKER_VERSION:-1.6.0}
|
DOCKER_VERSION=${DOCKER_VERSION:-latest}
|
||||||
|
DOCKER_BINARY=${DOCKER_BINARY:-`command -v docker`}
|
||||||
|
|
||||||
# Host on which the manager will listen to (random port between 6000 and 7000).
|
# Host on which the manager will listen to (random port between 6000 and 7000).
|
||||||
SWARM_HOST=127.0.0.1:$(( ( RANDOM % 1000 ) + 6000 ))
|
SWARM_HOST=127.0.0.1:$(( ( RANDOM % 1000 ) + 6000 ))
|
||||||
|
@ -27,6 +28,23 @@ function join() {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run docker using the binary specified by $DOCKER_BINARY.
|
||||||
|
# This must ONLY be run on engines created with `start_docker`.
|
||||||
|
function docker() {
|
||||||
|
"$DOCKER_BINARY" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Communicate with Docker on the host machine.
|
||||||
|
# Should rarely use this.
|
||||||
|
function docker_host() {
|
||||||
|
command docker "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run the docker CLI against swarm.
|
||||||
|
function docker_swarm() {
|
||||||
|
docker -H $SWARM_HOST "$@"
|
||||||
|
}
|
||||||
|
|
||||||
# Run the swarm binary. You must NOT fork this command (swarm foo &) as the PID
|
# Run the swarm binary. You must NOT fork this command (swarm foo &) as the PID
|
||||||
# ($!) will be the one of the subshell instead of swarm and you won't be able
|
# ($!) will be the one of the subshell instead of swarm and you won't be able
|
||||||
# to kill it.
|
# to kill it.
|
||||||
|
@ -82,7 +100,7 @@ function swarm_join() {
|
||||||
SWARM_JOIN_PID[$i]=$!
|
SWARM_JOIN_PID[$i]=$!
|
||||||
((++i))
|
((++i))
|
||||||
done
|
done
|
||||||
retry 30 1 [ `docker_swarm info | grep -q "Nodes: $i"` -eq 0 ]
|
retry 30 1 [ -n "$(docker_swarm info | grep -q 'Nodes: $i')" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Stops the manager.
|
# Stops the manager.
|
||||||
|
@ -97,11 +115,6 @@ function swarm_join_cleanup() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Run the docker CLI against swarm.
|
|
||||||
function docker_swarm() {
|
|
||||||
docker -H $SWARM_HOST "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Start N docker engines.
|
# Start N docker engines.
|
||||||
function start_docker() {
|
function start_docker() {
|
||||||
local current=${#DOCKER_CONTAINERS[@]}
|
local current=${#DOCKER_CONTAINERS[@]}
|
||||||
|
@ -117,7 +130,7 @@ function start_docker() {
|
||||||
# We have to manually call `hostname` since --hostname and --net cannot
|
# We have to manually call `hostname` since --hostname and --net cannot
|
||||||
# be used together.
|
# be used together.
|
||||||
DOCKER_CONTAINERS[$i]=$(
|
DOCKER_CONTAINERS[$i]=$(
|
||||||
docker run -d --name node-$i --privileged -it --net=host \
|
docker_host run -d --name node-$i --privileged -it --net=host \
|
||||||
${DOCKER_IMAGE}:${DOCKER_VERSION} \
|
${DOCKER_IMAGE}:${DOCKER_VERSION} \
|
||||||
bash -c "\
|
bash -c "\
|
||||||
hostname node-$i && \
|
hostname node-$i && \
|
||||||
|
@ -137,6 +150,6 @@ function start_docker() {
|
||||||
function stop_docker() {
|
function stop_docker() {
|
||||||
for id in ${DOCKER_CONTAINERS[@]}; do
|
for id in ${DOCKER_CONTAINERS[@]}; do
|
||||||
echo "Stopping $id"
|
echo "Stopping $id"
|
||||||
docker rm -f -v $id > /dev/null;
|
docker_host rm -f -v $id > /dev/null;
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ TESTS=${@:-.}
|
||||||
export SWARM_BINARY=`mktemp`
|
export SWARM_BINARY=`mktemp`
|
||||||
|
|
||||||
# Build Swarm.
|
# Build Swarm.
|
||||||
execute go build -o "$SWARM_BINARY" ../..
|
execute time go build -o "$SWARM_BINARY" ../..
|
||||||
|
|
||||||
# Start the docker engine.
|
# Start the docker engine.
|
||||||
execute docker --daemon --log-level=panic \
|
execute docker --daemon --log-level=panic \
|
||||||
|
@ -39,5 +39,12 @@ done
|
||||||
# Pre-fetch the test image.
|
# Pre-fetch the test image.
|
||||||
execute time docker pull ${DOCKER_IMAGE}:${DOCKER_VERSION} > /dev/null
|
execute time docker pull ${DOCKER_IMAGE}:${DOCKER_VERSION} > /dev/null
|
||||||
|
|
||||||
|
# Run the tests using the same client provided by the test image.
|
||||||
|
id=`execute docker create ${DOCKER_IMAGE}:${DOCKER_VERSION}`
|
||||||
|
tmp=`mktemp -d`
|
||||||
|
execute docker cp "${id}:/usr/local/bin/docker" "$tmp"
|
||||||
|
execute docker rm -f "$id" > /dev/null
|
||||||
|
export DOCKER_BINARY="${tmp}/docker"
|
||||||
|
|
||||||
# Run the tests.
|
# Run the tests.
|
||||||
execute time bats -p $TESTS
|
execute time bats -p $TESTS
|
||||||
|
|
|
@ -12,7 +12,7 @@ function teardown() {
|
||||||
stop_docker
|
stop_docker
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "token discovery should be working properly" {
|
@test "token discovery" {
|
||||||
start_docker 2
|
start_docker 2
|
||||||
|
|
||||||
TOKEN=$(swarm create)
|
TOKEN=$(swarm create)
|
||||||
|
@ -23,7 +23,8 @@ function teardown() {
|
||||||
swarm_join token://$TOKEN
|
swarm_join token://$TOKEN
|
||||||
|
|
||||||
run docker_swarm info
|
run docker_swarm info
|
||||||
[[ "${lines[3]}" == *"Nodes: 2"* ]]
|
echo $output
|
||||||
|
[[ "$output" == *"Nodes: 2"* ]]
|
||||||
|
|
||||||
token_cleanup $TOKEN
|
token_cleanup $TOKEN
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,11 +9,11 @@ ZK_HOST=127.0.0.1:$(( ( RANDOM % 1000 ) + 7000 ))
|
||||||
ZK_CONTAINER_NAME=swarm_integration_zk
|
ZK_CONTAINER_NAME=swarm_integration_zk
|
||||||
|
|
||||||
function start_zk() {
|
function start_zk() {
|
||||||
docker run --name $ZK_CONTAINER_NAME -p $ZK_HOST:2181 -d jplock/zookeeper
|
docker_host run --name $ZK_CONTAINER_NAME -p $ZK_HOST:2181 -d jplock/zookeeper
|
||||||
}
|
}
|
||||||
|
|
||||||
function stop_zk() {
|
function stop_zk() {
|
||||||
docker rm -f -v $ZK_CONTAINER_NAME > /dev/null
|
docker_host rm -f -v $ZK_CONTAINER_NAME > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
|
@ -23,7 +23,7 @@ function teardown() {
|
||||||
stop_zk
|
stop_zk
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "zk discovery should be working correctly" {
|
@test "zk discovery" {
|
||||||
start_zk
|
start_zk
|
||||||
start_docker 1
|
start_docker 1
|
||||||
|
|
||||||
|
@ -31,5 +31,5 @@ function teardown() {
|
||||||
swarm_join zk://${ZK_HOST}/test
|
swarm_join zk://${ZK_HOST}/test
|
||||||
|
|
||||||
run docker_swarm info
|
run docker_swarm info
|
||||||
[[ "${lines[3]}" == *"Nodes: 1"* ]]
|
[[ "$output" == *"Nodes: 1"* ]]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue