Message ID | 20231208190911.102879-5-crosa@redhat.com |
---|---|
State | New |
Headers | show |
Series | for-8.3 tests/avocado: prep for Avocado 103.0 LTS | expand |
W dniu 8.12.2023 o 20:09, Cleber Rosa pisze: > The tests under machine_aarch64_virt.py do not need read-write access > to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other > hand, will need read-write access, so let's give each test an unique > file. > > And while at it, let's use a single code style and hash for the ISO > url. > > Signed-off-by: Cleber Rosa<crosa@redhat.com> It is ISO file, so sbsa-ref tests should be fine with readonly as well. Nothing gets installed so nothing is written. We only test does boot works.
Cleber Rosa <crosa@redhat.com> writes: > The tests under machine_aarch64_virt.py do not need read-write access > to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other > hand, will need read-write access, so let's give each test an unique > file. I think we are making two separate changes here so probably best split the patch. > And while at it, let's use a single code style and hash for the ISO > url. > > Signed-off-by: Cleber Rosa <crosa@redhat.com> > --- > tests/avocado/machine_aarch64_sbsaref.py | 9 +++++++-- > tests/avocado/machine_aarch64_virt.py | 14 +++++++------- > 2 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py > index 528c7d2934..6ae84d77ac 100644 > --- a/tests/avocado/machine_aarch64_sbsaref.py > +++ b/tests/avocado/machine_aarch64_sbsaref.py > @@ -7,6 +7,7 @@ > # SPDX-License-Identifier: GPL-2.0-or-later > > import os > +import shutil > > from avocado import skipUnless > from avocado.utils import archive > @@ -123,13 +124,15 @@ def boot_alpine_linux(self, cpu): > > iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" > iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) > + iso_path_rw = os.path.join(self.workdir, os.path.basename(iso_path)) > + shutil.copy(iso_path, iso_path_rw) > > self.vm.set_console() > self.vm.add_args( > "-cpu", > cpu, > "-drive", > - f"file={iso_path},format=raw", > + f"file={iso_path_rw},format=raw", Instead of copying why not add ",snapshot=on" to preserve the original image. We don't want to persist data between tests. > "-device", > "virtio-rng-pci,rng=rng0", > "-object", > @@ -170,13 +173,15 @@ def boot_openbsd73(self, cpu): > > img_hash = "7fc2c75401d6f01fbfa25f4953f72ad7d7c18650056d30755c44b9c129b707e5" > img_path = self.fetch_asset(img_url, algorithm="sha256", asset_hash=img_hash) > + img_path_rw = os.path.join(self.workdir, os.path.basename(img_path)) > + shutil.copy(img_path, img_path_rw) > > self.vm.set_console() > self.vm.add_args( > "-cpu", > cpu, > "-drive", > - f"file={img_path},format=raw", > + f"file={img_path_rw},format=raw", ditto. > "-device", > "virtio-rng-pci,rng=rng0", > "-object", > diff --git a/tests/avocado/machine_aarch64_virt.py b/tests/avocado/machine_aarch64_virt.py > index a90dc6ff4b..093d68f837 100644 > --- a/tests/avocado/machine_aarch64_virt.py > +++ b/tests/avocado/machine_aarch64_virt.py > @@ -37,13 +37,13 @@ def test_alpine_virt_tcg_gic_max(self): > :avocado: tags=machine:virt > :avocado: tags=accel:tcg > """ > - iso_url = ('https://dl-cdn.alpinelinux.org/' > - 'alpine/v3.17/releases/aarch64/' > - 'alpine-standard-3.17.2-aarch64.iso') > + iso_url = ( > + "https://dl-cdn.alpinelinux.org/" > + "alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso" > + ) > > - # Alpine use sha256 so I recalculated this myself > - iso_sha1 = '76284fcd7b41fe899b0c2375ceb8470803eea839' > - iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha1) > + iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" > + iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) > > self.vm.set_console() > kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + > @@ -60,7 +60,7 @@ def test_alpine_virt_tcg_gic_max(self): > self.vm.add_args("-smp", "2", "-m", "1024") > self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', > 'edk2-aarch64-code.fd')) > - self.vm.add_args("-drive", f"file={iso_path},format=raw") > + self.vm.add_args("-drive", > f"file={iso_path},readonly=on,format=raw") Perhaps we can set ",media=cdrom" here. > self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') > self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom')
Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> writes: > W dniu 8.12.2023 o 20:09, Cleber Rosa pisze: >> The tests under machine_aarch64_virt.py do not need read-write access >> to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other >> hand, will need read-write access, so let's give each test an unique >> file. >> >> And while at it, let's use a single code style and hash for the ISO >> url. >> >> Signed-off-by: Cleber Rosa<crosa@redhat.com> > > It is ISO file, so sbsa-ref tests should be fine with readonly as well. > > Nothing gets installed so nothing is written. We only test does boot works. That was my original expectation too. But, with nothing but the following change: diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py index 528c7d2934..436da4b156 100644 --- a/tests/avocado/machine_aarch64_sbsaref.py +++ b/tests/avocado/machine_aarch64_sbsaref.py @@ -129,7 +129,7 @@ def boot_alpine_linux(self, cpu): "-cpu", cpu, "-drive", - f"file={iso_path},format=raw", + f"file={iso_path},readonly=on,format=raw", "-device", "virtio-rng-pci,rng=rng0", "-object", We get: 15:55:10 DEBUG| VM launch command: './qemu-system-aarch64 -display none -vga none -chardev socket,id=mon,fd=15 -mon chardev=mon,mode=control -machine sbsa-ref - chardev socket,id=console,fd=20 -serial chardev:console -cpu cortex-a57 -drive if=pflash,file=/home/cleber/avocado/job-results/job-2023-12-13T15.55-28ef2b5/test -results/tmp_dirx8p5xzt4/1-tests_avocado_machine_aarch64_sbsaref.py_Aarch64SbsarefMachine.test_sbsaref_alpine_linux_cortex_a57/SBSA_FLASH0.fd,format=raw -drive if=pflash,file=/home/cleber/avocado/job-results/job-2023-12-13T15.55-28ef2b5/test-results/tmp_dirx8p5xzt4/1-tests_avocado_machine_aarch64_sbsaref.py_Aarch64Sbsa refMachine.test_sbsaref_alpine_linux_cortex_a57/SBSA_FLASH1.fd,format=raw -smp 1 -machine sbsa-ref -cpu cortex-a57 -drive file=/home/cleber/avocado/data/cache/b y_location/0154b7cd3a4f5e135299060c8cabbeec10b70b6d/alpine-standard-3.17.2-aarch64.iso,readonly=on,format=raw -device virtio-rng-pci,rng=rng0 -object rng-random ,id=rng0,filename=/dev/urandom' Followed by: 15:55:10 DEBUG| Failed to establish session: | Traceback (most recent call last): | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 425, in _session_guard | await coro | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 253, in _establish_session | await self._negotiate() | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 305, in _negotiate | reply = await self._recv() | ^^^^^^^^^^^^^^^^^^ | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 1009, in _recv | message = await self._do_recv() | ^^^^^^^^^^^^^^^^^^^^^ | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 402, in _do_recv | msg_bytes = await self._readline() | ^^^^^^^^^^^^^^^^^^^^^^ | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 977, in _readline | raise EOFError | EOFError With qemu-system-arch producing on stdout: qemu-system-aarch64: Block node is read-only Any ideas on the reason or cause? Thanks, - Cleber.
Alex Bennée <alex.bennee@linaro.org> writes: > Cleber Rosa <crosa@redhat.com> writes: > >> The tests under machine_aarch64_virt.py do not need read-write access >> to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other >> hand, will need read-write access, so let's give each test an unique >> file. > > I think we are making two separate changes here so probably best split > the patch. > Sure, but, do you mean separating the "readonly=on" and the "writable file" changes? Or separating those two from the ISO url code style change? >> And while at it, let's use a single code style and hash for the ISO >> url. >> >> Signed-off-by: Cleber Rosa <crosa@redhat.com> >> --- >> tests/avocado/machine_aarch64_sbsaref.py | 9 +++++++-- >> tests/avocado/machine_aarch64_virt.py | 14 +++++++------- >> 2 files changed, 14 insertions(+), 9 deletions(-) >> >> diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py >> index 528c7d2934..6ae84d77ac 100644 >> --- a/tests/avocado/machine_aarch64_sbsaref.py >> +++ b/tests/avocado/machine_aarch64_sbsaref.py >> @@ -7,6 +7,7 @@ >> # SPDX-License-Identifier: GPL-2.0-or-later >> >> import os >> +import shutil >> >> from avocado import skipUnless >> from avocado.utils import archive >> @@ -123,13 +124,15 @@ def boot_alpine_linux(self, cpu): >> >> iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" >> iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) >> + iso_path_rw = os.path.join(self.workdir, os.path.basename(iso_path)) >> + shutil.copy(iso_path, iso_path_rw) >> >> self.vm.set_console() >> self.vm.add_args( >> "-cpu", >> cpu, >> "-drive", >> - f"file={iso_path},format=raw", >> + f"file={iso_path_rw},format=raw", > > Instead of copying why not add ",snapshot=on" to preserve the original > image. We don't want to persist data between tests. > >> "-device", >> "virtio-rng-pci,rng=rng0", >> "-object", >> @@ -170,13 +173,15 @@ def boot_openbsd73(self, cpu): >> >> img_hash = "7fc2c75401d6f01fbfa25f4953f72ad7d7c18650056d30755c44b9c129b707e5" >> img_path = self.fetch_asset(img_url, algorithm="sha256", asset_hash=img_hash) >> + img_path_rw = os.path.join(self.workdir, os.path.basename(img_path)) >> + shutil.copy(img_path, img_path_rw) >> >> self.vm.set_console() >> self.vm.add_args( >> "-cpu", >> cpu, >> "-drive", >> - f"file={img_path},format=raw", >> + f"file={img_path_rw},format=raw", > > ditto. > > >> "-device", >> "virtio-rng-pci,rng=rng0", >> "-object", >> diff --git a/tests/avocado/machine_aarch64_virt.py b/tests/avocado/machine_aarch64_virt.py >> index a90dc6ff4b..093d68f837 100644 >> --- a/tests/avocado/machine_aarch64_virt.py >> +++ b/tests/avocado/machine_aarch64_virt.py >> @@ -37,13 +37,13 @@ def test_alpine_virt_tcg_gic_max(self): >> :avocado: tags=machine:virt >> :avocado: tags=accel:tcg >> """ >> - iso_url = ('https://dl-cdn.alpinelinux.org/' >> - 'alpine/v3.17/releases/aarch64/' >> - 'alpine-standard-3.17.2-aarch64.iso') >> + iso_url = ( >> + "https://dl-cdn.alpinelinux.org/" >> + "alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso" >> + ) >> >> - # Alpine use sha256 so I recalculated this myself >> - iso_sha1 = '76284fcd7b41fe899b0c2375ceb8470803eea839' >> - iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha1) >> + iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" >> + iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) >> >> self.vm.set_console() >> kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + >> @@ -60,7 +60,7 @@ def test_alpine_virt_tcg_gic_max(self): >> self.vm.add_args("-smp", "2", "-m", "1024") >> self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', >> 'edk2-aarch64-code.fd')) >> - self.vm.add_args("-drive", f"file={iso_path},format=raw") >> + self.vm.add_args("-drive", >> f"file={iso_path},readonly=on,format=raw") > > Perhaps we can set ",media=cdrom" here. > Yes, but more importantly, adding both "readonly=on" and "media=cdrom" to the tests under machine_aarch64_sbsaref.py do the trick. Now, the behavior explained in my previous response still warrants investigation IMO. Thanks - Cleber.
Cleber Rosa <crosa@redhat.com> writes: > Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> writes: > >> W dniu 8.12.2023 o 20:09, Cleber Rosa pisze: >>> The tests under machine_aarch64_virt.py do not need read-write access >>> to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other >>> hand, will need read-write access, so let's give each test an unique >>> file. >>> >>> And while at it, let's use a single code style and hash for the ISO >>> url. >>> >>> Signed-off-by: Cleber Rosa<crosa@redhat.com> >> >> It is ISO file, so sbsa-ref tests should be fine with readonly as well. >> >> Nothing gets installed so nothing is written. We only test does boot works. > > That was my original expectation too. But, with nothing but the > following change: > > diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py > index 528c7d2934..436da4b156 100644 > --- a/tests/avocado/machine_aarch64_sbsaref.py > +++ b/tests/avocado/machine_aarch64_sbsaref.py > @@ -129,7 +129,7 @@ def boot_alpine_linux(self, cpu): > "-cpu", > cpu, > "-drive", > - f"file={iso_path},format=raw", > + f"file={iso_path},readonly=on,format=raw", f"file={iso_path},readonly=on,media=cdrom,format=raw", works (although possible the readonly is redundant in this case). > "-device", > "virtio-rng-pci,rng=rng0", > "-object", > > We get: > > 15:55:10 DEBUG| VM launch command: './qemu-system-aarch64 -display none -vga none -chardev socket,id=mon,fd=15 -mon chardev=mon,mode=control -machine sbsa-ref - > chardev socket,id=console,fd=20 -serial chardev:console -cpu cortex-a57 -drive if=pflash,file=/home/cleber/avocado/job-results/job-2023-12-13T15.55-28ef2b5/test > -results/tmp_dirx8p5xzt4/1-tests_avocado_machine_aarch64_sbsaref.py_Aarch64SbsarefMachine.test_sbsaref_alpine_linux_cortex_a57/SBSA_FLASH0.fd,format=raw -drive > if=pflash,file=/home/cleber/avocado/job-results/job-2023-12-13T15.55-28ef2b5/test-results/tmp_dirx8p5xzt4/1-tests_avocado_machine_aarch64_sbsaref.py_Aarch64Sbsa > refMachine.test_sbsaref_alpine_linux_cortex_a57/SBSA_FLASH1.fd,format=raw -smp 1 -machine sbsa-ref -cpu cortex-a57 -drive file=/home/cleber/avocado/data/cache/b > y_location/0154b7cd3a4f5e135299060c8cabbeec10b70b6d/alpine-standard-3.17.2-aarch64.iso,readonly=on,format=raw -device virtio-rng-pci,rng=rng0 -object rng-random > ,id=rng0,filename=/dev/urandom' > > Followed by: > > 15:55:10 DEBUG| Failed to establish session: > | Traceback (most recent call last): > | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 425, in _session_guard > | await coro > | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 253, in _establish_session > | await self._negotiate() > | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 305, in _negotiate > | reply = await self._recv() > | ^^^^^^^^^^^^^^^^^^ > | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 1009, in _recv > | message = await self._do_recv() > | ^^^^^^^^^^^^^^^^^^^^^ > | File "/home/cleber/src/qemu/python/qemu/qmp/qmp_client.py", line 402, in _do_recv > | msg_bytes = await self._readline() > | ^^^^^^^^^^^^^^^^^^^^^^ > | File "/home/cleber/src/qemu/python/qemu/qmp/protocol.py", line 977, in _readline > | raise EOFError > | EOFError > > With qemu-system-arch producing on stdout: > > qemu-system-aarch64: Block node is read-only > > Any ideas on the reason or cause? > > Thanks, > - Cleber.
Cleber Rosa <crosa@redhat.com> writes: > Alex Bennée <alex.bennee@linaro.org> writes: > >> Cleber Rosa <crosa@redhat.com> writes: >> >>> The tests under machine_aarch64_virt.py do not need read-write access >>> to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other >>> hand, will need read-write access, so let's give each test an unique >>> file. >> >> I think we are making two separate changes here so probably best split >> the patch. >> > > Sure, but, do you mean separating the "readonly=on" and the "writable > file" changes? Or separating those two from the ISO url code style > change? I was thinking about splitting the sbsaref and virt patches, but actually they are fairly related as they all use the alpine image so maybe no need. > >>> And while at it, let's use a single code style and hash for the ISO >>> url. >>> >>> Signed-off-by: Cleber Rosa <crosa@redhat.com> >>> --- >>> tests/avocado/machine_aarch64_sbsaref.py | 9 +++++++-- >>> tests/avocado/machine_aarch64_virt.py | 14 +++++++------- >>> 2 files changed, 14 insertions(+), 9 deletions(-) >>> >>> diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py >>> index 528c7d2934..6ae84d77ac 100644 >>> --- a/tests/avocado/machine_aarch64_sbsaref.py >>> +++ b/tests/avocado/machine_aarch64_sbsaref.py >>> @@ -7,6 +7,7 @@ >>> # SPDX-License-Identifier: GPL-2.0-or-later >>> >>> import os >>> +import shutil >>> >>> from avocado import skipUnless >>> from avocado.utils import archive >>> @@ -123,13 +124,15 @@ def boot_alpine_linux(self, cpu): >>> >>> iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" >>> iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) >>> + iso_path_rw = os.path.join(self.workdir, os.path.basename(iso_path)) >>> + shutil.copy(iso_path, iso_path_rw) >>> >>> self.vm.set_console() >>> self.vm.add_args( >>> "-cpu", >>> cpu, >>> "-drive", >>> - f"file={iso_path},format=raw", >>> + f"file={iso_path_rw},format=raw", >> >> Instead of copying why not add ",snapshot=on" to preserve the original >> image. We don't want to persist data between tests. Ahh yes these are isos so snapshot isn't needed. >> >>> "-device", >>> "virtio-rng-pci,rng=rng0", >>> "-object", >>> @@ -170,13 +173,15 @@ def boot_openbsd73(self, cpu): >>> >>> img_hash = "7fc2c75401d6f01fbfa25f4953f72ad7d7c18650056d30755c44b9c129b707e5" >>> img_path = self.fetch_asset(img_url, algorithm="sha256", asset_hash=img_hash) >>> + img_path_rw = os.path.join(self.workdir, os.path.basename(img_path)) >>> + shutil.copy(img_path, img_path_rw) >>> >>> self.vm.set_console() >>> self.vm.add_args( >>> "-cpu", >>> cpu, >>> "-drive", >>> - f"file={img_path},format=raw", >>> + f"file={img_path_rw},format=raw", >> >> ditto. >> >> >>> "-device", >>> "virtio-rng-pci,rng=rng0", >>> "-object", >>> diff --git a/tests/avocado/machine_aarch64_virt.py b/tests/avocado/machine_aarch64_virt.py >>> index a90dc6ff4b..093d68f837 100644 >>> --- a/tests/avocado/machine_aarch64_virt.py >>> +++ b/tests/avocado/machine_aarch64_virt.py >>> @@ -37,13 +37,13 @@ def test_alpine_virt_tcg_gic_max(self): >>> :avocado: tags=machine:virt >>> :avocado: tags=accel:tcg >>> """ >>> - iso_url = ('https://dl-cdn.alpinelinux.org/' >>> - 'alpine/v3.17/releases/aarch64/' >>> - 'alpine-standard-3.17.2-aarch64.iso') >>> + iso_url = ( >>> + "https://dl-cdn.alpinelinux.org/" >>> + "alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso" >>> + ) >>> >>> - # Alpine use sha256 so I recalculated this myself >>> - iso_sha1 = '76284fcd7b41fe899b0c2375ceb8470803eea839' >>> - iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha1) >>> + iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" >>> + iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) >>> >>> self.vm.set_console() >>> kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + >>> @@ -60,7 +60,7 @@ def test_alpine_virt_tcg_gic_max(self): >>> self.vm.add_args("-smp", "2", "-m", "1024") >>> self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', >>> 'edk2-aarch64-code.fd')) >>> - self.vm.add_args("-drive", f"file={iso_path},format=raw") >>> + self.vm.add_args("-drive", >>> f"file={iso_path},readonly=on,format=raw") >> >> Perhaps we can set ",media=cdrom" here. >> > > Yes, but more importantly, adding both "readonly=on" and "media=cdrom" > to the tests under machine_aarch64_sbsaref.py do the trick. Now, the > behavior explained in my previous response still warrants investigation > IMO. > > Thanks > - Cleber.
diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py index 528c7d2934..6ae84d77ac 100644 --- a/tests/avocado/machine_aarch64_sbsaref.py +++ b/tests/avocado/machine_aarch64_sbsaref.py @@ -7,6 +7,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later import os +import shutil from avocado import skipUnless from avocado.utils import archive @@ -123,13 +124,15 @@ def boot_alpine_linux(self, cpu): iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) + iso_path_rw = os.path.join(self.workdir, os.path.basename(iso_path)) + shutil.copy(iso_path, iso_path_rw) self.vm.set_console() self.vm.add_args( "-cpu", cpu, "-drive", - f"file={iso_path},format=raw", + f"file={iso_path_rw},format=raw", "-device", "virtio-rng-pci,rng=rng0", "-object", @@ -170,13 +173,15 @@ def boot_openbsd73(self, cpu): img_hash = "7fc2c75401d6f01fbfa25f4953f72ad7d7c18650056d30755c44b9c129b707e5" img_path = self.fetch_asset(img_url, algorithm="sha256", asset_hash=img_hash) + img_path_rw = os.path.join(self.workdir, os.path.basename(img_path)) + shutil.copy(img_path, img_path_rw) self.vm.set_console() self.vm.add_args( "-cpu", cpu, "-drive", - f"file={img_path},format=raw", + f"file={img_path_rw},format=raw", "-device", "virtio-rng-pci,rng=rng0", "-object", diff --git a/tests/avocado/machine_aarch64_virt.py b/tests/avocado/machine_aarch64_virt.py index a90dc6ff4b..093d68f837 100644 --- a/tests/avocado/machine_aarch64_virt.py +++ b/tests/avocado/machine_aarch64_virt.py @@ -37,13 +37,13 @@ def test_alpine_virt_tcg_gic_max(self): :avocado: tags=machine:virt :avocado: tags=accel:tcg """ - iso_url = ('https://dl-cdn.alpinelinux.org/' - 'alpine/v3.17/releases/aarch64/' - 'alpine-standard-3.17.2-aarch64.iso') + iso_url = ( + "https://dl-cdn.alpinelinux.org/" + "alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso" + ) - # Alpine use sha256 so I recalculated this myself - iso_sha1 = '76284fcd7b41fe899b0c2375ceb8470803eea839' - iso_path = self.fetch_asset(iso_url, asset_hash=iso_sha1) + iso_hash = "5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027" + iso_path = self.fetch_asset(iso_url, algorithm="sha256", asset_hash=iso_hash) self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + @@ -60,7 +60,7 @@ def test_alpine_virt_tcg_gic_max(self): self.vm.add_args("-smp", "2", "-m", "1024") self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', 'edk2-aarch64-code.fd')) - self.vm.add_args("-drive", f"file={iso_path},format=raw") + self.vm.add_args("-drive", f"file={iso_path},readonly=on,format=raw") self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') self.vm.add_args('-object', 'rng-random,id=rng0,filename=/dev/urandom')
The tests under machine_aarch64_virt.py do not need read-write access to the ISOs. The ones under machine_aarch64_sbsaref.py, on the other hand, will need read-write access, so let's give each test an unique file. And while at it, let's use a single code style and hash for the ISO url. Signed-off-by: Cleber Rosa <crosa@redhat.com> --- tests/avocado/machine_aarch64_sbsaref.py | 9 +++++++-- tests/avocado/machine_aarch64_virt.py | 14 +++++++------- 2 files changed, 14 insertions(+), 9 deletions(-)