diff mbox series

[v21,16/20] tests/avocado: s390x cpu topology entitlement tests

Message ID 20230630091752.67190-17-pmorel@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series s390x: CPU Topology | expand

Commit Message

Pierre Morel June 30, 2023, 9:17 a.m. UTC
This test takes care to check the changes on different entitlements
when the guest requests a polarization change.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
---
 tests/avocado/s390_topology.py | 47 ++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

Comments

Thomas Huth July 5, 2023, 10:22 a.m. UTC | #1
On 30/06/2023 11.17, Pierre Morel wrote:
> This test takes care to check the changes on different entitlements
> when the guest requests a polarization change.
> 
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
>   tests/avocado/s390_topology.py | 47 ++++++++++++++++++++++++++++++++++
>   1 file changed, 47 insertions(+)
> 
> diff --git a/tests/avocado/s390_topology.py b/tests/avocado/s390_topology.py
> index 2cf731cb1d..4855e5d7e4 100644
> --- a/tests/avocado/s390_topology.py
> +++ b/tests/avocado/s390_topology.py
> @@ -240,3 +240,50 @@ def test_polarisation(self):
>           res = self.vm.qmp('query-cpu-polarization')
>           self.assertEqual(res['return']['polarization'], 'horizontal')
>           self.check_topology(0, 0, 0, 0, 'medium', False)
> +
> +    def test_entitlement(self):
> +        """
> +        This test verifies that QEMU modifies the polarization
> +        after a guest request.
...
> +        self.check_topology(0, 0, 0, 0, 'low', False)
> +        self.check_topology(1, 0, 0, 0, 'medium', False)
> +        self.check_topology(2, 1, 0, 0, 'high', False)
> +        self.check_topology(3, 1, 0, 0, 'high', False)
> +
> +        self.guest_set_dispatching('1');
> +
> +        self.check_topology(0, 0, 0, 0, 'low', False)
> +        self.check_topology(1, 0, 0, 0, 'medium', False)
> +        self.check_topology(2, 1, 0, 0, 'high', False)
> +        self.check_topology(3, 1, 0, 0, 'high', False)
> +
> +        self.guest_set_dispatching('0');
> +
> +        self.check_topology(0, 0, 0, 0, 'low', False)
> +        self.check_topology(1, 0, 0, 0, 'medium', False)
> +        self.check_topology(2, 1, 0, 0, 'high', False)
> +        self.check_topology(3, 1, 0, 0, 'high', False)

Sorry, I think I'm too blind to see it, but what has changed after the guest 
changed the polarization?

  Thomas
Nina Schoetterl-Glausch July 12, 2023, 7:37 p.m. UTC | #2
On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
> On 30/06/2023 11.17, Pierre Morel wrote:
> > This test takes care to check the changes on different entitlements
> > when the guest requests a polarization change.
> > 
> > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> > ---
> >   tests/avocado/s390_topology.py | 47
> > ++++++++++++++++++++++++++++++++++
> >   1 file changed, 47 insertions(+)
> > 
> > diff --git a/tests/avocado/s390_topology.py
> > b/tests/avocado/s390_topology.py
> > index 2cf731cb1d..4855e5d7e4 100644
> > --- a/tests/avocado/s390_topology.py
> > +++ b/tests/avocado/s390_topology.py
> > @@ -240,3 +240,50 @@ def test_polarisation(self):
> >           res = self.vm.qmp('query-cpu-polarization')
> >           self.assertEqual(res['return']['polarization'],
> > 'horizontal')
> >           self.check_topology(0, 0, 0, 0, 'medium', False)
> > +
> > +    def test_entitlement(self):
> > +        """
> > +        This test verifies that QEMU modifies the polarization
> > +        after a guest request.
> ...
> > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > +
> > +        self.guest_set_dispatching('1');
> > +
> > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > +
> > +        self.guest_set_dispatching('0');
> > +
> > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > +        self.check_topology(3, 1, 0, 0, 'high', False)
> 
> Sorry, I think I'm too blind to see it, but what has changed after
> the guest 
> changed the polarization?

