On 6/9/23 16:40, Eelco Chaudron wrote: > Allow the ovn-system tests to run on the OVS-DPDK infrastructure, > i.e., DPDK ports and mbuf memory. > > Co-authored-by: David Marchand <[email protected]> > Signed-off-by: David Marchand <[email protected]> > Signed-off-by: Eelco Chaudron <[email protected]> > --- > v2: No changes for this patch. > > tests/automake.mk | 23 +++++++-- > tests/ofproto-macros.at | 9 ++- > tests/system-dpdk-macros.at | 108 > ++++++++++++++++++++++++++++++++++++++++ > tests/system-dpdk-testsuite.at | 25 +++++++++ > tests/system-ovn.at | 11 ++++ > 5 files changed, 166 insertions(+), 10 deletions(-) > create mode 100644 tests/system-dpdk-macros.at > create mode 100644 tests/system-dpdk-testsuite.at > > diff --git a/tests/automake.mk b/tests/automake.mk > index fd5ee14af..eea0d00f4 100644 > --- a/tests/automake.mk > +++ b/tests/automake.mk > @@ -2,11 +2,13 @@ EXTRA_DIST += \ > $(COMMON_MACROS_AT) \ > $(TESTSUITE_AT) \ > $(SYSTEM_TESTSUITE_AT) \ > + $(SYSTEM_DPDK_TESTSUITE_AT) \ > $(SYSTEM_KMOD_TESTSUITE_AT) \ > $(SYSTEM_USERSPACE_TESTSUITE_AT) \ > $(PERF_TESTSUITE_AT) \ > $(MULTINODE_TESTSUITE_AT) \ > $(TESTSUITE) \ > + $(SYSTEM_DPDK_TESTSUITE) \ > $(SYSTEM_KMOD_TESTSUITE) \ > $(SYSTEM_USERSPACE_TESTSUITE) \ > $(PERF_TESTSUITE) \ > @@ -44,20 +46,22 @@ TESTSUITE_AT = \ > tests/ovn-ipsec.at \ > tests/ovn-vif-plug.at > > +SYSTEM_DPDK_TESTSUITE_AT = \ > + tests/system-dpdk-testsuite.at \ > + tests/system-dpdk-macros.at > + > SYSTEM_KMOD_TESTSUITE_AT = \ > - tests/system-common-macros.at \ > + tests/system-kmod-macros.at \ > tests/system-kmod-testsuite.at \ > - tests/system-kmod-macros.at > + tests/system-ovn-kmod.at > > SYSTEM_USERSPACE_TESTSUITE_AT = \ > tests/system-userspace-testsuite.at \ > - tests/system-ovn.at \ > tests/system-userspace-macros.at > > SYSTEM_TESTSUITE_AT = \ > tests/system-common-macros.at \ > - tests/system-ovn.at \ > - tests/system-ovn-kmod.at > + tests/system-ovn.at > > PERF_TESTSUITE_AT = \ > tests/perf-testsuite.at \ > @@ -73,6 +77,7 @@ check_SCRIPTS += tests/atlocal > TESTSUITE = $(srcdir)/tests/testsuite > TESTSUITE_PATCH = $(srcdir)/tests/testsuite.patch > TESTSUITE_DIR = $(abs_top_builddir)/tests/testsuite.dir > +SYSTEM_DPDK_TESTSUITE = $(srcdir)/tests/system-dpdk-testsuite > SYSTEM_KMOD_TESTSUITE = $(srcdir)/tests/system-kmod-testsuite > SYSTEM_USERSPACE_TESTSUITE = $(srcdir)/tests/system-userspace-testsuite > PERF_TESTSUITE = $(srcdir)/tests/perf-testsuite > @@ -180,6 +185,10 @@ check-userspace-valgrind: all $(valgrind_wrappers) > $(check_DATA) > check-helgrind: all $(valgrind_wrappers) $(check_DATA) > -$(SHELL) '$(TESTSUITE)' -C tests CHECK_VALGRIND=true > VALGRIND='$(HELGRIND)' AUTOTEST_PATH='tests/valgrind:$(AUTOTEST_PATH)' -d > $(TESTSUITEFLAGS) > > +check-system-dpdk: all > + set $(SHELL) '$(SYSTEM_DPDK_TESTSUITE)' -C tests > AUTOTEST_PATH='$(AUTOTEST_PATH)'; \ > + $(SUDO) "$$@" $(TESTSUITEFLAGS) -j1 || (test X'$(RECHECK)' = Xyes && > $(SUDO) "$$@" --recheck) > + > # Run kmod tests. Assume kernel modules has been installed or linked into > the kernel > check-kernel: all > set $(SHELL) '$(SYSTEM_KMOD_TESTSUITE)' -C tests > AUTOTEST_PATH='$(AUTOTEST_PATH)'; \ > @@ -232,6 +241,10 @@ $(TESTSUITE): package.m4 $(TESTSUITE_AT) > $(COMMON_MACROS_AT) > $(AM_V_at)mv [email protected] $@ > endif > > +$(SYSTEM_DPDK_TESTSUITE): package.m4 $(SYSTEM_TESTSUITE_AT) > $(SYSTEM_DPDK_TESTSUITE_AT) $(COMMON_MACROS_AT) > + $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] > + $(AM_V_at)mv [email protected] $@ > + > $(SYSTEM_KMOD_TESTSUITE): package.m4 $(SYSTEM_TESTSUITE_AT) > $(SYSTEM_KMOD_TESTSUITE_AT) $(COMMON_MACROS_AT) > $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected] > $(AM_V_at)mv [email protected] $@ > diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at > index 2e0bbd20b..f4ebdafc7 100644 > --- a/tests/ofproto-macros.at > +++ b/tests/ofproto-macros.at > @@ -218,11 +218,12 @@ m4_define([_OVS_VSWITCHD_START], > /ofproto|INFO|using datapath ID/d > /netdev_linux|INFO|.*device has unknown hardware address family/d > /ofproto|INFO|datapath ID changed to fedcba9876543210/d > -/dpdk|INFO|DPDK Disabled - Use other_config:dpdk-init to enable/d > /netlink_socket|INFO|netlink: could not enable listening to all nsid/d > /netdev: Flow API/d > /probe tc:/d > -/tc: Using policy/d']]) > +/tc: Using policy/d > +/dpdk|INFO|/d > +/dpdk|WARN|/d']]) > ]) > > # OVS_VSWITCHD_START([vsctl-args], [vsctl-output], [=override], > @@ -247,7 +248,7 @@ m4_define([OVS_VSWITCHD_START], > AT_CHECK([add_of_br 0 $1 m4_if([$2], [], [], [| uuidfilt])], [0], [$2]) > ]) > > -# check_logs scans through all *.log files (except '*.log' and testsuite.log) > +# check_logs scans through all *.log files (except '*.log' and > '*testsuite.log') > # and reports all WARN, ERR, EMER log entries. User can add custom sed > filters > # in $1. > m4_divert_push([PREPARE_TESTS]) > @@ -255,7 +256,7 @@ check_logs () { > local logs > for log in *.log; do > case ${log} in # ( > - '*.log'|testsuite.log) ;; # ( > + '*.log'|*testsuite.log) ;; # ( > *) logs="${logs} ${log}" ;; > esac > done > diff --git a/tests/system-dpdk-macros.at b/tests/system-dpdk-macros.at > new file mode 100644 > index 000000000..c1311121b > --- /dev/null > +++ b/tests/system-dpdk-macros.at > @@ -0,0 +1,108 @@ > +AT_COPYRIGHT([Copyright (c) 2023 Red Hat, Inc. > + > +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_include([tests/system-userspace-macros.at]) > + > + > +# OVS_DPDK_PRE_CHECK() > +# > +# Check prerequisites for DPDK tests. Following settings are checked: > +# - Hugepages > +# > +m4_define([OVS_DPDK_PRE_CHECK], > + [dnl Check Hugepages > + AT_CHECK([cat /proc/meminfo], [], [stdout]) > + AT_SKIP_IF([grep -E 'HugePages_Free: *0' stdout], [], [stdout]) > + AT_CHECK([mount], [], [stdout]) > + AT_CHECK([grep 'hugetlbfs' stdout], [], [stdout], []) > +]) > + > +m4_define([SYSTEM_DPDK_ALLOWED_LOGS],[ > +]) > + > +# OVS_TRAFFIC_VSWITCHD_START([vsctl-args], [vsctl-output], [=override]) > +# > +# Creates a database and starts ovsdb-server, starts ovs-vswitchd > +# connected to that database, calls ovs-vsctl to create a bridge named > +# br0 with predictable settings, passing 'vsctl-args' as additional > +# commands to ovs-vsctl. If 'vsctl-args' causes ovs-vsctl to provide > +# output (e.g. because it includes "create" commands) then 'vsctl-output' > +# specifies the expected output after filtering through uuidfilt. > +m4_define([OVS_TRAFFIC_VSWITCHD_START], > + [OVS_DPDK_PRE_CHECK() > + OVS_WAIT_WHILE([ip link show ovs-netdev]) > + _OVS_VSWITCHD_START([--disable-system], [-- set Open_vSwitch . > other_config:dpdk-init=true])
I didn't test this, but we should probbaly add dpdk-extra configuratio here as well, like this: dpdk-extra='"--log-level=pmd.*:error --no-pci' As we likley do not care about warnings coming from the drivers and we're not using any PCI devices, so no need to scan them. Best regards, Ilya Maximets. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
