Files
weave/test/sanity_check.sh
T
Marc CARRE f73fb5307f Redirect sanity checks' output to temporary files (and archive them as artifact files under CircleCLI).
This should make it easier to find and access relevant debugging information without polluting STDOUT and without any risk of log interleaving. See also:
- https://weaveworks.slack.com/archives/net/p1482154505001192
- https://weaveworks.slack.com/archives/net/p1482254780001493
2017-01-09 09:17:45 +00:00

72 lines
1.8 KiB
Bash
Executable File

#! /bin/bash
. "$(dirname "$0")/config.sh"
set -e
begin=$(date +%s)
sanity_checks_files=${WEAVE_NET_SANITY_CHECKS_FILES:-"/tmp/weave_net_sanity_check_*.log"}
whitely echo Ping each host from the other
# We wrap ping and echo in a function as we want the below parallel for loop
# to exit early in case of a failed ping, and it cannot be done concisely,
# e.g. using a one-liner, without losing the status code for ping.
function check_ping() {
local output=$(run_on $1 $PING $2)
local status=$?
echo "$output" >> "${sanity_checks_files/\*/$1}"
return $status
}
pids=""
for host in $HOSTS; do
cat >> "${sanity_checks_files/\*/$host}" <<EOF
# =====================================
# Host Ping Check: $host
# =====================================
EOF
for other in $HOSTS; do
if [ "$host" != "$other" ]; then
check_ping "$host" "$other" &
pids="$pids $!"
fi
done
done
for pid in $pids; do wait $pid; done
whitely echo Check we can reach docker
function check_docker() {
docker_version=$(docker_on $1 version)
docker_info=$(docker_on $1 info)
docker_weave_version=$(docker_on $1 inspect -f {{.Created}} weaveworks/weave:${WEAVE_VERSION:-latest})
weave_version=$(weave_on $1 version)
cat >> "${sanity_checks_files/\*/$1}" << EOF
# =====================================
# Host Version Info: $1
# =====================================
# docker version
$docker_version
# docker info
$docker_info
# docker inspect -f {{.Created}} weaveworks/weave:<version>
$docker_weave_version
# weave version
$weave_version
EOF
}
pids=""
for host in $HOSTS; do
check_docker $host &
pids="$pids $!"
done
for pid in $pids; do wait $pid; done
echo "Sanity checks completed successfully in $(date -u -d @$(($(date +%s)-$begin)) +"%T")."