diff mbox series

[v3,17/17] tests/functional: Add microblaze cross-endianness tests

Message ID 20241108154317.12129-18-philmd@linaro.org (mailing list archive)
State New
Headers show
Series hw/microblaze: Allow running cross-endian vCPUs | expand

Commit Message

Philippe Mathieu-Daudé Nov. 8, 2024, 3:43 p.m. UTC
Copy/paste the current tests, but call the opposite endianness
machines, testing:
- petalogix-s3adsp1800-le machine (little-endian CPU) on the
  qemu-system-microblaze binary (big-endian)
- petalogix-s3adsp1800-be machine (big-endian CPU) on the
  qemu-system-microblazeel binary (little-endian).

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 .../functional/test_microblaze_s3adsp1800.py  | 21 +++++++++++++++++++
 .../test_microblazeel_s3adsp1800.py           | 19 +++++++++++++++++
 2 files changed, 40 insertions(+)

Comments

Thomas Huth Nov. 11, 2024, 7:57 a.m. UTC | #1
On 08/11/2024 16.43, Philippe Mathieu-Daudé wrote:
> Copy/paste the current tests, but call the opposite endianness
> machines, testing:
> - petalogix-s3adsp1800-le machine (little-endian CPU) on the
>    qemu-system-microblaze binary (big-endian)
> - petalogix-s3adsp1800-be machine (big-endian CPU) on the
>    qemu-system-microblazeel binary (little-endian).
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   .../functional/test_microblaze_s3adsp1800.py  | 21 +++++++++++++++++++
>   .../test_microblazeel_s3adsp1800.py           | 19 +++++++++++++++++
>   2 files changed, 40 insertions(+)
> 
> diff --git a/tests/functional/test_microblaze_s3adsp1800.py b/tests/functional/test_microblaze_s3adsp1800.py
> index 2b2f782270..7f5e8b6024 100755
> --- a/tests/functional/test_microblaze_s3adsp1800.py
> +++ b/tests/functional/test_microblaze_s3adsp1800.py
> @@ -36,5 +36,26 @@ def test_microblaze_s3adsp1800_be(self):
>           # message, that's why we don't test for a later string here. This
>           # needs some investigation by a microblaze wizard one day...
>   
> +    ASSET_IMAGE_LE = Asset(
> +        ('http://www.qemu-advent-calendar.org/2023/download/day13.tar.gz'),
> +        'b9b3d43c5dd79db88ada495cc6e0d1f591153fe41355e925d791fbf44de50c22')
> +
> +    def test_microblaze_s3adsp1800_le(self):
> +        self.require_netdev('user')
> +        self.set_machine('petalogix-s3adsp1800-le')
> +        file_path = self.ASSET_IMAGE_LE.fetch()
> +        archive_extract(file_path, self.workdir)
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', self.workdir + '/day13/xmaton.bin')
> +        self.vm.add_args('-nic', 'user,tftp=' + self.workdir + '/day13/')
> +        self.vm.launch()
> +        wait_for_console_pattern(self, 'QEMU Advent Calendar 2023')
> +        time.sleep(0.1)
> +        exec_command(self, 'root')
> +        time.sleep(0.1)
> +        exec_command_and_wait_for_pattern(self,
> +                'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
> +                '821cd3cab8efd16ad6ee5acc3642a8ea')
> +
>   if __name__ == '__main__':
>       QemuSystemTest.main()
> diff --git a/tests/functional/test_microblazeel_s3adsp1800.py b/tests/functional/test_microblazeel_s3adsp1800.py
> index 1aee5149fb..60543009ba 100755
> --- a/tests/functional/test_microblazeel_s3adsp1800.py
> +++ b/tests/functional/test_microblazeel_s3adsp1800.py
> @@ -38,5 +38,24 @@ def test_microblazeel_s3adsp1800_le(self):
>                   'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
>                   '821cd3cab8efd16ad6ee5acc3642a8ea')
>   
> +    ASSET_IMAGE_BE = Asset(
> +        ('https://qemu-advcal.gitlab.io/qac-best-of-multiarch/download/'
> +         'day17.tar.xz'),
> +        '3ba7439dfbea7af4876662c97f8e1f0cdad9231fc166e4861d17042489270057')
> +
> +    def test_microblazeel_s3adsp1800_be(self):
> +        self.set_machine('petalogix-s3adsp1800-be')
> +        file_path = self.ASSET_IMAGE_BE.fetch()
> +        archive_extract(file_path, self.workdir)
> +        self.vm.set_console()
> +        self.vm.add_args('-kernel', self.workdir + '/day17/ballerina.bin')
> +        self.vm.launch()
> +        wait_for_console_pattern(self, 'This architecture does not have '
> +                                       'kernel memory protection')
> +        # Note:
> +        # The kernel sometimes gets stuck after the "This architecture ..."
> +        # message, that's why we don't test for a later string here. This
> +        # needs some investigation by a microblaze wizard one day...
> +
>   if __name__ == '__main__':
>       QemuSystemTest.main()

