From f9dd76377417a9573e7881e2053991efd340853a Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Fri, 20 May 2016 12:33:14 +0100 Subject: [PATCH] Peer list persistence smoke test --- test/090_docker_restart_policy_2_test.sh | 18 ----------- test/175_target_peer_persistence_3_test.sh | 36 ++++++++++++++++++++++ test/config.sh | 19 ++++++++++++ 3 files changed, 55 insertions(+), 18 deletions(-) create mode 100755 test/175_target_peer_persistence_3_test.sh diff --git a/test/090_docker_restart_policy_2_test.sh b/test/090_docker_restart_policy_2_test.sh index f7cc04c2..f43428d4 100755 --- a/test/090_docker_restart_policy_2_test.sh +++ b/test/090_docker_restart_policy_2_test.sh @@ -4,24 +4,6 @@ start_suite "Test docker restart policy" -check_restart() { - OLD_PID=$(container_pid $1 $2) - - run_on $1 sudo kill $OLD_PID - - for i in $(seq 1 10); do - NEW_PID=$(container_pid $1 $2) - - if [ $NEW_PID != 0 -a $NEW_PID != $OLD_PID ] ; then - return 0 - fi - - sleep 1 - done - - return 1 -} - weave_on $HOST1 launch assert "docker_on $HOST1 inspect -f '{{.HostConfig.RestartPolicy.Name}}' weave weaveproxy weaveplugin" "always\nalways\nalways" diff --git a/test/175_target_peer_persistence_3_test.sh b/test/175_target_peer_persistence_3_test.sh new file mode 100755 index 00000000..d880bb04 --- /dev/null +++ b/test/175_target_peer_persistence_3_test.sh @@ -0,0 +1,36 @@ +#! /bin/bash + +. ./config.sh + + +assert_targets() { + HOST=$1 + shift + EXPECTED=$(for TARGET in $@; do echo $TARGET; done | sort) + assert "weave_on $HOST report | jq -r '.Router.Targets[] | tostring' | sort" "$EXPECTED" +} + +start_suite "Check Docker restart uses persisted peer list" + +# Launch router and modify initial peer list +weave_on $HOST1 launch $HOST1 $HOST2 +weave_on $HOST1 forget $HOST1 +weave_on $HOST1 connect $HOST3 + +# Ensure modified peer list is still in effect after restart +check_restart $HOST1 weave +assert_targets $HOST1 $HOST2 $HOST3 + +# Ensure persisted peer changes are still in effect after --resume +weave_on $HOST1 stop +weave_on $HOST1 launch --resume +assert_targets $HOST1 $HOST2 $HOST3 + +# Ensure persisted peer changes are ignored after stop and subsequent restart +weave_on $HOST1 stop +weave_on $HOST1 launch $HOST1 $HOST2 +assert_targets $HOST1 $HOST1 $HOST2 +check_restart $HOST1 weave +assert_targets $HOST1 $HOST1 $HOST2 + +end_suite diff --git a/test/config.sh b/test/config.sh index 57ceca69..97574b27 100644 --- a/test/config.sh +++ b/test/config.sh @@ -249,6 +249,25 @@ assert_dns_ptr_record() { assert "exec_on $1 $2 getent hosts $4 | tr -s ' '" "$4 $3" } +# Kill a container process and make sure it's restarted by Docker +check_restart() { + OLD_PID=$(container_pid $1 $2) + + run_on $1 sudo kill $OLD_PID + + for i in $(seq 1 10); do + NEW_PID=$(container_pid $1 $2) + + if [ $NEW_PID != 0 -a $NEW_PID != $OLD_PID ] ; then + return 0 + fi + + sleep 1 + done + + return 1 +} + start_suite() { for host in $HOSTS; do [ -z "$DEBUG" ] || echo "Cleaning up on $host: removing all containers and resetting weave"