|
@@ -34,17 +34,17 @@ teardown_suite() {
|
|
}
|
|
}
|
|
|
|
|
|
setup() {
|
|
setup() {
|
|
- # rm any old flannel container that maybe running, ignore error as it might not exist
|
|
|
|
- docker rm -f flannel-e2e-test-flannel1 >/dev/null 2>/dev/null
|
|
|
|
- assert "docker run --name=flannel-e2e-test-flannel1 -d --privileged $FLANNEL_DOCKER_IMAGE --etcd-endpoints=$etcd_endpt -v 10 >/dev/null"
|
|
|
|
|
|
+ # rm any old flannel container that maybe running, ignore error as it might not exist
|
|
|
|
+ docker rm -f flannel-e2e-test-flannel1 >/dev/null 2>/dev/null
|
|
|
|
+ assert "docker run --name=flannel-e2e-test-flannel1 -d --privileged $FLANNEL_DOCKER_IMAGE --etcd-endpoints=$etcd_endpt -v 10 >/dev/null"
|
|
|
|
|
|
- # rm any old flannel container that maybe running, ignore error as it might not exist
|
|
|
|
- docker rm -f flannel-e2e-test-flannel2 >/dev/null 2>/dev/null
|
|
|
|
- assert "docker run --name=flannel-e2e-test-flannel2 -d --privileged $FLANNEL_DOCKER_IMAGE --etcd-endpoints=$etcd_endpt -v 10 >/dev/null"
|
|
|
|
|
|
+ # rm any old flannel container that maybe running, ignore error as it might not exist
|
|
|
|
+ docker rm -f flannel-e2e-test-flannel2 >/dev/null 2>/dev/null
|
|
|
|
+ assert "docker run --name=flannel-e2e-test-flannel2 -d --privileged $FLANNEL_DOCKER_IMAGE --etcd-endpoints=$etcd_endpt -v 10 >/dev/null"
|
|
}
|
|
}
|
|
|
|
|
|
teardown() {
|
|
teardown() {
|
|
- docker rm -f flannel-e2e-test-flannel1 flannel-e2e-test-flannel2 flannel-e2e-test-flannel1-iperf flannel-host1 flannel-host2 > /dev/null 2>&1
|
|
|
|
|
|
+ docker rm -f flannel-e2e-test-flannel1 flannel-e2e-test-flannel2 flannel-e2e-test-flannel1-iperf flannel-host1 flannel-host2 > /dev/null 2>&1
|
|
}
|
|
}
|
|
|
|
|
|
write_config_etcd() {
|
|
write_config_etcd() {
|
|
@@ -53,13 +53,13 @@ write_config_etcd() {
|
|
echo "Reading custom conf from $backend"
|
|
echo "Reading custom conf from $backend"
|
|
flannel_conf=`cat "$backend"`
|
|
flannel_conf=`cat "$backend"`
|
|
else
|
|
else
|
|
- flannel_conf="{ \"Network\": \"$FLANNEL_NET\", \"Backend\": { \"Type\": \"${backend}\" } }"
|
|
|
|
|
|
+ flannel_conf="{ \"Network\": \"$FLANNEL_NET\", \"Backend\": { \"Type\": \"${backend}\" } }"
|
|
fi
|
|
fi
|
|
|
|
|
|
- while ! docker run --rm $ETCDCTL_IMG etcdctl --endpoints=$etcd_endpt set /coreos.com/network/config "$flannel_conf" >/dev/null
|
|
|
|
- do
|
|
|
|
- sleep 0.1
|
|
|
|
- done
|
|
|
|
|
|
+ while ! docker run --rm $ETCDCTL_IMG etcdctl --endpoints=$etcd_endpt set /coreos.com/network/config "$flannel_conf" >/dev/null
|
|
|
|
+ do
|
|
|
|
+ sleep 0.1
|
|
|
|
+ done
|
|
}
|
|
}
|
|
|
|
|
|
create_ping_dest() {
|
|
create_ping_dest() {
|
|
@@ -71,13 +71,19 @@ create_ping_dest() {
|
|
|
|
|
|
# Use declare to allow the host_num variable to be part of the ping_dest variable name. -g is needed to make it global
|
|
# Use declare to allow the host_num variable to be part of the ping_dest variable name. -g is needed to make it global
|
|
declare -g ping_dest$host_num=$(docker "exec" --privileged flannel-e2e-test-flannel$host_num /bin/sh -c '\
|
|
declare -g ping_dest$host_num=$(docker "exec" --privileged flannel-e2e-test-flannel$host_num /bin/sh -c '\
|
|
- source /run/flannel/subnet.env && \
|
|
|
|
- ip link add name dummy0 type dummy && \
|
|
|
|
- ip addr add $FLANNEL_SUBNET dev dummy0 && ip link set dummy0 up && \
|
|
|
|
- echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
|
|
|
|
+ source /run/flannel/subnet.env && \
|
|
|
|
+ ip link add name dummy0 type dummy && \
|
|
|
|
+ ip addr add $FLANNEL_SUBNET dev dummy0 && ip link set dummy0 up && \
|
|
|
|
+ echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
done
|
|
done
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#test_wireguard_ping() {
|
|
|
|
+# write_config_etcd extension-wireguard
|
|
|
|
+# create_ping_dest # creates ping_dest1 and ping_dest2 variables
|
|
|
|
+# pings
|
|
|
|
+#}
|
|
|
|
+
|
|
test_vxlan_ping() {
|
|
test_vxlan_ping() {
|
|
write_config_etcd vxlan
|
|
write_config_etcd vxlan
|
|
create_ping_dest # creates ping_dest1 and ping_dest2 variables
|
|
create_ping_dest # creates ping_dest1 and ping_dest2 variables
|
|
@@ -106,27 +112,27 @@ test_ipip_ping() {
|
|
|
|
|
|
pings() {
|
|
pings() {
|
|
# ping in both directions
|
|
# ping in both directions
|
|
- assert "docker exec --privileged flannel-e2e-test-flannel1 /bin/ping -c 3 $ping_dest2" "Host 1 cannot ping host 2"
|
|
|
|
- assert "docker exec --privileged flannel-e2e-test-flannel2 /bin/ping -c 3 $ping_dest1" "Host 2 cannot ping host 1"
|
|
|
|
|
|
+ assert "docker exec --privileged flannel-e2e-test-flannel1 /bin/ping -c 3 $ping_dest2" "Host 1 cannot ping host 2"
|
|
|
|
+ assert "docker exec --privileged flannel-e2e-test-flannel2 /bin/ping -c 3 $ping_dest1" "Host 2 cannot ping host 1"
|
|
}
|
|
}
|
|
|
|
|
|
# These perf tests don't actually assert on anything
|
|
# These perf tests don't actually assert on anything
|
|
test_host-gw-perf() {
|
|
test_host-gw-perf() {
|
|
write_config_etcd host-gw
|
|
write_config_etcd host-gw
|
|
- create_ping_dest
|
|
|
|
- perf
|
|
|
|
|
|
+ create_ping_dest
|
|
|
|
+ perf
|
|
}
|
|
}
|
|
|
|
|
|
test_vxlan_perf() {
|
|
test_vxlan_perf() {
|
|
write_config_etcd vxlan
|
|
write_config_etcd vxlan
|
|
- create_ping_dest
|
|
|
|
|
|
+ create_ping_dest
|
|
perf
|
|
perf
|
|
}
|
|
}
|
|
|
|
|
|
if [[ ${ARCH} == "amd64" ]]; then
|
|
if [[ ${ARCH} == "amd64" ]]; then
|
|
test_udp_perf() {
|
|
test_udp_perf() {
|
|
write_config_etcd udp
|
|
write_config_etcd udp
|
|
- create_ping_dest
|
|
|
|
|
|
+ create_ping_dest
|
|
perf
|
|
perf
|
|
}
|
|
}
|
|
fi
|
|
fi
|
|
@@ -137,6 +143,12 @@ test_ipip_perf() {
|
|
perf
|
|
perf
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#test_wireguard_perf() {
|
|
|
|
+# write_config_etcd extension-wireguard
|
|
|
|
+# create_ping_dest
|
|
|
|
+# perf
|
|
|
|
+#}
|
|
|
|
+
|
|
perf() {
|
|
perf() {
|
|
# Perf test - run iperf server on flannel1 and client on flannel2
|
|
# Perf test - run iperf server on flannel1 and client on flannel2
|
|
docker rm -f flannel-e2e-test-flannel1-iperf 2>/dev/null
|
|
docker rm -f flannel-e2e-test-flannel1-iperf 2>/dev/null
|
|
@@ -145,20 +157,20 @@ perf() {
|
|
}
|
|
}
|
|
|
|
|
|
test_multi() {
|
|
test_multi() {
|
|
- flannel_conf_vxlan='{"Network": "10.11.0.0/16", "Backend": {"Type": "vxlan"}}'
|
|
|
|
- flannel_conf_host_gw='{"Network": "10.12.0.0/16", "Backend": {"Type": "host-gw"}}'
|
|
|
|
|
|
+ flannel_conf_vxlan='{"Network": "10.11.0.0/16", "Backend": {"Type": "vxlan"}}'
|
|
|
|
+ flannel_conf_host_gw='{"Network": "10.12.0.0/16", "Backend": {"Type": "host-gw"}}'
|
|
|
|
|
|
- while ! docker run --rm $ETCD_IMG etcdctl --endpoints=$etcd_endpt set /vxlan/network/config "$flannel_conf_vxlan" >/dev/null
|
|
|
|
- do
|
|
|
|
- sleep 0.1
|
|
|
|
- done
|
|
|
|
|
|
+ while ! docker run --rm $ETCD_IMG etcdctl --endpoints=$etcd_endpt set /vxlan/network/config "$flannel_conf_vxlan" >/dev/null
|
|
|
|
+ do
|
|
|
|
+ sleep 0.1
|
|
|
|
+ done
|
|
|
|
|
|
- while ! docker run --rm $ETCD_IMG etcdctl --endpoints=$etcd_endpt set /hostgw/network/config "$flannel_conf_host_gw" >/dev/null
|
|
|
|
- do
|
|
|
|
- sleep 0.1
|
|
|
|
- done
|
|
|
|
|
|
+ while ! docker run --rm $ETCD_IMG etcdctl --endpoints=$etcd_endpt set /hostgw/network/config "$flannel_conf_host_gw" >/dev/null
|
|
|
|
+ do
|
|
|
|
+ sleep 0.1
|
|
|
|
+ done
|
|
|
|
|
|
- for host in 1 2; do
|
|
|
|
|
|
+ for host in 1 2; do
|
|
# rm any old flannel container, ignore error as it might not exist
|
|
# rm any old flannel container, ignore error as it might not exist
|
|
docker rm -f flannel-host$host 2>/dev/null >/dev/null
|
|
docker rm -f flannel-host$host 2>/dev/null >/dev/null
|
|
|
|
|
|
@@ -178,25 +190,25 @@ test_multi() {
|
|
done
|
|
done
|
|
done
|
|
done
|
|
|
|
|
|
- # add dummy interface on host1 only so we have a known working IP to ping then ping it from host2
|
|
|
|
- vxlan_ping_dest=$(docker exec flannel-host1 /bin/sh -c '\
|
|
|
|
- source /vxlan.env &&
|
|
|
|
- ip link add name dummy_vxlan type dummy && \
|
|
|
|
- ip addr add $FLANNEL_SUBNET dev dummy_vxlan && \
|
|
|
|
- ip link set dummy_vxlan up && \
|
|
|
|
- echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
|
|
|
|
+ # add dummy interface on host1 only so we have a known working IP to ping then ping it from host2
|
|
|
|
+ vxlan_ping_dest=$(docker exec flannel-host1 /bin/sh -c '\
|
|
|
|
+ source /vxlan.env &&
|
|
|
|
+ ip link add name dummy_vxlan type dummy && \
|
|
|
|
+ ip addr add $FLANNEL_SUBNET dev dummy_vxlan && \
|
|
|
|
+ ip link set dummy_vxlan up && \
|
|
|
|
+ echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
|
|
|
|
hostgw_ping_dest=$(docker exec flannel-host1 /bin/sh -c '\
|
|
hostgw_ping_dest=$(docker exec flannel-host1 /bin/sh -c '\
|
|
- source /hostgw.env &&
|
|
|
|
- ip link add name dummy_hostgw type dummy && \
|
|
|
|
- ip addr add $FLANNEL_SUBNET dev dummy_hostgw && \
|
|
|
|
- ip link set dummy_hostgw up && \
|
|
|
|
- echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
|
|
|
|
+ source /hostgw.env &&
|
|
|
|
+ ip link add name dummy_hostgw type dummy && \
|
|
|
|
+ ip addr add $FLANNEL_SUBNET dev dummy_hostgw && \
|
|
|
|
+ ip link set dummy_hostgw up && \
|
|
|
|
+ echo $FLANNEL_SUBNET | cut -f 1 -d "/" ')
|
|
|
|
|
|
# Send some pings from host2. Make sure we can send traffic over vxlan or directly.
|
|
# Send some pings from host2. Make sure we can send traffic over vxlan or directly.
|
|
# If a particular (wrong) interface is forced then pings should fail
|
|
# If a particular (wrong) interface is forced then pings should fail
|
|
- assert "docker exec flannel-host2 ping -c 3 $hostgw_ping_dest"
|
|
|
|
- assert "docker exec flannel-host2 ping -c 3 $vxlan_ping_dest"
|
|
|
|
- assert_fails "docker exec flannel-host2 ping -W 1 -c 1 -I flannel.1 $hostgw_ping_dest"
|
|
|
|
- assert_fails "docker exec flannel-host2 ping -W 1 -c 1 -I eth0 $vxlan_ping_dest"
|
|
|
|
|
|
+ assert "docker exec flannel-host2 ping -c 3 $hostgw_ping_dest"
|
|
|
|
+ assert "docker exec flannel-host2 ping -c 3 $vxlan_ping_dest"
|
|
|
|
+ assert_fails "docker exec flannel-host2 ping -W 1 -c 1 -I flannel.1 $hostgw_ping_dest"
|
|
|
|
+ assert_fails "docker exec flannel-host2 ping -W 1 -c 1 -I eth0 $vxlan_ping_dest"
|
|
}
|
|
}
|