diff mbox series

tests/functional: Convert mips fuloong2e avocado test

Message ID 20240821112959.54237-1-philmd@linaro.org (mailing list archive)
State New, archived
Headers show
Series tests/functional: Convert mips fuloong2e avocado test | expand

Commit Message

Philippe Mathieu-Daudé Aug. 21, 2024, 11:29 a.m. UTC
Straight forward conversion. Update the SHA1 hashes to
SHA256 hashes since SHA1 should not be used anymore nowadays.

Since the asset is expected locally and the test is guarded
with QEMU_TEST_ALLOW_UNTRUSTED_CODE, keep it under the 'quick'
category.

  $ RESCUE_YL_PATH=/path/to/rescue-yl QEMU_TEST_ALLOW_UNTRUSTED_CODE=1 \
    make check-functional-mips64el
  1/4 qemu:func-quick+func-mips64el / func-mips64el-empty_cpu_model      OK   0.12s   1 subtests passed
  2/4 qemu:func-quick+func-mips64el / func-mips64el-version              OK   0.13s   1 subtests passed
  3/4 qemu:func-quick+func-mips64el / func-mips64el-info_usernet         OK   0.15s   1 subtests passed
  4/4 qemu:func-quick+func-mips64el / func-mips64el-mips64el_fuloong2e   OK   0.19s   1 subtests passed

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
Based-on: <20240821082748.65853-1-thuth@redhat.com>
---
 MAINTAINERS                                   |  2 +-
 tests/functional/meson.build                  |  4 +++
 .../test_mips64el_fuloong2e.py}               | 32 +++++++++----------
 3 files changed, 21 insertions(+), 17 deletions(-)
 rename tests/{avocado/machine_mips_fuloong2e.py => functional/test_mips64el_fuloong2e.py} (56%)
 mode change 100644 => 100755

Comments

Thomas Huth Aug. 21, 2024, 11:46 a.m. UTC | #1
On 21/08/2024 13.29, Philippe Mathieu-Daudé wrote:
> Straight forward conversion. Update the SHA1 hashes to
> SHA256 hashes since SHA1 should not be used anymore nowadays.
> 
> Since the asset is expected locally and the test is guarded
> with QEMU_TEST_ALLOW_UNTRUSTED_CODE, keep it under the 'quick'
> category.
> 
>    $ RESCUE_YL_PATH=/path/to/rescue-yl QEMU_TEST_ALLOW_UNTRUSTED_CODE=1 \
>      make check-functional-mips64el
>    1/4 qemu:func-quick+func-mips64el / func-mips64el-empty_cpu_model      OK   0.12s   1 subtests passed
>    2/4 qemu:func-quick+func-mips64el / func-mips64el-version              OK   0.13s   1 subtests passed
>    3/4 qemu:func-quick+func-mips64el / func-mips64el-info_usernet         OK   0.15s   1 subtests passed
>    4/4 qemu:func-quick+func-mips64el / func-mips64el-mips64el_fuloong2e   OK   0.19s   1 subtests passed
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> Based-on: <20240821082748.65853-1-thuth@redhat.com>
> ---
>   MAINTAINERS                                   |  2 +-
>   tests/functional/meson.build                  |  4 +++
>   .../test_mips64el_fuloong2e.py}               | 32 +++++++++----------
>   3 files changed, 21 insertions(+), 17 deletions(-)
>   rename tests/{avocado/machine_mips_fuloong2e.py => functional/test_mips64el_fuloong2e.py} (56%)
>   mode change 100644 => 100755
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 25e71ac14c..77fbb5d42e 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1384,7 +1384,7 @@ S: Odd Fixes
>   F: hw/mips/fuloong2e.c
>   F: hw/pci-host/bonito.c
>   F: include/hw/pci-host/bonito.h
> -F: tests/avocado/machine_mips_fuloong2e.py
> +F: tests/functional/test_mips64el_fuloong2e.py
>   
>   Loongson-3 virtual platforms
>   M: Huacai Chen <chenhuacai@kernel.org>
> diff --git a/tests/functional/meson.build b/tests/functional/meson.build
> index 12e08e365b..8d28313a65 100644
> --- a/tests/functional/meson.build
> +++ b/tests/functional/meson.build
> @@ -51,6 +51,10 @@ tests_microblazeel_thorough = [
>     'microblazeel_s3adsp1800'
>   ]
>   
> +tests_mips64el_quick = [
> +  'mips64el_fuloong2e',
> +]
> +
>   tests_mips64el_thorough = [
>     'mips64el_loongson3v',
>   ]
> diff --git a/tests/avocado/machine_mips_fuloong2e.py b/tests/functional/test_mips64el_fuloong2e.py
> old mode 100644
> new mode 100755
> similarity index 56%
> rename from tests/avocado/machine_mips_fuloong2e.py
> rename to tests/functional/test_mips64el_fuloong2e.py
> index 89291f47b2..523dce4ec4
> --- a/tests/avocado/machine_mips_fuloong2e.py
> +++ b/tests/functional/test_mips64el_fuloong2e.py
> @@ -1,3 +1,5 @@
> +#!/usr/bin/env python3
> +#
>   # Functional tests for the Lemote Fuloong-2E machine.
>   #
>   # Copyright (c) 2019 Philippe Mathieu-Daudé <f4bug@amsat.org>
> @@ -9,34 +11,32 @@
>   
>   import os
>   
> -from avocado import skipUnless
> -from avocado_qemu import QemuSystemTest
> -from avocado_qemu import wait_for_console_pattern
> +from qemu_test import QemuSystemTest, Asset
> +from qemu_test import wait_for_console_pattern
> +from unittest import skipUnless
>   
>   class MipsFuloong2e(QemuSystemTest):
>   
>       timeout = 60
>   
> -    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
> -    @skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not available')

