Message ID | 20250325200026.344006-12-thuth@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Convert remaining Avocado tests to functional | expand |
On Tue, Mar 25, 2025 at 09:00:19PM +0100, Thomas Huth wrote: > From: Thomas Huth <thuth@redhat.com> > > This way we can do a full boot in record-replay mode and > should get a similar test coverage compared to the old > replay test from tests/avocado/replay_linux.py. Thus remove > the x86 avocado replay_linux test now. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/avocado/replay_linux.py | 46 -------------------------- > tests/functional/test_x86_64_replay.py | 43 ++++++++++++++++++------ > 2 files changed, 33 insertions(+), 56 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/test_x86_64_replay.py > index 180f23a60c5..27287d452dc 100755 > --- a/tests/functional/test_x86_64_replay.py > +++ b/tests/functional/test_x86_64_replay.py > @@ -5,30 +5,53 @@ > # > # SPDX-License-Identifier: GPL-2.0-or-later > > -from qemu_test import Asset, skipFlakyTest > +from subprocess import check_call, DEVNULL > + > +from qemu_test import Asset, skipFlakyTest, get_qemu_img > from replay_kernel import ReplayKernelBase > > > class X86Replay(ReplayKernelBase): > > ASSET_KERNEL = Asset( > - ('https://archives.fedoraproject.org/pub/archive/fedora/linux' > - '/releases/29/Everything/x86_64/os/images/pxeboot/vmlinuz'), > - '8f237d84712b1b411baf3af2aeaaee10b9aae8e345ec265b87ab3a39639eb143') > + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/bzImage', > + 'f57bfc6553bcd6e0a54aab86095bf642b33b5571d14e3af1731b18c87ed5aef8') > + > + ASSET_ROOTFS = Asset( > + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/rootfs.ext4.zst', > + '4b8b2a99117519c5290e1202cb36eb6c7aaba92b357b5160f5970cf5fb78a751') As a general question, I wonder if we want to add some logic to the pre-cache job to clean up old cached files. With regards, Daniel
On 26/03/2025 10.43, Daniel P. Berrangé wrote: > On Tue, Mar 25, 2025 at 09:00:19PM +0100, Thomas Huth wrote: >> From: Thomas Huth <thuth@redhat.com> >> >> This way we can do a full boot in record-replay mode and >> should get a similar test coverage compared to the old >> replay test from tests/avocado/replay_linux.py. Thus remove >> the x86 avocado replay_linux test now. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> tests/avocado/replay_linux.py | 46 -------------------------- >> tests/functional/test_x86_64_replay.py | 43 ++++++++++++++++++------ >> 2 files changed, 33 insertions(+), 56 deletions(-) > > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > >> diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/test_x86_64_replay.py >> index 180f23a60c5..27287d452dc 100755 >> --- a/tests/functional/test_x86_64_replay.py >> +++ b/tests/functional/test_x86_64_replay.py >> @@ -5,30 +5,53 @@ >> # >> # SPDX-License-Identifier: GPL-2.0-or-later >> >> -from qemu_test import Asset, skipFlakyTest >> +from subprocess import check_call, DEVNULL >> + >> +from qemu_test import Asset, skipFlakyTest, get_qemu_img >> from replay_kernel import ReplayKernelBase >> >> >> class X86Replay(ReplayKernelBase): >> >> ASSET_KERNEL = Asset( >> - ('https://archives.fedoraproject.org/pub/archive/fedora/linux' >> - '/releases/29/Everything/x86_64/os/images/pxeboot/vmlinuz'), >> - '8f237d84712b1b411baf3af2aeaaee10b9aae8e345ec265b87ab3a39639eb143') >> + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/bzImage', >> + 'f57bfc6553bcd6e0a54aab86095bf642b33b5571d14e3af1731b18c87ed5aef8') >> + >> + ASSET_ROOTFS = Asset( >> + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/rootfs.ext4.zst', >> + '4b8b2a99117519c5290e1202cb36eb6c7aaba92b357b5160f5970cf5fb78a751') > > > As a general question, I wonder if we want to add some logic to the > pre-cache job to clean up old cached files. Yes, I also asked myself that question already. Being a "cache", there should also be a way to evict old files that are not used anymore. Maybe we could update the timestamp of the assets each time they are used, and when doing "make clean", we also check the cache and delete the assets with timestamps older than 6 months or so? Thomas
On Wed, Mar 26, 2025 at 10:54:53AM +0100, Thomas Huth wrote: > On 26/03/2025 10.43, Daniel P. Berrangé wrote: > > On Tue, Mar 25, 2025 at 09:00:19PM +0100, Thomas Huth wrote: > > > From: Thomas Huth <thuth@redhat.com> > > > > > > This way we can do a full boot in record-replay mode and > > > should get a similar test coverage compared to the old > > > replay test from tests/avocado/replay_linux.py. Thus remove > > > the x86 avocado replay_linux test now. > > > > > > Signed-off-by: Thomas Huth <thuth@redhat.com> > > > --- > > > tests/avocado/replay_linux.py | 46 -------------------------- > > > tests/functional/test_x86_64_replay.py | 43 ++++++++++++++++++------ > > > 2 files changed, 33 insertions(+), 56 deletions(-) > > > > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > > > > > diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/test_x86_64_replay.py > > > index 180f23a60c5..27287d452dc 100755 > > > --- a/tests/functional/test_x86_64_replay.py > > > +++ b/tests/functional/test_x86_64_replay.py > > > @@ -5,30 +5,53 @@ > > > # > > > # SPDX-License-Identifier: GPL-2.0-or-later > > > -from qemu_test import Asset, skipFlakyTest > > > +from subprocess import check_call, DEVNULL > > > + > > > +from qemu_test import Asset, skipFlakyTest, get_qemu_img > > > from replay_kernel import ReplayKernelBase > > > class X86Replay(ReplayKernelBase): > > > ASSET_KERNEL = Asset( > > > - ('https://archives.fedoraproject.org/pub/archive/fedora/linux' > > > - '/releases/29/Everything/x86_64/os/images/pxeboot/vmlinuz'), > > > - '8f237d84712b1b411baf3af2aeaaee10b9aae8e345ec265b87ab3a39639eb143') > > > + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/bzImage', > > > + 'f57bfc6553bcd6e0a54aab86095bf642b33b5571d14e3af1731b18c87ed5aef8') > > > + > > > + ASSET_ROOTFS = Asset( > > > + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/rootfs.ext4.zst', > > > + '4b8b2a99117519c5290e1202cb36eb6c7aaba92b357b5160f5970cf5fb78a751') > > > > > > As a general question, I wonder if we want to add some logic to the > > pre-cache job to clean up old cached files. > > Yes, I also asked myself that question already. Being a "cache", there > should also be a way to evict old files that are not used anymore. > Maybe we could update the timestamp of the assets each time they are used, > and when doing "make clean", we also check the cache and delete the assets > with timestamps older than 6 months or so? Yeah, some time based check + "touch" would be needed, so we don't aggressively purge files cached by a dev's use a different branch that happens to not be checked out currently. With regards, Daniel
diff --git a/tests/avocado/replay_linux.py b/tests/avocado/replay_linux.py index 59169224353..6ba283d3bf6 100644 --- a/tests/avocado/replay_linux.py +++ b/tests/avocado/replay_linux.py @@ -118,52 +118,6 @@ def run_replay_dump(self, replay_path): except subprocess.CalledProcessError: self.fail('replay-dump.py failed') -@skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') -class ReplayLinuxX8664(ReplayLinux): - """ - :avocado: tags=arch:x86_64 - :avocado: tags=accel:tcg - """ - - chksum = 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0' - - def test_pc_i440fx(self): - """ - :avocado: tags=machine:pc - """ - self.run_rr(shift=1) - - def test_pc_q35(self): - """ - :avocado: tags=machine:q35 - """ - self.run_rr(shift=3) - -@skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') -class ReplayLinuxX8664Virtio(ReplayLinux): - """ - :avocado: tags=arch:x86_64 - :avocado: tags=virtio - :avocado: tags=accel:tcg - """ - - hdd = 'virtio-blk-pci' - cd = 'virtio-blk-pci' - bus = None - - chksum = 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0' - - def test_pc_i440fx(self): - """ - :avocado: tags=machine:pc - """ - self.run_rr(shift=1) - - def test_pc_q35(self): - """ - :avocado: tags=machine:q35 - """ - self.run_rr(shift=3) @skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') class ReplayLinuxAarch64(ReplayLinux): diff --git a/tests/functional/test_x86_64_replay.py b/tests/functional/test_x86_64_replay.py index 180f23a60c5..27287d452dc 100755 --- a/tests/functional/test_x86_64_replay.py +++ b/tests/functional/test_x86_64_replay.py @@ -5,30 +5,53 @@ # # SPDX-License-Identifier: GPL-2.0-or-later -from qemu_test import Asset, skipFlakyTest +from subprocess import check_call, DEVNULL + +from qemu_test import Asset, skipFlakyTest, get_qemu_img from replay_kernel import ReplayKernelBase class X86Replay(ReplayKernelBase): ASSET_KERNEL = Asset( - ('https://archives.fedoraproject.org/pub/archive/fedora/linux' - '/releases/29/Everything/x86_64/os/images/pxeboot/vmlinuz'), - '8f237d84712b1b411baf3af2aeaaee10b9aae8e345ec265b87ab3a39639eb143') + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/bzImage', + 'f57bfc6553bcd6e0a54aab86095bf642b33b5571d14e3af1731b18c87ed5aef8') + + ASSET_ROOTFS = Asset( + 'https://storage.tuxboot.com/buildroot/20241119/x86_64/rootfs.ext4.zst', + '4b8b2a99117519c5290e1202cb36eb6c7aaba92b357b5160f5970cf5fb78a751') - def do_test_x86(self, machine): + def do_test_x86(self, machine, blkdevice, devroot): + self.require_netdev('user') self.set_machine(machine) + self.cpu="Nehalem" kernel_path = self.ASSET_KERNEL.fetch() - kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' - console_pattern = 'VFS: Cannot open root device' - self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) + + raw_disk = self.uncompress(self.ASSET_ROOTFS) + disk = self.scratch_file('scratch.qcow2') + qemu_img = get_qemu_img(self) + check_call([qemu_img, 'create', '-f', 'qcow2', '-b', raw_disk, + '-F', 'raw', disk], stdout=DEVNULL, stderr=DEVNULL) + + args = ('-drive', 'file=%s,snapshot=on,id=hd0,if=none' % disk, + '-drive', 'driver=blkreplay,id=hd0-rr,if=none,image=hd0', + '-device', '%s,drive=hd0-rr' % blkdevice, + '-netdev', 'user,id=vnet,hostfwd=:127.0.0.1:0-:22', + '-device', 'virtio-net,netdev=vnet', + '-object', 'filter-replay,id=replay,netdev=vnet') + + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + + f"console=ttyS0 root=/dev/{devroot}") + console_pattern = 'Welcome to TuxTest' + self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, + args=args) @skipFlakyTest('https://gitlab.com/qemu-project/qemu/-/issues/2094') def test_pc(self): - self.do_test_x86('pc') + self.do_test_x86('pc', 'virtio-blk', 'vda') def test_q35(self): - self.do_test_x86('q35') + self.do_test_x86('q35', 'ide-hd', 'sda') if __name__ == '__main__':