diff mbox series

[5/5] iotests: Add new case to 030

Message ID 20190627223255.3789-6-mreitz@redhat.com
State New
Headers show
Series block: Add BDS.never_freeze | expand

Commit Message

Max Reitz June 27, 2019, 10:32 p.m. UTC
We recently removed the dependency of the stream job on its base node.
That makes it OK to use a commit filter node there.  Test that.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/030     | 25 +++++++++++++++++++++++++
 tests/qemu-iotests/030.out |  4 ++--
 2 files changed, 27 insertions(+), 2 deletions(-)

Comments

Andrey Shinkevich July 1, 2019, 4:44 p.m. UTC | #1
On 28/06/2019 01:32, Max Reitz wrote:
> We recently removed the dependency of the stream job on its base node.
> That makes it OK to use a commit filter node there.  Test that.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>   tests/qemu-iotests/030     | 25 +++++++++++++++++++++++++
>   tests/qemu-iotests/030.out |  4 ++--
>   2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
> index 10fe1de89d..a0397072bc 100755
> --- a/tests/qemu-iotests/030
> +++ b/tests/qemu-iotests/030
> @@ -363,6 +363,31 @@ class TestParallelOps(iotests.QMPTestCase):
>           self.wait_until_completed()
>           self.assert_no_active_block_jobs()
>   
> +    # In this case the base node of the stream job is the commit job's
> +    # filter node.  stream does not have a real dependency on its base
> +    # node, so even though commit removes it when it is done, there is
> +    # no conflict.
> +    def test_overlapping_5(self):
> +        self.assert_no_active_block_jobs()
> +
> +        # Commit from node2 into node0
> +        result = self.vm.qmp('block-commit', device='drive0',
> +                             top_node='node2', base_node='node0',
> +                             filter_node_name='commit-filter', speed=1024*1024)
> +        self.assert_qmp(result, 'return', {})
> +
> +        # Stream from node2 into node4
> +        result = self.vm.qmp('block-stream', device='node4',
> +                             base_node='commit-filter', job_id='node4')
> +        self.assert_qmp(result, 'return', {})
> +
> +        result = self.vm.qmp('block-job-set-speed', device='drive0', speed=0)
> +        self.assert_qmp(result, 'return', {})
> +
> +        self.vm.run_job(job='drive0', auto_dismiss=True, use_log=False)
> +        self.vm.run_job(job='node4', auto_dismiss=True, use_log=False)
> +        self.assert_no_active_block_jobs()
> +
>       # Test a block-stream and a block-commit job in parallel
>       # Here the stream job is supposed to finish quickly in order to reproduce
>       # the scenario that triggers the bug fixed in 3d5d319e1221 and 1a63a907507
> diff --git a/tests/qemu-iotests/030.out b/tests/qemu-iotests/030.out
> index 4fd1c2dcd2..5eb508de07 100644
> --- a/tests/qemu-iotests/030.out
> +++ b/tests/qemu-iotests/030.out
> @@ -1,5 +1,5 @@
> -.........................
> +..........................
>   ----------------------------------------------------------------------
> -Ran 25 tests
> +Ran 26 tests
>   
>   OK
> 

Tested-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Alberto Garcia July 2, 2019, 2:59 p.m. UTC | #2
On Fri 28 Jun 2019 12:32:55 AM CEST, Max Reitz wrote:
> We recently removed the dependency of the stream job on its base node.
> That makes it OK to use a commit filter node there.  Test that.
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>

Reviewed-by: Alberto Garcia <berto@igalia.com>

Berto
diff mbox series

Patch

diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
index 10fe1de89d..a0397072bc 100755
--- a/tests/qemu-iotests/030
+++ b/tests/qemu-iotests/030
@@ -363,6 +363,31 @@  class TestParallelOps(iotests.QMPTestCase):
         self.wait_until_completed()
         self.assert_no_active_block_jobs()
 
+    # In this case the base node of the stream job is the commit job's
+    # filter node.  stream does not have a real dependency on its base
+    # node, so even though commit removes it when it is done, there is
+    # no conflict.
+    def test_overlapping_5(self):
+        self.assert_no_active_block_jobs()
+
+        # Commit from node2 into node0
+        result = self.vm.qmp('block-commit', device='drive0',
+                             top_node='node2', base_node='node0',
+                             filter_node_name='commit-filter', speed=1024*1024)
+        self.assert_qmp(result, 'return', {})
+
+        # Stream from node2 into node4
+        result = self.vm.qmp('block-stream', device='node4',
+                             base_node='commit-filter', job_id='node4')
+        self.assert_qmp(result, 'return', {})
+
+        result = self.vm.qmp('block-job-set-speed', device='drive0', speed=0)
+        self.assert_qmp(result, 'return', {})
+
+        self.vm.run_job(job='drive0', auto_dismiss=True, use_log=False)
+        self.vm.run_job(job='node4', auto_dismiss=True, use_log=False)
+        self.assert_no_active_block_jobs()
+
     # Test a block-stream and a block-commit job in parallel
     # Here the stream job is supposed to finish quickly in order to reproduce
     # the scenario that triggers the bug fixed in 3d5d319e1221 and 1a63a907507
diff --git a/tests/qemu-iotests/030.out b/tests/qemu-iotests/030.out
index 4fd1c2dcd2..5eb508de07 100644
--- a/tests/qemu-iotests/030.out
+++ b/tests/qemu-iotests/030.out
@@ -1,5 +1,5 @@ 
-.........................
+..........................
 ----------------------------------------------------------------------
-Ran 25 tests
+Ran 26 tests
 
 OK