Wouldn't it be better to keep the RESCUE_YL_PATH decorator?

> +    ASSET_KERNEL = Asset(
> +        # http://dev.lemote.com/files/resource/download/rescue/rescue-yl
> +        ('file://' + os.getenv('RESCUE_YL_PATH')),

The precaching is now failing if this environment variable has not been set:

Traceback (most recent call last):
   File 
"/home/thuth/devel/qemu/tests/functional/test_mips64el_fuloong2e.py", line 
18, in <module>
     class MipsFuloong2e(QemuSystemTest):
   File 
"/home/thuth/devel/qemu/tests/functional/test_mips64el_fuloong2e.py", line 
24, in MipsFuloong2e
     ('file://' + os.getenv('RESCUE_YL_PATH')),
      ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: can only concatenate str (not "NoneType") to str

Since we don't really need precaching in this case, maybe you could move the 
asset definition into the function itself, or do this test without the asset 
framework?

  Thomas

> +        'ab588d3316777c62cc81baa20ac92e98b01955c244dff3794b711bc34e26e51d')
> +
> +    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
>       def test_linux_kernel_isa_serial(self):
> -        """
> -        :avocado: tags=arch:mips64el
> -        :avocado: tags=machine:fuloong2e
> -        :avocado: tags=endian:little
> -        :avocado: tags=device:bonito64
> -        :avocado: tags=device:via686b
> -        """
>           # Recovery system for the Yeeloong laptop
>           # (enough to test the fuloong2e southbridge, accessing its ISA bus)
> -        # http://dev.lemote.com/files/resource/download/rescue/rescue-yl
> -        kernel_hash = 'ec4d1bd89a8439c41033ca63db60160cc6d6f09a'
> -        kernel_path = self.fetch_asset('file://' + os.getenv('RESCUE_YL_PATH'),
> -                                       asset_hash=kernel_hash)
> +        kernel_path = self.ASSET_KERNEL.fetch()
>   
> +        self.set_machine('fuloong2e')
>           self.vm.set_console()
>           self.vm.add_args('-kernel', kernel_path)
>           self.vm.launch()
>           wait_for_console_pattern(self, 'Linux version 2.6.27.7lemote')
>           cpu_revision = 'CPU revision is: 00006302 (ICT Loongson-2)'
>           wait_for_console_pattern(self, cpu_revision)
> +
> +if __name__ == '__main__':
> +    QemuSystemTest.main()
Philippe Mathieu-Daudé Aug. 21, 2024, 1:30 p.m. UTC | #2
On 21/8/24 13:46, Thomas Huth wrote:
> On 21/08/2024 13.29, Philippe Mathieu-Daudé wrote:
>> Straight forward conversion. Update the SHA1 hashes to
>> SHA256 hashes since SHA1 should not be used anymore nowadays.
>>
>> Since the asset is expected locally and the test is guarded
>> with QEMU_TEST_ALLOW_UNTRUSTED_CODE, keep it under the 'quick'
>> category.
>>
>>    $ RESCUE_YL_PATH=/path/to/rescue-yl QEMU_TEST_ALLOW_UNTRUSTED_CODE=1 \
>>      make check-functional-mips64el
>>    1/4 qemu:func-quick+func-mips64el / 
>> func-mips64el-empty_cpu_model      OK   0.12s   1 subtests passed
>>    2/4 qemu:func-quick+func-mips64el / 
>> func-mips64el-version              OK   0.13s   1 subtests passed
>>    3/4 qemu:func-quick+func-mips64el / 
>> func-mips64el-info_usernet         OK   0.15s   1 subtests passed
>>    4/4 qemu:func-quick+func-mips64el / 
>> func-mips64el-mips64el_fuloong2e   OK   0.19s   1 subtests passed
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> Based-on: <20240821082748.65853-1-thuth@redhat.com>
>> ---
>>   MAINTAINERS                                   |  2 +-
>>   tests/functional/meson.build                  |  4 +++
>>   .../test_mips64el_fuloong2e.py}               | 32 +++++++++----------
>>   3 files changed, 21 insertions(+), 17 deletions(-)
>>   rename tests/{avocado/machine_mips_fuloong2e.py => 
>> functional/test_mips64el_fuloong2e.py} (56%)
>>   mode change 100644 => 100755
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 25e71ac14c..77fbb5d42e 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -1384,7 +1384,7 @@ S: Odd Fixes
>>   F: hw/mips/fuloong2e.c
>>   F: hw/pci-host/bonito.c
>>   F: include/hw/pci-host/bonito.h
>> -F: tests/avocado/machine_mips_fuloong2e.py
>> +F: tests/functional/test_mips64el_fuloong2e.py
>>   Loongson-3 virtual platforms
>>   M: Huacai Chen <chenhuacai@kernel.org>
>> diff --git a/tests/functional/meson.build b/tests/functional/meson.build
>> index 12e08e365b..8d28313a65 100644
>> --- a/tests/functional/meson.build
>> +++ b/tests/functional/meson.build
>> @@ -51,6 +51,10 @@ tests_microblazeel_thorough = [
>>     'microblazeel_s3adsp1800'
>>   ]
>> +tests_mips64el_quick = [
>> +  'mips64el_fuloong2e',
>> +]
>> +
>>   tests_mips64el_thorough = [
>>     'mips64el_loongson3v',
>>   ]
>> diff --git a/tests/avocado/machine_mips_fuloong2e.py 
>> b/tests/functional/test_mips64el_fuloong2e.py
>> old mode 100644
>> new mode 100755
>> similarity index 56%
>> rename from tests/avocado/machine_mips_fuloong2e.py
>> rename to tests/functional/test_mips64el_fuloong2e.py
>> index 89291f47b2..523dce4ec4
>> --- a/tests/avocado/machine_mips_fuloong2e.py
>> +++ b/tests/functional/test_mips64el_fuloong2e.py
>> @@ -1,3 +1,5 @@
>> +#!/usr/bin/env python3
>> +#
>>   # Functional tests for the Lemote Fuloong-2E machine.
>>   #
>>   # Copyright (c) 2019 Philippe Mathieu-Daudé <f4bug@amsat.org>
>> @@ -9,34 +11,32 @@
>>   import os
>> -from avocado import skipUnless
>> -from avocado_qemu import QemuSystemTest
>> -from avocado_qemu import wait_for_console_pattern
>> +from qemu_test import QemuSystemTest, Asset
>> +from qemu_test import wait_for_console_pattern
>> +from unittest import skipUnless
>>   class MipsFuloong2e(QemuSystemTest):
>>       timeout = 60
>> -    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted 
>> code')
>> -    @skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not 
>> available')
> 
> Wouldn't it be better to keep the RESCUE_YL_PATH decorator?

