|
@@ -0,0 +1,157 @@
|
|
|
+# -*- mode: sh -*-
|
|
|
+#!/usr/bin/env bats
|
|
|
+
|
|
|
+load helpers
|
|
|
+
|
|
|
+function test_single_network_connectivity() {
|
|
|
+ local nw_name start end
|
|
|
+
|
|
|
+ nw_name=${1}
|
|
|
+ start=1
|
|
|
+ end=${2}
|
|
|
+
|
|
|
+ # Create containers and connect them to the network
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ dnet_cmd $(inst_id2port 1) container create container_${i}
|
|
|
+ net_connect 1 container_${i} ${nw_name}
|
|
|
+ done
|
|
|
+
|
|
|
+ # Now test connectivity between all the containers using service names
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ for j in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ if [ "$i" -eq "$j" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+ runc $(dnet_container_name 1 bridge) $(get_sbox_id 1 container_${i}) \
|
|
|
+ "ping -c 1 container_${j}"
|
|
|
+ done
|
|
|
+ done
|
|
|
+
|
|
|
+ # Teardown the container connections and the network
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ net_disconnect 1 container_${i} ${nw_name}
|
|
|
+ dnet_cmd $(inst_id2port 1) container rm container_${i}
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+@test "Test default bridge network" {
|
|
|
+ skip_for_circleci
|
|
|
+
|
|
|
+ echo $(docker ps)
|
|
|
+ test_single_network_connectivity bridge 3
|
|
|
+}
|
|
|
+
|
|
|
+@test "Test bridge network" {
|
|
|
+ skip_for_circleci
|
|
|
+
|
|
|
+ echo $(docker ps)
|
|
|
+ dnet_cmd $(inst_id2port 1) network create -d bridge singlehost
|
|
|
+ test_single_network_connectivity singlehost 3
|
|
|
+ dnet_cmd $(inst_id2port 1) network rm singlehost
|
|
|
+}
|
|
|
+
|
|
|
+@test "Test bridge network dnet restart" {
|
|
|
+ skip_for_circleci
|
|
|
+
|
|
|
+ echo $(docker ps)
|
|
|
+ dnet_cmd $(inst_id2port 1) network create -d bridge singlehost
|
|
|
+
|
|
|
+ for iter in `seq 1 2`;
|
|
|
+ do
|
|
|
+ test_single_network_connectivity singlehost 3
|
|
|
+ docker restart dnet-1-bridge
|
|
|
+ sleep 2
|
|
|
+ done
|
|
|
+
|
|
|
+ dnet_cmd $(inst_id2port 1) network rm singlehost
|
|
|
+}
|
|
|
+
|
|
|
+@test "Test multiple bridge networks" {
|
|
|
+ skip_for_circleci
|
|
|
+
|
|
|
+ echo $(docker ps)
|
|
|
+
|
|
|
+ start=1
|
|
|
+ end=3
|
|
|
+
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ dnet_cmd $(inst_id2port 1) container create container_${i}
|
|
|
+ for j in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ if [ "$i" -eq "$j" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ "$i" -lt "$j" ]; then
|
|
|
+ dnet_cmd $(inst_id2port 1) network create -d bridge sh${i}${j}
|
|
|
+ nw=sh${i}${j}
|
|
|
+ else
|
|
|
+ nw=sh${j}${i}
|
|
|
+ fi
|
|
|
+
|
|
|
+ osvc="svc${i}${j}"
|
|
|
+ dnet_cmd $(inst_id2port 1) service publish ${osvc}.${nw}
|
|
|
+ dnet_cmd $(inst_id2port 1) service attach container_${i} ${osvc}.${nw}
|
|
|
+ done
|
|
|
+ done
|
|
|
+
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ echo ${i1}
|
|
|
+ for j in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ echo ${j1}
|
|
|
+ if [ "$i" -eq "$j" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ osvc="svc${j}${i}"
|
|
|
+ echo "pinging ${osvc}"
|
|
|
+ dnet_cmd $(inst_id2port 1) service ls
|
|
|
+ runc $(dnet_container_name 1 bridge) $(get_sbox_id 1 container_${i}) "cat /etc/hosts"
|
|
|
+ runc $(dnet_container_name 1 bridge) $(get_sbox_id 1 container_${i}) "ping -c 1 ${osvc}"
|
|
|
+ done
|
|
|
+ done
|
|
|
+
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ for j in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ if [ "$i" -eq "$j" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ "$i" -lt "$j" ]; then
|
|
|
+ nw=sh${i}${j}
|
|
|
+ else
|
|
|
+ nw=sh${j}${i}
|
|
|
+ fi
|
|
|
+
|
|
|
+ osvc="svc${i}${j}"
|
|
|
+ dnet_cmd $(inst_id2port 1) service detach container_${i} ${osvc}.${nw}
|
|
|
+ dnet_cmd $(inst_id2port 1) service unpublish ${osvc}.${nw}
|
|
|
+
|
|
|
+ done
|
|
|
+ dnet_cmd $(inst_id2port 1) container rm container_${i}
|
|
|
+ done
|
|
|
+
|
|
|
+ for i in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ for j in `seq ${start} ${end}`;
|
|
|
+ do
|
|
|
+ if [ "$i" -eq "$j" ]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ "$i" -lt "$j" ]; then
|
|
|
+ dnet_cmd $(inst_id2port 1) network rm sh${i}${j}
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ done
|
|
|
+
|
|
|
+}
|