diff --git a/test/helpers.bash b/test/helpers.bash index c58cc255..30d3c724 100644 --- a/test/helpers.bash +++ b/test/helpers.bash @@ -257,8 +257,22 @@ function ping_pod() { echo $? } +function ping_pod_from_pod() { + pod_ip=`ocic pod status --id $1 | grep "IP Address" | cut -d ' ' -f 3` + netns=`ocic pod status --id $2 | grep namespace | cut -d ' ' -f 3` + + ip netns exec `basename $netns` ping -W 1 -c 2 $pod_ip + + echo $? +} + + function cleanup_network_conf() { rm -rf $OCID_CNI_CONFIG echo 0 } + +function temp_sandbox_conf() { + sed -e s/\"namespace\":.*/\"namespace\":\ \"$1\",/g "$TESTDATA"/sandbox_config.json > $TESTDIR/sandbox_config_$1.json +} diff --git a/test/network.bats b/test/network.bats index 0273a44a..419d4f52 100644 --- a/test/network.bats +++ b/test/network.bats @@ -31,7 +31,7 @@ load helpers stop_ocid } -@test "Ping pod netns from the host" { +@test "Ping pod from the host" { # this test requires docker, thus it can't yet be run in a container if [ "$TRAVIS" = "true" ]; then # instead of $TRAVIS, add a function is_containerized to skip here skip "cannot yet run this test in a container, use sudo make localintegration" @@ -59,3 +59,43 @@ load helpers cleanup_network_conf stop_ocid } + +@test "Ping pod from another pod" { + # this test requires docker, thus it can't yet be run in a container + if [ "$TRAVIS" = "true" ]; then # instead of $TRAVIS, add a function is_containerized to skip here + skip "cannot yet run this test in a container, use sudo make localintegration" + fi + + if [ ! -f "$OCID_CNI_PLUGIN/bridge" ]; then + skip "missing CNI bridge plugin, please install it" + fi + + if [ ! -f "$OCID_CNI_PLUGIN/host-local" ]; then + skip "missing CNI host-local IPAM, please install it" + fi + + prepare_network_conf $POD_CIDR + + start_ocid + run ocic pod run --config "$TESTDATA"/sandbox_config.json + echo "$output" + [ "$status" -eq 0 ] + pod1_id="$output" + + temp_sandbox_conf cni_test + + run ocic pod run --config "$TESTDIR"/sandbox_config_cni_test.json + echo "$output" + [ "$status" -eq 0 ] + pod2_id="$output" + + ping_pod_from_pod $pod1_id $pod2_id + [ "$status" -eq 0 ] + + ping_pod_from_pod $pod2_id $pod1_id + [ "$status" -eq 0 ] + + cleanup_pods + cleanup_network_conf + stop_ocid +}