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()
|