[Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093

Max Reitz posted 7 patches 6 years, 4 months ago
Maintainers: Kevin Wolf <kwolf@redhat.com>, Max Reitz <mreitz@redhat.com>
[Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093
Posted by Max Reitz 6 years, 4 months ago
null-aio may not be whitelisted.  Skip all test cases that require it.

(And skip the whole test if null-co is not whitelisted.)

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/093 | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
index 50c1e7f2ec..f03fa24a07 100755
--- a/tests/qemu-iotests/093
+++ b/tests/qemu-iotests/093
@@ -24,7 +24,7 @@ import iotests
 nsec_per_sec = 1000000000
 
 class ThrottleTestCase(iotests.QMPTestCase):
-    test_img = "null-aio://"
+    test_driver = "null-aio"
     max_drives = 3
 
     def blockstats(self, device):
@@ -35,10 +35,14 @@ class ThrottleTestCase(iotests.QMPTestCase):
                 return stat['rd_bytes'], stat['rd_operations'], stat['wr_bytes'], stat['wr_operations']
         raise Exception("Device not found for blockstats: %s" % device)
 
+    def required_drivers(self):
+        return [self.test_driver]
+
+    @iotests.skip_if_unsupported(required_drivers)
     def setUp(self):
         self.vm = iotests.VM()
         for i in range(0, self.max_drives):
-            self.vm.add_drive(self.test_img, "file.read-zeroes=on")
+            self.vm.add_drive(self.test_driver + "://", "file.read-zeroes=on")
         self.vm.launch()
 
     def tearDown(self):
@@ -264,7 +268,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
         self.assertEqual(self.blockstats('drive1')[0], 4096)
 
 class ThrottleTestCoroutine(ThrottleTestCase):
-    test_img = "null-co://"
+    test_driver = "null-co"
 
 class ThrottleTestGroupNames(iotests.QMPTestCase):
     max_drives = 3
@@ -425,4 +429,6 @@ class ThrottleTestRemovableMedia(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
+    if 'null-co' not in iotests.supported_formats():
+        iotests.notrun('null-co driver support missing')
     iotests.main(supported_fmts=["raw"])
-- 
2.21.0


Re: [Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093
Posted by John Snow 6 years, 4 months ago

On 9/17/19 5:20 AM, Max Reitz wrote:
> null-aio may not be whitelisted.  Skip all test cases that require it.
> 
> (And skip the whole test if null-co is not whitelisted.)
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>

Sorry for the goose chase on v(n-1).

I feel like maybe there's a nicer way to do this, but I can't figure out 
what it is, so ... my mistake.

Reviewed-by: John Snow <jsnow@redhat.com>

> ---
>   tests/qemu-iotests/093 | 12 +++++++++---
>   1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
> index 50c1e7f2ec..f03fa24a07 100755
> --- a/tests/qemu-iotests/093
> +++ b/tests/qemu-iotests/093
> @@ -24,7 +24,7 @@ import iotests
>   nsec_per_sec = 1000000000
>   
>   class ThrottleTestCase(iotests.QMPTestCase):
> -    test_img = "null-aio://"
> +    test_driver = "null-aio"
>       max_drives = 3
>   
>       def blockstats(self, device):
> @@ -35,10 +35,14 @@ class ThrottleTestCase(iotests.QMPTestCase):
>                   return stat['rd_bytes'], stat['rd_operations'], stat['wr_bytes'], stat['wr_operations']
>           raise Exception("Device not found for blockstats: %s" % device)
>   
> +    def required_drivers(self):
> +        return [self.test_driver]
> +
> +    @iotests.skip_if_unsupported(required_drivers)
>       def setUp(self):
>           self.vm = iotests.VM()
>           for i in range(0, self.max_drives):
> -            self.vm.add_drive(self.test_img, "file.read-zeroes=on")
> +            self.vm.add_drive(self.test_driver + "://", "file.read-zeroes=on")
>           self.vm.launch()
>   
>       def tearDown(self):
> @@ -264,7 +268,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
>           self.assertEqual(self.blockstats('drive1')[0], 4096)
>   
>   class ThrottleTestCoroutine(ThrottleTestCase):
> -    test_img = "null-co://"
> +    test_driver = "null-co"
>   
>   class ThrottleTestGroupNames(iotests.QMPTestCase):
>       max_drives = 3
> @@ -425,4 +429,6 @@ class ThrottleTestRemovableMedia(iotests.QMPTestCase):
>   
>   
>   if __name__ == '__main__':
> +    if 'null-co' not in iotests.supported_formats():
> +        iotests.notrun('null-co driver support missing')
>       iotests.main(supported_fmts=["raw"])
> 

-- 
—js

Re: [Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093
Posted by Andrey Shinkevich 6 years, 4 months ago

On 17/09/2019 12:20, Max Reitz wrote:
> null-aio may not be whitelisted.  Skip all test cases that require it.
> 
> (And skip the whole test if null-co is not whitelisted.)
This solution has been persisting since v1. Nevertheless, I am still not 
clear why not to run the test if the null-aio is the only whitelisted 
driver? Will the null-aio be supported in future?

Andrey
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>   tests/qemu-iotests/093 | 12 +++++++++---
>   1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
> index 50c1e7f2ec..f03fa24a07 100755
> --- a/tests/qemu-iotests/093
> +++ b/tests/qemu-iotests/093
> @@ -24,7 +24,7 @@ import iotests
>   nsec_per_sec = 1000000000
>   
>   class ThrottleTestCase(iotests.QMPTestCase):
> -    test_img = "null-aio://"
> +    test_driver = "null-aio"
>       max_drives = 3
>   
>       def blockstats(self, device):
> @@ -35,10 +35,14 @@ class ThrottleTestCase(iotests.QMPTestCase):
>                   return stat['rd_bytes'], stat['rd_operations'], stat['wr_bytes'], stat['wr_operations']
>           raise Exception("Device not found for blockstats: %s" % device)
>   
> +    def required_drivers(self):
> +        return [self.test_driver]
> +
> +    @iotests.skip_if_unsupported(required_drivers)
>       def setUp(self):
>           self.vm = iotests.VM()
>           for i in range(0, self.max_drives):
> -            self.vm.add_drive(self.test_img, "file.read-zeroes=on")
> +            self.vm.add_drive(self.test_driver + "://", "file.read-zeroes=on")
>           self.vm.launch()
>   
>       def tearDown(self):
> @@ -264,7 +268,7 @@ class ThrottleTestCase(iotests.QMPTestCase):
>           self.assertEqual(self.blockstats('drive1')[0], 4096)
>   
>   class ThrottleTestCoroutine(ThrottleTestCase):
> -    test_img = "null-co://"
> +    test_driver = "null-co"
>   
>   class ThrottleTestGroupNames(iotests.QMPTestCase):
>       max_drives = 3
> @@ -425,4 +429,6 @@ class ThrottleTestRemovableMedia(iotests.QMPTestCase):
>   
>   
>   if __name__ == '__main__':
> +    if 'null-co' not in iotests.supported_formats():
> +        iotests.notrun('null-co driver support missing')
>       iotests.main(supported_fmts=["raw"])
> 

Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
-- 
With the best regards,
Andrey Shinkevich
Re: [Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093
Posted by Max Reitz 6 years, 4 months ago
On 17.09.19 16:25, Andrey Shinkevich wrote:
> 
> 
> On 17/09/2019 12:20, Max Reitz wrote:
>> null-aio may not be whitelisted.  Skip all test cases that require it.
>>
>> (And skip the whole test if null-co is not whitelisted.)
> This solution has been persisting since v1. Nevertheless, I am still not 
> clear why not to run the test if the null-aio is the only whitelisted 
> driver? Will the null-aio be supported in future?

I don’t see a reason why we’d remove it.  But chances are, if any of the
null* drivers is whitelisted, it’ll be null-co (because we barely use
the AIO block driver interface anymore).

Max

Re: [Qemu-devel] [PATCH v4 5/7] iotests: Test driver whitelisting in 093
Posted by Andrey Shinkevich 6 years, 4 months ago

On 18/09/2019 09:29, Max Reitz wrote:
> On 17.09.19 16:25, Andrey Shinkevich wrote:
>>
>>
>> On 17/09/2019 12:20, Max Reitz wrote:
>>> null-aio may not be whitelisted.  Skip all test cases that require it.
>>>
>>> (And skip the whole test if null-co is not whitelisted.)
>> This solution has been persisting since v1. Nevertheless, I am still not
>> clear why not to run the test if the null-aio is the only whitelisted
>> driver? Will the null-aio be supported in future?
> 
> I don’t see a reason why we’d remove it.  But chances are, if any of the
> null* drivers is whitelisted, it’ll be null-co (because we barely use
> the AIO block driver interface anymore).
> 
> Max
> 

Thank you Max.

Andrey
-- 
With the best regards,
Andrey Shinkevich