aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/benchmark/scenarios/lib/test_get_numa_info.py
blob: 680692fdc4e6f550de7c1f7617a74a756d7a8aa3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
##############################################################################
# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
import unittest
import mock

from yardstick.benchmark.scenarios.lib.get_numa_info import GetNumaInfo

BASE = 'yardstick.benchmark.scenarios.lib.get_numa_info'


class GetNumaInfoTestCase(unittest.TestCase):

    @mock.patch('{}.GetNumaInfo._check_numa_node'.format(BASE))
    @mock.patch('{}.GetNumaInfo._get_current_host_name'.format(BASE))
    @mock.patch('yardstick.benchmark.scenarios.lib.get_numa_info.yaml_load')
    @mock.patch('yardstick.common.task_template.TaskTemplate.render')
    def test_get_numa_info(self,
                           mock_render,
                           mock_safe_load,
                           mock_get_current_host_name,
                           mock_check_numa_node):
        scenario_cfg = {
            'options': {
                'server': {
                    'id': '1'
                },
                'file': 'yardstick/ssh.py'
            },
            'output': 'numa_info'
        }
        mock_safe_load.return_value = {
            'nodes': []
        }
        obj = GetNumaInfo(scenario_cfg, {})
        obj.run({})
        self.assertTrue(mock_get_current_host_name.called)
        self.assertTrue(mock_check_numa_node.called)

    @mock.patch('yardstick.ssh.SSH.from_node')
    @mock.patch('{}.GetNumaInfo._get_current_host_name'.format(BASE))
    @mock.patch('yardstick.benchmark.scenarios.lib.get_numa_info.yaml_load')
    @mock.patch('yardstick.common.task_template.TaskTemplate.render')
    def test_check_numa_node(self,
                             mock_render,
                             mock_safe_load,
                             mock_get_current_host_name,
                             mock_from_node):
        scenario_cfg = {
            'options': {
                'server': {
                    'id': '1'
                },
                'file': 'yardstick/ssh.py'
            },
            'output': 'numa_info'
        }
        mock_safe_load.return_value = {
            'nodes': []
        }
        data = """
        <data>
        </data>
        """
        mock_from_node().execute.return_value = (0, data, '')
        obj = GetNumaInfo(scenario_cfg, {})
        result = obj._check_numa_node('1', 'host4')
        self.assertEqual(result, {'pinning': [], 'vcpupin': []})

    @mock.patch('{}.change_obj_to_dict'.format(BASE))
    @mock.patch('{}.get_nova_client'.format(BASE))
    @mock.patch('yardstick.benchmark.scenarios.lib.get_numa_info.yaml_load')
    @mock.patch('yardstick.common.task_template.TaskTemplate.render')
    def test_get_current_host_name(self,
                                   mock_render,
                                   mock_safe_load,
                                   mock_get_nova_client,
                                   mock_change_obj_to_dict):
        scenario_cfg = {
            'options': {
                'server': {
                    'id': '1'
                },
                'file': 'yardstick/ssh.py'
            },
            'output': 'numa_info'
        }
        mock_get_nova_client().servers.get.return_value = ''
        mock_change_obj_to_dict.return_value = {'OS-EXT-SRV-ATTR:host': 'host5'}

        obj = GetNumaInfo(scenario_cfg, {})
        result = obj._get_current_host_name('1')
        self.assertEqual(result, 'host5')


def main():
    unittest.main()


if __name__ == '__main__':
    main()