Nothing, the values are retained, they're just not active.
The guest will see a horizontal polarization until it changes back to
vertical.

> 
>   Thomas
>
Thomas Huth July 12, 2023, 8:11 p.m. UTC | #3
On 12/07/2023 21.37, Nina Schoetterl-Glausch wrote:
> On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
>> On 30/06/2023 11.17, Pierre Morel wrote:
>>> This test takes care to check the changes on different entitlements
>>> when the guest requests a polarization change.
>>>
>>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>>> ---
>>>    tests/avocado/s390_topology.py | 47
>>> ++++++++++++++++++++++++++++++++++
>>>    1 file changed, 47 insertions(+)
>>>
>>> diff --git a/tests/avocado/s390_topology.py
>>> b/tests/avocado/s390_topology.py
>>> index 2cf731cb1d..4855e5d7e4 100644
>>> --- a/tests/avocado/s390_topology.py
>>> +++ b/tests/avocado/s390_topology.py
>>> @@ -240,3 +240,50 @@ def test_polarisation(self):
>>>            res = self.vm.qmp('query-cpu-polarization')
>>>            self.assertEqual(res['return']['polarization'],
>>> 'horizontal')
>>>            self.check_topology(0, 0, 0, 0, 'medium', False)
>>> +
>>> +    def test_entitlement(self):
>>> +        """
>>> +        This test verifies that QEMU modifies the polarization
>>> +        after a guest request.
>> ...
>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>> +
>>> +        self.guest_set_dispatching('1');
>>> +
>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>> +
>>> +        self.guest_set_dispatching('0');
>>> +
>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>
>> Sorry, I think I'm too blind to see it, but what has changed after
>> the guest
>> changed the polarization?
> 
> Nothing, the values are retained, they're just not active.
> The guest will see a horizontal polarization until it changes back to
> vertical.

But then the comment in front of it ("This test verifies that QEMU 
*modifies* the polarization...") does not quite match, does it?

  Thomas
Nina Schoetterl-Glausch July 14, 2023, 4:30 p.m. UTC | #4
On Wed, 2023-07-12 at 22:11 +0200, Thomas Huth wrote:
> On 12/07/2023 21.37, Nina Schoetterl-Glausch wrote:
> > On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
> > > On 30/06/2023 11.17, Pierre Morel wrote:
> > > > This test takes care to check the changes on different
> > > > entitlements
> > > > when the guest requests a polarization change.
> > > > 
> > > > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> > > > ---
> > > >    tests/avocado/s390_topology.py | 47
> > > > ++++++++++++++++++++++++++++++++++
> > > >    1 file changed, 47 insertions(+)
> > > > 
> > > > diff --git a/tests/avocado/s390_topology.py
> > > > b/tests/avocado/s390_topology.py
> > > > index 2cf731cb1d..4855e5d7e4 100644
> > > > --- a/tests/avocado/s390_topology.py
> > > > +++ b/tests/avocado/s390_topology.py
> > > > @@ -240,3 +240,50 @@ def test_polarisation(self):
> > > >            res = self.vm.qmp('query-cpu-polarization')
> > > >            self.assertEqual(res['return']['polarization'],
> > > > 'horizontal')
> > > >            self.check_topology(0, 0, 0, 0, 'medium', False)
> > > > +
> > > > +    def test_entitlement(self):
> > > > +        """
> > > > +        This test verifies that QEMU modifies the polarization
> > > > +        after a guest request.
> > > ...
> > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > > +
> > > > +        self.guest_set_dispatching('1');
> > > > +
> > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > > +
> > > > +        self.guest_set_dispatching('0');
> > > > +
> > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > 
> > > Sorry, I think I'm too blind to see it, but what has changed
> > > after
> > > the guest
> > > changed the polarization?
> > 
> > Nothing, the values are retained, they're just not active.
> > The guest will see a horizontal polarization until it changes back
> > to
> > vertical.
> 
> But then the comment in front of it ("This test verifies that QEMU 
> *modifies* the polarization...") does not quite match, does it?

Yeah, it tests that QEMU reports it's own state changed when using
set-cpu-topology.
I think it would be a good idea to get the guests view from the sysfs,
also.

> 
>   Thomas
> 
>
Pierre Morel July 19, 2023, 2:08 p.m. UTC | #5
On 7/14/23 18:30, Nina Schoetterl-Glausch wrote:
> On Wed, 2023-07-12 at 22:11 +0200, Thomas Huth wrote:
>> On 12/07/2023 21.37, Nina Schoetterl-Glausch wrote:
>>> On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
>>>> On 30/06/2023 11.17, Pierre Morel wrote:
>>>>> This test takes care to check the changes on different
>>>>> entitlements
>>>>> when the guest requests a polarization change.
>>>>>
>>>>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>>>>> ---
>>>>>     tests/avocado/s390_topology.py | 47
>>>>> ++++++++++++++++++++++++++++++++++
>>>>>     1 file changed, 47 insertions(+)
>>>>>
>>>>> diff --git a/tests/avocado/s390_topology.py
>>>>> b/tests/avocado/s390_topology.py
>>>>> index 2cf731cb1d..4855e5d7e4 100644
>>>>> --- a/tests/avocado/s390_topology.py
>>>>> +++ b/tests/avocado/s390_topology.py
>>>>> @@ -240,3 +240,50 @@ def test_polarisation(self):
>>>>>             res = self.vm.qmp('query-cpu-polarization')
>>>>>             self.assertEqual(res['return']['polarization'],
>>>>> 'horizontal')
>>>>>             self.check_topology(0, 0, 0, 0, 'medium', False)
>>>>> +
>>>>> +    def test_entitlement(self):
>>>>> +        """
>>>>> +        This test verifies that QEMU modifies the polarization
>>>>> +        after a guest request.
>>>> ...
>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>>> +
>>>>> +        self.guest_set_dispatching('1');
>>>>> +
>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>>> +
>>>>> +        self.guest_set_dispatching('0');
>>>>> +
>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>> Sorry, I think I'm too blind to see it, but what has changed
>>>> after
>>>> the guest
>>>> changed the polarization?
>>> Nothing, the values are retained, they're just not active.
>>> The guest will see a horizontal polarization until it changes back
>>> to
>>> vertical.
>> But then the comment in front of it ("This test verifies that QEMU
>> *modifies* the polarization...") does not quite match, does it?
> Yeah, it tests that QEMU reports it's own state changed when using
> set-cpu-topology.
> I think it would be a good idea to get the guests view from the sysfs,
> also.
>
>>    Thomas
>>
>>

Yes, I think you are right, I rewrite this to check the guest view of 
the changes.

As you said the values are retained when not used by horizontal 
polarization so it is a non sense to check from host view.

Thanks

Pierre
Nina Schoetterl-Glausch July 19, 2023, 2:13 p.m. UTC | #6
On Wed, 2023-07-19 at 16:08 +0200, Pierre Morel wrote:
> 
> On 7/14/23 18:30, Nina Schoetterl-Glausch wrote:
> > On Wed, 2023-07-12 at 22:11 +0200, Thomas Huth wrote:
> > > On 12/07/2023 21.37, Nina Schoetterl-Glausch wrote:
> > > > On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
> > > > > On 30/06/2023 11.17, Pierre Morel wrote:
> > > > > > This test takes care to check the changes on different
> > > > > > entitlements
> > > > > > when the guest requests a polarization change.
> > > > > > 
> > > > > > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> > > > > > ---
> > > > > >     tests/avocado/s390_topology.py | 47
> > > > > > ++++++++++++++++++++++++++++++++++
> > > > > >     1 file changed, 47 insertions(+)
> > > > > > 
> > > > > > diff --git a/tests/avocado/s390_topology.py
> > > > > > b/tests/avocado/s390_topology.py
> > > > > > index 2cf731cb1d..4855e5d7e4 100644
> > > > > > --- a/tests/avocado/s390_topology.py
> > > > > > +++ b/tests/avocado/s390_topology.py
> > > > > > @@ -240,3 +240,50 @@ def test_polarisation(self):
> > > > > >             res = self.vm.qmp('query-cpu-polarization')
> > > > > >             self.assertEqual(res['return']['polarization'],
> > > > > > 'horizontal')
> > > > > >             self.check_topology(0, 0, 0, 0, 'medium',
> > > > > > False)
> > > > > > +
> > > > > > +    def test_entitlement(self):
> > > > > > +        """
> > > > > > +        This test verifies that QEMU modifies the
> > > > > > polarization
> > > > > > +        after a guest request.
> > > > > ...
> > > > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > > > > +
> > > > > > +        self.guest_set_dispatching('1');
> > > > > > +
> > > > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > > > > +
> > > > > > +        self.guest_set_dispatching('0');
> > > > > > +
> > > > > > +        self.check_topology(0, 0, 0, 0, 'low', False)
> > > > > > +        self.check_topology(1, 0, 0, 0, 'medium', False)
> > > > > > +        self.check_topology(2, 1, 0, 0, 'high', False)
> > > > > > +        self.check_topology(3, 1, 0, 0, 'high', False)
> > > > > Sorry, I think I'm too blind to see it, but what has changed
> > > > > after
> > > > > the guest
> > > > > changed the polarization?
> > > > Nothing, the values are retained, they're just not active.
> > > > The guest will see a horizontal polarization until it changes
> > > > back
> > > > to
> > > > vertical.
> > > But then the comment in front of it ("This test verifies that
> > > QEMU
> > > *modifies* the polarization...") does not quite match, does it?
> > Yeah, it tests that QEMU reports it's own state changed when using
> > set-cpu-topology.
> > I think it would be a good idea to get the guests view from the
> > sysfs,
> > also.
> > 
> > >    Thomas
> > > 
> > > 
> 
> Yes, I think you are right, I rewrite this to check the guest view of
> the changes.
> 
> As you said the values are retained when not used by horizontal 
> polarization so it is a non sense to check from host view.

I don't think it's bad to check the host view, you can do both.

> 
> Thanks
> 
> Pierre
>
Pierre Morel July 19, 2023, 3:34 p.m. UTC | #7
On 7/19/23 16:13, Nina Schoetterl-Glausch wrote:
> On Wed, 2023-07-19 at 16:08 +0200, Pierre Morel wrote:
>> On 7/14/23 18:30, Nina Schoetterl-Glausch wrote:
>>> On Wed, 2023-07-12 at 22:11 +0200, Thomas Huth wrote:
>>>> On 12/07/2023 21.37, Nina Schoetterl-Glausch wrote:
>>>>> On Wed, 2023-07-05 at 12:22 +0200, Thomas Huth wrote:
>>>>>> On 30/06/2023 11.17, Pierre Morel wrote:
>>>>>>> This test takes care to check the changes on different
>>>>>>> entitlements
>>>>>>> when the guest requests a polarization change.
>>>>>>>
>>>>>>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>>>>>>> ---
>>>>>>>      tests/avocado/s390_topology.py | 47
>>>>>>> ++++++++++++++++++++++++++++++++++
>>>>>>>      1 file changed, 47 insertions(+)
>>>>>>>
>>>>>>> diff --git a/tests/avocado/s390_topology.py
>>>>>>> b/tests/avocado/s390_topology.py
>>>>>>> index 2cf731cb1d..4855e5d7e4 100644
>>>>>>> --- a/tests/avocado/s390_topology.py
>>>>>>> +++ b/tests/avocado/s390_topology.py
>>>>>>> @@ -240,3 +240,50 @@ def test_polarisation(self):
>>>>>>>              res = self.vm.qmp('query-cpu-polarization')
>>>>>>>              self.assertEqual(res['return']['polarization'],
>>>>>>> 'horizontal')
>>>>>>>              self.check_topology(0, 0, 0, 0, 'medium',
>>>>>>> False)
>>>>>>> +
>>>>>>> +    def test_entitlement(self):
>>>>>>> +        """
>>>>>>> +        This test verifies that QEMU modifies the
>>>>>>> polarization
>>>>>>> +        after a guest request.
>>>>>> ...
>>>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>>>>> +
>>>>>>> +        self.guest_set_dispatching('1');
>>>>>>> +
>>>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>>>>> +
>>>>>>> +        self.guest_set_dispatching('0');
>>>>>>> +
>>>>>>> +        self.check_topology(0, 0, 0, 0, 'low', False)
>>>>>>> +        self.check_topology(1, 0, 0, 0, 'medium', False)
>>>>>>> +        self.check_topology(2, 1, 0, 0, 'high', False)
>>>>>>> +        self.check_topology(3, 1, 0, 0, 'high', False)
>>>>>> Sorry, I think I'm too blind to see it, but what has changed
>>>>>> after
>>>>>> the guest
>>>>>> changed the polarization?
>>>>> Nothing, the values are retained, they're just not active.
>>>>> The guest will see a horizontal polarization until it changes
>>>>> back
>>>>> to
>>>>> vertical.
>>>> But then the comment in front of it ("This test verifies that
>>>> QEMU
>>>> *modifies* the polarization...") does not quite match, does it?
>>> Yeah, it tests that QEMU reports it's own state changed when using
>>> set-cpu-topology.
>>> I think it would be a good idea to get the guests view from the
>>> sysfs,
>>> also.
>>>
>>>>     Thomas
>>>>
>>>>
>> Yes, I think you are right, I rewrite this to check the guest view of
>> the changes.
>>
>> As you said the values are retained when not used by horizontal
>> polarization so it is a non sense to check from host view.
> I don't think it's bad to check the host view, you can do both.
>

OK, then I do it.

Thanks,

Pierre
diff mbox series

Patch

diff --git a/tests/avocado/s390_topology.py b/tests/avocado/s390_topology.py
index 2cf731cb1d..4855e5d7e4 100644
--- a/tests/avocado/s390_topology.py
+++ b/tests/avocado/s390_topology.py
@@ -240,3 +240,50 @@  def test_polarisation(self):
         res = self.vm.qmp('query-cpu-polarization')
         self.assertEqual(res['return']['polarization'], 'horizontal')
         self.check_topology(0, 0, 0, 0, 'medium', False)
+
+    def test_entitlement(self):
+        """
+        This test verifies that QEMU modifies the polarization
+        after a guest request.
+
+        :avocado: tags=arch:s390x
+        :avocado: tags=machine:s390-ccw-virtio
+        """
+        self.kernel_init()
+        self.vm.add_args('-smp',
+                         '4,drawers=2,books=2,sockets=3,cores=2,maxcpus=24')
+        self.vm.launch()
+        self.wait_until_booted()
+
+        self.system_init()
+
+        res = self.vm.qmp('set-cpu-topology',
+                          {'core-id': 0, 'entitlement': 'low'})
+        self.assertEqual(res['return'], {})
+        res = self.vm.qmp('set-cpu-topology',
+                          {'core-id': 1, 'entitlement': 'medium'})
+        self.assertEqual(res['return'], {})
+        res = self.vm.qmp('set-cpu-topology',
+                          {'core-id': 2, 'entitlement': 'high'})
+        self.assertEqual(res['return'], {})
+        res = self.vm.qmp('set-cpu-topology',
+                          {'core-id': 3, 'entitlement': 'high'})
+        self.assertEqual(res['return'], {})
+        self.check_topology(0, 0, 0, 0, 'low', False)
+        self.check_topology(1, 0, 0, 0, 'medium', False)
+        self.check_topology(2, 1, 0, 0, 'high', False)
+        self.check_topology(3, 1, 0, 0, 'high', False)
+
+        self.guest_set_dispatching('1');
+
+        self.check_topology(0, 0, 0, 0, 'low', False)
+        self.check_topology(1, 0, 0, 0, 'medium', False)
+        self.check_topology(2, 1, 0, 0, 'high', False)
+        self.check_topology(3, 1, 0, 0, 'high', False)
+
+        self.guest_set_dispatching('0');
+
+        self.check_topology(0, 0, 0, 0, 'low', False)
+        self.check_topology(1, 0, 0, 0, 'medium', False)
+        self.check_topology(2, 1, 0, 0, 'high', False)
+        self.check_topology(3, 1, 0, 0, 'high', False)