[PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test

Daniel P. Berrangé posted 24 patches 3 months, 3 weeks ago
There is a newer version of this series
[PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test
Posted by Daniel P. Berrangé 3 months, 3 weeks ago
From: Thomas Huth <thuth@redhat.com>

The avocado test defined test functions for both, riscv32 and riscv64.
Since we can run the whole file with multiple targets in the new
framework, we can now consolidate the functions so we have to only
define one function per machine now.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/avocado/riscv_opensbi.py         | 63 --------------------------
 tests/functional/meson.build           |  8 ++++
 tests/functional/test_riscv_opensbi.py | 36 +++++++++++++++
 3 files changed, 44 insertions(+), 63 deletions(-)
 delete mode 100644 tests/avocado/riscv_opensbi.py
 create mode 100755 tests/functional/test_riscv_opensbi.py

diff --git a/tests/avocado/riscv_opensbi.py b/tests/avocado/riscv_opensbi.py
deleted file mode 100644
index bfff9cc3c3..0000000000
--- a/tests/avocado/riscv_opensbi.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# OpenSBI boot test for RISC-V machines
-#
-# Copyright (c) 2022, Ventana Micro
-#
-# This work is licensed under the terms of the GNU GPL, version 2 or
-# later.  See the COPYING file in the top-level directory.
-
-from avocado_qemu import QemuSystemTest
-from avocado_qemu import wait_for_console_pattern
-
-class RiscvOpenSBI(QemuSystemTest):
-    """
-    :avocado: tags=accel:tcg
-    """
-    timeout = 5
-
-    def boot_opensbi(self):
-        self.vm.set_console()
-        self.vm.launch()
-        wait_for_console_pattern(self, 'Platform Name')
-        wait_for_console_pattern(self, 'Boot HART MEDELEG')
-
-    def test_riscv32_spike(self):
-        """
-        :avocado: tags=arch:riscv32
-        :avocado: tags=machine:spike
-        """
-        self.boot_opensbi()
-
-    def test_riscv64_spike(self):
-        """
-        :avocado: tags=arch:riscv64
-        :avocado: tags=machine:spike
-        """
-        self.boot_opensbi()
-
-    def test_riscv32_sifive_u(self):
-        """
-        :avocado: tags=arch:riscv32
-        :avocado: tags=machine:sifive_u
-        """
-        self.boot_opensbi()
-
-    def test_riscv64_sifive_u(self):
-        """
-        :avocado: tags=arch:riscv64
-        :avocado: tags=machine:sifive_u
-        """
-        self.boot_opensbi()
-
-    def test_riscv32_virt(self):
-        """
-        :avocado: tags=arch:riscv32
-        :avocado: tags=machine:virt
-        """
-        self.boot_opensbi()
-
-    def test_riscv64_virt(self):
-        """
-        :avocado: tags=arch:riscv64
-        :avocado: tags=machine:virt
-        """
-        self.boot_opensbi()
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index d6a1a3a116..55021c4e4d 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -55,6 +55,14 @@ tests_ppc_thorough = [
   'ppc_bamboo',
 ]
 
+tests_riscv32_quick = [
+  'riscv_opensbi',
+]
+
+tests_riscv64_quick = [
+  'riscv_opensbi',
+]
+
 tests_s390x_thorough = [
   's390x_ccw_virtio',
   's390x_topology',
diff --git a/tests/functional/test_riscv_opensbi.py b/tests/functional/test_riscv_opensbi.py
new file mode 100755
index 0000000000..d077e40f42
--- /dev/null
+++ b/tests/functional/test_riscv_opensbi.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+#
+# OpenSBI boot test for RISC-V machines
+#
+# Copyright (c) 2022, Ventana Micro
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or
+# later.  See the COPYING file in the top-level directory.
+
+from qemu_test import QemuSystemTest
+from qemu_test import wait_for_console_pattern
+
+class RiscvOpenSBI(QemuSystemTest):
+
+    timeout = 5
+
+    def boot_opensbi(self):
+        self.vm.set_console()
+        self.vm.launch()
+        wait_for_console_pattern(self, 'Platform Name')
+        wait_for_console_pattern(self, 'Boot HART MEDELEG')
+
+    def test_riscv_spike(self):
+        self.set_machine('spike')
+        self.boot_opensbi()
+
+    def test_riscv_sifive_u(self):
+        self.set_machine('sifive_u')
+        self.boot_opensbi()
+
+    def test_riscv_virt(self):
+        self.set_machine('virt')
+        self.boot_opensbi()
+
+if __name__ == '__main__':
+    QemuSystemTest.main()
-- 
2.45.2
Re: [PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test
Posted by Philippe Mathieu-Daudé 3 months, 3 weeks ago
On 30/7/24 19:03, Daniel P. Berrangé wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> The avocado test defined test functions for both, riscv32 and riscv64.
> Since we can run the whole file with multiple targets in the new
> framework, we can now consolidate the functions so we have to only
> define one function per machine now.
> 
> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   tests/avocado/riscv_opensbi.py         | 63 --------------------------
>   tests/functional/meson.build           |  8 ++++
>   tests/functional/test_riscv_opensbi.py | 36 +++++++++++++++
>   3 files changed, 44 insertions(+), 63 deletions(-)
>   delete mode 100644 tests/avocado/riscv_opensbi.py
>   create mode 100755 tests/functional/test_riscv_opensbi.py

Please squash:

-- >8 --
diff --git a/MAINTAINERS b/MAINTAINERS
index 98eddf7ae1..a906218f9d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -336,6 +337,7 @@ F: include/hw/riscv/
  F: linux-user/host/riscv32/
  F: linux-user/host/riscv64/
  F: tests/tcg/riscv64/
+F: tests/functional/test_riscv_opensbi.py

  RISC-V XThead* extensions
  M: Christoph Muellner <christoph.muellner@vrull.eu>
---

Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Re: [PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test
Posted by Richard Henderson 3 months, 3 weeks ago
On 7/31/24 22:56, Philippe Mathieu-Daudé wrote:
> On 30/7/24 19:03, Daniel P. Berrangé wrote:
>> From: Thomas Huth <thuth@redhat.com>
>>
>> The avocado test defined test functions for both, riscv32 and riscv64.
>> Since we can run the whole file with multiple targets in the new
>> framework, we can now consolidate the functions so we have to only
>> define one function per machine now.
>>
>> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   tests/avocado/riscv_opensbi.py         | 63 --------------------------
>>   tests/functional/meson.build           |  8 ++++
>>   tests/functional/test_riscv_opensbi.py | 36 +++++++++++++++
>>   3 files changed, 44 insertions(+), 63 deletions(-)
>>   delete mode 100644 tests/avocado/riscv_opensbi.py
>>   create mode 100755 tests/functional/test_riscv_opensbi.py
> 
> Please squash:
> 
> -- >8 --
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 98eddf7ae1..a906218f9d 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -336,6 +337,7 @@ F: include/hw/riscv/
>   F: linux-user/host/riscv32/
>   F: linux-user/host/riscv64/
>   F: tests/tcg/riscv64/
> +F: tests/functional/test_riscv_opensbi.py

It seems worth taking this opportunity to add per-target subdirs of tests/functional/, so 
that we don't have to list every individual test in MAINTAINERS.

Surely one

F: tests/functional/riscv/

etc, is actually maintainable...


r~

Re: [PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test
Posted by Daniel P. Berrangé 3 months, 3 weeks ago
On Thu, Aug 01, 2024 at 09:00:36AM +1000, Richard Henderson wrote:
> On 7/31/24 22:56, Philippe Mathieu-Daudé wrote:
> > On 30/7/24 19:03, Daniel P. Berrangé wrote:
> > > From: Thomas Huth <thuth@redhat.com>
> > > 
> > > The avocado test defined test functions for both, riscv32 and riscv64.
> > > Since we can run the whole file with multiple targets in the new
> > > framework, we can now consolidate the functions so we have to only
> > > define one function per machine now.
> > > 
> > > Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > ---
> > >   tests/avocado/riscv_opensbi.py         | 63 --------------------------
> > >   tests/functional/meson.build           |  8 ++++
> > >   tests/functional/test_riscv_opensbi.py | 36 +++++++++++++++
> > >   3 files changed, 44 insertions(+), 63 deletions(-)
> > >   delete mode 100644 tests/avocado/riscv_opensbi.py
> > >   create mode 100755 tests/functional/test_riscv_opensbi.py
> > 
> > Please squash:
> > 
> > -- >8 --
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 98eddf7ae1..a906218f9d 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -336,6 +337,7 @@ F: include/hw/riscv/
> >   F: linux-user/host/riscv32/
> >   F: linux-user/host/riscv64/
> >   F: tests/tcg/riscv64/
> > +F: tests/functional/test_riscv_opensbi.py
> 
> It seems worth taking this opportunity to add per-target subdirs of
> tests/functional/, so that we don't have to list every individual test in
> MAINTAINERS.
> 
> Surely one
> 
> F: tests/functional/riscv/
> 
> etc, is actually maintainable...

Either that or wildcard the filenames

 F: tests/functional/test_riscv_*


but subdirs matching the target is probably a little nicer to really
encourage people to follow conventions more strictly. We would also
need a "tests/functional/common/" for tests which aren't target specific

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH v3 16/24] tests/functional: Convert the riscv_opensbi avocado test into a standalone test
Posted by Philippe Mathieu-Daudé 3 months, 3 weeks ago
On 1/8/24 12:09, Daniel P. Berrangé wrote:
> On Thu, Aug 01, 2024 at 09:00:36AM +1000, Richard Henderson wrote:
>> On 7/31/24 22:56, Philippe Mathieu-Daudé wrote:
>>> On 30/7/24 19:03, Daniel P. Berrangé wrote:
>>>> From: Thomas Huth <thuth@redhat.com>
>>>>
>>>> The avocado test defined test functions for both, riscv32 and riscv64.
>>>> Since we can run the whole file with multiple targets in the new
>>>> framework, we can now consolidate the functions so we have to only
>>>> define one function per machine now.
>>>>
>>>> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>> ---
>>>>    tests/avocado/riscv_opensbi.py         | 63 --------------------------
>>>>    tests/functional/meson.build           |  8 ++++
>>>>    tests/functional/test_riscv_opensbi.py | 36 +++++++++++++++
>>>>    3 files changed, 44 insertions(+), 63 deletions(-)
>>>>    delete mode 100644 tests/avocado/riscv_opensbi.py
>>>>    create mode 100755 tests/functional/test_riscv_opensbi.py
>>>
>>> Please squash:
>>>
>>> -- >8 --
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 98eddf7ae1..a906218f9d 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -336,6 +337,7 @@ F: include/hw/riscv/
>>>    F: linux-user/host/riscv32/
>>>    F: linux-user/host/riscv64/
>>>    F: tests/tcg/riscv64/
>>> +F: tests/functional/test_riscv_opensbi.py
>>
>> It seems worth taking this opportunity to add per-target subdirs of
>> tests/functional/, so that we don't have to list every individual test in
>> MAINTAINERS.
>>
>> Surely one
>>
>> F: tests/functional/riscv/
>>
>> etc, is actually maintainable...
> 
> Either that or wildcard the filenames
> 
>   F: tests/functional/test_riscv_*
> 
> 
> but subdirs matching the target is probably a little nicer to really
> encourage people to follow conventions more strictly. We would also
> need a "tests/functional/common/" for tests which aren't target specific

Hmm I'm a bit reluctant to both suggestions. Various files are
added to cover a feature which ends being tested on various archs.

Once I wanted to use Avocado tags like GitLab labels, and keep a
file where developers subscribe to tags; doing the parsing and
label to developer conversion in Python (or Rust), and having a
./get_maintainer.sh calling both the Perl one and anything we can
add in Python/Rust.

That said, wildcard pattern is a simpler start.