On Tue, Dec 2, 2025 at 1:54 PM Mairtin O'Loingsigh via dev < [email protected]> wrote:
> Add multinode test suite which starts the ovn-ic process. This enables > to testing of transit routers created using ovn-ic-nbctl with > ovn-fake-multinode. > > Signed-off-by: Mairtin O'Loingsigh <[email protected]> > --- > Hi Mairtin, thank you for the patch. There might have been a slight misunderstanding. The new suite should be running on GH the same way as the other multinode was. Also at the same time looking at the proposed solution we might now need the new suite after all. See some comments below. NEWS | 1 + > tests/automake.mk | 29 ++++ > tests/multinode-ic-testsuite.at | 27 ++++ > tests/multinode-ic.at | 256 ++++++++++++++++++++++++++++++++ > tests/multinode-macros.at | 24 +++ > 5 files changed, 337 insertions(+) > create mode 100644 tests/multinode-ic-testsuite.at > create mode 100644 tests/multinode-ic.at > > diff --git a/NEWS b/NEWS > index a4c8557ee..b439a1e65 100644 > --- a/NEWS > +++ b/NEWS > @@ -1,5 +1,6 @@ > Post v25.09.0 > ------------- > + - Added new testsuite which enables ovn-ic. > - Added support for TLS Server Name Indication (SNI) with the new > --ssl-server-name option in OVN utilities and daemons. This allows > specifying the server name for SNI, which is useful when connecting > diff --git a/tests/automake.mk b/tests/automake.mk > index 8ae310547..92a357fec 100644 > --- a/tests/automake.mk > +++ b/tests/automake.mk > @@ -7,12 +7,14 @@ EXTRA_DIST += \ > $(SYSTEM_USERSPACE_TESTSUITE_AT) \ > $(PERF_TESTSUITE_AT) \ > $(MULTINODE_TESTSUITE_AT) \ > + $(MULTINODE_IC_TESTSUITE_AT) \ > $(TESTSUITE) \ > $(SYSTEM_DPDK_TESTSUITE) \ > $(SYSTEM_KMOD_TESTSUITE) \ > $(SYSTEM_USERSPACE_TESTSUITE) \ > $(PERF_TESTSUITE) \ > $(MULTINODE_TESTSUITE) \ > + $(MULTINODE_IC_TESTSUITE) \ > tests/atlocal.in \ > $(srcdir)/package.m4 \ > $(srcdir)/tests/testsuite \ > @@ -77,6 +79,12 @@ MULTINODE_TESTSUITE_AT = \ > tests/multinode-macros.at \ > tests/multinode.at > > +MULTINODE_IC_TESTSUITE_AT = \ > + tests/multinode-bgp-macros.at \ > + tests/multinode-ic-testsuite.at \ > + tests/multinode-macros.at \ > + tests/multinode-ic.at > + > check_SCRIPTS += tests/atlocal > > TESTSUITE = $(srcdir)/tests/testsuite > @@ -93,6 +101,10 @@ MULTINODE_TESTSUITE = > $(srcdir)/tests/multinode-testsuite > MULTINODE_TESTSUITE_DIR = > $(abs_top_builddir)/tests/multinode-testsuite.dir > MULTINODE_TESTSUITE_RESULTS = $(MULTINODE_TESTSUITE_DIR)/results > AUTOTEST_PATH = > $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(PTHREAD_WIN32_DIR_DLL):$(SSL_DIR):controller-vtep:northd:utilities:controller:ic:br-controller > +MULTINODE_IC_TESTSUITE = $(srcdir)/tests/multinode-ic-testsuite > +MULTINODE_IC_TESTSUITE_DIR = > $(abs_top_builddir)/tests/multinode-ic-testsuite.dir > +MULTINODE_IC_TESTSUITE_RESULTS = $(MULTINODE_IC_TESTSUITE_DIR)/results > +AUTOTEST_PATH = > $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(PTHREAD_WIN32_DIR_DLL):$(SSL_DIR):controller-vtep:northd:utilities:controller:ic > This is overwriting the AUTOTEST_PATH, which it shouldn't. > export ovs_srcdir > export ovs_builddir > @@ -233,6 +245,19 @@ check-multinode: all > @cat $(MULTINODE_TESTSUITE_RESULTS) > @echo > @echo "Results can be found in $(MULTINODE_TESTSUITE_RESULTS)" > + > +check-multinode-ic: all > + @mkdir -p $(MULTINODE_IC_TESTSUITE_DIR) > + @echo > $(MULTINODE_IC_TESTSUITE_RESULTS) > + set $(SHELL) '$(MULTINODE_IC_TESTSUITE)' -C tests > AUTOTEST_PATH='$(AUTOTEST_PATH)'; \ > + "$$@" $(TESTSUITEFLAGS) -j1 || (test X'$(RECHECK)' = Xyes && "$$@" > --recheck) > + @echo > + @echo '## -------------------- ##' > + @echo '## Multinode test Results ##' > + @echo '## -------------------- ##' > + @cat $(MULTINODE_IC_TESTSUITE_RESULTS) > + @echo > + @echo "Results can be found in $(MULTINODE_IC_TESTSUITE_RESULTS)" > > AUTOTEST = $(AUTOM4TE) --language=autotest > > @@ -267,6 +292,10 @@ $(MULTINODE_TESTSUITE): package.m4 > $(MULTINODE_TESTSUITE_AT) $(COMMON_MACROS_AT) > $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] > $(AM_V_at)mv [email protected] $@ > > +$(MULTINODE_IC_TESTSUITE): package.m4 $(MULTINODE_IC_TESTSUITE_AT) > $(COMMON_MACROS_AT) > + $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] > + $(AM_V_at)mv [email protected] $@ > + > # The `:;' works around a Bash 3.2 bug when the output is not writeable. > $(srcdir)/package.m4: $(top_srcdir)/configure.ac > $(AM_V_GEN):;{ \ > diff --git a/tests/multinode-ic-testsuite.at b/tests/ > multinode-ic-testsuite.at > new file mode 100644 > index 000000000..a75cc8b0c > --- /dev/null > +++ b/tests/multinode-ic-testsuite.at > @@ -0,0 +1,27 @@ > +AT_INIT > + > +AT_COPYRIGHT([Copyright (c) 2025 Red Hat, > + > +Licensed under the Apache License, Version 2.0 (the "License"); > +you may not use this file except in compliance with the License. > +You may obtain a copy of the License at: > + > + http://www.apache.org/licenses/LICENSE-2.0 > + > +Unless required by applicable law or agreed to in writing, software > +distributed under the License is distributed on an "AS IS" BASIS, > +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > +See the License for the specific language governing permissions and > +limitations under the License.]) > + > +m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) > +AT_ARG_OPTION([rebuild], [Do not use cached versions of databases]) > + > +m4_include([tests/ovs-macros.at]) > +m4_include([tests/ovsdb-macros.at]) > +m4_include([tests/ofproto-macros.at]) > +m4_include([tests/ovn-macros.at]) > +m4_include([tests/system-common-macros.at]) > +m4_include([tests/multinode-macros.at]) > We might not need all of those. > + > +m4_include([tests/multinode-ic.at]) > diff --git a/tests/multinode-ic.at b/tests/multinode-ic.at > new file mode 100644 > index 000000000..d6a52d882 > --- /dev/null > +++ b/tests/multinode-ic.at > @@ -0,0 +1,256 @@ > +AT_BANNER([ovn multinode interconnect system tests using > ovn-fake-multinode]) > + > +AT_SETUP([ovn multinode - Transit Router using basic functionality]) > + > +# Check that ovn-fake-multinode setup is up and running > +check_fake_multinode_setup > + > +# Delete the multinode NB and OVS resources before starting the test. > +cleanup_multinode_resources > + > +# Network topology > +# ┌─────────────────────────────────┐ > ┌────────────────────────────────┐ > +# │ │ │ > │ > +# │ ┌───────────────────┐ AZ1 │ │ AZ2 > ┌───────────────────┐ │ > +# │ │ external │ │ │ │ > │ │ > +# │ │ │ │ │ │ > │ │ > +# │ │ 192.168.100.10/24 │ │ │ │ > ................. │ │ > +# │ │ 1000::10/64 │ │ │ │ > │ │ > +# │ └─────────┬─────────┘ │ │ > └─────────┬─────────┘ │ > +# │ │ │ │ │ > │ > +# │ │ │ │ │ > │ > +# │ ┌─────────┴─────────┐ │ │ > ┌─────────┴─────────┐ │ > +# │ │ 192.168.100.1/24 │ │ │ │ 192.168.100.2/24 > │ │ > +# │ │ 1000::1/64 │ │ │ │ 1000::2/64 > │ │ > +# │ │ │ │ │ │ > │ │ > +# │ │ GW │ │ │ │ GW > │ │ > +# │ │ │ │ │ │ > │ │ > +# │ │ 100.65.0.1/30 │ │ │ │ 100.65.0.5/30 > │ │ > +# │ │ 100:65::1/126 │ │ │ │ 100:65::5/126 > │ │ > +# │ └─────────┬─────────┘ │ │ > └───────────────────┘ │ > +# │ │ │ │ │ > │ > +# │ │ Peer ports │ │ │ Peer > ports │ > +# │ │ │ │ │ > │ > +# │ > ┌─────────┴──────────────────│─────│──────────────────┴─────────┐ │ > +# │ │ 100.65.0.2/30 │ │ 100.65.0.6/30 > │ │ > +# │ │ 100:65::2/126 │ │ 100:65::6/126 > │ │ > +# │ │ │ │ > │ │ > +# │ │ │ TR │ > │ │ > +# │ │ │ │ > │ │ > +# │ │ 10.100.200.1/24 │ │ 10.100.200.1/24 > │ │ > +# │ │ 10:200::1/64 │ │ 10:200::1/64 > │ │ > +# │ > └─────────┬──────────────────│─────│────────────────────────────┘ │ > +# │ │ │ │ │ > │ > +# │ │ │ │ │ > │ > +# │ │ │ │ │ > │ > +# │ > ┌─────────┴──────────────────│─────│────────────────────────────┐ │ > +# │ │ │ TS │ > │ │ > +# │ > └─────────┬──────────────────│─────│────────────────────────────┘ │ > +# │ │ │ │ │ > │ > +# │ │ │ │ │ > │ > +# │ │ │ │ │ > │ > +# │ ┌─────────┴─────────┐ │ │ > ┌─────────┴─────────┐ │ > +# │ │ pod10 │ │ │ │ pod20 > │ │ > +# │ │ │ │ │ │ > │ │ > +# │ │ 10.100.200.10/24 │ │ │ │ 10.100.200.20/24 > │ │ > +# │ │ 10:200::10/64 │ │ │ │ 10:200::20/64 > │ │ > +# │ └───────────────────┘ │ │ > └───────────────────┘ │ > +# └─────────────────────────────────┘ > └────────────────────────────────┘ > + > +for i in 1 2; do > + chassis="ovn-chassis-$i" > + multinode_setup_northd $chassis > + multinode_setup_ic $chassis > +done > + > +for i in 1 2; do > + chassis="ovn-chassis-$i" > + ip=$(m_as $chassis ip -4 addr show eth1 | grep inet | awk '{print > $2}' | cut -d'/' -f1) > + > + #multinode_setup_northd $chassis > + multinode_setup_controller $chassis $chassis $ip $ip > + > + check m_as $chassis ovs-vsctl set open . > external_ids:ovn-monitor-all=true > + check m_as $chassis ovs-vsctl set open . > external_ids:ovn-is-interconn=true > + > + OVS_WAIT_UNTIL([m_as ovn-chassis-1 sleep 1]) > + > + check m_as $chassis ovn-nbctl ls-add public > + > + check m_as $chassis ovn-nbctl lsp-add public public-gw > + check m_as $chassis ovn-nbctl lsp-set-type public-gw router > + check m_as $chassis ovn-nbctl lsp-set-addresses public-gw router > + check m_as $chassis ovn-nbctl lsp-set-options public-gw > router-port=gw-public > + > + check m_as $chassis ovn-nbctl lr-add gw > + check m_as $chassis ovn-nbctl lrp-add gw gw-public 00:00:00:00:20:00 > 192.168.100.$i/24 1000::$i/64 > + > + check m_as $chassis ovn-nbctl set logical_router gw > options:chassis=$chassis > + > + # Add TR and set the same tunnel key for both chassis > + check m_as $chassis ovn-nbctl ls-add ts > + check m_as $chassis ovn-nbctl set logical_switch ts > other_config:requested-tnl-key=10 > + > + check m_as $chassis ovn-nbctl lsp-add ts ts-tr > + check m_as $chassis ovn-nbctl lsp-set-type ts-tr router > + check m_as $chassis ovn-nbctl lsp-set-addresses ts-tr router > + check m_as $chassis ovn-nbctl lsp-set-options ts-tr router-port=tr-ts > + > + # Add TS pods, with the same tunnel keys on both sides > + check m_as $chassis ovn-nbctl lsp-add ts pod10 > + check m_as $chassis ovn-nbctl lsp-set-addresses pod10 > "00:00:00:00:10:10 10.100.200.10 10:200::10" > + check m_as $chassis ovn-nbctl set logical_switch_port pod10 > options:requested-tnl-key=10 > + > + check m_as $chassis ovn-nbctl lsp-add ts pod20 > + check m_as $chassis ovn-nbctl lsp-set-addresses pod20 > "00:00:00:00:10:20 10.100.200.20 10:200::20" > + check m_as $chassis ovn-nbctl set logical_switch_port pod20 > options:requested-tnl-key=20 > + > + # Add mgmt pod > + check m_as $chassis ovn-nbctl lsp-add ts mgmt > + check m_as $chassis ovn-nbctl lsp-set-addresses mgmt > "00:00:00:00:10:11 10.100.200.11 10:200::11" > + check m_as $chassis ovn-nbctl set logical_switch_port mgmt > options:requested-tnl-key=11 > +done > + > +check m_as ovn-chassis-1 ovn-ic-nbctl --db=tcp:170.168.0.2:6645 tr-add tr > + > +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-ts 00:00:00:00:10:00 > 10.100.200.1/24 10:200::1/64 > +check m_as ovn-chassis-1 ovn-nbctl set logical_router tr > options:requested-tnl-key=20 > +check m_as ovn-chassis-1 ovn-nbctl lrp-set-gateway-chassis tr-ts > ovn-chassis-1 > + > +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-ts 00:00:00:00:10:00 > 10.100.200.1/24 10:200::1/64 > +check m_as ovn-chassis-2 ovn-nbctl set logical_router tr > options:requested-tnl-key=20 > +check m_as ovn-chassis-2 ovn-nbctl lrp-set-gateway-chassis tr-ts > ovn-chassis-2 > + > +OVS_WAIT_UNTIL([m_as ovn-chassis-1 ovn-nbctl lrp-list tr | grep tr-ts]) > +OVS_WAIT_UNTIL([m_as ovn-chassis-2 ovn-nbctl lrp-list tr | grep tr-ts]) > + > +# Add SNAT for the GW router that corresponds to "gw-tr" LRP IP > +check m_as ovn-chassis-1 ovn-nbctl lr-nat-add gw snat 100.65.0.1 > 192.168.100.0/24 > +check m_as ovn-chassis-1 ovn-nbctl lr-nat-add gw snat 100:65::1 1000::/64 > +check m_as ovn-chassis-2 ovn-nbctl lr-nat-add gw snat 100.65.0.5 > 192.168.100.0/24 > +check m_as ovn-chassis-2 ovn-nbctl lr-nat-add gw snat 100:65::5 1000::/64 > + > +# Add peer ports between GW and TR > +check m_as ovn-chassis-1 ovn-nbctl lrp-add gw gw-tr 00:00:00:00:30:01 > 100.65.0.1/30 100:65::1/126 peer=tr-gw > +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-gw 00:00:00:00:30:02 > 100.65.0.2/30 100:65::2/126 peer=gw-tr > + > +check m_as ovn-chassis-2 ovn-nbctl lrp-add gw gw-tr 00:00:00:00:30:05 > 100.65.0.5/30 100:65::5/126 peer=tr-gw > +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-gw 00:00:00:00:30:06 > 100.65.0.6/30 100:65::6/126 peer=gw-tr > + > +# Add routes for the TS subnet > +check m_as ovn-chassis-1 ovn-nbctl lr-route-add gw 10.100.200.0/24 > 100.65.0.2 > +check m_as ovn-chassis-1 ovn-nbctl lr-route-add gw 10:200::/64 100:65::2 > +check m_as ovn-chassis-2 ovn-nbctl lr-route-add gw 10.100.200.0/24 > 100.65.0.6 > +check m_as ovn-chassis-2 ovn-nbctl lr-route-add gw 10:200::/64 100:65::6 > + > +# Add LB on TS and condition NAT > +check m_as ovn-chassis-1 ovn-nbctl lb-add lb0 172.16.0.5:5656 > 10.100.200.10:2324 tcp > +check m_as ovn-chassis-1 ovn-nbctl ls-lb-add ts lb0 > +check m_as ovn-chassis-1 ovn-nbctl --match="eth.dst == 00:00:00:00:10:11" > lr-nat-add tr snat 172.16.0.2 10.100.200.0/24 > +check m_as ovn-chassis-1 ovn-nbctl set logical_router tr > options:ct-commit-all="true" > + > +# Add mutual remote ports > +check m_as ovn-chassis-1 ovn-nbctl lrp-add tr tr-az2 00:00:00:00:30:06 > 100.65.0.6/30 100:65::6/126 > +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-az2 > options:requested-chassis=ovn-chassis-2 > + > +check m_as ovn-chassis-2 ovn-nbctl lrp-add tr tr-az1 00:00:00:00:30:02 > 100.65.0.2/30 100:65::2/126 > +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-az1 > options:requested-chassis=ovn-chassis-1 > + > +# Important set the proper tunnel keys > +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-gw > options:requested-tnl-key=10 > +check m_as ovn-chassis-1 ovn-nbctl set logical_router_port tr-az2 > options:requested-tnl-key=20 > + > +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-gw > options:requested-tnl-key=20 > +check m_as ovn-chassis-2 ovn-nbctl set logical_router_port tr-az1 > options:requested-tnl-key=10 > + > +check m_as ovn-chassis-1 ovn-nbctl lsp-add public external > +check m_as ovn-chassis-1 ovn-nbctl lsp-set-addresses external > "00:00:00:00:20:10 192.168.100.10 1000::10" > + > +# Add mutual chassis > +m_as ovn-chassis-1 ovn-sbctl chassis-add ovn-chassis-2 geneve $(m_as > ovn-chassis-2 ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut > -d'/' -f1) > +m_as ovn-chassis-1 ovn-sbctl set chassis ovn-chassis-2 > other_config:is-remote=true > + > +m_as ovn-chassis-2 ovn-sbctl chassis-add ovn-chassis-1 geneve $(m_as > ovn-chassis-1 ip -4 addr show eth1 | grep inet | awk '{print $2}' | cut > -d'/' -f1) > +m_as ovn-chassis-2 ovn-sbctl set chassis ovn-chassis-1 > other_config:is-remote=true > + > +# Configure ports on the transit switch as remotes > +check m_as ovn-chassis-1 ovn-nbctl lsp-set-type pod20 remote > +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options pod10 > requested-chassis=ovn-chassis-1 > +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options mgmt > requested-chassis=ovn-chassis-1 > +check m_as ovn-chassis-1 ovn-nbctl lsp-set-options pod20 > requested-chassis=ovn-chassis-2 > + > +check m_as ovn-chassis-2 ovn-nbctl lsp-set-type pod10 remote > +check m_as ovn-chassis-2 ovn-nbctl lsp-set-type mgmt remote > +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options pod10 > requested-chassis=ovn-chassis-1 > +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options mgmt > requested-chassis=ovn-chassis-1 > +check m_as ovn-chassis-2 ovn-nbctl lsp-set-options pod20 > requested-chassis=ovn-chassis-2 > + > +m_as ovn-chassis-1 /data/create_fake_vm.sh external external > 00:00:00:00:20:10 1500 192.168.100.10 24 192.168.100.1 1000::10/64 1000::1 > +m_as ovn-chassis-1 /data/create_fake_vm.sh pod10 pod10 00:00:00:00:10:10 > 1500 10.100.200.10 24 10.100.200.1 10:200::10/64 10:200::1 > +m_as ovn-chassis-1 /data/create_fake_vm.sh mgmt mgmt 00:00:00:00:10:11 > 1500 10.100.200.11 24 10.100.200.1 10:200::11/64 10:200::1 > +m_as ovn-chassis-2 /data/create_fake_vm.sh pod20 pod20 00:00:00:00:10:20 > 1500 10.100.200.20 24 10.100.200.1 10:200::20/64 10:200::1 > + > +# We cannot use any of the helpers as they assume that there is only > single ovn-northd instance running > +check m_as ovn-chassis-1 ovn-nbctl --wait=hv sync > +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-1 ovn-sbctl --bare --columns > _uuid find Port_Binding logical_port=external up=true)"]) > +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-1 ovn-sbctl --bare --columns > _uuid find Port_Binding logical_port=pod10 up=true)"]) > +check m_as ovn-chassis-2 ovn-nbctl --wait=hv sync > +OVS_WAIT_UNTIL([test -n "$(m_as ovn-chassis-2 ovn-sbctl --bare --columns > _uuid find Port_Binding logical_port=pod20 up=true)"]) > + > +M_NS_CHECK_EXEC([ovn-chassis-1], [external], [ping -q -c 5 -i 0.3 -w 2 > 10.100.200.20 | FORMAT_PING], \ > +[0], [dnl > +5 packets transmitted, 5 received, 0% packet loss, time 0ms > +]) > + > +M_NS_CHECK_EXEC([ovn-chassis-1], [external], [ping -q -c 5 -i 0.3 -w 2 > 10:200::20 | FORMAT_PING], \ > +[0], [dnl > +5 packets transmitted, 5 received, 0% packet loss, time 0ms > +]) > + > +M_NS_CHECK_EXEC([ovn-chassis-1], [mgmt], [ip a a 172.16.100.2/24 dev > mgmt]) > +M_NS_DAEMONIZE([ovn-chassis-1], [pod10], [nc -e /bin/cat -v -l -o > server.log 10.100.200.10 2324], [pod10.pid]) > +M_START_TCPDUMP([ovn-chassis-1], [-neei pod10-p ip], [pod10]) > +M_START_TCPDUMP([ovn-chassis-1], [-neei mgmt-p ip], [mgmt]) > + > +m_as ovn-chassis-1 sh -c 'echo -e "Hello\nHello" > msg.expected' > +check m_as ovn-chassis-1 ovn-nbctl --policy="src-ip" lr-route-add tr > 10.100.200.0/24 10.100.200.11 > + > +check test $(m_as ovn-chassis-1 grep -c "skipping output to input port" \ > + /var/log/openvswitch/ovs-vswitchd.log) -eq 0 > +check test $(m_as ovn-chassis-2 grep -c "skipping output to input port" \ > + /var/log/openvswitch/ovs-vswitchd.log) -eq 0 > + > +M_NS_CHECK_EXEC([ovn-chassis-1], [mgmt], [sh -c '(echo "Hello"; sleep 3) > | nc -s 172.16.100.2 -o client.log 172.16.0.5 5656'], [0], [ignore], > [ignore]) > +check m_as ovn-chassis-1 cmp server.log msg.expected > +check m_as ovn-chassis-1 cmp client.log msg.expected > + > +echo "Chassis1" > +m_as ovn-chassis-1 ovn-sbctl show > +m_as ovn-chassis-1 ovn-nbctl show > +m_as ovn-chassis-1 ovs-vsctl show > + > +echo "Chassis2" > +a_as ovn-chassis-2 ovn-sbctl show > +m_as ovn-chassis-2 ovn-nbctl show > +m_as ovn-chassis-2 ovs-vsctl show > + > +m_as ovn-central-az1 ovn-ic-nbctl tr-del tr > + > +for i in 1 2; do > + chassis="ovn-chassis-$i" > + multinode_cleanup_ic $chassis > +done > + > +# Connect the chassis back to the original northd and remove northd per > chassis. > +for i in 1 2; do > + chassis="ovn-chassis-$i" > + ip=$(m_as $chassis ip -4 addr show eth1 | grep inet | awk '{print > $2}' | cut -d'/' -f1) > + > + multinode_setup_controller $chassis $chassis $ip "170.168.0.2" > + multinode_cleanup_northd $chassis > +done > + > +m_as ovn-chassis-1 killall tcpdump > +#cleanup_multinode_resources > nit: Leftover > + > +AT_CLEANUP > Well the test is using ovn-ic-nbctl just for tr, but there are also trp should be setup using ovn-ic. > diff --git a/tests/multinode-macros.at b/tests/multinode-macros.at > index 487696a62..4a86cef4a 100644 > --- a/tests/multinode-macros.at > +++ b/tests/multinode-macros.at > @@ -142,6 +142,7 @@ check_fake_multinode_setup_by_nodes() { > --ovn-northd-ssl-key=${SSL_CERTS_PATH}/ovn-privkey.pem \ > --ovn-northd-ssl-cert=${SSL_CERTS_PATH}/ovn-cert.pem \ > > --ovn-northd-ssl-ca-cert=${SSL_CERTS_PATH}/pki/switchca/cacert.pem" > + > nit: Extra newline. > else > REMOTE_PROT=tcp > CONTROLLER_SSL_ARGS="" > @@ -184,6 +185,9 @@ cleanup_multinode_resources_by_nodes() { > for i in $(m_as $c ovs-vsctl --bare --columns name list port | > grep patch); do > m_as $c ovs-vsctl del-port $i; > done > + for i in $(m_as $c ip -o link show | awk -F': ' '{print $2}' | > grep sw0p | awk -F'@' '{print $1}'); do > + m_as $c ip link delete $i; > + done > Why do we need this? > done > } > > @@ -217,6 +221,26 @@ multinode_setup_northd() { > m_as $c ovn-sbctl set-connection p${REMOTE_PROT}:6642 > } > > +# multinode_cleanup_ic NODE > +# > +# Removes previously set nothd on specified node > +multinode_cleanup_ic() { > + c=$1 > + # Cleanup existing one > + m_as $c /usr/share/ovn/scripts/ovn-ctl stop_ic > +} > + > +# multinode_setup_ic NODE > +# > +# Sets up ovn_ic on specified node. > +multinode_setup_ic() { > + c=$1 > + > + check m_as $c ovn-nbctl set NB_Global . name=$c > + m_as $c ovs-vsctl set open_vswitch . > external_ids:ovn-is-interconn=true > + m_as $c /usr/share/ovn/scripts/ovn-ctl start_ic --ovn-ic-nb-db=tcp: > 170.168.0.2:6645 --ovn-ic-sb-db=tcp:170.168.0.2:6646 > +} > If we are going with this route that's fine, but in order to test the ovn-ic properly we need two AZs. And as mentioned above we can do this enable ovn-ic on both chassis to have 2 AZs. So the setup and cleanup helpers should allow specification of the SB and NB ip and also the AZ name. > + > # multinode_setup_controller NODE ENCAP_IP REMOTE_IP [ENCAP_TYPE] > # > # Sets up controller on specified node. > -- > 2.51.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev Regards, Ales _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
