forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.0 KiB
99 lines
2.0 KiB
#!/bin/bash |
|
# SPDX-License-Identifier: GPL-2.0 |
|
|
|
# xdping tests |
|
# Here we setup and teardown configuration required to run |
|
# xdping, exercising its options. |
|
# |
|
# Setup is similar to test_tunnel tests but without the tunnel. |
|
# |
|
# Topology: |
|
# --------- |
|
# root namespace | tc_ns0 namespace |
|
# | |
|
# ---------- | ---------- |
|
# | veth1 | --------- | veth0 | |
|
# ---------- peer ---------- |
|
# |
|
# Device Configuration |
|
# -------------------- |
|
# Root namespace with BPF |
|
# Device names and addresses: |
|
# veth1 IP: 10.1.1.200 |
|
# xdp added to veth1, xdpings originate from here. |
|
# |
|
# Namespace tc_ns0 with BPF |
|
# Device names and addresses: |
|
# veth0 IPv4: 10.1.1.100 |
|
# For some tests xdping run in server mode here. |
|
# |
|
|
|
readonly TARGET_IP="10.1.1.100" |
|
readonly TARGET_NS="xdp_ns0" |
|
|
|
readonly LOCAL_IP="10.1.1.200" |
|
|
|
setup() |
|
{ |
|
ip netns add $TARGET_NS |
|
ip link add veth0 type veth peer name veth1 |
|
ip link set veth0 netns $TARGET_NS |
|
ip netns exec $TARGET_NS ip addr add ${TARGET_IP}/24 dev veth0 |
|
ip addr add ${LOCAL_IP}/24 dev veth1 |
|
ip netns exec $TARGET_NS ip link set veth0 up |
|
ip link set veth1 up |
|
} |
|
|
|
cleanup() |
|
{ |
|
set +e |
|
ip netns delete $TARGET_NS 2>/dev/null |
|
ip link del veth1 2>/dev/null |
|
if [[ $server_pid -ne 0 ]]; then |
|
kill -TERM $server_pid |
|
fi |
|
} |
|
|
|
test() |
|
{ |
|
client_args="$1" |
|
server_args="$2" |
|
|
|
echo "Test client args '$client_args'; server args '$server_args'" |
|
|
|
server_pid=0 |
|
if [[ -n "$server_args" ]]; then |
|
ip netns exec $TARGET_NS ./xdping $server_args & |
|
server_pid=$! |
|
sleep 10 |
|
fi |
|
./xdping $client_args $TARGET_IP |
|
|
|
if [[ $server_pid -ne 0 ]]; then |
|
kill -TERM $server_pid |
|
server_pid=0 |
|
fi |
|
|
|
echo "Test client args '$client_args'; server args '$server_args': PASS" |
|
} |
|
|
|
set -e |
|
|
|
server_pid=0 |
|
|
|
trap cleanup EXIT |
|
|
|
setup |
|
|
|
for server_args in "" "-I veth0 -s -S" ; do |
|
# client in skb mode |
|
client_args="-I veth1 -S" |
|
test "$client_args" "$server_args" |
|
|
|
# client with count of 10 RTT measurements. |
|
client_args="-I veth1 -S -c 10" |
|
test "$client_args" "$server_args" |
|
done |
|
|
|
echo "OK. All tests passed" |
|
exit 0
|
|
|