On 8/10/22 08:08, Han Zhou wrote: > On Tue, Aug 9, 2022 at 4:05 AM Ales Musil <[email protected]> wrote: >> >> Reported-at: https://bugzilla.redhat.com/2084668 >> Signed-off-by: Ales Musil <[email protected]> >> --- >> v3: Rebase on top of current main. >> Update according to the final conclusion. >> v4: Rebase on top of current main. >> Address comments from Mark and Ihar. >> --- >> tests/ovn.at | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 111 insertions(+) >> >> diff --git a/tests/ovn.at b/tests/ovn.at >> index 23b205791..3dbb80121 100644 >> --- a/tests/ovn.at >> +++ b/tests/ovn.at >> @@ -32363,3 +32363,114 @@ AT_CHECK([test $(ovn-sbctl list fdb | grep -c > "00:00:00:00:10:30") = 0]) >> OVN_CLEANUP([hv1]) >> AT_CLEANUP >> ]) >> + >> +OVN_FOR_EACH_NORTHD([ >> +AT_SETUP([MAC binding aging]) >> +ovn_start >> + >> +net_add n1 >> + >> +AT_CHECK([ovn-nbctl ls-add public]) >> +AT_CHECK([ovn-nbctl ls-add internal]) >> + >> +AT_CHECK([ovn-nbctl lsp-add public ln_port]) >> +AT_CHECK([ovn-nbctl lsp-set-addresses ln_port unknown]) >> +AT_CHECK([ovn-nbctl lsp-set-type ln_port localnet]) >> +AT_CHECK([ovn-nbctl lsp-set-options ln_port network_name=physnet1]) >> + >> +AT_CHECK([ovn-nbctl lsp-add public public-gw]) >> +AT_CHECK([ovn-nbctl lsp-set-type public-gw router]) >> +AT_CHECK([ovn-nbctl lsp-set-addresses public-gw 00:00:00:00:10:00 > router]) >> +AT_CHECK([ovn-nbctl lsp-set-options public-gw router-port=gw-public]) >> + >> +AT_CHECK([ovn-nbctl lsp-add internal internal-gw]) >> +AT_CHECK([ovn-nbctl lsp-set-type internal-gw router]) >> +AT_CHECK([ovn-nbctl lsp-set-addresses internal-gw 00:00:00:00:20:00 > router]) >> +AT_CHECK([ovn-nbctl lsp-set-options internal-gw router-port=gw-internal]) >> + >> +AT_CHECK([ovn-nbctl lsp-add internal vif1]) >> +AT_CHECK([ovn-nbctl lsp-set-addresses vif1 "00:00:00:00:20:10 > 192.168.20.10"]) >> + >> +AT_CHECK([ovn-nbctl lsp-add internal vif2]) >> +AT_CHECK([ovn-nbctl lsp-set-addresses vif2 "00:00:00:00:20:20 > 192.168.20.20"]) >> + >> +AT_CHECK([ovn-nbctl lr-add gw]) >> +AT_CHECK([ovn-nbctl lrp-add gw gw-public 00:00:00:00:10:00 > 192.168.10.1/24]) >> +AT_CHECK([ovn-nbctl lrp-add gw gw-internal 00:00:00:00:20:00 > 192.168.20.1/24]) >> + >> +sim_add hv1 >> +as hv1 >> +ovs-vsctl add-br br-underlay >> +ovn_attach n1 br-underlay 192.168.0.1 >> +ovs-vsctl add-br br-phys >> +ovs-vsctl -- add-port br-int vif1 -- \ >> + set interface vif1 external-ids:iface-id=vif1 \ >> + options:tx_pcap=hv1/vif1-tx.pcap \ >> + options:rxq_pcap=hv1/vif1-rx.pcap \ >> + ofport-request=1 >> +ovs-vsctl -- add-port br-phys ext1 -- \ >> + set interface ext1 \ >> + options:tx_pcap=hv1/ext1-tx.pcap \ >> + options:rxq_pcap=hv1/ext1-rx.pcap \ >> + ofport-request=2 >> +ovs-vsctl set open . external_ids:ovn-bridge-mappings=physnet1:br-phys >> + >> +sim_add hv2 >> +as hv2 >> +ovs-vsctl add-br br-underlay >> +ovn_attach n1 br-underlay 192.168.0.2 >> +ovs-vsctl add-br br-phys >> +ovs-vsctl -- add-port br-int vif2 -- \ >> + set interface vif2 external-ids:iface-id=vif2 \ >> + options:tx_pcap=hv2/vif2-tx.pcap \ >> + options:rxq_pcap=hv2/vif2-rx.pcap \ >> + ofport-request=1 >> +ovs-vsctl -- add-port br-phys ext2 -- \ >> + set interface ext2 \ >> + options:tx_pcap=hv2/ext2-tx.pcap \ >> + options:rxq_pcap=hv2/ext2-rx.pcap \ >> + ofport-request=2 >> +ovs-vsctl set open . external_ids:ovn-bridge-mappings=physnet1:br-phys >> + >> +OVN_POPULATE_ARP >> + >> +send_garp() { >> + hv=$1 >> + dev=$2 >> + mac_byte=$3 >> + ip_byte=${4-$3} >> + >> + mac="0000000010$mac_byte" >> + ip=`ip_to_hex 192 168 10 $ip_byte` >> + packet=ffffffffffff${mac}08060001080006040002${mac}${ip}${mac}${ip} >> + as $hv ovs-appctl netdev-dummy/receive $dev $packet >> +} >> + >> +# Check if the option is not present by default >> +AT_CHECK([fetch_column nb:logical_router options name="gw" | grep -q > mac_binding_age_threshold], [1]) >> + >> +# Send GARP to populate MAC binding table records >> +send_garp hv1 ext1 10 >> +send_garp hv2 ext2 20 >> + >> +OVS_WAIT_UNTIL([ovn-sbctl list mac_binding | grep -q "192.168.10.10"]) >> +OVS_WAIT_UNTIL([ovn-sbctl list mac_binding | grep -q "192.168.10.20"]) >> + >> +# Set the MAC binding aging threshold >> +AT_CHECK([ovn-nbctl set logical_router gw > options:mac_binding_age_threshold=1]) >> +AT_CHECK([fetch_column nb:logical_router options | grep -q > mac_binding_age_threshold=1]) >> +AT_CHECK([ovn-nbctl --wait=sb sync]) >> + >> +# Set the timeout for OVS_WAIT* functions to 5 seconds >> +OVS_CTL_TIMEOUT=5 >> +# Check if the records are removed after some inactivity >> +OVS_WAIT_UNTIL([ >> + test "0" = "$(ovn-sbctl list mac_binding | grep -c '192.168.10.10')" >> +]) >> +OVS_WAIT_UNTIL([ >> + test "0" = "$(ovn-sbctl list mac_binding | grep -c '192.168.10.20')" >> +]) >> + >> +OVN_CLEANUP([hv1], [hv2]) >> +AT_CLEANUP >> +]) >> -- >> 2.37.1 >> > > Thanks for adding the test! Usually it would be better to add tests in the > same patch with the feature/bug-fix, unless the tests are big and justified > as a feature. (but not a big deal) >
+1, I agree, it's probably best to add the test to the commit adding the feature; for example, if this commit will ever need to be reverted. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
