History

Merge branch 'selftests-Various-fixes'

Petr Machata says: ==================== selftests: Various fixes This patch set contains various fixes whose common denominator is improving quality of forwarding and mlxsw selftests. Most of the fixes are improvements in determinism (such that timing and latency don't impact the test performance). These were prompted by regular runs of the test suite on a hardware emulator, the performance of which is necessarily lower than that of the real device. Patches #1 (from Ido), #2 and #3 make changes to ping limits. Patches #4 and #5 add more sleep in places where things need more time to finish. Patches #6 and #7 fix two tests in the suite of mirror-to-gretap tests where underlay involves a VLAN device over an 802.1q bridge. Patches #8, #9 and #10 fix bugs in mirror-to-gretap test where underlay involves a LAG device. Patch #11 fixes a missed RET initialization in mirror-to-gretap flower test. ====================

David S. Miller committed 7 years ago

Commit 26281e22 parents 3fc46fc 084fafe10 files · +107 −21Browse files

Unified · Split

10 files
  1. tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh +2 −1
  2. tools/testing/selftests/drivers/net/mlxsw/qos_dscp_router.sh +2 −1
  3. tools/testing/selftests/net/forwarding/forwarding.config.sample +3 −0
  4. tools/testing/selftests/net/forwarding/lib.sh +5 −2
  5. tools/testing/selftests/net/forwarding/mirror_gre_bridge_1q_lag.sh +10 −1
  6. tools/testing/selftests/net/forwarding/mirror_gre_changes.sh +1 −0
  7. tools/testing/selftests/net/forwarding/mirror_gre_flower.sh +2 −2
  8. tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh +76 −12
  9. tools/testing/selftests/net/forwarding/mirror_lib.sh +4 −1
  10. tools/testing/selftests/net/forwarding/router_broadcast.sh +2 −1
tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh+2−1
@@ -148,9 +148,10 @@ dscp_ping_test() · 147 unmodified lines
148 eval "t0s=($(dscp_fetch_stats $dev_10 10)148 eval "t0s=($(dscp_fetch_stats $dev_10 10)
149 $(dscp_fetch_stats $dev_20 20))"149 $(dscp_fetch_stats $dev_20 20))"
150 150
151 local ping_timeout=$((PING_TIMEOUT * 5))
151 ip vrf exec $vrf_name \152 ip vrf exec $vrf_name \
152 ${PING} -Q $dscp_10 ${sip:+-I $sip} $dip \153 ${PING} -Q $dscp_10 ${sip:+-I $sip} $dip \
153 -c 10 -i 0.1 -w 2 &> /dev/null154 -c 10 -i 0.5 -w $ping_timeout &> /dev/null
154 155
155 local -A t1s156 local -A t1s
156 eval "t1s=($(dscp_fetch_stats $dev_10 10)157 eval "t1s=($(dscp_fetch_stats $dev_10 10)
tools/testing/selftests/drivers/net/mlxsw/qos_dscp_router.sh+2−1
@@ -169,9 +169,10 @@ dscp_ping_test() · 168 unmodified lines
169 eval "local -A dev1_t0s=($(dscp_fetch_stats $dev1 0))"169 eval "local -A dev1_t0s=($(dscp_fetch_stats $dev1 0))"
170 eval "local -A dev2_t0s=($(dscp_fetch_stats $dev2 0))"170 eval "local -A dev2_t0s=($(dscp_fetch_stats $dev2 0))"
171 171
172 local ping_timeout=$((PING_TIMEOUT * 5))
172 ip vrf exec $vrf_name \173 ip vrf exec $vrf_name \
173 ${PING} -Q $dscp ${sip:+-I $sip} $dip \174 ${PING} -Q $dscp ${sip:+-I $sip} $dip \
174 -c 10 -i 0.1 -w 2 &> /dev/null175 -c 10 -i 0.5 -w $ping_timeout &> /dev/null
175 176
176 eval "local -A dev1_t1s=($(dscp_fetch_stats $dev1 0))"177 eval "local -A dev1_t1s=($(dscp_fetch_stats $dev1 0))"
177 eval "local -A dev2_t1s=($(dscp_fetch_stats $dev2 0))"178 eval "local -A dev2_t1s=($(dscp_fetch_stats $dev2 0))"
tools/testing/selftests/net/forwarding/forwarding.config.sample+3−0
@@ -33,3 +33,6 @@ PAUSE_ON_CLEANUP=no · 32 unmodified lines
33NETIF_TYPE=veth33NETIF_TYPE=veth
34# Whether to create virtual interfaces (veth) or not34# Whether to create virtual interfaces (veth) or not
35NETIF_CREATE=yes35NETIF_CREATE=yes
36# Timeout (in seconds) before ping exits regardless of how many packets have
37# been sent or received
38PING_TIMEOUT=5
tools/testing/selftests/net/forwarding/lib.sh+5−2
@@ -17,6 +17,7 @@ NETIF_TYPE=${NETIF_TYPE:=veth} · 16 unmodified lines
17NETIF_CREATE=${NETIF_CREATE:=yes}17NETIF_CREATE=${NETIF_CREATE:=yes}
18MCD=${MCD:=smcrouted}18MCD=${MCD:=smcrouted}
19MC_CLI=${MC_CLI:=smcroutectl}19MC_CLI=${MC_CLI:=smcroutectl}
20PING_TIMEOUT=${PING_TIMEOUT:=5}
20 21
21relative_path="${BASH_SOURCE%/*}"22relative_path="${BASH_SOURCE%/*}"
22if [[ "$relative_path" == "${BASH_SOURCE}" ]]; then23if [[ "$relative_path" == "${BASH_SOURCE}" ]]; then
@@ -820,7 +821,8 @@ ping_do() · 797 unmodified lines
820 local vrf_name821 local vrf_name
821 822
822 vrf_name=$(master_name_get $if_name)823 vrf_name=$(master_name_get $if_name)
823 ip vrf exec $vrf_name $PING $args $dip -c 10 -i 0.1 -w 2 &> /dev/null824 ip vrf exec $vrf_name \
825 $PING $args $dip -c 10 -i 0.1 -w $PING_TIMEOUT &> /dev/null
824}826}
825 827
826ping_test()828ping_test()
@@ -840,7 +842,8 @@ ping6_do() · 13 unmodified lines
840 local vrf_name842 local vrf_name
841 843
842 vrf_name=$(master_name_get $if_name)844 vrf_name=$(master_name_get $if_name)
843 ip vrf exec $vrf_name $PING6 $args $dip -c 10 -i 0.1 -w 2 &> /dev/null845 ip vrf exec $vrf_name \
846 $PING6 $args $dip -c 10 -i 0.1 -w $PING_TIMEOUT &> /dev/null
844}847}
845 848
846ping6_test()849ping6_test()
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1q_lag.sh+10−1
@@ -190,6 +190,8 @@ setup_prepare() · 189 unmodified lines
190 h4_create190 h4_create
191 switch_create191 switch_create
192 192
193 forwarding_enable
194
193 trap_install $h3 ingress195 trap_install $h3 ingress
194 trap_install $h4 ingress196 trap_install $h4 ingress
195}197}
@@ -201,6 +203,8 @@ cleanup() · 5 unmodified lines
201 trap_uninstall $h4 ingress203 trap_uninstall $h4 ingress
202 trap_uninstall $h3 ingress204 trap_uninstall $h3 ingress
203 205
206 forwarding_restore
207
204 switch_destroy208 switch_destroy
205 h4_destroy209 h4_destroy
206 h3_destroy210 h3_destroy
@@ -220,11 +224,15 @@ test_lag_slave() · 13 unmodified lines
220 224
221 RET=0225 RET=0
222 226
227 tc filter add dev $swp1 ingress pref 999 \
228 proto 802.1q flower vlan_ethtype arp $tcflags \
229 action pass
223 mirror_install $swp1 ingress gt4 \230 mirror_install $swp1 ingress gt4 \
224 "proto 802.1q flower vlan_id 333 $tcflags"231 "proto 802.1q flower vlan_id 333 $tcflags"
225 232
226 # Test connectivity through $up_dev when $down_dev is set down.233 # Test connectivity through $up_dev when $down_dev is set down.
227 ip link set dev $down_dev down234 ip link set dev $down_dev down
235 ip neigh flush dev br1
228 setup_wait_dev $up_dev236 setup_wait_dev $up_dev
229 setup_wait_dev $host_dev237 setup_wait_dev $host_dev
230 $ARPING -I br1 192.0.2.130 -qfc 1238 $ARPING -I br1 192.0.2.130 -qfc 1
@@ -240,6 +248,7 @@ test_lag_slave() · 9 unmodified lines
240 ip link set dev $up_dev up248 ip link set dev $up_dev up
241 ip link set dev $down_dev up249 ip link set dev $down_dev up
242 mirror_uninstall $swp1 ingress250 mirror_uninstall $swp1 ingress
251 tc filter del dev $swp1 ingress pref 999
243 252
244 log_test "$what ($tcflags)"253 log_test "$what ($tcflags)"
245}254}
tools/testing/selftests/net/forwarding/mirror_gre_changes.sh+1−0
@@ -79,6 +79,7 @@ test_span_gre_ttl() · 78 unmodified lines
79 mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 079 mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 0
80 80
81 ip link set dev $tundev type $type ttl 5081 ip link set dev $tundev type $type ttl 50
82 sleep 2
82 mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 1083 mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 10
83 84
84 ip link set dev $tundev type $type ttl 10085 ip link set dev $tundev type $type ttl 100
tools/testing/selftests/net/forwarding/mirror_gre_flower.sh+2−2
@@ -81,6 +81,8 @@ full_test_span_gre_dir_acl() · 80 unmodified lines
81 local match_dip=$1; shift81 local match_dip=$1; shift
82 local what=$1; shift82 local what=$1; shift
83 83
84 RET=0
85
84 mirror_install $swp1 $direction $tundev \86 mirror_install $swp1 $direction $tundev \
85 "protocol ip flower $tcflags dst_ip $match_dip"87 "protocol ip flower $tcflags dst_ip $match_dip"
86 fail_test_span_gre_dir $tundev $direction88 fail_test_span_gre_dir $tundev $direction
@@ -108,8 +110,6 @@ test_ip6gretap() · 21 unmodified lines
108 110
109test_all()111test_all()
110{112{
111 RET=0
112
113 slow_path_trap_install $swp1 ingress113 slow_path_trap_install $swp1 ingress
114 slow_path_trap_install $swp1 egress114 slow_path_trap_install $swp1 egress
115 115
tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh+76−12
@@ -1,11 +1,44 @@
1#!/bin/bash1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.02# SPDX-License-Identifier: GPL-2.0
3 3
4# This test uses standard topology for testing gretap. See
5# mirror_gre_topo_lib.sh for more details.
6#
7# Test for "tc action mirred egress mirror" when the underlay route points at a4# Test for "tc action mirred egress mirror" when the underlay route points at a
8# vlan device on top of a bridge device with vlan filtering (802.1q).5# vlan device on top of a bridge device with vlan filtering (802.1q).
6#
7# +---------------------+ +---------------------+
8# | H1 | | H2 |
9# | + $h1 | | $h2 + |
10# | | 192.0.2.1/28 | | 192.0.2.2/28 | |
11# +-----|---------------+ +---------------|-----+
12# | |
13# +-----|-------------------------------------------------------------|-----+
14# | SW o--> mirred egress mirror dev {gt4,gt6} | |
15# | | | |
16# | +---|-------------------------------------------------------------|---+ |
17# | | + $swp1 br1 $swp2 + | |
18# | | | |
19# | | + $swp3 | |
20# | +---|-----------------------------------------------------------------+ |
21# | | | |
22# | | + br1.555 |
23# | | 192.0.2.130/28 |
24# | | 2001:db8:2::2/64 |
25# | | |
26# | | + gt6 (ip6gretap) + gt4 (gretap) |
27# | | : loc=2001:db8:2::1 : loc=192.0.2.129 |
28# | | : rem=2001:db8:2::2 : rem=192.0.2.130 |
29# | | : ttl=100 : ttl=100 |
30# | | : tos=inherit : tos=inherit |
31# | | : : |
32# +-----|---------------------:----------------------:----------------------+
33# | : :
34# +-----|---------------------:----------------------:----------------------+
35# | H3 + $h3 + h3-gt6 (ip6gretap) + h3-gt4 (gretap) |
36# | | loc=2001:db8:2::2 loc=192.0.2.130 |
37# | + $h3.555 rem=2001:db8:2::1 rem=192.0.2.129 |
38# | 192.0.2.130/28 ttl=100 ttl=100 |
39# | 2001:db8:2::2/64 tos=inherit tos=inherit |
40# | |
41# +-------------------------------------------------------------------------+
9 42
10ALL_TESTS="43ALL_TESTS="
11 test_gretap44 test_gretap
@@ -30,6 +63,15 @@ source mirror_gre_topo_lib.sh · 18 unmodified lines
30 63
31require_command $ARPING64require_command $ARPING
32 65
66h3_addr_add_del()
67{
68 local add_del=$1; shift
69 local dev=$1; shift
70
71 ip addr $add_del dev $dev 192.0.2.130/28
72 ip addr $add_del dev $dev 2001:db8:2::2/64
73}
74
33setup_prepare()75setup_prepare()
34{76{
35 h1=${NETIFS[p1]}77 h1=${NETIFS[p1]}
@@ -55,7 +97,8 @@ setup_prepare() · 19 unmodified lines
55 ip route rep 192.0.2.130/32 dev br1.55597 ip route rep 192.0.2.130/32 dev br1.555
56 ip -6 route rep 2001:db8:2::2/128 dev br1.55598 ip -6 route rep 2001:db8:2::2/128 dev br1.555
57 99
58 vlan_create $h3 555 v$h3 192.0.2.130/28 2001:db8:2::2/64100 vlan_create $h3 555 v$h3
101 h3_addr_add_del add $h3.555
59 102
60 ip link set dev $swp3 master br1103 ip link set dev $swp3 master br1
61 bridge vlan add dev $swp3 vid 555104 bridge vlan add dev $swp3 vid 555
@@ -68,6 +111,8 @@ cleanup() · 6 unmodified lines
68 111
69 ip link set dev $swp2 nomaster112 ip link set dev $swp2 nomaster
70 ip link set dev $swp3 nomaster113 ip link set dev $swp3 nomaster
114
115 h3_addr_add_del del $h3.555
71 vlan_destroy $h3 555116 vlan_destroy $h3 555
72 vlan_destroy br1 555117 vlan_destroy br1 555
73 118
@@ -182,13 +227,19 @@ test_span_gre_untagged_egress() · 108 unmodified lines
182 quick_test_span_gre_dir $tundev ingress227 quick_test_span_gre_dir $tundev ingress
183 quick_test_span_vlan_dir $h3 555 ingress228 quick_test_span_vlan_dir $h3 555 ingress
184 229
230 h3_addr_add_del del $h3.555
185 bridge vlan add dev $swp3 vid 555 pvid untagged231 bridge vlan add dev $swp3 vid 555 pvid untagged
186 sleep 1232 h3_addr_add_del add $h3
233 sleep 5
234
187 quick_test_span_gre_dir $tundev ingress235 quick_test_span_gre_dir $tundev ingress
188 fail_test_span_vlan_dir $h3 555 ingress236 fail_test_span_vlan_dir $h3 555 ingress
189 237
238 h3_addr_add_del del $h3
190 bridge vlan add dev $swp3 vid 555239 bridge vlan add dev $swp3 vid 555
191 sleep 1240 h3_addr_add_del add $h3.555
241 sleep 5
242
192 quick_test_span_gre_dir $tundev ingress243 quick_test_span_gre_dir $tundev ingress
193 quick_test_span_vlan_dir $h3 555 ingress244 quick_test_span_vlan_dir $h3 555 ingress
194 245
@@ -218,12 +269,25 @@ test_span_gre_fdb_roaming() · 23 unmodified lines
218 mirror_install $swp1 ingress $tundev "matchall $tcflags"269 mirror_install $swp1 ingress $tundev "matchall $tcflags"
219 quick_test_span_gre_dir $tundev ingress270 quick_test_span_gre_dir $tundev ingress
220 271
221 bridge fdb del dev $swp3 $h3mac vlan 555 master272 while ((RET == 0)); do
222 bridge fdb add dev $swp2 $h3mac vlan 555 master273 bridge fdb del dev $swp3 $h3mac vlan 555 master 2>/dev/null
223 sleep 1274 bridge fdb add dev $swp2 $h3mac vlan 555 master
224 fail_test_span_gre_dir $tundev ingress275 sleep 1
225 276 fail_test_span_gre_dir $tundev ingress
226 bridge fdb del dev $swp2 $h3mac vlan 555 master277
278 if ! bridge fdb sh dev $swp2 vlan 555 master \
279 | grep -q $h3mac; then
280 printf "TEST: %-60s [RETRY]\n" \
281 "$what: MAC roaming ($tcflags)"
282 # ARP or ND probably reprimed the FDB while the test
283 # was running. We would get a spurious failure.
284 RET=0
285 continue
286 fi
287 break
288 done
289
290 bridge fdb del dev $swp2 $h3mac vlan 555 master 2>/dev/null
227 # Re-prime FDB291 # Re-prime FDB
228 $ARPING -I br1.555 192.0.2.130 -fqc 1292 $ARPING -I br1.555 192.0.2.130 -fqc 1
229 sleep 1293 sleep 1
tools/testing/selftests/net/forwarding/mirror_lib.sh+4−1
@@ -29,9 +29,12 @@ mirror_test() · 28 unmodified lines
29 local pref=$1; shift29 local pref=$1; shift
30 local expect=$1; shift30 local expect=$1; shift
31 31
32 local ping_timeout=$((PING_TIMEOUT * 5))
32 local t0=$(tc_rule_stats_get $dev $pref)33 local t0=$(tc_rule_stats_get $dev $pref)
33 ip vrf exec $vrf_name \34 ip vrf exec $vrf_name \
34 ${PING} ${sip:+-I $sip} $dip -c 10 -i 0.1 -w 2 &> /dev/null35 ${PING} ${sip:+-I $sip} $dip -c 10 -i 0.5 -w $ping_timeout \
36 &> /dev/null
37 sleep 0.5
35 local t1=$(tc_rule_stats_get $dev $pref)38 local t1=$(tc_rule_stats_get $dev $pref)
36 local delta=$((t1 - t0))39 local delta=$((t1 - t0))
37 # Tolerate a couple stray extra packets.40 # Tolerate a couple stray extra packets.
tools/testing/selftests/net/forwarding/router_broadcast.sh+2−1
@@ -170,7 +170,8 @@ ping_test_from() · 169 unmodified lines
170 170
171 log_info "ping $dip, expected reply from $from"171 log_info "ping $dip, expected reply from $from"
172 ip vrf exec $(master_name_get $oif) \172 ip vrf exec $(master_name_get $oif) \
173 $PING -I $oif $dip -c 10 -i 0.1 -w 2 -b 2>&1 | grep $from &> /dev/null173 $PING -I $oif $dip -c 10 -i 0.1 -w $PING_TIMEOUT -b 2>&1 \
174 | grep $from &> /dev/null
174 check_err_fail $fail $?175 check_err_fail $fail $?
175}176}
176 177