From ee6bbe7925a2ce46300097afc1c7128570e5a19e Mon Sep 17 00:00:00 2001 From: Alvaro Saurin Date: Mon, 18 May 2015 16:17:51 +0200 Subject: [PATCH] Smoke tests --- test/210_dns_multicast_test.sh | 21 ++++++++++++-------- test/config.sh | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/test/210_dns_multicast_test.sh b/test/210_dns_multicast_test.sh index 097ef027..ca959c1a 100755 --- a/test/210_dns_multicast_test.sh +++ b/test/210_dns_multicast_test.sh @@ -3,7 +3,9 @@ . ./config.sh C1=10.2.3.78 -C2=10.2.3.34 +C2_1=10.2.3.34 +C2_2=10.2.3.35 +C2_3=10.2.3.36 UNIVERSE=10.2.4.0/24 NAME2=seetwo.weave.local NAME4=seefour.weave.local @@ -13,16 +15,19 @@ start_suite "Resolve names across hosts (with and without IPAM)" weave_on $HOST1 launch -iprange $UNIVERSE weave_on $HOST2 launch -iprange $UNIVERSE $HOST1 -weave_on $HOST1 launch-dns 10.2.254.1/24 -weave_on $HOST2 launch-dns 10.2.254.2/24 +weave_on $HOST1 launch-dns 10.2.254.1/24 --no-cache +weave_on $HOST2 launch-dns 10.2.254.2/24 --no-cache -start_container $HOST2 $C2/24 --name=c2 -h $NAME2 -start_container $HOST2 --name=c4 -h $NAME4 -start_container_with_dns $HOST1 $C1/24 --name=c1 -start_container_with_dns $HOST1 --name=c3 +start_container $HOST2 $C2_1/24 --name=c2 -h $NAME2 +start_container $HOST2 --name=c4 -h $NAME4 +start_container_with_dns $HOST1 $C1/24 --name=c1 +start_container_with_dns $HOST1 --name=c3 C4=$(container_ip $HOST2 c4) -assert_dns_record $HOST1 c1 $NAME2 $C2 +tell_dns PUT $HOST2 c2 $NAME $C2_2 $NAME2 +tell_dns PUT $HOST2 c2 $NAME $C2_3 $NAME2 + +assert_dns_record $HOST1 c1 $NAME2 $C2_1 $C2_2 $C2_3 assert_dns_record $HOST1 c3 $NAME4 $C4 assert_raises "exec_on $HOST1 c1 getent hosts 8.8.8.8 | grep google" diff --git a/test/config.sh b/test/config.sh index 8e74c5ab..c8bdcf06 100644 --- a/test/config.sh +++ b/test/config.sh @@ -99,6 +99,25 @@ exec_on() { docker -H tcp://$host:$DOCKER_PORT exec $container "$@" } +# get a container IP: +get_container_ip() { + docker -H tcp://$1:2375 inspect --format '{{ .NetworkSettings.IPAddress }}' $2 +} + +tell_dns() { + method=$1 + host=$2 + container=$3 + name=$4 + ip=$5 + + dns=$(get_container_ip $host weavedns) + [[ -z "$DEBUG" ]] || greyly echo "$method'ing $name=$ip at $host/$dns" + run_on $host \ + curl --connect-timeout 3 -s -X $method \ + "http://$dns:6785/name/$container/$ip" -d fqdn=$name +} + start_container() { host=$1 shift 1 @@ -117,8 +136,20 @@ container_ip() { # assert_dns_record assert_dns_record() { - assert "exec_on $1 $2 getent hosts $3 | tr -s ' '" "$4 $3" - assert "exec_on $1 $2 getent hosts $4 | tr -s ' '" "$4 $3" + host=$1 + container=$2 + name=$3 + shift 3 + exp_ips_regex=$(echo $@ | sed -r 's/ /\\\|/g') + + [[ -z "$DEBUG" ]] || greyly echo "Checking wether $name exists at $host" + got_ip=$(exec_on $host $container getent hosts $name | tr -s ' ') + assert "echo \"$got_ip\" | grep -q \"$exp_ips_regex\" && echo found" "found" + + [[ -z "$DEBUG" ]] || greyly echo "Checking wether the IPs \"$ips\" exists at $host" + for ip ; do + assert "exec_on $host $container getent hosts $ip | tr -s ' '" "$ip $name" + done } start_suite() {