blob: 07c16bbaa9706d487595d5f3bc16ad25e0042afc [file] [log] [blame]
Milosz Wasilewskicb6dd472021-05-25 10:27:33 +01001#!/bin/bash
2
3# shellcheck disable=SC1091
4. ../../lib/sh-test-lib
5OUTPUT="$(pwd)/output"
6RESULT_FILE="${OUTPUT}/result.txt"
7export RESULT_FILE
8IMAGE="alpine:latest"
9SKIP_INSTALL="True"
10
11usage() {
12 echo "$0 [-i <image>] [-s true|false]" 1>&2
13 exit 1
14}
15
16while getopts "i:s:h" o; do
17 case "$o" in
18 i) IMAGE="${OPTARG}" ;;
19 s) SKIP_INSTALL="${OPTARG}";;
20 h|*) usage ;;
21 esac
22done
23
24! check_root && error_msg "You need to be root to run this script."
25create_out_dir "${OUTPUT}"
26cd "${OUTPUT}" || exit
27
28install_docker() {
29 command -v docker && return
30
31 dist_name
32 # shellcheck disable=SC2154
33 case "${dist}" in
34 debian|ubuntu|fedora|centos)
35 install_deps curl jq
36 curl -fsSL get.docker.com -o get-docker.sh
37 sh get-docker.sh
38 ;;
39 *)
40 warn_msg "No package installation support on ${dist}"
41 error_msg "And docker not pre-installed, exiting..."
42 ;;
43 esac
44}
45
46if [ "${SKIP_INSTALL}" = "True" ] || [ "${SKIP_INSTALL}" = "true" ]; then
47 info_msg "Installation skipped"
48else
49 install_docker
50fi
51# verify that docker is available
52skip_list="docker-network-list docker-start-container docker-network-inspect docker-network-bridge ping-container-test docker-kill-container"
53docker --version
54exit_on_fail "docker-version" "${skip_list}"
55
56# check if bridge network is present
57skip_list="docker-start-container docker-network-inspect docker-network-bridge ping-container-test docker-kill-container"
58docker network ls -f name=bridge | grep bridge
59exit_on_fail "docker-network-list" "${skip_list}"
60
61# start simple alpine container
62skip_list="docker-network-inspect docker-network-bridge ping-container-test docker-kill-container"
63docker run --name ping_test_container --rm -d "${IMAGE}" /bin/sleep 90
64exit_on_fail "docker-start-container" "${skip_list}"
65
66# container should join bridge network
67skip_list="docker-network-bridge ping-container-test docker-kill-container"
68DOCKER_INSPECT=$(docker network inspect bridge)
69exit_on_fail "docker-network-inspect" "${skip_list}"
70
71echo "$DOCKER_INSPECT" | jq '.[0]["Containers"][]'
72IP_ADDR=$(echo "$DOCKER_INSPECT" | jq '.[0]["Containers"][] | select(.Name=="ping_test_container") | .IPv4Address | split("/")[0]')
73echo "${IP_ADDR}"
74if [ -n "$IP_ADDR" ]; then
75 report_pass "docker-network-bridge"
76 eval "ping -c4 $IP_ADDR"
77 check_return "ping-container-test"
78else
79 report_fail "docker-network-bridge"
80 report_skip "ping-container-test"
81fi
82
83docker kill ping_test_container
84check_return "docker-kill-container"
85
86exit 0