Merge branch 'ovs-selftests'
Aaron Conole says: ==================== selftests: openvswitch: add support for testing upcall interface The existing selftest suite for openvswitch will work for regression testing the datapath feature bits, but won't test things like adding interfaces, or the upcall interface. Here, we add some additional test facilities. First, extend the ovs-dpctl.py python module to support the OVS_FLOW and OVS_PACKET netlink families, with some associated messages. These can be extended over time, but the initial support is for more well known cases (output, userspace, and CT). Next, extend the test suite to test upcalls by adding a datapath, monitoring the upcall socket associated with the datapath, and then dumping any upcalls that are received. Compare with expected ARP upcall via arping. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
e2174b0355
@ -11,7 +11,8 @@ VERBOSE=0
|
||||
TRACING=0
|
||||
|
||||
tests="
|
||||
netlink_checks ovsnl: validate netlink attrs and settings"
|
||||
netlink_checks ovsnl: validate netlink attrs and settings
|
||||
upcall_interfaces ovs: test the upcall interfaces"
|
||||
|
||||
info() {
|
||||
[ $VERBOSE = 0 ] || echo $*
|
||||
@ -70,6 +71,62 @@ ovs_add_dp () {
|
||||
on_exit "ovs_sbx $sbxname python3 $ovs_base/ovs-dpctl.py del-dp $1;"
|
||||
}
|
||||
|
||||
ovs_add_if () {
|
||||
info "Adding IF to DP: br:$2 if:$3"
|
||||
if [ "$4" != "-u" ]; then
|
||||
ovs_sbx "$1" python3 $ovs_base/ovs-dpctl.py add-if "$2" "$3" \
|
||||
|| return 1
|
||||
else
|
||||
python3 $ovs_base/ovs-dpctl.py add-if \
|
||||
-u "$2" "$3" >$ovs_dir/$3.out 2>$ovs_dir/$3.err &
|
||||
pid=$!
|
||||
on_exit "ovs_sbx $1 kill -TERM $pid 2>/dev/null"
|
||||
fi
|
||||
}
|
||||
|
||||
ovs_del_if () {
|
||||
info "Deleting IF from DP: br:$2 if:$3"
|
||||
ovs_sbx "$1" python3 $ovs_base/ovs-dpctl.py del-if "$2" "$3" || return 1
|
||||
}
|
||||
|
||||
ovs_netns_spawn_daemon() {
|
||||
sbx=$1
|
||||
shift
|
||||
netns=$1
|
||||
shift
|
||||
info "spawning cmd: $*"
|
||||
ip netns exec $netns $* >> $ovs_dir/stdout 2>> $ovs_dir/stderr &
|
||||
pid=$!
|
||||
ovs_sbx "$sbx" on_exit "kill -TERM $pid 2>/dev/null"
|
||||
}
|
||||
|
||||
ovs_add_netns_and_veths () {
|
||||
info "Adding netns attached: sbx:$1 dp:$2 {$3, $4, $5}"
|
||||
ovs_sbx "$1" ip netns add "$3" || return 1
|
||||
on_exit "ovs_sbx $1 ip netns del $3"
|
||||
ovs_sbx "$1" ip link add "$4" type veth peer name "$5" || return 1
|
||||
on_exit "ovs_sbx $1 ip link del $4 >/dev/null 2>&1"
|
||||
ovs_sbx "$1" ip link set "$4" up || return 1
|
||||
ovs_sbx "$1" ip link set "$5" netns "$3" || return 1
|
||||
ovs_sbx "$1" ip netns exec "$3" ip link set "$5" up || return 1
|
||||
|
||||
if [ "$6" != "" ]; then
|
||||
ovs_sbx "$1" ip netns exec "$3" ip addr add "$6" dev "$5" \
|
||||
|| return 1
|
||||
fi
|
||||
|
||||
if [ "$7" != "-u" ]; then
|
||||
ovs_add_if "$1" "$2" "$4" || return 1
|
||||
else
|
||||
ovs_add_if "$1" "$2" "$4" -u || return 1
|
||||
fi
|
||||
|
||||
[ $TRACING -eq 1 ] && ovs_netns_spawn_daemon "$1" "$ns" \
|
||||
tcpdump -i any -s 65535
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
usage() {
|
||||
echo
|
||||
echo "$0 [OPTIONS] [TEST]..."
|
||||
@ -101,6 +158,36 @@ test_netlink_checks () {
|
||||
return 1
|
||||
fi
|
||||
|
||||
ovs_add_netns_and_veths "test_netlink_checks" nv0 left left0 l0 || \
|
||||
return 1
|
||||
ovs_add_netns_and_veths "test_netlink_checks" nv0 right right0 r0 || \
|
||||
return 1
|
||||
[ $(python3 $ovs_base/ovs-dpctl.py show nv0 | grep port | \
|
||||
wc -l) == 3 ] || \
|
||||
return 1
|
||||
ovs_del_if "test_netlink_checks" nv0 right0 || return 1
|
||||
[ $(python3 $ovs_base/ovs-dpctl.py show nv0 | grep port | \
|
||||
wc -l) == 2 ] || \
|
||||
return 1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
test_upcall_interfaces() {
|
||||
sbx_add "test_upcall_interfaces" || return 1
|
||||
|
||||
info "setting up new DP"
|
||||
ovs_add_dp "test_upcall_interfaces" ui0 -V 2:1 || return 1
|
||||
|
||||
ovs_add_netns_and_veths "test_upcall_interfaces" ui0 upc left0 l0 \
|
||||
172.31.110.1/24 -u || return 1
|
||||
|
||||
sleep 1
|
||||
info "sending arping"
|
||||
ip netns exec upc arping -I l0 172.31.110.20 -c 1 \
|
||||
>$ovs_dir/arping.stdout 2>$ovs_dir/arping.stderr
|
||||
|
||||
grep -E "MISS upcall\[0/yes\]: .*arp\(sip=172.31.110.1,tip=172.31.110.20,op=1,sha=" $ovs_dir/left0.out >/dev/null 2>&1 || return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user