Skip to content

Commit

Permalink
gitlab: add optional job to run flaky avocado tests
Browse files Browse the repository at this point in the history
One problem with flaky tests is they often only fail under CI
conditions which makes it hard to debug. We add an optional allow_fail
job so developers can trigger the only the flaky tests in the CI
environment if they are debugging.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20231201093633.2551497-8-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed Dec 1, 2023
1 parent aeb5f8f commit 5d25fcb
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 7 deletions.
30 changes: 30 additions & 0 deletions .gitlab-ci.d/buildtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,36 @@ avocado-system-opensuse:
MAKE_CHECK_ARGS: check-avocado
AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64

#
# Flaky tests. We don't run these by default and they are allow fail
# but often the CI system is the only way to trigger the failures.
#

build-system-flaky:
extends:
- .native_build_job_template
- .native_build_artifact_template
needs:
job: amd64-debian-container
variables:
IMAGE: debian
QEMU_JOB_OPTIONAL: 1
TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu
ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu
MAKE_CHECK_ARGS: check-build

avocado-system-flaky:
extends: .avocado_test_job_template
needs:
- job: build-system-flaky
artifacts: true
allow_failure: true
variables:
IMAGE: debian
MAKE_CHECK_ARGS: check-avocado
QEMU_JOB_OPTIONAL: 1
QEMU_TEST_FLAKY_TESTS: 1
AVOCADO_TAGS: flaky

# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
# the configure script. The container doesn't contain Xen headers so
Expand Down
15 changes: 8 additions & 7 deletions docs/devel/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1387,16 +1387,17 @@ the code snippet below:
def test(self):
do_something()
Tests should not live in this state forever and should either be fixed
or eventually removed.

To run such tests locally you will need to set the environment
variable. For example:
You can also add ``:avocado: tags=flaky`` to the test meta-data so
only the flaky tests can be run as a group:

.. code::
env QEMU_TEST_FLAKY_TESTS=1 ./pyvenv/bin/avocado run \
tests/avocado/boot_linux.py:BootLinuxPPC64.test_pseries_tcg
env QEMU_TEST_FLAKY_TESTS=1 ./pyvenv/bin/avocado \
run tests/avocado -filter-by-tags=flaky
Tests should not live in this state forever and should either be fixed
or eventually removed.


Uninstalling Avocado
~~~~~~~~~~~~~~~~~~~~
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/boot_linux.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ def test_pseries_tcg(self):
"""
:avocado: tags=machine:pseries
:avocado: tags=accel:tcg
:avocado: tags=flaky
"""
self.require_accelerator("tcg")
self.vm.add_args("-accel", "tcg")
Expand All @@ -118,6 +119,7 @@ def test_s390_ccw_virtio_tcg(self):
"""
:avocado: tags=machine:s390-ccw-virtio
:avocado: tags=accel:tcg
:avocado: tags=flaky
"""
self.require_accelerator("tcg")
self.vm.add_args("-accel", "tcg")
Expand Down
1 change: 1 addition & 0 deletions tests/avocado/boot_linux_console.py
Original file line number Diff line number Diff line change
Expand Up @@ -1425,6 +1425,7 @@ def test_sh4_r2d(self):
"""
:avocado: tags=arch:sh4
:avocado: tags=machine:r2d
:avocado: tags=flaky
"""
tar_hash = 'fe06a4fd8ccbf2e27928d64472939d47829d4c7e'
self.vm.add_args('-append', 'console=ttySC1')
Expand Down
1 change: 1 addition & 0 deletions tests/avocado/intel_iommu.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class IntelIOMMU(LinuxTest):
:avocado: tags=machine:q35
:avocado: tags=accel:kvm
:avocado: tags=intel_iommu
:avocado: tags=flaky
"""

IOMMU_ADDON = ',iommu_platform=on,disable-modern=off,disable-legacy=on'
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/linux_initrd.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ def test_with_2gib_file_should_exit_error_msg_with_linux_v3_6(self):

def test_with_2gib_file_should_work_with_linux_v4_16(self):
"""
:avocado: tags=flaky
QEMU has supported up to 4 GiB initrd for recent kernel
Expect guest can reach 'Unpacking initramfs...'
"""
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/machine_aspeed.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ def test_arm_ast2500_evb_sdk(self):
"""
:avocado: tags=arch:arm
:avocado: tags=machine:ast2500-evb
:avocado: tags=flaky
"""

image_url = ('https://github.com/AspeedTech-BMC/openbmc/releases/'
Expand All @@ -336,6 +337,7 @@ def test_arm_ast2600_evb_sdk(self):
"""
:avocado: tags=arch:arm
:avocado: tags=machine:ast2600-evb
:avocado: tags=flaky
"""

image_url = ('https://github.com/AspeedTech-BMC/openbmc/releases/'
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/machine_mips_malta.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def test_mips_malta_i6400_framebuffer_logo_7cores(self):
:avocado: tags=machine:malta
:avocado: tags=cpu:I6400
:avocado: tags=mips:smp
:avocado: tags=flaky
"""
self.do_test_i6400_framebuffer_logo(7)

