On 6/27/23 12:11, 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="nocheck parallel=32" \
> openvswitch_3.1.90-1.dsc \
> -- qemu \
> --cpus 32 \
> --ram-size 8129 \
> autopkgtest-mantic-amd64.img
>
> This patch also adds Cirrus CI jobs that run these tests.
>
> 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]>
Hi, Frode. Thanks for the patch!
Though it looks like there are 3 separate changes:
- make debian-source
- autopkgtest
- CI
Could you split the patch in 3?
I also find it a bit confusing that DPDK test is running AF_XDP
testsuite as well. May not be needed?
Also, it looks like tests are taking less than half of the runtime
in CI. Is there a way to re-use the build for multiple tests maybe?
I'm not sure.
> ---
> .cirrus.yml | 102 ++++++++++++++
> .gitignore | 1 +
> Documentation/intro/install/debian.rst | 23 +++-
> debian/automake.mk | 33 ++++-
> debian/rules | 5 +
> debian/tests/afxdp | 1 +
> debian/tests/control | 41 +++++-
> debian/tests/dpdk | 46 +------
> debian/tests/kmod | 1 +
> debian/tests/offloads | 1 +
> debian/tests/openflow.py | 66 ---------
> debian/tests/run-tests.sh | 183 +++++++++++++++++++++++++
> debian/tests/userspace | 1 +
> debian/tests/vanilla | 29 ----
> 14 files changed, 380 insertions(+), 153 deletions(-)
> create mode 120000 debian/tests/afxdp
> mode change 100755 => 120000 debian/tests/dpdk
> create mode 120000 debian/tests/kmod
> 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/userspace
> delete mode 100755 debian/tests/vanilla
>
> diff --git a/.cirrus.yml b/.cirrus.yml
> index 952d96431..7d3ae86d9 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -32,3 +32,105 @@ freebsd_build_task:
> check_script:
> - gmake -j8 check TESTSUITEFLAGS=-j8 RECHECK=yes
> || { cat ./tests/testsuite.log; exit 1; }
> +
> +# This tests both the upstream OVS Debian packaging recipe and executes all
> the
> +# system testsuites on Ubuntu.
> +ubuntu_autopkgtest_latest_task:
> +
> + compute_engine_instance:
> + image_project: ubuntu-os-cloud
> + image: family/ubuntu-2304-amd64
> + platform: linux
> + cpu: 4
> + memory: 4G
> +
> + env:
> + DEPENDENCIES: |
> + build-essential fakeroot dpkg-dev devscripts equivs autopkgtest
> autodep8
> + libbpf-dev libxdp-dev
> + DPDK: shared
> + matrix:
> + TEST_NAME: afxdp
> + TEST_NAME: dpdk
> + TEST_NAME: kmod
> + # Pending resolution of https://launchpad.net/bugs/2020677
> + # TEST_NAME: offloads
> + TEST_NAME: userspace
> +
> + prepare_script: |
> + apt-get update
> + if [ "${DPDK}" = no ]; then
> + echo "Skipping DPDK dependency."
> + else
> + apt-get -y install libdpdk-dev
> + fi
> + apt-get --yes install linux-headers-$(uname -r) ${DEPENDENCIES}
> +
> + configure_script: |
> + ./boot.sh
> + ./configure \
> + --prefix=/usr \
> + --localstatedir=/var \
> + --sysconfdir=/etc \
> + --with-dpdk=${DPDK}
> +
> + build_script:
> + - make debian-source
> +
> + check_script: |
> + if [ "${DPDK}" = "no" ]; then
> + deb_dpdk_build_opt="nodpdk"
> + else
> + deb_dpdk_build_opt=""
> + fi
> + autopkgtest \
> + --env DEB_BUILD_OPTIONS="nocheck parallel=8 ${deb_dpdk_build_opt}" \
> + --test-name $TEST_NAME \
> + *.dsc \
> + -- null
> +
> +ubuntu_autopkgtest_lts_task:
> +
> + compute_engine_instance:
> + image_project: ubuntu-os-cloud
> + image: family/ubuntu-2204-lts
> + platform: linux
> + cpu: 4
> + memory: 4G
> +
> + env:
> + DEPENDENCIES: |
> + build-essential fakeroot dpkg-dev devscripts equivs autopkgtest
> autodep8
> + DPDK: no
> + matrix:
> + TEST_NAME: kmod
> + # Pending resolution of https://launchpad.net/bugs/2020677
> + # TEST_NAME: offloads
> + TEST_NAME: userspace
> +
> + prepare_script: |
> + apt-get update
> + apt-get --yes install linux-headers-$(uname -r) ${DEPENDENCIES}
> +
> + configure_script: |
> + ./boot.sh
> + ./configure \
> + --prefix=/usr \
> + --localstatedir=/var \
> + --sysconfdir=/etc \
> + --with-dpdk=${DPDK}
> +
> + build_script:
> + - make debian-source
> +
> + check_script: |
> + if [ "${DPDK}" = "no" ]; then
> + deb_dpdk_build_opt="nodpdk"
> + else
> + deb_dpdk_build_opt=""
> + fi
> + autopkgtest \
> + --env DEB_BUILD_OPTIONS="nocheck parallel=8 ${deb_dpdk_build_opt}" \
> + --test-name $TEST_NAME \
> + *.dsc \
> + -- null
There seems to be some duplication here. Maybe we can just define
a matrix with 6 sets of variables? Each set with an image family
and a test name? Maybe also CPU number. The only test that needs
4 cores is DPDK. And we have 16 cores available in parallel. We
can run 5 jobs with 2 cores each and 1 job with 4 cores. This way
we'll be able to run all the jobs in parallel saving a noticeable
amount of time.
What do you think?
We may also try to use the templating functionality to avoid
duplication at least:
https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev