[PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access

Cleber Rosa posted 10 patches 11 months, 3 weeks ago
Maintainers: Cleber Rosa <crosa@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, David Woodhouse <dwmw2@infradead.org>, Paul Durrant <paul@xen.org>, Paolo Bonzini <pbonzini@redhat.com>, Radoslaw Biernacki <rad@semihalf.com>, Peter Maydell <peter.maydell@linaro.org>, Leif Lindholm <quic_llindhol@quicinc.com>, Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>, Akihiko Odaki <akihiko.odaki@daynix.com>, Sriram Yagnaraman <sriram.yagnaraman@est.tech>, Jiaxun Yang <jiaxun.yang@flygoat.com>
[PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Cleber Rosa 11 months, 3 weeks ago
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(-)

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')
 
-- 
2.43.0
Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Alex Bennée 11 months, 3 weeks ago
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')

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Cleber Rosa 11 months, 2 weeks ago
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.
Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Alex Bennée 11 months, 2 weeks ago
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.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Marcin Juszkiewicz 11 months, 3 weeks ago
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.

Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Cleber Rosa 11 months, 2 weeks ago
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.
Re: [PATCH 04/10] tests/avocado: machine aarch64: standardize location and RO/RW access
Posted by Alex Bennée 11 months, 2 weeks ago
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.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro