[PATCH 3/4] tests/qtest/cdrom-test: Check whether devices are available before using them

Thomas Huth posted 4 patches 4 years, 1 month ago
Maintainers: John Snow <jsnow@redhat.com>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
[PATCH 3/4] tests/qtest/cdrom-test: Check whether devices are available before using them
Posted by Thomas Huth 4 years, 1 month ago
Downstream users might want to disable legacy devices in their binaries,
so we should not blindly assume that they are available. Add some proper
checks before using them.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/qtest/cdrom-test.c | 60 ++++++++++++++++++++++++++--------------
 1 file changed, 39 insertions(+), 21 deletions(-)

diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
index c1fcac5c45..cfca24fa94 100644
--- a/tests/qtest/cdrom-test.c
+++ b/tests/qtest/cdrom-test.c
@@ -142,21 +142,36 @@ static void add_x86_tests(void)
         qtest_add_data_func("cdrom/boot/isapc", "-M isapc "
                             "-drive if=ide,media=cdrom,file=", test_cdboot);
     }
-    qtest_add_data_func("cdrom/boot/am53c974",
-                        "-device am53c974 -device scsi-cd,drive=cd1 "
-                        "-drive if=none,id=cd1,format=raw,file=", test_cdboot);
-    qtest_add_data_func("cdrom/boot/dc390",
-                        "-device dc390 -device scsi-cd,drive=cd1 "
-                        "-blockdev file,node-name=cd1,filename=", test_cdboot);
-    qtest_add_data_func("cdrom/boot/lsi53c895a",
-                        "-device lsi53c895a -device scsi-cd,drive=cd1 "
-                        "-blockdev file,node-name=cd1,filename=", test_cdboot);
-    qtest_add_data_func("cdrom/boot/megasas", "-M q35 "
-                        "-device megasas -device scsi-cd,drive=cd1 "
-                        "-blockdev file,node-name=cd1,filename=", test_cdboot);
-    qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 "
-                        "-device megasas-gen2 -device scsi-cd,drive=cd1 "
-                        "-blockdev file,node-name=cd1,filename=", test_cdboot);
+    if (qtest_has_device("am53c974")) {
+        qtest_add_data_func("cdrom/boot/am53c974",
+                            "-device am53c974 -device scsi-cd,drive=cd1 "
+                            "-drive if=none,id=cd1,format=raw,file=",
+                            test_cdboot);
+    }
+    if (qtest_has_device("dc390")) {
+        qtest_add_data_func("cdrom/boot/dc390",
+                            "-device dc390 -device scsi-cd,drive=cd1 "
+                            "-blockdev file,node-name=cd1,filename=",
+                            test_cdboot);
+    }
+    if (qtest_has_device("lsi53c895a")) {
+        qtest_add_data_func("cdrom/boot/lsi53c895a",
+                            "-device lsi53c895a -device scsi-cd,drive=cd1 "
+                            "-blockdev file,node-name=cd1,filename=",
+                            test_cdboot);
+    }
+    if (qtest_has_device("megasas")) {
+        qtest_add_data_func("cdrom/boot/megasas", "-M q35 "
+                            "-device megasas -device scsi-cd,drive=cd1 "
+                            "-blockdev file,node-name=cd1,filename=",
+                            test_cdboot);
+    }
+    if (qtest_has_device("megasas-gen2")) {
+        qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 "
+                            "-device megasas-gen2 -device scsi-cd,drive=cd1 "
+                            "-blockdev file,node-name=cd1,filename=",
+                            test_cdboot);
+    }
 }
 
 static void add_s390x_tests(void)
@@ -171,12 +186,15 @@ static void add_s390x_tests(void)
                         "-drive driver=null-co,read-zeroes=on,if=none,id=d1 "
                         "-device virtio-blk,drive=d2,bootindex=1 "
                         "-drive if=none,id=d2,media=cdrom,file=", test_cdboot);
-    qtest_add_data_func("cdrom/boot/without-bootindex",
-                        "-device virtio-scsi -device virtio-serial "
-                        "-device x-terminal3270 -device virtio-blk,drive=d1 "
-                        "-drive driver=null-co,read-zeroes=on,if=none,id=d1 "
-                        "-device virtio-blk,drive=d2 "
-                        "-drive if=none,id=d2,media=cdrom,file=", test_cdboot);
+    if (qtest_has_device("x-terminal3270")) {
+        qtest_add_data_func("cdrom/boot/without-bootindex",
+                            "-device virtio-scsi -device virtio-serial "
+                            "-device x-terminal3270 -device virtio-blk,drive=d1 "
+                            "-drive driver=null-co,read-zeroes=on,if=none,id=d1 "
+                            "-device virtio-blk,drive=d2 "
+                            "-drive if=none,id=d2,media=cdrom,file=",
+                            test_cdboot);
+    }
 }
 
 int main(int argc, char **argv)
-- 
2.27.0


Re: [PATCH 3/4] tests/qtest/cdrom-test: Check whether devices are available before using them
Posted by John Snow 4 years ago
On Mon, Dec 20, 2021 at 3:11 AM Thomas Huth <thuth@redhat.com> wrote:

> Downstream users might want to disable legacy devices in their binaries,
> so we should not blindly assume that they are available. Add some proper
> checks before using them.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  tests/qtest/cdrom-test.c | 60 ++++++++++++++++++++++++++--------------
>  1 file changed, 39 insertions(+), 21 deletions(-)
>
> diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
> index c1fcac5c45..cfca24fa94 100644
> --- a/tests/qtest/cdrom-test.c
> +++ b/tests/qtest/cdrom-test.c
> @@ -142,21 +142,36 @@ static void add_x86_tests(void)
>          qtest_add_data_func("cdrom/boot/isapc", "-M isapc "
>                              "-drive if=ide,media=cdrom,file=",
> test_cdboot);
>      }
> -    qtest_add_data_func("cdrom/boot/am53c974",
> -                        "-device am53c974 -device scsi-cd,drive=cd1 "
> -                        "-drive if=none,id=cd1,format=raw,file=",
> test_cdboot);
> -    qtest_add_data_func("cdrom/boot/dc390",
> -                        "-device dc390 -device scsi-cd,drive=cd1 "
> -                        "-blockdev file,node-name=cd1,filename=",
> test_cdboot);
> -    qtest_add_data_func("cdrom/boot/lsi53c895a",
> -                        "-device lsi53c895a -device scsi-cd,drive=cd1 "
> -                        "-blockdev file,node-name=cd1,filename=",
> test_cdboot);
> -    qtest_add_data_func("cdrom/boot/megasas", "-M q35 "
> -                        "-device megasas -device scsi-cd,drive=cd1 "
> -                        "-blockdev file,node-name=cd1,filename=",
> test_cdboot);
> -    qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 "
> -                        "-device megasas-gen2 -device scsi-cd,drive=cd1 "
> -                        "-blockdev file,node-name=cd1,filename=",
> test_cdboot);
> +    if (qtest_has_device("am53c974")) {
> +        qtest_add_data_func("cdrom/boot/am53c974",
> +                            "-device am53c974 -device scsi-cd,drive=cd1 "
> +                            "-drive if=none,id=cd1,format=raw,file=",
> +                            test_cdboot);
> +    }
> +    if (qtest_has_device("dc390")) {
> +        qtest_add_data_func("cdrom/boot/dc390",
> +                            "-device dc390 -device scsi-cd,drive=cd1 "
> +                            "-blockdev file,node-name=cd1,filename=",
> +                            test_cdboot);
> +    }
> +    if (qtest_has_device("lsi53c895a")) {
> +        qtest_add_data_func("cdrom/boot/lsi53c895a",
> +                            "-device lsi53c895a -device scsi-cd,drive=cd1
> "
> +                            "-blockdev file,node-name=cd1,filename=",
> +                            test_cdboot);
> +    }
> +    if (qtest_has_device("megasas")) {
> +        qtest_add_data_func("cdrom/boot/megasas", "-M q35 "
> +                            "-device megasas -device scsi-cd,drive=cd1 "
> +                            "-blockdev file,node-name=cd1,filename=",
> +                            test_cdboot);
> +    }
> +    if (qtest_has_device("megasas-gen2")) {
> +        qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 "
> +                            "-device megasas-gen2 -device
> scsi-cd,drive=cd1 "
> +                            "-blockdev file,node-name=cd1,filename=",
> +                            test_cdboot);
> +    }
>  }
>
>  static void add_s390x_tests(void)
> @@ -171,12 +186,15 @@ static void add_s390x_tests(void)
>                          "-drive
> driver=null-co,read-zeroes=on,if=none,id=d1 "
>                          "-device virtio-blk,drive=d2,bootindex=1 "
>                          "-drive if=none,id=d2,media=cdrom,file=",
> test_cdboot);
> -    qtest_add_data_func("cdrom/boot/without-bootindex",
> -                        "-device virtio-scsi -device virtio-serial "
> -                        "-device x-terminal3270 -device
> virtio-blk,drive=d1 "
> -                        "-drive
> driver=null-co,read-zeroes=on,if=none,id=d1 "
> -                        "-device virtio-blk,drive=d2 "
> -                        "-drive if=none,id=d2,media=cdrom,file=",
> test_cdboot);
> +    if (qtest_has_device("x-terminal3270")) {
> +        qtest_add_data_func("cdrom/boot/without-bootindex",
> +                            "-device virtio-scsi -device virtio-serial "
> +                            "-device x-terminal3270 -device
> virtio-blk,drive=d1 "
> +                            "-drive
> driver=null-co,read-zeroes=on,if=none,id=d1 "
> +                            "-device virtio-blk,drive=d2 "
> +                            "-drive if=none,id=d2,media=cdrom,file=",
> +                            test_cdboot);
> +    }
>  }
>
>  int main(int argc, char **argv)
> --
> 2.27.0
>
>
Acked-by: John Snow <jsnow@redhat.com>

These are really more your tests than mine :)

--js
Re: [PATCH 3/4] tests/qtest/cdrom-test: Check whether devices are available before using them
Posted by Philippe Mathieu-Daudé 4 years ago
On 20/12/21 09:10, Thomas Huth wrote:
> Downstream users might want to disable legacy devices in their binaries,
> so we should not blindly assume that they are available. Add some proper
> checks before using them.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   tests/qtest/cdrom-test.c | 60 ++++++++++++++++++++++++++--------------
>   1 file changed, 39 insertions(+), 21 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>