Duplicating code is ugly. I think I'd rather prefer to merge the two files 
into one and then add that test to both targets in meson.build.

  Thomas
Philippe Mathieu-Daudé Nov. 11, 2024, 11:54 a.m. UTC | #2
On 11/11/24 07:57, Thomas Huth wrote:
> On 08/11/2024 16.43, Philippe Mathieu-Daudé wrote:
>> Copy/paste the current tests, but call the opposite endianness
>> machines, testing:
>> - petalogix-s3adsp1800-le machine (little-endian CPU) on the
>>    qemu-system-microblaze binary (big-endian)
>> - petalogix-s3adsp1800-be machine (big-endian CPU) on the
>>    qemu-system-microblazeel binary (little-endian).
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>   .../functional/test_microblaze_s3adsp1800.py  | 21 +++++++++++++++++++
>>   .../test_microblazeel_s3adsp1800.py           | 19 +++++++++++++++++
>>   2 files changed, 40 insertions(+)
>>
>> diff --git a/tests/functional/test_microblaze_s3adsp1800.py 
>> b/tests/functional/test_microblaze_s3adsp1800.py
>> index 2b2f782270..7f5e8b6024 100755
>> --- a/tests/functional/test_microblaze_s3adsp1800.py
>> +++ b/tests/functional/test_microblaze_s3adsp1800.py
>> @@ -36,5 +36,26 @@ def test_microblaze_s3adsp1800_be(self):
>>           # message, that's why we don't test for a later string here. 
>> This
>>           # needs some investigation by a microblaze wizard one day...
>> +    ASSET_IMAGE_LE = Asset(
>> +        
>> ('http://www.qemu-advent-calendar.org/2023/download/day13.tar.gz'),
>> +        
>> 'b9b3d43c5dd79db88ada495cc6e0d1f591153fe41355e925d791fbf44de50c22')
>> +
>> +    def test_microblaze_s3adsp1800_le(self):
>> +        self.require_netdev('user')
>> +        self.set_machine('petalogix-s3adsp1800-le')
>> +        file_path = self.ASSET_IMAGE_LE.fetch()
>> +        archive_extract(file_path, self.workdir)
>> +        self.vm.set_console()
>> +        self.vm.add_args('-kernel', self.workdir + '/day13/xmaton.bin')
>> +        self.vm.add_args('-nic', 'user,tftp=' + self.workdir + 
>> '/day13/')
>> +        self.vm.launch()
>> +        wait_for_console_pattern(self, 'QEMU Advent Calendar 2023')
>> +        time.sleep(0.1)
>> +        exec_command(self, 'root')
>> +        time.sleep(0.1)
>> +        exec_command_and_wait_for_pattern(self,
>> +                'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
>> +                '821cd3cab8efd16ad6ee5acc3642a8ea')
>> +
>>   if __name__ == '__main__':
>>       QemuSystemTest.main()
>> diff --git a/tests/functional/test_microblazeel_s3adsp1800.py 
>> b/tests/functional/test_microblazeel_s3adsp1800.py
>> index 1aee5149fb..60543009ba 100755
>> --- a/tests/functional/test_microblazeel_s3adsp1800.py
>> +++ b/tests/functional/test_microblazeel_s3adsp1800.py
>> @@ -38,5 +38,24 @@ def test_microblazeel_s3adsp1800_le(self):
>>                   'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
>>                   '821cd3cab8efd16ad6ee5acc3642a8ea')
>> +    ASSET_IMAGE_BE = Asset(
>> +        ('https://qemu-advcal.gitlab.io/qac-best-of-multiarch/download/'
>> +         'day17.tar.xz'),
>> +        
>> '3ba7439dfbea7af4876662c97f8e1f0cdad9231fc166e4861d17042489270057')
>> +
>> +    def test_microblazeel_s3adsp1800_be(self):
>> +        self.set_machine('petalogix-s3adsp1800-be')
>> +        file_path = self.ASSET_IMAGE_BE.fetch()
>> +        archive_extract(file_path, self.workdir)
>> +        self.vm.set_console()
>> +        self.vm.add_args('-kernel', self.workdir + 
>> '/day17/ballerina.bin')
>> +        self.vm.launch()
>> +        wait_for_console_pattern(self, 'This architecture does not 
>> have '
>> +                                       'kernel memory protection')
>> +        # Note:
>> +        # The kernel sometimes gets stuck after the "This 
>> architecture ..."
>> +        # message, that's why we don't test for a later string here. 
>> This
>> +        # needs some investigation by a microblaze wizard one day...
>> +
>>   if __name__ == '__main__':
>>       QemuSystemTest.main()
> 
> Duplicating code is ugly. I think I'd rather prefer to merge the two 
> files into one and then add that test to both targets in meson.build.

In v2 I mentioned I'll merge them in a following up patch. I'll try
to do that for v4.
diff mbox series

Patch

diff --git a/tests/functional/test_microblaze_s3adsp1800.py b/tests/functional/test_microblaze_s3adsp1800.py
index 2b2f782270..7f5e8b6024 100755
--- a/tests/functional/test_microblaze_s3adsp1800.py
+++ b/tests/functional/test_microblaze_s3adsp1800.py
@@ -36,5 +36,26 @@  def test_microblaze_s3adsp1800_be(self):
         # message, that's why we don't test for a later string here. This
         # needs some investigation by a microblaze wizard one day...
 
+    ASSET_IMAGE_LE = Asset(
+        ('http://www.qemu-advent-calendar.org/2023/download/day13.tar.gz'),
+        'b9b3d43c5dd79db88ada495cc6e0d1f591153fe41355e925d791fbf44de50c22')
+
+    def test_microblaze_s3adsp1800_le(self):
+        self.require_netdev('user')
+        self.set_machine('petalogix-s3adsp1800-le')
+        file_path = self.ASSET_IMAGE_LE.fetch()
+        archive_extract(file_path, self.workdir)
+        self.vm.set_console()
+        self.vm.add_args('-kernel', self.workdir + '/day13/xmaton.bin')
+        self.vm.add_args('-nic', 'user,tftp=' + self.workdir + '/day13/')
+        self.vm.launch()
+        wait_for_console_pattern(self, 'QEMU Advent Calendar 2023')
+        time.sleep(0.1)
+        exec_command(self, 'root')
+        time.sleep(0.1)
+        exec_command_and_wait_for_pattern(self,
+                'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
+                '821cd3cab8efd16ad6ee5acc3642a8ea')
+
 if __name__ == '__main__':
     QemuSystemTest.main()
diff --git a/tests/functional/test_microblazeel_s3adsp1800.py b/tests/functional/test_microblazeel_s3adsp1800.py
index 1aee5149fb..60543009ba 100755
--- a/tests/functional/test_microblazeel_s3adsp1800.py
+++ b/tests/functional/test_microblazeel_s3adsp1800.py
@@ -38,5 +38,24 @@  def test_microblazeel_s3adsp1800_le(self):
                 'tftp -g -r xmaton.png 10.0.2.2 ; md5sum xmaton.png',
                 '821cd3cab8efd16ad6ee5acc3642a8ea')
 
+    ASSET_IMAGE_BE = Asset(
+        ('https://qemu-advcal.gitlab.io/qac-best-of-multiarch/download/'
+         'day17.tar.xz'),
+        '3ba7439dfbea7af4876662c97f8e1f0cdad9231fc166e4861d17042489270057')
+
+    def test_microblazeel_s3adsp1800_be(self):
+        self.set_machine('petalogix-s3adsp1800-be')
+        file_path = self.ASSET_IMAGE_BE.fetch()
+        archive_extract(file_path, self.workdir)
+        self.vm.set_console()
+        self.vm.add_args('-kernel', self.workdir + '/day17/ballerina.bin')
+        self.vm.launch()
+        wait_for_console_pattern(self, 'This architecture does not have '
+                                       'kernel memory protection')
+        # Note:
+        # The kernel sometimes gets stuck after the "This architecture ..."
+        # message, that's why we don't test for a later string here. This
+        # needs some investigation by a microblaze wizard one day...
+
 if __name__ == '__main__':
     QemuSystemTest.main()