+++ /dev/null
-Description: OVN tests failing...
-Author: Thomas Goirand <zigo@debian.org>
-Forwarded: no
-Last-Update: 2019-07-11
-
---- openvswitch-2.11.0+2019.06.25+git.9ebe795035+ds1.orig/tests/ovn.at
-+++ openvswitch-2.11.0+2019.06.25+git.9ebe795035+ds1/tests/ovn.at
-@@ -7667,227 +7667,6 @@ OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
- OVS_APP_EXIT_AND_WAIT([ovsdb-server])
- AT_CLEANUP
-
--AT_SETUP([ovn -- 4 HV, 1 LS, 1 LR, packet test with HA distributed router gateway port])
--AT_SKIP_IF([test $HAVE_PYTHON = no])
--ovn_start
--
--net_add n1
--
--sim_add hv1
--as hv1
--ovs-vsctl add-br br-phys
--ovn_attach n1 br-phys 192.168.0.1
--ovs-vsctl -- add-port br-int hv1-vif1 -- \
-- set interface hv1-vif1 external-ids:iface-id=foo1 \
-- options:tx_pcap=hv1/vif1-tx.pcap \
-- options:rxq_pcap=hv1/vif1-rx.pcap \
-- ofport-request=1
--
--sim_add gw1
--as gw1
--ovs-vsctl add-br br-phys
--ovn_attach n1 br-phys 192.168.0.2
--
--sim_add gw2
--as gw2
--ovs-vsctl add-br br-phys
--ovn_attach n1 br-phys 192.168.0.4
--
--sim_add ext1
--as ext1
--ovs-vsctl add-br br-phys
--ovn_attach n1 br-phys 192.168.0.3
--ovs-vsctl -- add-port br-int ext1-vif1 -- \
-- set interface ext1-vif1 external-ids:iface-id=outside1 \
-- options:tx_pcap=ext1/vif1-tx.pcap \
-- options:rxq_pcap=ext1/vif1-rx.pcap \
-- ofport-request=1
--
--# Pre-populate the hypervisors' ARP tables so that we don't lose any
--# packets for ARP resolution (native tunneling doesn't queue packets
--# for ARP resolution).
--OVN_POPULATE_ARP
--
--ovn-nbctl create Logical_Router name=R1
--
--ovn-nbctl ls-add foo
--ovn-nbctl ls-add alice
--ovn-nbctl ls-add outside
--
--# Connect foo to R1
--ovn-nbctl lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24
--ovn-nbctl lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \
-- type=router options:router-port=foo \
-- -- lsp-set-addresses rp-foo router
--
--# Connect alice to R1 as distributed router gateway port on gw1
--ovn-nbctl lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24
--
--ovn-nbctl \
-- --id=@gc0 create Gateway_Chassis name=alice_gw1 \
-- chassis_name=gw1 \
-- priority=20 -- \
-- --id=@gc1 create Gateway_Chassis name=alice_gw2 \
-- chassis_name=gw2 \
-- priority=10 -- \
-- set Logical_Router_Port alice 'gateway_chassis=[@gc0,@gc1]'
--
--ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \
-- type=router options:router-port=alice \
-- -- lsp-set-addresses rp-alice router
--
--# Create logical port foo1 in foo
--ovn-nbctl lsp-add foo foo1 \
---- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2"
--
--# Create logical port outside1 in outside
--ovn-nbctl lsp-add outside outside1 \
---- lsp-set-addresses outside1 "f0:00:00:01:02:04 172.16.1.3"
--
--# Create localnet port in alice
--ovn-nbctl lsp-add alice ln-alice
--ovn-nbctl lsp-set-addresses ln-alice unknown
--ovn-nbctl lsp-set-type ln-alice localnet
--ovn-nbctl lsp-set-options ln-alice network_name=phys
--
--# Create localnet port in outside
--ovn-nbctl lsp-add outside ln-outside
--ovn-nbctl lsp-set-addresses ln-outside unknown
--ovn-nbctl lsp-set-type ln-outside localnet
--ovn-nbctl lsp-set-options ln-outside network_name=phys
--
--# Create bridge-mappings on gw1, gw2 and ext1, hv1 doesn't need
--# mapping to the external network, is the one generating packets
--as gw1 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
--as gw2 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
--as ext1 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
--
--AT_CHECK([ovn-nbctl --timeout=3 --wait=sb sync], [0], [ignore])
--
--# Allow some time for ovn-northd and ovn-controller to catch up.
--# XXX This should be more systematic.
--sleep 2
--
--ip_to_hex() {
-- printf "%02x%02x%02x%02x" "$@"
--}
--
--reset_pcap_file() {
-- local iface=$1
-- local pcap_file=$2
-- ovs-vsctl -- set Interface $iface options:tx_pcap=dummy-tx.pcap \
--options:rxq_pcap=dummy-rx.pcap
-- rm -f ${pcap_file}*.pcap
-- ovs-vsctl -- set Interface $iface options:tx_pcap=${pcap_file}-tx.pcap \
--options:rxq_pcap=${pcap_file}-rx.pcap
--}
--
--test_ip_packet()
--{
-- local active_gw=$1
-- local backup_gw=$2
-- local backup_vswitchd_dead=$3
--
-- # Send ip packet between foo1 and outside1
-- src_mac="f00000010203" # foo1 mac
-- dst_mac="000001010203" # rp-foo mac (internal router leg)
-- src_ip=`ip_to_hex 192 168 1 2`
-- dst_ip=`ip_to_hex 172 16 1 3`
-- packet=${dst_mac}${src_mac}08004500001c0000000040110000${src_ip}${dst_ip}0035111100080000
--
-- # ARP request packet to expect at outside1
-- #arp_request=ffffffffffff${src_mac}08060001080006040001${src_mac}${src_ip}000000000000${dst_ip}
--
-- as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet
--
-- # Send ARP reply from outside1 back to the router
-- # XXX: note, we could avoid this if we plug this port into a netns
-- # and setup the IP address into the port, so the kernel would simply reply
-- src_mac="000002010203"
-- reply_mac="f00000010204"
-- dst_ip=`ip_to_hex 172 16 1 3`
-- src_ip=`ip_to_hex 172 16 1 1`
-- arp_reply=${src_mac}${reply_mac}08060001080006040002${reply_mac}${dst_ip}${src_mac}${src_ip}
--
-- as ext1 ovs-appctl netdev-dummy/receive ext1-vif1 $arp_reply
--
-- OVS_WAIT_UNTIL([
-- test `as $active_gw ovs-ofctl dump-flows br-int | grep table=66 | \
--grep actions=mod_dl_dst:f0:00:00:01:02:04 | wc -l` -eq 1
-- ])
--
-- # Packet to Expect at ext1 chassis, outside1 port
-- src_mac="000002010203"
-- dst_mac="f00000010204"
-- src_ip=`ip_to_hex 192 168 1 2`
-- dst_ip=`ip_to_hex 172 16 1 3`
-- expected=${dst_mac}${src_mac}08004500001c000000003f110100${src_ip}${dst_ip}0035111100080000
-- echo $expected > ext1-vif1.expected
--
-- as $active_gw reset_pcap_file br-phys_n1 $active_gw/br-phys_n1
--
-- if test $backup_vswitchd_dead != 1; then
-- # Reset the file only if vswitchd in backup gw is alive
-- as $backup_gw reset_pcap_file br-phys_n1 $backup_gw/br-phys_n1
-- fi
-- as ext1 reset_pcap_file ext1-vif1 ext1/vif1
--
-- # Resend packet from foo1 to outside1
-- as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet
--
-- sleep 1
--
-- OVN_CHECK_PACKETS([ext1/vif1-tx.pcap], [ext1-vif1.expected])
-- $PYTHON "$top_srcdir/utilities/ovs-pcap.in" $active_gw/br-phys_n1-tx.pcap > packets
-- AT_CHECK([grep $expected packets | sort], [0], [expout])
-- if test $backup_vswitchd_dead != 1; then
-- # Check for backup gw only if vswitchd is alive
-- $PYTHON "$top_srcdir/utilities/ovs-pcap.in" $backup_gw/br-phys_n1-tx.pcap > packets
-- AT_CHECK([grep $expected packets | sort], [0], [])
-- fi
--}
--
--test_ip_packet gw1 gw2 0
--
--ovn-nbctl --timeout=3 --wait=hv \
-- --id=@gc0 create Gateway_Chassis name=alice_gw1 \
-- chassis_name=gw1 \
-- priority=10 -- \
-- --id=@gc1 create Gateway_Chassis name=alice_gw2 \
-- chassis_name=gw2 \
-- priority=20 -- \
-- set Logical_Router_Port alice 'gateway_chassis=[@gc0,@gc1]'
--
--test_ip_packet gw2 gw1 0
--
--# Get the claim count of both gw1 and gw2.
--gw1_claim_ct=`grep "cr-alice: Claiming" gw1/ovn-controller.log | wc -l`
--gw2_claim_ct=`grep "cr-alice: Claiming" gw2/ovn-controller.log | wc -l`
--
--# Stop ovs-vswitchd in gw2. gw1 should claim the gateway port.
--as gw2
--OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
--
--# gw1 should claim the cr-alice and the claim count of gw1 should be
--# incremented by 1.
--gw1_claim_ct=$((gw1_claim_ct+1))
--
--OVS_WAIT_UNTIL([test $gw1_claim_ct = `cat gw1/ovn-controller.log \
--| grep -c "cr-alice: Claiming"`])
--
--AT_CHECK([test $gw2_claim_ct = `cat gw2/ovn-controller.log | \
--grep -c "cr-alice: Claiming"`])
--
--test_ip_packet gw1 gw2 1
--
--as gw2
--OVS_APP_EXIT_AND_WAIT([ovn-controller])
--OVS_APP_EXIT_AND_WAIT([ovsdb-server])
--
--OVN_CLEANUP([hv1],[gw1],[ext1])
--
--AT_CLEANUP
--
- AT_SETUP([ovn -- 4 HV, 3 LS, 2 LR, packet test with HA distributed router gateway port])
- AT_SKIP_IF([test $HAVE_PYTHON = no])
- ovn_start
-@@ -9727,91 +9506,6 @@ OVN_CLEANUP([hv1],[hv2],[hv3])
-
- AT_CLEANUP
-
--AT_SETUP([ovn -- ensure one gw controller restart in HA doesn't bounce the master])
--AT_SKIP_IF([test $HAVE_PYTHON = no])
--ovn_start
--
--net_add n1
--
--# create two gateways with external network connectivity
--for i in 1 2; do
-- sim_add gw$i
-- as gw$i
-- ovs-vsctl add-br br-phys
-- ovn_attach n1 br-phys 192.168.0.$i
-- ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
--done
--
--ovn-nbctl ls-add inside
--ovn-nbctl ls-add outside
--
--# create one hypervisors with a vif port the internal network
--sim_add hv1
--as hv1
--ovs-vsctl add-br br-phys
--ovn_attach n1 br-phys 192.168.0.11
--ovs-vsctl -- add-port br-int hv1-vif1 -- \
-- set interface hv1-vif1 external-ids:iface-id=inside1 \
-- options:tx_pcap=hv1/vif1-tx.pcap \
-- options:rxq_pcap=hv1/vif1-rx.pcap \
-- ofport-request=1
--
--ovn-nbctl lsp-add inside inside1 \
-- -- lsp-set-addresses inside1 "f0:00:00:01:22:01 192.168.1.101"
--
--
--OVN_POPULATE_ARP
--
--ovn-nbctl create Logical_Router name=R1
--
--# Connect inside to R1
--ovn-nbctl lrp-add R1 inside 00:00:01:01:02:03 192.168.1.1/24
--ovn-nbctl lsp-add inside rp-inside -- set Logical_Switch_Port rp-inside \
-- type=router options:router-port=inside \
-- -- lsp-set-addresses rp-inside router
--
--# Connect outside to R1 as distributed router gateway port on gw1+gw2
--ovn-nbctl lrp-add R1 outside 00:00:02:01:02:04 192.168.0.101/24
--
--ovn-nbctl --id=@gc0 create Gateway_Chassis \
-- name=outside_gw1 chassis_name=gw1 priority=20 -- \
-- --id=@gc1 create Gateway_Chassis \
-- name=outside_gw2 chassis_name=gw2 priority=10 -- \
-- set Logical_Router_Port outside 'gateway_chassis=[@gc0,@gc1]'
--
--ovn-nbctl lsp-add outside rp-outside -- set Logical_Switch_Port rp-outside \
-- type=router options:router-port=outside \
-- -- lsp-set-addresses rp-outside router
--
--# Create localnet port in outside
--ovn-nbctl lsp-add outside ln-outside
--ovn-nbctl lsp-set-addresses ln-outside unknown
--ovn-nbctl lsp-set-type ln-outside localnet
--ovn-nbctl lsp-set-options ln-outside network_name=phys
--
--# Allow some time for ovn-northd and ovn-controller to catch up.
--ovn-nbctl --wait=hv --timeout=3 sync
--
--# currently when ovn-controller is restarted, the old entry is deleted
--# and a new one is created, which leaves the Gateway_Chassis with
--# an empty chassis for a while. NOTE: restarting ovn-controller in tests
--# doesn't have the same effect because "name" is conserved, and the
--# Chassis entry is not replaced.
--
--> gw1/ovn-controller.log
--
--gw2_chassis=$(ovn-sbctl --bare --columns=_uuid find Chassis name=gw2)
--ovn-sbctl destroy Chassis $gw2_chassis
--
--# Ensure ovn-controller has processed latest sbdb update
--# ovn-nbctl --wait=hv sync
--
--AT_CHECK([grep "Releasing lport" gw1/ovn-controller.log], [1], [])
--
--OVN_CLEANUP([gw1],[gw2],[hv1])
--
--AT_CLEANUP
--
- AT_SETUP([ovn -- IPv6 Neighbor Solicitation for unknown MAC])
- AT_KEYWORDS([ovn-nd_ns for unknown mac])
- AT_SKIP_IF([test $HAVE_PYTHON = no])