Expand All @@ -120,6 +121,7 @@ def test_mips_malta_i6400_framebuffer_logo_8cores(self):
:avocado: tags=machine:malta
:avocado: tags=cpu:I6400
:avocado: tags=mips:smp
:avocado: tags=flaky
"""
self.do_test_i6400_framebuffer_logo(8)

Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/machine_rx_gdbsim.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ def test_uboot(self):
:avocado: tags=arch:rx
:avocado: tags=machine:gdbsim-r5f562n8
:avocado: tags=endian:little
:avocado: tags=flaky
"""
uboot_url = ('https://acc.dl.osdn.jp/users/23/23888/u-boot.bin.gz')
uboot_hash = '9b78dbd43b40b2526848c0b1ce9de02c24f4dcdb'
Expand All @@ -56,6 +57,7 @@ def test_linux_sash(self):
:avocado: tags=arch:rx
:avocado: tags=machine:gdbsim-r5f562n7
:avocado: tags=endian:little
:avocado: tags=flaky
"""
dtb_url = ('https://acc.dl.osdn.jp/users/23/23887/rx-virt.dtb')
dtb_hash = '7b4e4e2c71905da44e86ce47adee2210b026ac18'
Expand Down
1 change: 1 addition & 0 deletions tests/avocado/machine_s390_ccw_virtio.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ def test_s390x_fedora(self):
:avocado: tags=device:virtio-gpu
:avocado: tags=device:virtio-crypto
:avocado: tags=device:virtio-net
:avocado: tags=flaky
"""

kernel_url = ('https://archives.fedoraproject.org/pub/archive'
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/replay_kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ def test_x86_64_pc(self):
"""
:avocado: tags=arch:x86_64
:avocado: tags=machine:pc
:avocado: tags=flaky
"""
kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora'
'/linux/releases/29/Everything/x86_64/os/images/pxeboot'
Expand Down Expand Up @@ -186,6 +187,7 @@ def test_arm_cubieboard_initrd(self):
"""
:avocado: tags=arch:arm
:avocado: tags=machine:cubieboard
:avocado: tags=flaky
"""
deb_url = ('https://apt.armbian.com/pool/main/l/'
'linux-5.10.16-sunxi/linux-image-current-sunxi_21.02.2_armhf.deb')
Expand Down
2 changes: 2 additions & 0 deletions tests/avocado/reverse_debugging.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ def test_ppc64_pseries(self):
"""
:avocado: tags=arch:ppc64
:avocado: tags=machine:pseries
:avocado: tags=flaky
"""
# SLOF branches back to its entry point, which causes this test
# to take the 'hit a breakpoint again' path. That's not a problem,
Expand All @@ -269,6 +270,7 @@ def test_ppc64_powernv(self):
"""
:avocado: tags=arch:ppc64
:avocado: tags=machine:powernv
:avocado: tags=flaky
"""
self.endian_is_le = False
self.reverse_debugging()
1 change: 1 addition & 0 deletions tests/avocado/smmu.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class SMMU(LinuxTest):
:avocado: tags=machine:virt
:avocado: tags=distro:fedora
:avocado: tags=smmu
:avocado: tags=flaky
"""

IOMMU_ADDON = ',iommu_platform=on,disable-modern=off,disable-legacy=on'
Expand Down
1 change: 1 addition & 0 deletions tests/avocado/tuxrun_baselines.py
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ def test_sh4(self):
:avocado: tags=image:zImage
:avocado: tags=root:sda
:avocado: tags=console:ttySC1
:avocado: tags=flaky
"""
sums = { "rootfs.ext4.zst" :
"3592a7a3d5a641e8b9821449e77bc43c9904a56c30d45da0694349cfd86743fd",
Expand Down

0 comments on commit 5d25fcb

Please sign in to comment.