On 9 Jun 2023, at 17:08, Ilya Maximets wrote:

> 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 <david.march...@redhat.com>
>> Signed-off-by: David Marchand <david.march...@redhat.com>
>> Signed-off-by: Eelco Chaudron <echau...@redhat.com>
>> ---
>> 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 $@.tmp $@
>>  endif
>>
>> +$(SYSTEM_DPDK_TESTSUITE): package.m4 $(SYSTEM_TESTSUITE_AT) 
>> $(SYSTEM_DPDK_TESTSUITE_AT) $(COMMON_MACROS_AT)
>> +    $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at
>> +    $(AM_V_at)mv $@.tmp $@
>> +
>>  $(SYSTEM_KMOD_TESTSUITE): package.m4 $(SYSTEM_TESTSUITE_AT) 
>> $(SYSTEM_KMOD_TESTSUITE_AT) $(COMMON_MACROS_AT)
>>      $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at
>>      $(AM_V_at)mv $@.tmp $@
>> 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.

We do not have any PMD drivers compiled, so I guess no warning should be 
submitted, but I’ll add it just to be safe.
Will also add the --no-pci options to skip scanning and speed up testing.

If I get no further feedback on the patch set I’ll send a v3 in a couple of 
days.

//Eelco


_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to