Commit 41f40546 authored by David S. Miller's avatar David S. Miller

Merge branch 'selftests-forwarding-Two-enhancements'

Ido Schimmel says:

====================
selftests: forwarding: Two enhancements

First patch increases the maximum deviation in the multipath tests which
proved to be too low in some cases.

Second patch allows user to run only specific tests from each file using
the TESTS environment variable. This granularity is needed in setups
where not all the tests can pass.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 5f110899 0eb8053c
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="ping_ipv4 ping_ipv6 learning flooding"
NUM_NETIFS=4 NUM_NETIFS=4
CHECK_TC="yes" CHECK_TC="yes"
source lib.sh source lib.sh
...@@ -75,14 +76,31 @@ cleanup() ...@@ -75,14 +76,31 @@ cleanup()
vrf_cleanup vrf_cleanup
} }
ping_ipv4()
{
ping_test $h1 192.0.2.2
}
ping_ipv6()
{
ping6_test $h1 2001:db8:1::2
}
learning()
{
learning_test "br0" $swp1 $h1 $h2
}
flooding()
{
flood_test $swp2 $h1 $h2
}
trap cleanup EXIT trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
ping_test $h1 192.0.2.2 tests_run
ping6_test $h1 2001:db8:1::2
learning_test "br0" $swp1 $h1 $h2
flood_test $swp2 $h1 $h2
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="ping_ipv4 ping_ipv6 learning flooding"
NUM_NETIFS=4 NUM_NETIFS=4
source lib.sh source lib.sh
...@@ -73,14 +74,31 @@ cleanup() ...@@ -73,14 +74,31 @@ cleanup()
vrf_cleanup vrf_cleanup
} }
ping_ipv4()
{
ping_test $h1 192.0.2.2
}
ping_ipv6()
{
ping6_test $h1 2001:db8:1::2
}
learning()
{
learning_test "br0" $swp1 $h1 $h2
}
flooding()
{
flood_test $swp2 $h1 $h2
}
trap cleanup EXIT trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
ping_test $h1 192.0.2.2 tests_run
ping6_test $h1 2001:db8:1::2
learning_test "br0" $swp1 $h1 $h2
flood_test $swp2 $h1 $h2
exit $EXIT_STATUS exit $EXIT_STATUS
...@@ -477,6 +477,15 @@ matchall_sink_create() ...@@ -477,6 +477,15 @@ matchall_sink_create()
action drop action drop
} }
tests_run()
{
local current_test
for current_test in ${TESTS:-$ALL_TESTS}; do
$current_test
done
}
############################################################################## ##############################################################################
# Tests # Tests
......
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
# traffic. Test that the payload is what is expected (ICMP ping request or # traffic. Test that the payload is what is expected (ICMP ping request or
# reply, depending on test). # reply, depending on test).
ALL_TESTS="
test_gretap
test_ip6gretap
test_gretap_mac
test_ip6gretap_mac
test_two_spans
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -100,22 +108,36 @@ test_two_spans() ...@@ -100,22 +108,36 @@ test_two_spans()
log_test "two simultaneously configured mirrors ($tcflags)" log_test "two simultaneously configured mirrors ($tcflags)"
} }
test_all() test_gretap()
{ {
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap" full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap"
full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap"
full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap" full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap"
}
test_ip6gretap()
{
full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap"
full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap" full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap"
}
test_gretap_mac()
{
test_span_gre_mac gt4 ingress ip "mirror to gretap" test_span_gre_mac gt4 ingress ip "mirror to gretap"
test_span_gre_mac gt6 ingress ipv6 "mirror to ip6gretap"
test_span_gre_mac gt4 egress ip "mirror to gretap" test_span_gre_mac gt4 egress ip "mirror to gretap"
}
test_ip6gretap_mac()
{
test_span_gre_mac gt6 ingress ipv6 "mirror to ip6gretap"
test_span_gre_mac gt6 egress ipv6 "mirror to ip6gretap" test_span_gre_mac gt6 egress ipv6 "mirror to ip6gretap"
}
test_two_spans test_all()
{
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
tests_run
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
...@@ -42,6 +42,11 @@ ...@@ -42,6 +42,11 @@
# underlay manner, i.e. with a bound dummy device that marks underlay VRF where # underlay manner, i.e. with a bound dummy device that marks underlay VRF where
# the encapsulated packed should be routed. # the encapsulated packed should be routed.
ALL_TESTS="
test_gretap
test_ip6gretap
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -178,6 +183,18 @@ cleanup() ...@@ -178,6 +183,18 @@ cleanup()
vrf_cleanup vrf_cleanup
} }
test_gretap()
{
full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap w/ UL"
full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap w/ UL"
}
test_ip6gretap()
{
full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap w/ UL"
full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap w/ UL"
}
test_all() test_all()
{ {
RET=0 RET=0
...@@ -185,11 +202,7 @@ test_all() ...@@ -185,11 +202,7 @@ test_all()
slow_path_trap_install $swp1 ingress slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress slow_path_trap_install $swp1 egress
full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap w/ UL" tests_run
full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap w/ UL"
full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap w/ UL"
full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap w/ UL"
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
...@@ -7,6 +7,13 @@ ...@@ -7,6 +7,13 @@
# Test how mirrors to gretap and ip6gretap react to changes to relevant # Test how mirrors to gretap and ip6gretap react to changes to relevant
# configuration. # configuration.
ALL_TESTS="
test_ttl
test_tun_up
test_egress_up
test_remote_ip
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -155,22 +162,36 @@ test_span_gre_remote_ip() ...@@ -155,22 +162,36 @@ test_span_gre_remote_ip()
log_test "$what: remote address change ($tcflags)" log_test "$what: remote address change ($tcflags)"
} }
test_all() test_ttl()
{ {
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
test_span_gre_ttl gt4 gretap ip "mirror to gretap" test_span_gre_ttl gt4 gretap ip "mirror to gretap"
test_span_gre_ttl gt6 ip6gretap ipv6 "mirror to ip6gretap" test_span_gre_ttl gt6 ip6gretap ipv6 "mirror to ip6gretap"
}
test_tun_up()
{
test_span_gre_tun_up gt4 "mirror to gretap" test_span_gre_tun_up gt4 "mirror to gretap"
test_span_gre_tun_up gt6 "mirror to ip6gretap" test_span_gre_tun_up gt6 "mirror to ip6gretap"
}
test_egress_up()
{
test_span_gre_egress_up gt4 192.0.2.130 "mirror to gretap" test_span_gre_egress_up gt4 192.0.2.130 "mirror to gretap"
test_span_gre_egress_up gt6 2001:db8:2::2 "mirror to ip6gretap" test_span_gre_egress_up gt6 2001:db8:2::2 "mirror to ip6gretap"
}
test_remote_ip()
{
test_span_gre_remote_ip gt4 gretap 192.0.2.130 192.0.2.132 "mirror to gretap" test_span_gre_remote_ip gt4 gretap 192.0.2.130 192.0.2.132 "mirror to gretap"
test_span_gre_remote_ip gt6 ip6gretap 2001:db8:2::2 2001:db8:2::4 "mirror to ip6gretap" test_span_gre_remote_ip gt6 ip6gretap 2001:db8:2::2 2001:db8:2::4 "mirror to ip6gretap"
}
test_all()
{
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
tests_run
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
...@@ -10,6 +10,11 @@ ...@@ -10,6 +10,11 @@
# this address, mirroring takes place, whereas when pinging the other one, # this address, mirroring takes place, whereas when pinging the other one,
# there's no mirroring. # there's no mirroring.
ALL_TESTS="
test_gretap
test_ip6gretap
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -81,6 +86,18 @@ full_test_span_gre_dir_acl() ...@@ -81,6 +86,18 @@ full_test_span_gre_dir_acl()
log_test "$direction $what ($tcflags)" log_test "$direction $what ($tcflags)"
} }
test_gretap()
{
full_test_span_gre_dir_acl gt4 ingress 8 0 192.0.2.4 "ACL mirror to gretap"
full_test_span_gre_dir_acl gt4 egress 0 8 192.0.2.3 "ACL mirror to gretap"
}
test_ip6gretap()
{
full_test_span_gre_dir_acl gt6 ingress 8 0 192.0.2.4 "ACL mirror to ip6gretap"
full_test_span_gre_dir_acl gt6 egress 0 8 192.0.2.3 "ACL mirror to ip6gretap"
}
test_all() test_all()
{ {
RET=0 RET=0
...@@ -88,11 +105,7 @@ test_all() ...@@ -88,11 +105,7 @@ test_all()
slow_path_trap_install $swp1 ingress slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress slow_path_trap_install $swp1 egress
full_test_span_gre_dir_acl gt4 ingress 8 0 192.0.2.4 "ACL mirror to gretap" tests_run
full_test_span_gre_dir_acl gt6 ingress 8 0 192.0.2.4 "ACL mirror to ip6gretap"
full_test_span_gre_dir_acl gt4 egress 0 8 192.0.2.3 "ACL mirror to gretap"
full_test_span_gre_dir_acl gt6 egress 0 8 192.0.2.3 "ACL mirror to ip6gretap"
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
...@@ -9,6 +9,11 @@ ...@@ -9,6 +9,11 @@
# is set up. Later on, the neighbor is deleted and it is expected to be # is set up. Later on, the neighbor is deleted and it is expected to be
# reinitialized using the usual ARP process, and the mirroring offload updated. # reinitialized using the usual ARP process, and the mirroring offload updated.
ALL_TESTS="
test_gretap
test_ip6gretap
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -69,15 +74,24 @@ test_span_gre_neigh() ...@@ -69,15 +74,24 @@ test_span_gre_neigh()
log_test "$direction $what: neighbor change ($tcflags)" log_test "$direction $what: neighbor change ($tcflags)"
} }
test_all() test_gretap()
{ {
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
test_span_gre_neigh 192.0.2.130 gt4 ingress "mirror to gretap" test_span_gre_neigh 192.0.2.130 gt4 ingress "mirror to gretap"
test_span_gre_neigh 192.0.2.130 gt4 egress "mirror to gretap" test_span_gre_neigh 192.0.2.130 gt4 egress "mirror to gretap"
}
test_ip6gretap()
{
test_span_gre_neigh 2001:db8:2::2 gt6 ingress "mirror to ip6gretap" test_span_gre_neigh 2001:db8:2::2 gt6 ingress "mirror to ip6gretap"
test_span_gre_neigh 2001:db8:2::2 gt6 egress "mirror to ip6gretap" test_span_gre_neigh 2001:db8:2::2 gt6 egress "mirror to ip6gretap"
}
test_all()
{
slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress
tests_run
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
...@@ -7,6 +7,11 @@ ...@@ -7,6 +7,11 @@
# Test that gretap and ip6gretap mirroring works when the other tunnel endpoint # Test that gretap and ip6gretap mirroring works when the other tunnel endpoint
# is reachable through a next-hop route (as opposed to directly-attached route). # is reachable through a next-hop route (as opposed to directly-attached route).
ALL_TESTS="
test_gretap
test_ip6gretap
"
NUM_NETIFS=6 NUM_NETIFS=6
source lib.sh source lib.sh
source mirror_lib.sh source mirror_lib.sh
...@@ -92,8 +97,7 @@ test_all() ...@@ -92,8 +97,7 @@ test_all()
slow_path_trap_install $swp1 ingress slow_path_trap_install $swp1 ingress
slow_path_trap_install $swp1 egress slow_path_trap_install $swp1 egress
test_gretap tests_run
test_ip6gretap
slow_path_trap_uninstall $swp1 egress slow_path_trap_uninstall $swp1 egress
slow_path_trap_uninstall $swp1 ingress slow_path_trap_uninstall $swp1 ingress
......
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="ping_ipv4 ping_ipv6"
NUM_NETIFS=4 NUM_NETIFS=4
source lib.sh source lib.sh
...@@ -114,12 +115,21 @@ cleanup() ...@@ -114,12 +115,21 @@ cleanup()
vrf_cleanup vrf_cleanup
} }
ping_ipv4()
{
ping_test $h1 198.51.100.2
}
ping_ipv6()
{
ping6_test $h1 2001:db8:2::2
}
trap cleanup EXIT trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
ping_test $h1 198.51.100.2 tests_run
ping6_test $h1 2001:db8:2::2
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="ping_ipv4 ping_ipv6 multipath_test"
NUM_NETIFS=8 NUM_NETIFS=8
source lib.sh source lib.sh
...@@ -191,7 +192,7 @@ multipath_eval() ...@@ -191,7 +192,7 @@ multipath_eval()
diff=$(echo $weights_ratio - $packets_ratio | bc -l) diff=$(echo $weights_ratio - $packets_ratio | bc -l)
diff=${diff#-} diff=${diff#-}
test "$(echo "$diff / $weights_ratio > 0.1" | bc -l)" -eq 0 test "$(echo "$diff / $weights_ratio > 0.15" | bc -l)" -eq 0
check_err $? "Too large discrepancy between expected and measured ratios" check_err $? "Too large discrepancy between expected and measured ratios"
log_test "$desc" log_test "$desc"
log_info "Expected ratio $weights_ratio Measured ratio $packets_ratio" log_info "Expected ratio $weights_ratio Measured ratio $packets_ratio"
...@@ -364,13 +365,21 @@ cleanup() ...@@ -364,13 +365,21 @@ cleanup()
vrf_cleanup vrf_cleanup
} }
ping_ipv4()
{
ping_test $h1 198.51.100.2
}
ping_ipv6()
{
ping6_test $h1 2001:db8:2::2
}
trap cleanup EXIT trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
ping_test $h1 198.51.100.2 tests_run
ping6_test $h1 2001:db8:2::2
multipath_test
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="gact_drop_and_ok_test mirred_egress_redirect_test \
mirred_egress_mirror_test gact_trap_test"
NUM_NETIFS=4 NUM_NETIFS=4
source tc_common.sh source tc_common.sh
source lib.sh source lib.sh
...@@ -111,6 +113,10 @@ gact_trap_test() ...@@ -111,6 +113,10 @@ gact_trap_test()
{ {
RET=0 RET=0
if [[ "$tcflags" != "skip_sw" ]]; then
return 0;
fi
tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 flower \ tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 flower \
skip_hw dst_ip 192.0.2.2 action drop skip_hw dst_ip 192.0.2.2 action drop
tc filter add dev $swp1 ingress protocol ip pref 3 handle 103 flower \ tc filter add dev $swp1 ingress protocol ip pref 3 handle 103 flower \
...@@ -179,24 +185,29 @@ cleanup() ...@@ -179,24 +185,29 @@ cleanup()
ip link set $swp1 address $swp1origmac ip link set $swp1 address $swp1origmac
} }
mirred_egress_redirect_test()
{
mirred_egress_test "redirect"
}
mirred_egress_mirror_test()
{
mirred_egress_test "mirror"
}
trap cleanup EXIT trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
gact_drop_and_ok_test tests_run
mirred_egress_test "redirect"
mirred_egress_test "mirror"
tc_offload_check tc_offload_check
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
log_info "Could not test offloaded functionality" log_info "Could not test offloaded functionality"
else else
tcflags="skip_sw" tcflags="skip_sw"
gact_drop_and_ok_test tests_run
mirred_egress_test "redirect"
mirred_egress_test "mirror"
gact_trap_test
fi fi
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="unreachable_chain_test gact_goto_chain_test"
NUM_NETIFS=2 NUM_NETIFS=2
source tc_common.sh source tc_common.sh
source lib.sh source lib.sh
...@@ -107,16 +108,14 @@ trap cleanup EXIT ...@@ -107,16 +108,14 @@ trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
unreachable_chain_test tests_run
gact_goto_chain_test
tc_offload_check tc_offload_check
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
log_info "Could not test offloaded functionality" log_info "Could not test offloaded functionality"
else else
tcflags="skip_sw" tcflags="skip_sw"
unreachable_chain_test tests_run
gact_goto_chain_test
fi fi
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="match_dst_mac_test match_src_mac_test match_dst_ip_test \
match_src_ip_test match_ip_flags_test"
NUM_NETIFS=2 NUM_NETIFS=2
source tc_common.sh source tc_common.sh
source lib.sh source lib.sh
...@@ -245,22 +247,14 @@ trap cleanup EXIT ...@@ -245,22 +247,14 @@ trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
match_dst_mac_test tests_run
match_src_mac_test
match_dst_ip_test
match_src_ip_test
match_ip_flags_test
tc_offload_check tc_offload_check
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
log_info "Could not test offloaded functionality" log_info "Could not test offloaded functionality"
else else
tcflags="skip_sw" tcflags="skip_sw"
match_dst_mac_test tests_run
match_src_mac_test
match_dst_ip_test
match_src_ip_test
match_ip_flags_test
fi fi
exit $EXIT_STATUS exit $EXIT_STATUS
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ALL_TESTS="shared_block_test"
NUM_NETIFS=4 NUM_NETIFS=4
source tc_common.sh source tc_common.sh
source lib.sh source lib.sh
...@@ -109,14 +110,14 @@ trap cleanup EXIT ...@@ -109,14 +110,14 @@ trap cleanup EXIT
setup_prepare setup_prepare
setup_wait setup_wait
shared_block_test tests_run
tc_offload_check tc_offload_check
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
log_info "Could not test offloaded functionality" log_info "Could not test offloaded functionality"
else else
tcflags="skip_sw" tcflags="skip_sw"
shared_block_test tests_run
fi fi
exit $EXIT_STATUS exit $EXIT_STATUS
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment