mirror of https://github.com/docker/docs.git
76 lines
1.8 KiB
Bash
76 lines
1.8 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load discovery_helpers
|
|
|
|
DISCOVERY_FILE=""
|
|
DISCOVERY=""
|
|
|
|
function setup() {
|
|
# create a blank temp file for discovery
|
|
DISCOVERY_FILE=$(mktemp)
|
|
DISCOVERY="file://$DISCOVERY_FILE"
|
|
}
|
|
|
|
function teardown() {
|
|
swarm_manage_cleanup
|
|
stop_docker
|
|
rm -f "$DISCOVERY_FILE"
|
|
}
|
|
|
|
function setup_discovery_file() {
|
|
rm -f "$DISCOVERY_FILE"
|
|
for host in ${HOSTS[@]}; do
|
|
echo "$host" >> $DISCOVERY_FILE
|
|
done
|
|
}
|
|
|
|
@test "file discovery: recover engines" {
|
|
# The goal of this test is to ensure swarm can see engines that joined
|
|
# while the manager was stopped.
|
|
|
|
# Start 2 engines and register them in the file.
|
|
start_docker 2
|
|
setup_discovery_file
|
|
retry 5 1 discovery_check_swarm_list "$DISCOVERY"
|
|
|
|
# Then, start a manager and ensure it sees all the engines.
|
|
swarm_manage "$DISCOVERY"
|
|
retry 5 1 discovery_check_swarm_info
|
|
}
|
|
|
|
@test "file discovery: watch for changes" {
|
|
# The goal of this test is to ensure swarm can see new nodes as they join
|
|
# the cluster.
|
|
|
|
# Start a manager with no engines.
|
|
swarm_manage "$DISCOVERY"
|
|
retry 10 1 discovery_check_swarm_info
|
|
|
|
# Add engines to the cluster and make sure it's picked up by swarm.
|
|
start_docker 2
|
|
setup_discovery_file
|
|
retry 5 1 discovery_check_swarm_list "$DISCOVERY"
|
|
retry 5 1 discovery_check_swarm_info
|
|
}
|
|
|
|
@test "file discovery: failure" {
|
|
# The goal of this test is to simulate a failure (file not available) and ensure discovery
|
|
# is resilient to it.
|
|
|
|
# Wipe out the discovery file.
|
|
rm -f "$DISCOVERY_FILE"
|
|
|
|
# Start 2 engines.
|
|
start_docker 2
|
|
|
|
# Start a manager. It should keep retrying
|
|
swarm_manage "$DISCOVERY"
|
|
|
|
# Now create the discovery file.
|
|
setup_discovery_file
|
|
|
|
# After a while, `join` and `manage` should see the file.
|
|
retry 5 1 discovery_check_swarm_list "$DISCOVERY"
|
|
retry 5 1 discovery_check_swarm_info
|
|
}
|