On 6/20/23 10:08, Frode Nordahl wrote:
> The autopkgtests [0][1] are relevant in an upstream context
> because an Open vSwitch contributor may want to have a quick
> way of running the upstream system testsuites on recent
> Debian/Ubuntu releases in an automated and contained manner.
>
> During the Debian/Ubuntu/upstream package source sync work [2], a
> relatively naive autopkgtest was added. It had been around since
> Open vSwitch was initially packaged many years ago.
>
> Replace the autopkgtest with a test that runs all the upstream
> system testsuites instead.
>
> To run the autopkgtest, take a look at [1] for prerequisites then:
>
> ./boot.sh && \
> ./configure \
> --prefix=/usr \
> --localstatedir=/var \
> ----sysconfdir=/etc \
> --with-dpdk=shared && \
> make debian-source
> autopkgtest \
> --env DEB_BUILD_OPTIONS="afxdp nocheck parallel=32" \
> openvswitch_3.1.90-1.dsc \
> -- qemu \
> --cpus 32 \
> --ram-size 8129 \
> autopkgtest-mantic-amd64.img
>
> 0: https://wiki.debian.org/ContinuousIntegration/autopkgtest
> 1: https://packaging.ubuntu.com/html/auto-pkg-test.html
> 2: https://mail.openvswitch.org/pipermail/ovs-dev/2022-July/396219.html
>
> Signed-off-by: Frode Nordahl <[email protected]>
> ---
> .gitignore | 1 +
> debian/automake.mk | 31 ++++++-
> debian/rules | 5 ++
> debian/tests/afxdp | 1 +
> debian/tests/control | 38 ++++++--
> debian/tests/dpdk | 46 +---------
> debian/tests/kernel | 1 +
> debian/tests/offloads | 1 +
> debian/tests/openflow.py | 66 --------------
> debian/tests/run-tests.sh | 160 ++++++++++++++++++++++++++++++++++
> debian/tests/system-userspace | 1 +
> debian/tests/vanilla | 29 ------
> 12 files changed, 230 insertions(+), 150 deletions(-)
> create mode 120000 debian/tests/afxdp
> mode change 100755 => 120000 debian/tests/dpdk
> create mode 120000 debian/tests/kernel
> create mode 120000 debian/tests/offloads
> delete mode 100755 debian/tests/openflow.py
> create mode 100755 debian/tests/run-tests.sh
> create mode 120000 debian/tests/system-userspace
> delete mode 100755 debian/tests/vanilla
>
> diff --git a/.gitignore b/.gitignore
> index 26ed8d3d0..3d4f17b8a 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -75,6 +75,7 @@ OvsDpInterface.h
> testsuite.tmp.orig
> /rpm/
> /openvswitch*.tar.gz
> +/openvswitch*.dsc
> /tests/lcov/
> /Documentation/_build
> /.venv
> diff --git a/debian/automake.mk b/debian/automake.mk
> index 3195964c9..3e0a38edd 100644
> --- a/debian/automake.mk
> +++ b/debian/automake.mk
> @@ -61,10 +61,13 @@ EXTRA_DIST += \
> debian/rules \
> debian/source/format \
> debian/source/lintian-overrides \
> + debian/tests/afxdp \
> debian/tests/control \
> debian/tests/dpdk \
> - debian/tests/openflow.py \
> - debian/tests/vanilla \
> + debian/tests/kernel \
> + debian/tests/offloads \
> + debian/tests/run-tests.sh \
> + debian/tests/system-userspace \
> debian/watch
>
> check-debian-changelog-version:
> @@ -125,7 +128,6 @@ CLEANFILES += debian/control
> debian: debian/copyright debian/control
> .PHONY: debian
>
> -
> debian-deb: debian
> @if test X"$(srcdir)" != X"$(top_builddir)"; then
> \
> echo "Debian packages should be built from $(abs_srcdir)/";
> \
> @@ -144,3 +146,26 @@ else
> $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc` nodpdk" \
> fakeroot debian/rules binary
> endif
> +
> +debian-source: debian
> + @if test X"$(srcdir)" != X"$(top_builddir)"; then
> \
> + echo "Debian packages should be built from $(abs_srcdir)/";
> \
> + exit 1;
> \
> + fi
> + cp $(srcdir)/debian/control.in $(srcdir)/debian/control
> + $(update_deb_copyright)
> + $(update_deb_control_afxdp)
> + $(update_deb_control_dpdk)
> + $(AM_V_GEN) $(MAKE) distdir
> + cp $(srcdir)/debian/control $(srcdir)/debian/copyright \
> + $(distdir)/debian/
> + $(AM_V_GEN) tardir=$(distdir) && $(am__tar) | \
> + eval GZIP= gzip $(GZIP_ENV) \
> + -c >$(PACKAGE_NAME)_$(PACKAGE_VERSION).orig.tar.gz
> + cd $(distdir); \
> + $(AM_V_GEN) dpkg-source --compression=gzip -b .
> + $(am__post_remove_distdir)
> +
> +DISTCLEANFILES += $(PACKAGE_NAME)_$(PACKAGE_VERSION)-1.debian.tar.gz \
> + $(PACKAGE_NAME)_$(PACKAGE_VERSION).orig.tar.gz \
> + $(PACKAGE_NAME)_$(PACKAGE_VERSION)-1.dsc
> diff --git a/debian/rules b/debian/rules
> index 8ed19db70..aa80737ad 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -97,6 +97,11 @@ endif
>
> execute_before_dh_auto_clean:
> find . -name "*.pyc" -delete
> + test -f debian/control && cp debian/control debian/control.save.$(PPID)
> +
> +execute_after_dh_auto_clean:
> + test -f debian/control.save.$(PPID) && \
> + mv debian/control.save.$(PPID) debian/control
>
> override_dh_auto_install:
> dh_auto_install --sourcedirectory=_debian
> diff --git a/debian/tests/afxdp b/debian/tests/afxdp
> new file mode 120000
> index 000000000..7080a3249
> --- /dev/null
> +++ b/debian/tests/afxdp
> @@ -0,0 +1 @@
> +run-tests.sh
> \ No newline at end of file
> diff --git a/debian/tests/control b/debian/tests/control
> index b481ed53c..29a65fb12 100644
> --- a/debian/tests/control
> +++ b/debian/tests/control
> @@ -1,8 +1,32 @@
> -Tests: vanilla dpdk
> +Tests: afxdp, kernel, offloads, system-userspace
> Depends:
> - iperf,
> - mininet (>= 2.2.0~),
> - openvswitch-switch,
> - openvswitch-switch-dpdk [amd64 i386],
> - openvswitch-testcontroller,
> -Restrictions: needs-root rw-build-tree isolation-machine
> + @,
> + @builddeps@,
> + conntrack,
> + net-tools,
> + netcat-openbsd,
> + tcpdump,
> + python3-pyftpdlib,
> +Restrictions:
> + allow-stderr,
> + isolation-machine,
> + needs-root,
> + rw-build-tree,
> +
> +# The dpdk tests are marked `skippable`, because they have environment
> specific
> +# requirements which may or may not be available at runtime (hugepages
> setup).
> +Tests: dpdk
> +Depends:
> + @,
> + @builddeps@,
> + conntrack,
> + dpdk-dev [amd64 i386 ppc64el arm64 riscv64],
I'm not familiar with the syntax here and I didn't test, but shouldn't
@builddeps@ already include the dpdk-dev ?
> + net-tools,
> + netcat-openbsd,
> + tcpdump,
> + python3-pyftpdlib,
> +Restrictions:
> + allow-stderr,
> + isolation-machine,
> + needs-root,
> + skippable,
> diff --git a/debian/tests/dpdk b/debian/tests/dpdk
> deleted file mode 100755
> index 2aabae050..000000000
> --- a/debian/tests/dpdk
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -#!/bin/sh
> -
> -set -e
> -
> -if [ ! -x /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk ]; then
> - echo "DPDK enabled binary not detected - skipping"
> - exit 0
> -fi
> -
> -sse3flag=$(sed -n "/^flags.*sse3/p" < /proc/cpuinfo | wc -l)
> -if [ "${sse3flag}" -eq 0 ]; then
> - echo "sse3 not available in test environment"
> - echo "for adt-virt-qemu please consider adding --qemu-options='-cpu
> qemu64,+ssse3'"
> - echo "SKIPPING"
> - exit 0
> -fi
> -
> -update-alternatives --set ovs-vswitchd \
> - /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
> -service openvswitch-switch restart
> -
> -modprobe openvswitch || true
> -
> -echo "kernel modules loaded: "
> -# Check that ovs loaded
> -lsmod | grep "openvswitch"
> -echo "OK"
> -
> -echo "Checking daemons: "
> -pgrep ovs-vswitchd
> -pgrep ovsdb-server
> -echo "OK"
> -
> -echo "stop conflicting openvswitch testcontroller"
> -systemctl stop openvswitch-testcontroller || true
> -
> -if dpkg --compare-versions "$(dpkg-query --showformat '${Version}\n' --show
> mininet)" ge "2.3.0-1"; then
> - PYCMD="python3"
> -else
> - PYCMD="python2"
> -fi
> -
> -printf "running openflow tests using mininet"
> -${PYCMD} `dirname $0`/openflow.py 2>&1
> -echo "OK"
> diff --git a/debian/tests/dpdk b/debian/tests/dpdk
> new file mode 120000
> index 000000000..7080a3249
> --- /dev/null
> +++ b/debian/tests/dpdk
> @@ -0,0 +1 @@
> +run-tests.sh
> \ No newline at end of file
Can we add some '\n' characters at the end to new files throughout the patch?
Or will it break something?
Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev