On Thu, Jun 9, 2016 at 11:33 PM, Iustin Pop <ius...@k1024.org> wrote:

> From: Iustin Pop <ius...@google.com>
>
> Commit 8b2ec2f added unittests for KVM pinning, but it introduced a
> non-obvious
> local dependency in the tests: the CPU_PINNING_OFF calls work by looking
> at the
> (current) machine's core count, and pinning to all those CPUs. In order to
> make
> this work independently from the test machine, we must also mock the
> result of
> process.cpu_count(). Do this by using a core count that is very much
> unlikely
> to ever be present in the real world.
>
> Signed-off-by: Iustin Pop <ius...@google.com>
> ---
>  test/py/ganeti.hypervisor.hv_kvm_unittest.py | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/test/py/ganeti.hypervisor.hv_kvm_unittest.py b/test/py/
> ganeti.hypervisor.hv_kvm_unittest.py
> index c7a53b5..55ffb9b 100755
> --- a/test/py/ganeti.hypervisor.hv_kvm_unittest.py
> +++ b/test/py/ganeti.hypervisor.hv_kvm_unittest.py
> @@ -37,6 +37,7 @@ import socket
>  import os
>  import struct
>  import re
> +from contextlib import nested
>
>  from ganeti import serializer
>  from ganeti import constants
> @@ -636,12 +637,13 @@ class TestKvmCpuPinning(testutils.GanetiTestCase):
>      cpu_mask = self.params['cpu_mask']
>      worker_cpu_mask = self.params['worker_cpu_mask']
>      hypervisor = hv_kvm.KVMHypervisor()
> -    with mock.patch('psutil.Process', return_value=mock_process):
> +    with nested(mock.patch('psutil.Process', return_value=mock_process),
> +                mock.patch('psutil.cpu_count', return_value=1237)):
>

'nested' is deprecated in Python 2.7 but unfortunately 2.6 does not support
comma separated contexts as 2.7 does. All Debian versions newer than
Squeeze should have 2.7 already. I believe once master goes stable, we can
safely drop support for Python <2.7, what  do you think?

       hypervisor._ExecuteCpuAffinity('test_instance', cpu_mask,
> worker_cpu_mask)
>
>      self.assertEqual(mock_process.set_cpu_affinity.call_count, 1)
>      self.assertEqual(mock_process.set_cpu_affinity.call_args_list[0],
> -                     mock.call(range(0,12)))
> +                     mock.call(range(0,1237)))
>
>    def testCpuPinningPerVcpu(self):
>      mock_process = mock.MagicMock()
> @@ -659,11 +661,12 @@ class TestKvmCpuPinning(testutils.GanetiTestCase):
>      def get_mock_process(unused_pid):
>        return mock_process
>
> -    with mock.patch('psutil.Process', get_mock_process):
> +    with nested(mock.patch('psutil.Process', get_mock_process),
> +                mock.patch('psutil.cpu_count', return_value=1237)):
>        hypervisor._ExecuteCpuAffinity('test_instance', cpu_mask,
> worker_cpu_mask)
>        self.assertEqual(mock_process.set_cpu_affinity.call_count, 7)
>        self.assertEqual(mock_process.set_cpu_affinity.call_args_list[0],
> -                       mock.call(range(0,12)))
> +                       mock.call(range(0,1237)))
>        self.assertEqual(mock_process.set_cpu_affinity.call_args_list[6],
>                         mock.call([15, 16, 17]))
>
> --
> 2.8.1
>
>

Reply via email to