Files
weave/test/320_claim_3_test.sh
T
Marc CARRE 43249a8d39 Change all launch-*/stop-* commands to launch/stop.
Given `proxy` & `router` processes have been merged, `launch-proxy`,
`launch-router`, `stop-proxy`, `stop-router` do not make sense any more, and
should just be `launch` and `stop` with the appropriate flags.
2017-05-10 10:25:36 +00:00

80 lines
2.4 KiB
Bash
Executable File

#! /bin/bash
. "$(dirname "$0")/config.sh"
UNIVERSE=10.2.0.0/16
C1=10.2.128.1
C4=10.2.128.4
delete_persistence() {
for host in "$@" ; do
docker_on $host rm -v weavedb >/dev/null
docker_on $host rm weave >/dev/null
done
}
start_suite "Claiming addresses"
weave_on $HOST1 launch --ipalloc-range $UNIVERSE $HOST2
weave_on $HOST2 launch --ipalloc-range $UNIVERSE $HOST1
start_container $HOST1 $C1/12 --name=c1
start_container $HOST2 --name=c2
assert_raises "exec_on $HOST2 c2 $PING $C1"
stop_weave_on $HOST1
stop_weave_on $HOST2
# Delete persistence data so they form a blank ring
delete_persistence $HOST1 $HOST2
# Start hosts in reverse order so c1's address has to be claimed from host2
weave_on $HOST2 launch --ipalloc-range $UNIVERSE
weave_on $HOST1 launch --ipalloc-range $UNIVERSE $HOST2
# Start another container on host2, so if it hasn't relinquished c1's
# address it would give that out as the first available.
start_container $HOST2 --name=c3
C3=$(container_ip $HOST2 c3)
assert_raises "[ $C3 != $C1 ]"
sleep 1 # give routers some time to fully establish connectivity
assert_raises "exec_on $HOST1 c1 $PING $C3"
stop_weave_on $HOST1
stop_weave_on $HOST2
delete_persistence $HOST1 $HOST2
# Now make host1 attempt to claim from host2, when host2 is stopped
# the point being to check whether host1 will hang trying to talk to host2
weave_on $HOST2 launch --ipalloc-range $UNIVERSE
weave_on $HOST2 prime
# Introduce host3 to remember the IPAM CRDT when we stop host2
weave_on $HOST3 launch --ipalloc-range $UNIVERSE $HOST2
weave_on $HOST3 prime
stop_weave_on $HOST2
weave_on $HOST1 launch --ipalloc-range $UNIVERSE $HOST3
stop_weave_on $HOST1
stop_weave_on $HOST3
# Delete persistence data on host1, so that host1 would try to establish a ring.
delete_persistence $HOST1
weave_on $HOST1 launch --ipalloc-range $UNIVERSE $HOST2
# Start another container on host1. The starting should block, because host1 is
# not able to establish the ring due to host2 being offline.
CMD="proxy_start_container $HOST1 --name c4 -e WEAVE_CIDR=$C4/12"
assert_raises "timeout 5 cat <( $CMD )" 124
# However, allocation for an external subnet should not block.
assert_raises "proxy_start_container $HOST1 -e WEAVE_CIDR=10.3.0.1/12"
# Launch host2, so that host1 can establish the ring.
weave_on $HOST2 launch --ipalloc-range $UNIVERSE $HOST1
wait_for_attached $HOST1 c4
assert_raises "[ $(container_ip $HOST1 c4) == $C4 ]"
end_suite