Oops yes, no clue how I removed that.

> 
>> +    ASSET_KERNEL = Asset(
>> +        # http://dev.lemote.com/files/resource/download/rescue/rescue-yl
>> +        ('file://' + os.getenv('RESCUE_YL_PATH')),
> 
> The precaching is now failing if this environment variable has not been 
> set:
> 
> Traceback (most recent call last):
>    File 
> "/home/thuth/devel/qemu/tests/functional/test_mips64el_fuloong2e.py", 
> line 18, in <module>
>      class MipsFuloong2e(QemuSystemTest):
>    File 
> "/home/thuth/devel/qemu/tests/functional/test_mips64el_fuloong2e.py", 
> line 24, in MipsFuloong2e
>      ('file://' + os.getenv('RESCUE_YL_PATH')),
>       ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> TypeError: can only concatenate str (not "NoneType") to str
> 
> Since we don't really need precaching in this case, maybe you could move 
> the asset definition into the function itself, or do this test without 
> the asset framework?

Good idea.
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 25e71ac14c..77fbb5d42e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1384,7 +1384,7 @@  S: Odd Fixes
 F: hw/mips/fuloong2e.c
 F: hw/pci-host/bonito.c
 F: include/hw/pci-host/bonito.h
-F: tests/avocado/machine_mips_fuloong2e.py
+F: tests/functional/test_mips64el_fuloong2e.py
 
 Loongson-3 virtual platforms
 M: Huacai Chen <chenhuacai@kernel.org>
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 12e08e365b..8d28313a65 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -51,6 +51,10 @@  tests_microblazeel_thorough = [
   'microblazeel_s3adsp1800'
 ]
 
+tests_mips64el_quick = [
+  'mips64el_fuloong2e',
+]
+
 tests_mips64el_thorough = [
   'mips64el_loongson3v',
 ]
diff --git a/tests/avocado/machine_mips_fuloong2e.py b/tests/functional/test_mips64el_fuloong2e.py
old mode 100644
new mode 100755
similarity index 56%
rename from tests/avocado/machine_mips_fuloong2e.py
rename to tests/functional/test_mips64el_fuloong2e.py
index 89291f47b2..523dce4ec4
--- a/tests/avocado/machine_mips_fuloong2e.py
+++ b/tests/functional/test_mips64el_fuloong2e.py
@@ -1,3 +1,5 @@ 
+#!/usr/bin/env python3
+#
 # Functional tests for the Lemote Fuloong-2E machine.
 #
 # Copyright (c) 2019 Philippe Mathieu-Daudé <f4bug@amsat.org>
@@ -9,34 +11,32 @@ 
 
 import os
 
-from avocado import skipUnless
-from avocado_qemu import QemuSystemTest
-from avocado_qemu import wait_for_console_pattern
+from qemu_test import QemuSystemTest, Asset
+from qemu_test import wait_for_console_pattern
+from unittest import skipUnless
 
 class MipsFuloong2e(QemuSystemTest):
 
     timeout = 60
 
-    @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
-    @skipUnless(os.getenv('RESCUE_YL_PATH'), 'RESCUE_YL_PATH not available')
+    ASSET_KERNEL = Asset(
+        # http://dev.lemote.com/files/resource/download/rescue/rescue-yl
+        ('file://' + os.getenv('RESCUE_YL_PATH')),
+        'ab588d3316777c62cc81baa20ac92e98b01955c244dff3794b711bc34e26e51d')
+
+    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
     def test_linux_kernel_isa_serial(self):
-        """
-        :avocado: tags=arch:mips64el
-        :avocado: tags=machine:fuloong2e
-        :avocado: tags=endian:little
-        :avocado: tags=device:bonito64
-        :avocado: tags=device:via686b
-        """
         # Recovery system for the Yeeloong laptop
         # (enough to test the fuloong2e southbridge, accessing its ISA bus)
-        # http://dev.lemote.com/files/resource/download/rescue/rescue-yl
-        kernel_hash = 'ec4d1bd89a8439c41033ca63db60160cc6d6f09a'
-        kernel_path = self.fetch_asset('file://' + os.getenv('RESCUE_YL_PATH'),
-                                       asset_hash=kernel_hash)
+        kernel_path = self.ASSET_KERNEL.fetch()
 
+        self.set_machine('fuloong2e')
         self.vm.set_console()
         self.vm.add_args('-kernel', kernel_path)
         self.vm.launch()
         wait_for_console_pattern(self, 'Linux version 2.6.27.7lemote')
         cpu_revision = 'CPU revision is: 00006302 (ICT Loongson-2)'
         wait_for_console_pattern(self, cpu_revision)
+
+if __name__ == '__main__':
+    QemuSystemTest.main()