3 ##############################################################################
4 # Copyright (c) 2016 Huawei Technologies Co.,Ltd.
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
12 # Unittest for yardstick.benchmark.scenarios.storage.storperf.StorPerf
19 from yardstick.benchmark.scenarios.storage import storperf
22 def mocked_requests_config_post(*args, **kwargs):
23 class MockResponseConfigPost:
24 def __init__(self, json_data, status_code):
25 self.content = json_data
26 self.status_code = status_code
28 return MockResponseConfigPost('{"stack_id": "dac27db1-3502-4300-b301-91c64e6a1622","stack_created": "false"}', 200)
31 def mocked_requests_config_get(*args, **kwargs):
32 class MockResponseConfigGet:
33 def __init__(self, json_data, status_code):
34 self.content = json_data
35 self.status_code = status_code
37 return MockResponseConfigGet('{"stack_id": "dac27db1-3502-4300-b301-91c64e6a1622","stack_created": "true"}', 200)
40 def mocked_requests_job_get(*args, **kwargs):
41 class MockResponseJobGet:
42 def __init__(self, json_data, status_code):
43 self.content = json_data
44 self.status_code = status_code
46 return MockResponseJobGet('{"status": "completed", "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}', 200)
49 def mocked_requests_job_post(*args, **kwargs):
50 class MockResponseJobPost:
51 def __init__(self, json_data, status_code):
52 self.content = json_data
53 self.status_code = status_code
55 return MockResponseJobPost('{"job_id": \
56 "d46bfb8c-36f4-4a40-813b-c4b4a437f728"}', 200)
59 def mocked_requests_job_delete(*args, **kwargs):
60 class MockResponseJobDelete:
61 def __init__(self, json_data, status_code):
62 self.content = json_data
63 self.status_code = status_code
65 return MockResponseJobDelete('{}', 200)
68 def mocked_requests_delete(*args, **kwargs):
69 class MockResponseDelete:
70 def __init__(self, json_data, status_code):
71 self.json_data = json_data
72 self.status_code = status_code
74 return MockResponseDelete('{}', 200)
77 def mocked_requests_delete_failed(*args, **kwargs):
78 class MockResponseDeleteFailed:
79 def __init__(self, json_data, status_code):
80 self.json_data = json_data
81 self.status_code = status_code
83 if args[0] == "http://172.16.0.137:5000/api/v1.0/configurations":
84 return MockResponseDeleteFailed('{"message": "Teardown failed"}', 400)
86 return MockResponseDeleteFailed('{}', 404)
89 class StorPerfTestCase(unittest.TestCase):
96 'key_filename': "mykey.key"
102 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.post',
103 side_effect=mocked_requests_config_post)
104 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.get',
105 side_effect=mocked_requests_config_get)
106 def test_successful_setup(self, mock_post, mock_get):
109 "public_network": 'ext-net',
114 "StorPerf_ip": "192.168.23.2",
115 "query_interval": 10,
123 s = storperf.StorPerf(args, self.ctx)
127 self.assertTrue(s.setup_done)
129 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.post',
130 side_effect=mocked_requests_job_post)
131 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.get',
132 side_effect=mocked_requests_job_get)
133 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.delete',
134 side_effect=mocked_requests_job_delete)
135 def test_successful_run(self, mock_post, mock_get, mock_delete):
138 "public_network": 'ext-net',
143 "StorPerf_ip": "192.168.23.2",
144 "query_interval": 10,
152 s = storperf.StorPerf(args, self.ctx)
155 sample_output = '{"status": "completed", "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}'
157 expected_result = json.loads(sample_output)
161 self.assertEqual(self.result, expected_result)
163 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.delete', side_effect=mocked_requests_delete)
164 def test_successful_teardown(self, mock_delete):
167 "public_network": 'ext-net',
172 "StorPerf_ip": "192.168.23.2",
173 "query_interval": 10,
181 s = storperf.StorPerf(args, self.ctx)
185 self.assertFalse(s.setup_done)
187 @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.delete', side_effect=mocked_requests_delete_failed)
188 def test_failed_teardown(self, mock_delete):
191 "public_network": 'ext-net',
196 "StorPerf_ip": "192.168.23.2",
197 "query_interval": 10,
205 s = storperf.StorPerf(args, self.ctx)
207 self.assertRaises(AssertionError, s.teardown(), self.result)
213 if __name__ == '__main__':