integration: node removal for file discovery

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi 2015-05-16 21:33:43 -07:00
parent d7b8734e97
commit 7dec704b8a
2 changed files with 27 additions and 5 deletions

View File

@ -4,13 +4,17 @@ load ../helpers
# Returns true if all nodes have joined the swarm.
function discovery_check_swarm_info() {
docker_swarm info | grep -q "Nodes: ${#HOSTS[@]}"
local total="$1"
[ -z "$total" ] && total="${#HOSTS[@]}"
docker_swarm info | grep -q "Nodes: $count"
}
# Returns true if all nodes have joined the discovery.
function discovery_check_swarm_list() {
local joined=`swarm list "$1" | wc -l`
local total=${#HOSTS[@]}
local total="$2"
[ -z "$total" ] && total="${#HOSTS[@]}"
echo "${joined} out of ${total} hosts joined discovery"
[ "$joined" -eq "$total" ]

View File

@ -31,7 +31,7 @@ function setup_discovery_file() {
# Start 2 engines and register them in the file.
start_docker 2
setup_discovery_file
retry 5 1 discovery_check_swarm_list "$DISCOVERY"
discovery_check_swarm_list "$DISCOVERY"
# Then, start a manager and ensure it sees all the engines.
swarm_manage "$DISCOVERY"
@ -49,10 +49,28 @@ function setup_discovery_file() {
# 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"
discovery_check_swarm_list "$DISCOVERY"
retry 5 1 discovery_check_swarm_info
}
@test "file discovery: node removal" {
# The goal of this test is to ensure swarm can handle node removal.
# Start 2 engines and register them in the file.
start_docker 2
setup_discovery_file
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
# Update the file with only one engine and see if swarm picks it up.
echo ${HOSTS[0]} > $DISCOVERY_FILE
discovery_check_swarm_list "$DISCOVERY" 1
retry 5 1 discovery_check_swarm_info 1
}
@test "file discovery: failure" {
# The goal of this test is to simulate a failure (file not available) and ensure discovery
# is resilient to it.
@ -70,6 +88,6 @@ function setup_discovery_file() {
setup_discovery_file
# After a while, `join` and `manage` should see the file.
retry 5 1 discovery_check_swarm_list "$DISCOVERY"
discovery_check_swarm_list "$DISCOVERY"
retry 5 1 discovery_check_swarm_info
}