diff options
Diffstat (limited to 'tests/unit/benchmark/scenarios')
108 files changed, 0 insertions, 9257 deletions
diff --git a/tests/unit/benchmark/scenarios/__init__.py b/tests/unit/benchmark/scenarios/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/availability/__init__.py b/tests/unit/benchmark/scenarios/availability/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/availability/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/availability/test_attacker_baremetal.py b/tests/unit/benchmark/scenarios/availability/test_attacker_baremetal.py deleted file mode 100644 index cc179602e..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_attacker_baremetal.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.attacker.attacker_baremetal - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.attacker import \ - attacker_baremetal - - -@mock.patch('yardstick.benchmark.scenarios.availability.attacker.attacker_baremetal.subprocess') -class ExecuteShellTestCase(unittest.TestCase): - - def test__fun_execute_shell_command_successful(self, mock_subprocess): - cmd = "env" - mock_subprocess.check_output.return_value = (0, 'unittest') - exitcode, output = attacker_baremetal._execute_shell_command(cmd) - self.assertEqual(exitcode, 0) - - @mock.patch('yardstick.benchmark.scenarios.availability.attacker.attacker_baremetal.LOG') - def test__fun_execute_shell_command_fail_cmd_exception(self, mock_log, mock_subprocess): - cmd = "env" - mock_subprocess.check_output.side_effect = RuntimeError - exitcode, output = attacker_baremetal._execute_shell_command(cmd) - self.assertEqual(exitcode, -1) - mock_log.error.assert_called_once() - - -@mock.patch('yardstick.benchmark.scenarios.availability.attacker.attacker_baremetal.subprocess') -@mock.patch('yardstick.benchmark.scenarios.availability.attacker.attacker_baremetal.ssh') -class AttackerBaremetalTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ipmi_ip": "10.20.0.5", - "ipmi_user": "root", - "ipmi_pwd": "123456", - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.attacker_cfg = { - 'fault_type': 'bear-metal-down', - 'host': 'node1', - } - - def test__attacker_baremetal_all_successful(self, mock_ssh, mock_subprocess): - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - ins = attacker_baremetal.BaremetalAttacker(self.attacker_cfg, - self.context) - - ins.setup() - ins.inject_fault() - ins.recover() - - def test__attacker_baremetal_check_failuer(self, mock_ssh, mock_subprocess): - mock_ssh.SSH.from_node().execute.return_value = (0, "error check", '') - ins = attacker_baremetal.BaremetalAttacker(self.attacker_cfg, - self.context) - ins.setup() - - def test__attacker_baremetal_recover_successful(self, mock_ssh, mock_subprocess): - - self.attacker_cfg["jump_host"] = 'node1' - self.context["node1"]["pwd"] = "123456" - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - ins = attacker_baremetal.BaremetalAttacker(self.attacker_cfg, - self.context) - - ins.setup() - ins.recover() diff --git a/tests/unit/benchmark/scenarios/availability/test_attacker_general.py b/tests/unit/benchmark/scenarios/availability/test_attacker_general.py deleted file mode 100644 index 612b5a662..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_attacker_general.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Juan Qiu and others -# juan_ qiu@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.attacker -# .attacker_general - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.attacker import baseattacker - - -@mock.patch('yardstick.benchmark.scenarios.availability.attacker.' - 'attacker_general.ssh') -class GeneralAttackerServiceTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.attacker_cfg = { - 'fault_type': 'general-attacker', - 'action_parameter': {'process_name': 'nova_api'}, - 'rollback_parameter': {'process_name': 'nova_api'}, - 'key': 'stop-service', - 'attack_key': 'stop-service', - 'host': 'node1', - } - - def test__attacker_service_all_successful(self, mock_ssh): - - cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg) - ins = cls(self.attacker_cfg, self.context) - - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - ins.setup() - ins.inject_fault() - ins.recover() - - def test__attacker_service_check_failuer(self, mock_ssh): - - cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg) - ins = cls(self.attacker_cfg, self.context) - - mock_ssh.SSH.from_node().execute.return_value = (0, "error check", '') - ins.setup() diff --git a/tests/unit/benchmark/scenarios/availability/test_attacker_process.py b/tests/unit/benchmark/scenarios/availability/test_attacker_process.py deleted file mode 100644 index 0a8e8322a..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_attacker_process.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.attacker.attacker_process - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.attacker import baseattacker - - -@mock.patch( - 'yardstick.benchmark.scenarios.availability.attacker.attacker_process.ssh') -class AttackerServiceTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.attacker_cfg = { - 'fault_type': 'kill-process', - 'process_name': 'nova-api', - 'host': 'node1', - } - - def test__attacker_service_all_successful(self, mock_ssh): - - cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg) - ins = cls(self.attacker_cfg, self.context) - - mock_ssh.SSH.from_node().execute.return_value = (0, "10", '') - ins.setup() - ins.inject_fault() - ins.recover() - - def test__attacker_service_check_failuer(self, mock_ssh): - - cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg) - ins = cls(self.attacker_cfg, self.context) - - mock_ssh.SSH.from_node().execute.return_value = (0, None, '') - ins.setup() diff --git a/tests/unit/benchmark/scenarios/availability/test_basemonitor.py b/tests/unit/benchmark/scenarios/availability/test_basemonitor.py deleted file mode 100644 index 92ae8aa88..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_basemonitor.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.monitor.monitor_command - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.monitor import basemonitor - - -@mock.patch( - 'yardstick.benchmark.scenarios.availability.monitor.basemonitor' - '.BaseMonitor') -class MonitorMgrTestCase(unittest.TestCase): - - def setUp(self): - self.monitor_configs = [ - { - "monitor_type": "openstack-cmd", - "command_name": "openstack router list", - "monitor_time": 10, - "monitor_number": 3, - "sla": { - "max_outage_time": 5 - } - }, - { - "monitor_type": "process", - "process_name": "neutron-server", - "host": "node1", - "monitor_time": 20, - "monitor_number": 3, - "sla": { - "max_recover_time": 20 - } - } - ] - self.MonitorMgr = basemonitor.MonitorMgr([]) - self.MonitorMgr.init_monitors(self.monitor_configs, None) - self.monitor_list = self.MonitorMgr._monitor_list - for mo in self.monitor_list: - mo._result = {"outage_time": 10} - - def test__MonitorMgr_setup_successful(self, mock_monitor): - instance = basemonitor.MonitorMgr({"nova-api": 10}) - instance.init_monitors(self.monitor_configs, None) - instance.start_monitors() - instance.wait_monitors() - - ret = instance.verify_SLA() - - def test_MonitorMgr_getitem(self, mock_monitor): - monitorMgr = basemonitor.MonitorMgr({"nova-api": 10}) - monitorMgr.init_monitors(self.monitor_configs, None) - - def test_store_result(self, mock_monitor): - expect = {'process_neutron-server_outage_time': 10, - 'openstack-router-list_outage_time': 10} - result = {} - self.MonitorMgr.store_result(result) - self.assertDictEqual(result, expect) - - -class BaseMonitorTestCase(unittest.TestCase): - - class MonitorSimple(basemonitor.BaseMonitor): - __monitor_type__ = "MonitorForTest" - - def setup(self): - self.monitor_result = False - - def monitor_func(self): - return self.monitor_result - - def setUp(self): - self.monitor_cfg = { - 'monitor_type': 'MonitorForTest', - 'command_name': 'nova image-list', - 'monitor_time': 0.01, - 'sla': {'max_outage_time': 5} - } - - def test__basemonitor_start_wait_successful(self): - ins = basemonitor.BaseMonitor(self.monitor_cfg, None, {"nova-api": 10}) - ins.start_monitor() - ins.wait_monitor() - - def test__basemonitor_all_successful(self): - ins = self.MonitorSimple(self.monitor_cfg, None, {"nova-api": 10}) - ins.setup() - ins.run() - ins.verify_SLA() - - @mock.patch( - 'yardstick.benchmark.scenarios.availability.monitor.basemonitor' - '.multiprocessing') - def test__basemonitor_func_false(self, mock_multiprocess): - ins = self.MonitorSimple(self.monitor_cfg, None, {"nova-api": 10}) - ins.setup() - mock_multiprocess.Event().is_set.return_value = False - ins.run() - ins.verify_SLA() - - def test__basemonitor_getmonitorcls_successfule(self): - cls = None - try: - cls = basemonitor.BaseMonitor.get_monitor_cls(self.monitor_cfg) - except Exception: - pass - self.assertIsNone(cls) - - -if __name__ == "__main__": - unittest.main() diff --git a/tests/unit/benchmark/scenarios/availability/test_baseoperation.py b/tests/unit/benchmark/scenarios/availability/test_baseoperation.py deleted file mode 100644 index 03ec1492b..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_baseoperation.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.operation.baseoperation - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.operation import baseoperation - - -@mock.patch( - 'yardstick.benchmark.scenarios.availability.operation.baseoperation' - '.BaseOperation') -class OperationMgrTestCase(unittest.TestCase): - - def setUp(self): - config = { - 'operation_type': 'general-operation', - 'key': 'service-status' - } - - self.operation_configs = [] - self.operation_configs.append(config) - - def test_all_successful(self, mock_operation): - mgr_ins = baseoperation.OperationMgr() - mgr_ins.init_operations(self.operation_configs, None) - operation_ins = mgr_ins["service-status"] - mgr_ins.rollback() - - def test_getitem_fail(self, mock_operation): - mgr_ins = baseoperation.OperationMgr() - mgr_ins.init_operations(self.operation_configs, None) - with self.assertRaises(KeyError): - operation_ins = mgr_ins["operation-not-exist"] - - -class TestOperation(baseoperation.BaseOperation): - __operation__type__ = "test-operation" - - def setup(self): - pass - - def run(self): - pass - - def rollback(self): - pass - - -class BaseOperationTestCase(unittest.TestCase): - - def setUp(self): - self.config = { - 'operation_type': 'general-operation', - 'key': 'service-status' - } - - def test_all_successful(self): - base_ins = baseoperation.BaseOperation(self.config, None) - base_ins.setup() - base_ins.run() - base_ins.rollback() - - def test_get_script_fullpath(self): - base_ins = baseoperation.BaseOperation(self.config, None) - base_ins.get_script_fullpath("ha_tools/test.bash") - - def test_get_operation_cls_successful(self): - base_ins = baseoperation.BaseOperation(self.config, None) - operation_ins = base_ins.get_operation_cls("test-operation") - - def test_get_operation_cls_fail(self): - base_ins = baseoperation.BaseOperation(self.config, None) - with self.assertRaises(RuntimeError): - operation_ins = base_ins.get_operation_cls("operation-not-exist") diff --git a/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py b/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py deleted file mode 100644 index 36ce900fb..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.result_checker -# .baseresultchecker - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.result_checker import \ - baseresultchecker - - -@mock.patch('yardstick.benchmark.scenarios.availability.result_checker' - '.baseresultchecker.BaseResultChecker') -class ResultCheckerMgrTestCase(unittest.TestCase): - - def setUp(self): - config = { - 'checker_type': 'general-result-checker', - 'key': 'process-checker' - } - - self.checker_configs = [] - self.checker_configs.append(config) - - def test_ResultCheckerMgr_setup_successful(self, mock_basechacer): - mgr_ins = baseresultchecker.ResultCheckerMgr() - mgr_ins.init_ResultChecker(self.checker_configs, None) - mgr_ins.verify() - - def test_getitem_succeessful(self, mock_basechacer): - mgr_ins = baseresultchecker.ResultCheckerMgr() - mgr_ins.init_ResultChecker(self.checker_configs, None) - checker_ins = mgr_ins["process-checker"] - - def test_getitem_fail(self, mock_basechacer): - mgr_ins = baseresultchecker.ResultCheckerMgr() - mgr_ins.init_ResultChecker(self.checker_configs, None) - with self.assertRaises(KeyError): - checker_ins = mgr_ins["checker-not-exist"] - - -class BaseResultCheckerTestCase(unittest.TestCase): - - class ResultCheckeSimple(baseresultchecker.BaseResultChecker): - __result_checker__type__ = "ResultCheckeForTest" - - def setup(self): - self.success = False - - def verify(self): - return self.success - - def setUp(self): - self.checker_cfg = { - 'checker_type': 'general-result-checker', - 'key': 'process-checker' - } - - def test_baseresultchecker_setup_verify_successful(self): - ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None) - ins.setup() - ins.verify() - - def test_baseresultchecker_verfiy_pass(self): - ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None) - ins.setup() - ins.actualResult = True - ins.expectedResult = True - ins.verify() - - def test_get_script_fullpath(self): - ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None) - path = ins.get_script_fullpath("test.bash") - - def test_get_resultchecker_cls_successful(self): - baseresultchecker.BaseResultChecker.get_resultchecker_cls( - "ResultCheckeForTest") - - def test_get_resultchecker_cls_fail(self): - with self.assertRaises(RuntimeError): - baseresultchecker.BaseResultChecker.get_resultchecker_cls( - "ResultCheckeNotExist") diff --git a/tests/unit/benchmark/scenarios/availability/test_director.py b/tests/unit/benchmark/scenarios/availability/test_director.py deleted file mode 100644 index d01a60e2d..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_director.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.director - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.director import Director - - -@mock.patch('yardstick.benchmark.scenarios.availability.director.basemonitor') -@mock.patch('yardstick.benchmark.scenarios.availability.director.baseattacker') -@mock.patch( - 'yardstick.benchmark.scenarios.availability.director.baseoperation') -@mock.patch( - 'yardstick.benchmark.scenarios.availability.director.baseresultchecker') -class DirectorTestCase(unittest.TestCase): - - def setUp(self): - self.scenario_cfg = { - 'type': "general_scenario", - 'options': { - 'attackers': [{ - 'fault_type': "general-attacker", - 'key': "kill-process"}], - 'monitors': [{ - 'monitor_type': "general-monitor", - 'key': "service-status"}], - 'operations': [{ - 'operation_type': 'general-operation', - 'key': 'service-status'}], - 'resultCheckers': [{ - 'checker_type': 'general-result-checker', - 'key': 'process-checker', }], - 'steps': [ - { - 'actionKey': "service-status", - 'actionType': "operation", - 'index': 1}, - { - 'actionKey': "kill-process", - 'actionType': "attacker", - 'index': 2}, - { - 'actionKey': "process-checker", - 'actionType': "resultchecker", - 'index': 3}, - { - 'actionKey': "service-status", - 'actionType': "monitor", - 'index': 4}, - ] - } - } - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.ctx = {"nodes": {"node1": host}} - - def test_director_all_successful(self, mock_checer, mock_opertion, - mock_attacker, mock_monitor): - ins = Director(self.scenario_cfg, self.ctx) - opertion_action = ins.createActionPlayer("operation", "service-status") - attacker_action = ins.createActionPlayer("attacker", "kill-process") - checker_action = ins.createActionPlayer("resultchecker", - "process-checker") - monitor_action = ins.createActionPlayer("monitor", "service-status") - - opertion_rollback = ins.createActionRollbacker("operation", - "service-status") - attacker_rollback = ins.createActionRollbacker("attacker", - "kill-process") - ins.executionSteps.append(opertion_rollback) - ins.executionSteps.append(attacker_rollback) - - opertion_action.action() - attacker_action.action() - checker_action.action() - monitor_action.action() - - attacker_rollback.rollback() - opertion_rollback.rollback() - - ins.stopMonitors() - ins.verify() - ins.knockoff() - - def test_director_get_wrong_item(self, mock_checer, mock_opertion, - mock_attacker, mock_monitor): - ins = Director(self.scenario_cfg, self.ctx) - ins.createActionPlayer("wrong_type", "wrong_key") - ins.createActionRollbacker("wrong_type", "wrong_key") diff --git a/tests/unit/benchmark/scenarios/availability/test_monitor_command.py b/tests/unit/benchmark/scenarios/availability/test_monitor_command.py deleted file mode 100644 index b84cef23c..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_monitor_command.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.monitor.monitor_command - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.monitor import monitor_command - - -@mock.patch('subprocess.check_output') -class ExecuteShellTestCase(unittest.TestCase): - - def test__fun_execute_shell_command_successful(self, mock_subprocess_check_output): - cmd = "env" - mock_subprocess_check_output.return_value = (0, 'unittest') - exitcode, _ = monitor_command._execute_shell_command(cmd) - self.assertEqual(exitcode, 0) - - @mock.patch('yardstick.benchmark.scenarios.availability.monitor.monitor_command.LOG') - def test__fun_execute_shell_command_fail_cmd_exception(self, mock_log, - mock_subprocess_check_output): - cmd = "env" - mock_subprocess_check_output.side_effect = RuntimeError - exitcode, _ = monitor_command._execute_shell_command(cmd) - self.assertEqual(exitcode, -1) - mock_log.error.assert_called_once() - - -@mock.patch('subprocess.check_output') -class MonitorOpenstackCmdTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.config = { - 'monitor_type': 'openstack-api', - 'command_name': 'nova image-list', - 'monitor_time': 1, - 'sla': {'max_outage_time': 5} - } - - def test__monitor_command_monitor_func_successful(self, mock_subprocess_check_output): - - instance = monitor_command.MonitorOpenstackCmd(self.config, None, {"nova-api": 10}) - instance.setup() - mock_subprocess_check_output.return_value = (0, 'unittest') - ret = instance.monitor_func() - self.assertTrue(ret) - instance._result = {"outage_time": 0} - instance.verify_SLA() - - @mock.patch('yardstick.benchmark.scenarios.availability.monitor.monitor_command.LOG') - def test__monitor_command_monitor_func_failure(self, mock_log, mock_subprocess_check_output): - mock_subprocess_check_output.return_value = (1, 'unittest') - instance = monitor_command.MonitorOpenstackCmd(self.config, None, {"nova-api": 10}) - instance.setup() - mock_subprocess_check_output.side_effect = RuntimeError - ret = instance.monitor_func() - self.assertFalse(ret) - mock_log.error.assert_called_once() - instance._result = {"outage_time": 10} - instance.verify_SLA() - - @mock.patch( - 'yardstick.benchmark.scenarios.availability.monitor.monitor_command' - '.ssh') - def test__monitor_command_ssh_monitor_successful(self, mock_ssh, mock_subprocess_check_output): - - mock_subprocess_check_output.return_value = (0, 'unittest') - self.config["host"] = "node1" - instance = monitor_command.MonitorOpenstackCmd( - self.config, self.context, {"nova-api": 10}) - instance.setup() - mock_ssh.SSH.from_node().execute.return_value = (0, "0", '') - ret = instance.monitor_func() - self.assertTrue(ret) diff --git a/tests/unit/benchmark/scenarios/availability/test_monitor_general.py b/tests/unit/benchmark/scenarios/availability/test_monitor_general.py deleted file mode 100644 index c14f073ec..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_monitor_general.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.monitor -# .monitor_general - -from __future__ import absolute_import -import mock -import unittest -from yardstick.benchmark.scenarios.availability.monitor import monitor_general - - -@mock.patch('yardstick.benchmark.scenarios.availability.monitor.' - 'monitor_general.ssh') -@mock.patch('yardstick.benchmark.scenarios.availability.monitor.' - 'monitor_general.open') -class GeneralMonitorServiceTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.monitor_cfg = { - 'monitor_type': 'general-monitor', - 'key': 'service-status', - 'monitor_key': 'service-status', - 'host': 'node1', - 'monitor_time': 3, - 'parameter': {'serviceName': 'haproxy'}, - 'sla': {'max_outage_time': 1} - } - self.monitor_cfg_noparam = { - 'monitor_type': 'general-monitor', - 'key': 'service-status', - 'monitor_key': 'service-status', - 'host': 'node1', - 'monitor_time': 3, - 'sla': {'max_outage_time': 1} - } - - def test__monitor_general_all_successful(self, mock_open, mock_ssh): - ins = monitor_general.GeneralMonitor(self.monitor_cfg, self.context, {"nova-api": 10}) - - ins.setup() - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - ins.monitor_func() - ins._result = {'outage_time': 0} - ins.verify_SLA() - - def test__monitor_general_all_successful_noparam(self, mock_open, - mock_ssh): - ins = monitor_general.GeneralMonitor( - self.monitor_cfg_noparam, self.context, {"nova-api": 10}) - - ins.setup() - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - ins.monitor_func() - ins._result = {'outage_time': 0} - ins.verify_SLA() - - def test__monitor_general_failure(self, mock_open, mock_ssh): - ins = monitor_general.GeneralMonitor( - self.monitor_cfg_noparam, self.context, {"nova-api": 10}) - - ins.setup() - mock_ssh.SSH.from_node().execute.return_value = (1, "error", 'error') - ins.monitor_func() - ins._result = {'outage_time': 2} - ins.verify_SLA() diff --git a/tests/unit/benchmark/scenarios/availability/test_monitor_multi.py b/tests/unit/benchmark/scenarios/availability/test_monitor_multi.py deleted file mode 100644 index b59ec6cf1..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_monitor_multi.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.monitor -# .monitor_multi - -from __future__ import absolute_import -import mock -import unittest -from yardstick.benchmark.scenarios.availability.monitor import monitor_multi - -@mock.patch('yardstick.benchmark.scenarios.availability.monitor.' - 'monitor_general.ssh') -@mock.patch('yardstick.benchmark.scenarios.availability.monitor.' - 'monitor_general.open') -class MultiMonitorServiceTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.monitor_cfg = { - 'monitor_type': 'general-monitor', - 'monitor_number': 3, - 'key': 'service-status', - 'monitor_key': 'service-status', - 'host': 'node1', - 'monitor_time': 0.1, - 'parameter': {'serviceName': 'haproxy'}, - 'sla': {'max_outage_time': 1} - } - - def test__monitor_multi_all_successful(self, mock_open, mock_ssh): - ins = monitor_multi.MultiMonitor(self.monitor_cfg, self.context, {"nova-api": 10}) - - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - - ins.start_monitor() - ins.wait_monitor() - ins.verify_SLA() - - def test__monitor_multi_all_fail(self, mock_open, mock_ssh): - ins = monitor_multi.MultiMonitor(self.monitor_cfg, self.context, {"nova-api": 10}) - - mock_ssh.SSH.from_node().execute.return_value = (0, "running", '') - - ins.start_monitor() - ins.wait_monitor() - ins.verify_SLA() - diff --git a/tests/unit/benchmark/scenarios/availability/test_monitor_process.py b/tests/unit/benchmark/scenarios/availability/test_monitor_process.py deleted file mode 100644 index 41ce5445e..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_monitor_process.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.availability.monitor.monitor_process - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.monitor import monitor_process - - -@mock.patch( - 'yardstick.benchmark.scenarios.availability.monitor.monitor_process.ssh') -class MonitorProcessTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.monitor_cfg = { - 'monitor_type': 'process', - 'process_name': 'nova-api', - 'host': "node1", - 'monitor_time': 1, - 'sla': {'max_recover_time': 5} - } - - def test__monitor_process_all_successful(self, mock_ssh): - - ins = monitor_process.MonitorProcess(self.monitor_cfg, self.context, {"nova-api": 10}) - - mock_ssh.SSH.from_node().execute.return_value = (0, "1", '') - ins.setup() - ins.monitor_func() - ins._result = {"outage_time": 0} - ins.verify_SLA() - - def test__monitor_process_down_failuer(self, mock_ssh): - - ins = monitor_process.MonitorProcess(self.monitor_cfg, self.context, {"nova-api": 10}) - - mock_ssh.SSH.from_node().execute.return_value = (0, "0", '') - ins.setup() - ins.monitor_func() - ins._result = {"outage_time": 10} - ins.verify_SLA() diff --git a/tests/unit/benchmark/scenarios/availability/test_operation_general.py b/tests/unit/benchmark/scenarios/availability/test_operation_general.py deleted file mode 100644 index fb8ccb122..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_operation_general.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.operation -# .operation_general - -from __future__ import absolute_import -import mock -import unittest -from yardstick.benchmark.scenarios.availability.operation import \ - operation_general - - -@mock.patch('yardstick.benchmark.scenarios.availability.operation.' - 'operation_general.ssh') -@mock.patch('yardstick.benchmark.scenarios.availability.operation.' - 'operation_general.open') -class GeneralOperaionTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.operation_cfg = { - 'operation_type': 'general-operation', - 'action_parameter': {'ins_cup': 2}, - 'rollback_parameter': {'ins_id': 'id123456'}, - 'key': 'nova-create-instance', - 'operation_key': 'nova-create-instance', - 'host': 'node1', - } - self.operation_cfg_noparam = { - 'operation_type': 'general-operation', - 'key': 'nova-create-instance', - 'operation_key': 'nova-create-instance', - 'host': 'node1', - } - - def test__operation_successful(self, mock_open, mock_ssh): - ins = operation_general.GeneralOperaion(self.operation_cfg, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "success", '') - ins.setup() - ins.run() - ins.rollback() - - def test__operation_successful_noparam(self, mock_open, mock_ssh): - ins = operation_general.GeneralOperaion(self.operation_cfg_noparam, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "success", '') - ins.setup() - ins.run() - ins.rollback() - - def test__operation_fail(self, mock_open, mock_ssh): - ins = operation_general.GeneralOperaion(self.operation_cfg, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (1, "failed", '') - ins.setup() - ins.run() - ins.rollback() diff --git a/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py b/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py deleted file mode 100644 index d036bb0da..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.result_checker -# .result_checker_general - -from __future__ import absolute_import -import mock -import unittest -import copy - -from yardstick.benchmark.scenarios.availability.result_checker import \ - result_checker_general - - -@mock.patch('yardstick.benchmark.scenarios.availability.result_checker.' - 'result_checker_general.ssh') -@mock.patch('yardstick.benchmark.scenarios.availability.result_checker.' - 'result_checker_general.open') -class GeneralResultCheckerTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.context = {"node1": host} - self.checker_cfg = { - 'parameter': {'processname': 'process'}, - 'checker_type': 'general-result-checker', - 'condition': 'eq', - 'expectedValue': 1, - 'key': 'process-checker', - 'checker_key': 'process-checker', - 'host': 'node1' - } - - def test__result_checker_eq(self, mock_open, mock_ssh): - ins = result_checker_general.GeneralResultChecker(self.checker_cfg, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "1", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_gt(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'gt' - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "2", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_gt_eq(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'gt_eq' - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "1", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_lt(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'lt' - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "0", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_lt_eq(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'lt_eq' - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "1", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_in(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'in' - config['expectedValue'] = "value" - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "value return", '') - ins.setup() - self.assertTrue(ins.verify()) - - def test__result_checker_wrong(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config['condition'] = 'wrong' - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (0, "1", '') - ins.setup() - self.assertFalse(ins.verify()) - - def test__result_checker_fail(self, mock_open, mock_ssh): - config = copy.deepcopy(self.checker_cfg) - config.pop('parameter') - ins = result_checker_general.GeneralResultChecker(config, - self.context) - mock_ssh.SSH.from_node().execute.return_value = (1, "fail", '') - ins.setup() - ins.verify() diff --git a/tests/unit/benchmark/scenarios/availability/test_scenario_general.py b/tests/unit/benchmark/scenarios/availability/test_scenario_general.py deleted file mode 100644 index 244a5e798..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_scenario_general.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huan Li and others -# lihuansse@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.scenario_general - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability.scenario_general import \ - ScenarioGeneral - - -@mock.patch( - 'yardstick.benchmark.scenarios.availability.scenario_general.Director') -class ScenarioGeneralTestCase(unittest.TestCase): - - def setUp(self): - self.scenario_cfg = { - 'type': "general_scenario", - 'options': { - 'attackers': [{ - 'fault_type': "general-attacker", - 'key': "kill-process"}], - 'monitors': [{ - 'monitor_type': "general-monitor", - 'key': "service-status"}], - 'steps': [ - { - 'actionKey': "kill-process", - 'actionType': "attacker", - 'index': 1}, - { - 'actionKey': "service-status", - 'actionType': "monitor", - 'index': 2}] - } - } - - def test_scenario_general_all_successful(self, mock_director): - ins = ScenarioGeneral(self.scenario_cfg, None) - ins.setup() - ins.run({}) - ins.teardown() - - def test_scenario_general_exception(self, mock_director): - ins = ScenarioGeneral(self.scenario_cfg, None) - mock_obj = mock.Mock() - mock_obj.createActionPlayer.side_effect = KeyError('Wrong') - ins.director = mock_obj - ins.director.data = {} - ins.run({}) - ins.teardown() - - def test_scenario_general_case_fail(self, mock_director): - ins = ScenarioGeneral(self.scenario_cfg, None) - mock_obj = mock.Mock() - mock_obj.verify.return_value = False - ins.director = mock_obj - ins.director.data = {} - ins.run({}) - ins.pass_flag = True - ins.teardown() diff --git a/tests/unit/benchmark/scenarios/availability/test_serviceha.py b/tests/unit/benchmark/scenarios/availability/test_serviceha.py deleted file mode 100644 index 97d534894..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_serviceha.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.serviceha - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.availability import serviceha - - -class ServicehaTestCase(unittest.TestCase): - - def setUp(self): - host = { - "ip": "10.20.0.5", - "user": "root", - "key_filename": "/root/.ssh/id_rsa" - } - self.ctx = {"nodes": {"node1": host}} - attacker_cfg = { - "fault_type": "kill-process", - "process_name": "nova-api", - "host": "node1" - } - attacker_cfgs = [] - attacker_cfgs.append(attacker_cfg) - monitor_cfg = { - "monitor_cmd": "nova image-list", - "monitor_time": 0.1 - } - monitor_cfgs = [] - monitor_cfgs.append(monitor_cfg) - - options = { - "attackers": attacker_cfgs, - "monitors": monitor_cfgs - } - sla = {"outage_time": 5} - self.args = {"options": options, "sla": sla} - - @mock.patch('yardstick.benchmark.scenarios.availability.serviceha.basemonitor') - @mock.patch( - 'yardstick.benchmark.scenarios.availability.serviceha.baseattacker') - def test__serviceha_setup_run_successful(self, _, - mock_monitor): - p = serviceha.ServiceHA(self.args, self.ctx) - - p.setup() - self.assertTrue(p.setup_done) - mock_monitor.MonitorMgr().verify_SLA.return_value = True - ret = {} - p.run(ret) - p.teardown() - - p.setup() - self.assertTrue(p.setup_done) - -# def test__serviceha_run_sla_error(self, mock_attacker, mock_monitor): -# p = serviceha.ServiceHA(self.args, self.ctx) - -# p.setup() -# self.assertTrue(p.setup_done) -# -# result = {} -# result["outage_time"] = 10 -# mock_monitor.Monitor().get_result.return_value = result - -# ret = {} -# self.assertRaises(AssertionError, p.run, ret) diff --git a/tests/unit/benchmark/scenarios/availability/test_util.py b/tests/unit/benchmark/scenarios/availability/test_util.py deleted file mode 100644 index 548efe91b..000000000 --- a/tests/unit/benchmark/scenarios/availability/test_util.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Kanglin Yin and others -# 14_ykl@tongji.edu.cn -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.availability.utils - -import mock -import unittest - -from yardstick.benchmark.scenarios.availability import util - - -class ExecuteShellTestCase(unittest.TestCase): - - def setUp(self): - self.param_config = {'serviceName': '@serviceName', 'value': 1} - self.intermediate_variables = {'@serviceName': 'nova-api'} - self.std_output = '| id | 1 |' - self.cmd_config = {'cmd': 'ls', 'param': '-a'} - - self._mock_subprocess = mock.patch.object(util, 'subprocess') - self.mock_subprocess = self._mock_subprocess.start() - self.addCleanup(self._stop_mock) - - def _stop_mock(self): - self._mock_subprocess.stop() - - def test_util_build_command_shell(self): - result = util.build_shell_command(self.param_config, True, - self.intermediate_variables) - self.assertIn("nova-api", result) - - def test_read_stdout_item(self): - result = util.read_stdout_item(self.std_output, 'id') - self.assertEqual('1', result) - - def test_buildshellparams(self): - result = util.buildshellparams(self.cmd_config, True) - self.assertEqual('/bin/bash -s {0} {1}', result) - - def test__fun_execute_shell_command_successful(self): - cmd = "env" - self.mock_subprocess.check_output.return_value = (0, 'unittest') - exitcode, _ = util.execute_shell_command(cmd) - self.assertEqual(exitcode, 0) - - def test__fun_execute_shell_command_fail_cmd_exception(self): - cmd = "env" - self.mock_subprocess.check_output.side_effect = RuntimeError - exitcode, _ = util.execute_shell_command(cmd) - self.assertEqual(exitcode, -1) diff --git a/tests/unit/benchmark/scenarios/compute/__init__.py b/tests/unit/benchmark/scenarios/compute/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/compute/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/compute/cachestat_sample_output.txt b/tests/unit/benchmark/scenarios/compute/cachestat_sample_output.txt deleted file mode 100644 index e2c79a9b1..000000000 --- a/tests/unit/benchmark/scenarios/compute/cachestat_sample_output.txt +++ /dev/null @@ -1,5 +0,0 @@ -Counting cache functions... Output every 1 seconds. - HITS MISSES DIRTIES RATIO BUFFERS_MB CACHE_MB - 6462 0 29 100.0% 1157 66782 - -Ending tracing... diff --git a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt b/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt deleted file mode 100644 index 723e64bcb..000000000 --- a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt +++ /dev/null @@ -1,9 +0,0 @@ -Linux 3.13.0-68-generic (elxg482ls42) 11/30/2015 _x86_64_ (1 CPU) - -04:34:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle -04:34:26 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 -04:34:26 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 - -Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle -Average: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 -Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 diff --git a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output2.txt b/tests/unit/benchmark/scenarios/compute/cpuload_sample_output2.txt deleted file mode 100644 index c66520a27..000000000 --- a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output2.txt +++ /dev/null @@ -1,2 +0,0 @@ -cpu 245813227 366650 17338727 1195600354 2652765 178 177114 0 80439531 0 -cpu0 32334587 35782 1659040 87008833 401178 60 73571 0 8030817 0 diff --git a/tests/unit/benchmark/scenarios/compute/memload_sample_output.txt b/tests/unit/benchmark/scenarios/compute/memload_sample_output.txt deleted file mode 100644 index 1793e2f10..000000000 --- a/tests/unit/benchmark/scenarios/compute/memload_sample_output.txt +++ /dev/null @@ -1,3 +0,0 @@ - total used free shared buff/cache available -Mem: 263753976 76737332 187016644 2844 853528 67252400 -Swap: 268029948 0 268029948 diff --git a/tests/unit/benchmark/scenarios/compute/test_cachestat.py b/tests/unit/benchmark/scenarios/compute/test_cachestat.py deleted file mode 100644 index b0ddfc6b4..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_cachestat.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.cachestat.CACHEstat - -from __future__ import absolute_import -import mock -import unittest -import os - -from yardstick.benchmark.scenarios.compute import cachestat - - -@mock.patch('yardstick.benchmark.scenarios.compute.cachestat.ssh') -class CACHEstatTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_cachestat_successful_setup(self, mock_ssh): - c = cachestat.CACHEstat({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - c.setup() - self.assertIsNotNone(c.client) - self.assertTrue(c.setup_done) - - def test_execute_command_success(self, mock_ssh): - c = cachestat.CACHEstat({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - expected_result = 'abcdefg' - mock_ssh.SSH.from_node().execute.return_value = (0, expected_result, '') - result = c._execute_command("foo") - self.assertEqual(result, expected_result) - - def test_execute_command_failed(self, mock_ssh): - c = cachestat.CACHEstat({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - mock_ssh.SSH.from_node().execute.return_value = (127, '', 'Failed executing \ - command') - self.assertRaises(RuntimeError, c._execute_command, - "cat /proc/meminfo") - - def test_get_cache_usage_successful(self, mock_ssh): - options = { - "interval": 1, - } - args = {"options": options} - c = cachestat.CACHEstat(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - output = self._read_file("cachestat_sample_output.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, output, '') - result = c._get_cache_usage() - expected_result = {"cachestat": {"cache0": {"HITS": "6462", - "DIRTIES": "29", - "RATIO": "100.0%", - "MISSES": "0", - "BUFFERS_MB": "1157", - "CACHE_MB": "66782"}}, - "average": {"HITS": 6462, "DIRTIES": 29, - "RATIO": "100.0%", - "MISSES": 0, "BUFFERS_MB": 1157, - "CACHE_MB": 66782}, - "max": {"HITS": 6462, - "DIRTIES": 29, "RATIO": 100.0, "MISSES": 0, - "BUFFERS_MB": 1157, "CACHE_MB": 66782}} - - self.assertEqual(result, expected_result) - - def _read_file(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, filename) - with open(output) as f: - sample_output = f.read() - return sample_output diff --git a/tests/unit/benchmark/scenarios/compute/test_computecapacity.py b/tests/unit/benchmark/scenarios/compute/test_computecapacity.py deleted file mode 100644 index 7b9a5ad4a..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_computecapacity.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.compute.computecapacity.ComputeCapacity - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import computecapacity - -SAMPLE_OUTPUT = '{"Cpu_number": "2", "Core_number": "24",\ - "Memory_size": "263753976 kB", "Thread_number": "48",\ - "Cache_size": "30720 KB", "HT_Open": "0"}' - - -@mock.patch('yardstick.benchmark.scenarios.compute.computecapacity.ssh') -class ComputeCapacityTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'nodes': { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key", - 'password': "root" - }, - } - } - - self.result = {} - - def test_capacity_successful_setup(self, mock_ssh): - c = computecapacity.ComputeCapacity({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - c.setup() - self.assertIsNotNone(c.client) - self.assertTrue(c.setup_done) - - def test_capacity_successful(self, mock_ssh): - c = computecapacity.ComputeCapacity({}, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, SAMPLE_OUTPUT, '') - c.run(self.result) - expected_result = jsonutils.loads(SAMPLE_OUTPUT) - self.assertEqual(self.result, expected_result) - - def test_capacity_unsuccessful_script_error(self, mock_ssh): - c = computecapacity.ComputeCapacity({}, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, c.run, self.result) diff --git a/tests/unit/benchmark/scenarios/compute/test_cpuload.py b/tests/unit/benchmark/scenarios/compute/test_cpuload.py deleted file mode 100644 index 840ac7885..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_cpuload.py +++ /dev/null @@ -1,264 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.lmbench.Lmbench - -from __future__ import absolute_import -import mock -import unittest -import os - -from yardstick.benchmark.scenarios.compute import cpuload - - -@mock.patch('yardstick.benchmark.scenarios.compute.cpuload.ssh') -class CPULoadTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_setup_mpstat_installed(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - l.setup() - self.assertIsNotNone(l.client) - self.assertTrue(l.setup_done) - self.assertTrue(l.has_mpstat) - - def test_setup_mpstat_not_installed(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (127, '', '') - - l.setup() - self.assertIsNotNone(l.client) - self.assertTrue(l.setup_done) - self.assertFalse(l.has_mpstat) - - def test_execute_command_success(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - l.setup() - - expected_result = 'abcdefg' - mock_ssh.SSH.from_node().execute.return_value = (0, expected_result, '') - result = l._execute_command("foo") - self.assertEqual(result, expected_result) - - def test_execute_command_failed(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - l.setup() - - mock_ssh.SSH.from_node().execute.return_value = (127, '', 'abcdefg') - self.assertRaises(RuntimeError, l._execute_command, - "cat /proc/loadavg") - - def test_get_loadavg(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - l.setup() - - mock_ssh.SSH.from_node().execute.return_value = \ - (0, '1.50 1.45 1.51 3/813 14322', '') - result = l._get_loadavg() - expected_result = \ - {'loadavg': ['1.50', '1.45', '1.51', '3/813', '14322']} - self.assertEqual(result, expected_result) - - def test_get_cpu_usage_mpstat(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - l.setup() - - l.interval = 1 - l.count = 1 - mpstat_output = self._read_file("cpuload_sample_output1.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, mpstat_output, '') - result = l._get_cpu_usage_mpstat() - - expected_result = \ - {"mpstat_minimum": - {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}, - "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}}, - "mpstat_average": - {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}, - "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}}, - "mpstat_maximun": - {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}, - "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00", - "%idle": "100.00", "%guest": "0.00", - "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00", - "%irq": "0.00", "%nice": "0.00"}}} - - self.assertDictEqual(result, expected_result) - - def test_get_cpu_usage(self, mock_ssh): - options = { - "interval": 0, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - l.setup() - - l.interval = 0 - output = self._read_file("cpuload_sample_output2.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, output, '') - result = l._get_cpu_usage() - - expected_result = \ - {'mpstat': - {'cpu': - {'%steal': '0.00', - '%usr': '11.31', - '%gnice': '0.00', - '%idle': '81.78', - '%iowait': '0.18', - '%guest': '5.50', - '%sys': '1.19', - '%soft': '0.01', - '%irq': '0.00', - '%nice': '0.03'}, - 'cpu0': - {'%steal': '0.00', - '%usr': '20.00', - '%gnice': '0.00', - '%idle': '71.60', - '%iowait': '0.33', - '%guest': '6.61', - '%sys': '1.37', - '%soft': '0.06', - '%irq': '0.00', - '%nice': '0.03'}}} - - self.assertDictEqual(result, expected_result) - - def test_run_proc_stat(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - - args = {'options': options} - - l = cpuload.CPULoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - l.setup() - - l.interval = 0 - stat_output = self._read_file("cpuload_sample_output2.txt") - mock_ssh.SSH.from_node().execute.side_effect = \ - [(0, '1.50 1.45 1.51 3/813 14322', ''), (0, stat_output, '')] - - l.run(self.result) - expected_result = { - 'loadavg': ['1.50', '1.45', '1.51', '3/813', '14322'], - 'mpstat': - {'cpu': - {'%steal': '0.00', - '%usr': '11.31', - '%gnice': '0.00', - '%idle': '81.78', - '%iowait': '0.18', - '%guest': '5.50', - '%sys': '1.19', - '%soft': '0.01', - '%irq': '0.00', - '%nice': '0.03'}, - 'cpu0': - {'%steal': '0.00', - '%usr': '20.00', - '%gnice': '0.00', - '%idle': '71.60', - '%iowait': '0.33', - '%guest': '6.61', - '%sys': '1.37', - '%soft': '0.06', - '%irq': '0.00', - '%nice': '0.03'}}} - - self.assertDictEqual(self.result, expected_result) - - def _read_file(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, filename) - with open(output) as f: - sample_output = f.read() - return sample_output diff --git a/tests/unit/benchmark/scenarios/compute/test_cyclictest.py b/tests/unit/benchmark/scenarios/compute/test_cyclictest.py deleted file mode 100644 index 51ffd2488..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_cyclictest.py +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and other. -# -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.cyclictest.Cyclictest - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import cyclictest - - -@mock.patch('yardstick.benchmark.scenarios.compute.cyclictest.ssh') -class CyclictestTestCase(unittest.TestCase): - - def setUp(self): - self.scenario_cfg = { - "host": "kvm.LF", - "setup_options": { - "rpm_dir": "/opt/rpm", - "host_setup_seqs": [ - "host-setup0.sh", - "host-setup1.sh", - "host-run-qemu.sh" - ], - "script_dir": "/opt/scripts", - "image_dir": "/opt/image", - "guest_setup_seqs": [ - "guest-setup0.sh", - "guest-setup1.sh" - ] - }, - "sla": { - "action": "monitor", - "max_min_latency": 50, - "max_avg_latency": 100, - "max_max_latency": 1000 - }, - "options": { - "priority": 99, - "threads": 1, - "loops": 1000, - "affinity": 1, - "interval": 1000, - "histogram": 90 - } - } - self.context_cfg = { - "host": { - "ip": "10.229.43.154", - "key_filename": "/yardstick/resources/files/yardstick_key", - "role": "BareMetal", - "name": "kvm.LF", - "user": "root" - } - } - - def test_cyclictest_successful_setup(self, mock_ssh): - - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - c.setup() - self.assertIsNotNone(c.guest) - self.assertIsNotNone(c.host) - self.assertTrue(c.setup_done) - - def test_cyclictest_successful_no_sla(self, mock_ssh): - result = {} - self.scenario_cfg.pop("sla", None) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - sample_output = '{"min": 100, "avg": 500, "max": 1000}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - c.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_cyclictest_successful_sla(self, mock_ssh): - result = {} - self.scenario_cfg.update({"sla": { - "action": "monitor", - "max_min_latency": 100, - "max_avg_latency": 500, - "max_max_latency": 1000 - } - }) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - sample_output = '{"min": 100, "avg": 500, "max": 1000}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - c.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_cyclictest_unsuccessful_sla_min_latency(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_min_latency": 10}}) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - sample_output = '{"min": 100, "avg": 500, "max": 1000}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, c.run, result) - - def test_cyclictest_unsuccessful_sla_avg_latency(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_avg_latency": 10}}) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - sample_output = '{"min": 100, "avg": 500, "max": 1000}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, c.run, result) - - def test_cyclictest_unsuccessful_sla_max_latency(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_max_latency": 10}}) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - sample_output = '{"min": 100, "avg": 500, "max": 1000}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, c.run, result) - - def test_cyclictest_unsuccessful_script_error(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_max_latency": 10}}) - c = cyclictest.Cyclictest(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - - c.guest = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, c.run, result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_lmbench.py b/tests/unit/benchmark/scenarios/compute/test_lmbench.py deleted file mode 100644 index 65939c6ba..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_lmbench.py +++ /dev/null @@ -1,198 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.lmbench.Lmbench - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import lmbench - - -@mock.patch('yardstick.benchmark.scenarios.compute.lmbench.ssh') -class LmbenchTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_successful_setup(self, mock_ssh): - - l = lmbench.Lmbench({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - l.setup() - self.assertIsNotNone(l.client) - self.assertTrue(l.setup_done) - - def test_unsuccessful_unknown_type_run(self, mock_ssh): - - options = { - "test_type": "foo" - } - args = {'options': options} - - l = lmbench.Lmbench(args, self.ctx) - - self.assertRaises(RuntimeError, l.run, self.result) - - def test_successful_latency_run_no_sla(self, mock_ssh): - - options = { - "test_type": "latency", - "stride": 64, - "stop_size": 16 - } - args = {'options': options} - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '[{"latency": 4.944, "size": 0.00049}]' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - l.run(self.result) - expected_result = {"latencies0.latency": 4.944, "latencies0.size": 0.00049} - self.assertEqual(self.result, expected_result) - - def test_successful_bandwidth_run_no_sla(self, mock_ssh): - - options = { - "test_type": "bandwidth", - "size": 500, - "benchmark": "rd", - "warmup": 0 - } - args = {"options": options} - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '{"size(MB)": 0.262144, "bandwidth(MBps)": 11025.5}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - l.run(self.result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(self.result, expected_result) - - def test_successful_latency_run_sla(self, mock_ssh): - - options = { - "test_type": "latency", - "stride": 64, - "stop_size": 16 - } - args = { - "options": options, - "sla": {"max_latency": 35} - } - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '[{"latency": 4.944, "size": 0.00049}]' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - l.run(self.result) - expected_result = {"latencies0.latency": 4.944, "latencies0.size": 0.00049} - self.assertEqual(self.result, expected_result) - - def test_successful_bandwidth_run_sla(self, mock_ssh): - - options = { - "test_type": "bandwidth", - "size": 500, - "benchmark": "rd", - "warmup": 0 - } - args = { - "options": options, - "sla": {"min_bandwidth": 10000} - } - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '{"size(MB)": 0.262144, "bandwidth(MBps)": 11025.5}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - l.run(self.result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(self.result, expected_result) - - def test_unsuccessful_latency_run_sla(self, mock_ssh): - - options = { - "test_type": "latency", - "stride": 64, - "stop_size": 16 - } - args = { - "options": options, - "sla": {"max_latency": 35} - } - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '[{"latency": 37.5, "size": 0.00049}]' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, l.run, self.result) - - def test_unsuccessful_bandwidth_run_sla(self, mock_ssh): - - options = { - "test_type": "bandwidth", - "size": 500, - "benchmark": "rd", - "warmup": 0 - } - args = { - "options": options, - "sla": {"min_bandwidth": 10000} - } - l = lmbench.Lmbench(args, self.ctx) - - sample_output = '{"size(MB)": 0.262144, "bandwidth(MBps)": 9925.5}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, l.run, self.result) - - def test_successful_latency_for_cache_run_sla(self, mock_ssh): - - options = { - "test_type": "latency_for_cache", - "repetition": 1, - "warmup": 0 - } - args = { - "options": options, - "sla": {"max_latency": 35} - } - l = lmbench.Lmbench(args, self.ctx) - - sample_output = "{\"L1cache\": 1.6}" - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - l.run(self.result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(self.result, expected_result) - - def test_unsuccessful_script_error(self, mock_ssh): - - options = {"test_type": "bandwidth"} - args = {"options": options} - l = lmbench.Lmbench(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, l.run, self.result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_memload.py b/tests/unit/benchmark/scenarios/compute/test_memload.py deleted file mode 100644 index ebae9993d..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_memload.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.memload.MEMLoad - -from __future__ import absolute_import -import mock -import unittest -import os - -from yardstick.benchmark.scenarios.compute import memload - - -@mock.patch('yardstick.benchmark.scenarios.compute.memload.ssh') -class MEMLoadTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_memload_successful_setup(self, mock_ssh): - m = memload.MEMLoad({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - m.setup() - self.assertIsNotNone(m.client) - self.assertTrue(m.setup_done) - - def test_execute_command_success(self, mock_ssh): - m = memload.MEMLoad({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - m.setup() - - expected_result = 'abcdefg' - mock_ssh.SSH.from_node().execute.return_value = (0, expected_result, '') - result = m._execute_command("foo") - self.assertEqual(result, expected_result) - - def test_execute_command_failed(self, mock_ssh): - m = memload.MEMLoad({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - m.setup() - - mock_ssh.SSH.from_node().execute.return_value = (127, '', 'Failed executing \ - command') - self.assertRaises(RuntimeError, m._execute_command, - "cat /proc/meminfo") - - def test_get_mem_usage_successful(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - args = {"options": options} - m = memload.MEMLoad(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - m.setup() - - output = self._read_file("memload_sample_output.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, output, '') - result = m._get_mem_usage() - expected_result = { - "max": { - 'shared': 2844, - 'buff/cache': 853528, - 'total': 263753976, - 'free': 187016644, - 'used': 76737332 - }, - "average": { - 'shared': 2844, - 'buff/cache': 853528, - 'total': 263753976, - 'free': 187016644, - 'used': 76737332 - }, - "free": { - "memory0": { - "used": "76737332", - "buff/cache": "853528", - "free": "187016644", - "shared": "2844", - "total": "263753976", - "available": "67252400" - } - } - } - - self.assertEqual(result, expected_result) - - def _read_file(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, filename) - with open(output) as f: - sample_output = f.read() - return sample_output - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_plugintest.py b/tests/unit/benchmark/scenarios/compute/test_plugintest.py deleted file mode 100644 index 680f6ad65..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_plugintest.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.plugintest.PluginTest - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import plugintest - - -@mock.patch('yardstick.benchmark.scenarios.compute.plugintest.ssh') -class PluginTestTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'nodes': { - 'host1': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key", - 'password': "root" - }, - } - } - - self.result = {} - - def test_sample_successful_setup(self, mock_ssh): - s = plugintest.PluginTest({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - s.setup() - self.assertIsNotNone(s.client) - self.assertTrue(s.setup_done) - - def test_sample_successful(self, mock_ssh): - s = plugintest.PluginTest({}, self.ctx) - - sample_output = '{"Test Output": "Hello world!"}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - s.run(self.result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(self.result, expected_result) - - def test_sample_unsuccessful_script_error(self, mock_ssh): - s = plugintest.PluginTest({}, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, s.run, self.result) diff --git a/tests/unit/benchmark/scenarios/compute/test_qemumigrate.py b/tests/unit/benchmark/scenarios/compute/test_qemumigrate.py deleted file mode 100644 index fb55b809f..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_qemumigrate.py +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and other. -# -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.qemu_migrate.QemuMigrate - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import qemu_migrate - - -@mock.patch('yardstick.benchmark.scenarios.compute.qemu_migrate.ssh') -class QemuMigrateTestCase(unittest.TestCase): - - def setUp(self): - self.scenario_cfg = { - "host": "kvm.LF", - "setup_options": { - "rpm_dir": "/opt/rpm", - "script_dir": "/opt/scripts", - "image_dir": "/opt/image", - "host_setup_seqs": [ - "host-setup0.sh", - "host-setup1.sh", - "setup-ovsdpdk.sh", - "host-install-qemu.sh", - "host-run-qemu4lm.sh" - ] - }, - "sla": { - "action": "monitor", - "max_totaltime": 10, - "max_downtime": 0.10, - "max_setuptime": 0.50 - }, - "options": { - "smp": 99, - "migrate_to_port": 4444, - "incoming_ip": 0, - "qmp_src_path": "/tmp/qmp-sock-src", - "qmp_dst_path": "/tmp/qmp-sock-dst", - "max_down_time": "0.10" - } - } - self.context_cfg = { - "host": { - "ip": "10.229.43.154", - "key_filename": "/yardstick/resources/files/yardstick_key", - "role": "BareMetal", - "name": "kvm.LF", - "user": "root" - } - } - - def test_qemu_migrate_successful_setup(self, mock_ssh): - - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - q.setup() - self.assertIsNotNone(q.host) - self.assertTrue(q.setup_done) - - def test_qemu_migrate_successful_no_sla(self, mock_ssh): - result = {} - self.scenario_cfg.pop("sla", None) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - sample_output = '{"totaltime": 15, "downtime": 2, "setuptime": 1}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - q.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_qemu_migrate_successful_sla(self, mock_ssh): - result = {} - self.scenario_cfg.update({"sla": { - "action": "monitor", - "max_totaltime": 15, - "max_downtime": 2, - "max_setuptime": 1 - } - }) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - sample_output = '{"totaltime": 15, "downtime": 2, "setuptime": 1}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - q.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_qemu_migrate_unsuccessful_sla_totaltime(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_totaltime": 10}}) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - sample_output = '{"totaltime": 15, "downtime": 2, "setuptime": 1}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, q.run, result) - - def test_qemu_migrate_unsuccessful_sla_downtime(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_downtime": 0.10}}) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - sample_output = '{"totaltime": 15, "downtime": 2, "setuptime": 1}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, q.run, result) - - def test_qemu_migrate_unsuccessful_sla_setuptime(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_setuptime": 0.50}}) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - sample_output = '{"totaltime": 15, "downtime": 2, "setuptime": 1}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, q.run, result) - - def test_qemu_migrate_unsuccessful_script_error(self, mock_ssh): - - result = {} - self.scenario_cfg.update({"sla": {"max_totaltime": 10}}) - q = qemu_migrate.QemuMigrate(self.scenario_cfg, self.context_cfg) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - q.setup() - - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, q.run, result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_ramspeed.py b/tests/unit/benchmark/scenarios/compute/test_ramspeed.py deleted file mode 100644 index 4f71fbb36..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_ramspeed.py +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.ramspeed.Ramspeed - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.common import utils -from yardstick.benchmark.scenarios.compute import ramspeed - - -@mock.patch('yardstick.benchmark.scenarios.compute.ramspeed.ssh') -class RamspeedTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_ramspeed_successful_setup(self, mock_ssh): - - r = ramspeed.Ramspeed({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - r.setup() - self.assertIsNotNone(r.client) - self.assertTrue(r.setup_done, True) - - def test_ramspeed_successful__run_no_sla(self, mock_ssh): - - options = { - "test_id": 1, - "load": 16, - "block_size": 32 - } - args = {"options": options} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 1, "Bandwidth(MBps)": 19909.18}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 2, "Bandwidth(MBps)": 19873.89},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 4, "Bandwidth(MBps)":\ - 19907.56}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 8,\ - "Bandwidth(MBps)": 19906.94}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 16, "Bandwidth(MBps)": 19881.74}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 32, "Bandwidth(MBps)": 19395.65},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 64, "Bandwidth(MBps)":\ - 17623.14}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 128,\ - "Bandwidth(MBps)": 17677.36}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 256, "Bandwidth(MBps)": 16113.49}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 512, "Bandwidth(MBps)": 14659.19},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 1024, "Bandwidth(MBps)":\ - 14680.75}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 2048,\ - "Bandwidth(MBps)": 14756.45}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 4096, "Bandwidth(MBps)": 14604.44}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 8192, "Bandwidth(MBps)": 14159.86},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 16384,\ - "Bandwidth(MBps)": 14128.94}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 32768, "Bandwidth(MBps)": 8340.85}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - r.run(self.result) - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - self.assertEqual(self.result, expected_result) - - def test_ramspeed_successful_run_sla(self, mock_ssh): - - options = { - "test_id": 1, - "load": 16, - "block_size": 32 - } - args = {"options": options, "sla": {"min_bandwidth": 6000}} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 1, "Bandwidth(MBps)": 19909.18}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 2, "Bandwidth(MBps)": 19873.89},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 4, "Bandwidth(MBps)":\ - 19907.56}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 8,\ - "Bandwidth(MBps)": 19906.94}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 16, "Bandwidth(MBps)": 19881.74}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 32, "Bandwidth(MBps)": 19395.65},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 64, "Bandwidth(MBps)":\ - 17623.14}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 128,\ - "Bandwidth(MBps)": 17677.36}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 256, "Bandwidth(MBps)": 16113.49}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 512, "Bandwidth(MBps)": 14659.19},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 1024, "Bandwidth(MBps)":\ - 14680.75}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 2048,\ - "Bandwidth(MBps)": 14756.45}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 4096, "Bandwidth(MBps)": 14604.44}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 8192, "Bandwidth(MBps)": 14159.86},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 16384,\ - "Bandwidth(MBps)": 14128.94}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 32768, "Bandwidth(MBps)": 8340.85}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - r.run(self.result) - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - self.assertEqual(self.result, expected_result) - - def test_ramspeed_unsuccessful_run_sla(self, mock_ssh): - options = { - "test_id": 1, - "load": 8, - "block_size": 64 - } - args = {"options": options, "sla": {"min_bandwidth": 100000}} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 1, "Bandwidth(MBps)": 5000.18}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 2, "Bandwidth(MBps)": 5000.89},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 4,\ - "Bandwidth(MBps)": 5000.56}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 8, "Bandwidth(MBps)": 19906.94}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 16, "Bandwidth(MBps)": 19881.74},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 32,\ - "Bandwidth(MBps)": 19395.65}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 64, "Bandwidth(MBps)": 17623.14}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 128, "Bandwidth(MBps)": 17677.36},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 256, "Bandwidth(MBps)":\ - 16113.49}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 512,\ - "Bandwidth(MBps)": 14659.19}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 1024, "Bandwidth(MBps)": 14680.75}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 2048, "Bandwidth(MBps)": 14756.45},\ - {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 4096, "Bandwidth(MBps)":\ - 14604.44}, {"Test_type": "INTEGER & WRITING", "Block_size(kb)": 8192,\ - "Bandwidth(MBps)": 14159.86}, {"Test_type": "INTEGER & WRITING",\ - "Block_size(kb)": 16384, "Bandwidth(MBps)": 14128.94}, {"Test_type":\ - "INTEGER & WRITING", "Block_size(kb)": 32768, "Bandwidth(MBps)": 8340.85}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, r.run, self.result) - - def test_ramspeed_unsuccessful_script_error(self, mock_ssh): - options = { - "test_id": 1, - "load": 16, - "block_size": 32 - } - args = {"options": options} - r = ramspeed.Ramspeed(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, r.run, self.result) - - def test_ramspeed_mem_successful_run_no_sla(self, mock_ssh): - options = { - "test_id": 3, - "load": 16, - "block_size": 32, - "iteration": 1 - } - args = {"options": options} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER Copy:",\ - "Bandwidth(MBps)": 8353.97}, {"Test_type": "INTEGER Scale:",\ - "Bandwidth(MBps)": 9078.59}, {"Test_type": "INTEGER Add:",\ - "Bandwidth(MBps)": 10057.48}, {"Test_type": "INTEGER Triad:",\ - "Bandwidth(MBps)": 10116.27}, {"Test_type": "INTEGER AVERAGE:",\ - "Bandwidth(MBps)": 9401.58}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - r.run(self.result) - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - self.assertEqual(self.result, expected_result) - - def test_ramspeed_mem_successful_run_sla(self, mock_ssh): - options = { - "test_id": 3, - "load": 16, - "block_size": 32, - "iteration": 1 - } - args = {"options": options, "sla": {"min_bandwidth": 6000}} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER Copy:",\ - "Bandwidth(MBps)": 8353.97}, {"Test_type": "INTEGER Scale:",\ - "Bandwidth(MBps)": 9078.59}, {"Test_type": "INTEGER Add:",\ - "Bandwidth(MBps)": 10057.48}, {"Test_type": "INTEGER Triad:",\ - "Bandwidth(MBps)": 10116.27}, {"Test_type": "INTEGER AVERAGE:",\ - "Bandwidth(MBps)": 9401.58}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - r.run(self.result) - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - self.assertEqual(self.result, expected_result) - - def test_ramspeed_mem_unsuccessful_run_sla(self, mock_ssh): - options = { - "test_id": 3, - "load": 16, - "block_size": 32, - "iteration": 1 - } - args = {"options": options, "sla": {"min_bandwidth": 86000}} - r = ramspeed.Ramspeed(args, self.ctx) - - sample_output = '{"Result": [{"Test_type": "INTEGER Copy:",\ - "Bandwidth(MBps)": 4000.97}, {"Test_type": "INTEGER Scale:",\ - "Bandwidth(MBps)": 4400.59}, {"Test_type": "INTEGER Add:",\ - "Bandwidth(MBps)": 4300.48}, {"Test_type": "INTEGER Triad:",\ - "Bandwidth(MBps)": 1300.27}, {"Test_type": "INTEGER AVERAGE:",\ - "Bandwidth(MBps)": 2401.58}]}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, r.run, self.result) - - def test_ramspeed_unsuccessful_unknown_type_run(self, mock_ssh): - options = { - "test_id": 30, - "load": 16, - "block_size": 32 - } - args = {'options': options} - r = ramspeed.Ramspeed(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'No such type_id: 30 for \ - Ramspeed scenario') - self.assertRaises(RuntimeError, r.run, self.result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_spec_cpu.py b/tests/unit/benchmark/scenarios/compute/test_spec_cpu.py deleted file mode 100644 index 40423b9da..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_spec_cpu.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.spec_cpu.SpecCPU - -from __future__ import absolute_import - -import unittest - -import mock - -from yardstick.common import utils -from yardstick.benchmark.scenarios.compute import spec_cpu - - -@mock.patch('yardstick.benchmark.scenarios.compute.spec_cpu.ssh') -class SpecCPUTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_spec_cpu_successful_setup(self, mock_ssh): - - options = { - "SPECint_benchmark": "perlbench", - "runspec_tune": "all", - "output_format": "all", - "runspec_iterations": "1", - "runspec_tune": "base", - "runspec_size": "test" - } - args = {"options": options} - s = spec_cpu.SpecCPU(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - s.setup() - self.assertIsNotNone(s.client) - self.assertTrue(s.setup_done, True) - - def test_spec_cpu_successful__run_no_sla(self, mock_ssh): - - options = { - "SPECint_benchmark": "perlbench", - "runspec_tune": "all", - "output_format": "all" - } - args = {"options": options} - s = spec_cpu.SpecCPU(args, self.ctx) - - sample_output = '' - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - s.run(self.result) - expected_result = {} - self.assertEqual(self.result, expected_result) - - def test_ramspeed_unsuccessful_script_error(self, mock_ssh): - options = { - "benchmark_subset": "int" - } - args = {"options": options} - s = spec_cpu.SpecCPU(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, s.run, self.result) - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_spec_cpu_for_vm.py b/tests/unit/benchmark/scenarios/compute/test_spec_cpu_for_vm.py deleted file mode 100644 index c428e1fb8..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_spec_cpu_for_vm.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.spec_cpu_for_vm.SpecCPUforVM - -from __future__ import absolute_import - -import unittest - -import mock - -from yardstick.benchmark.scenarios.compute import spec_cpu_for_vm - - -@mock.patch('yardstick.benchmark.scenarios.compute.spec_cpu_for_vm.ssh') -class SpecCPUforVMTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_spec_cpu_successful_setup(self, mock_ssh): - - options = { - "SPECint_benchmark": "perlbench", - "runspec_tune": "all", - "output_format": "all", - "runspec_iterations": "1", - "runspec_size": "test" - } - args = {"options": options} - s = spec_cpu_for_vm.SpecCPUforVM(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - s.setup() - self.assertIsNotNone(s.client) - self.assertTrue(s.setup_done, True) - - def test_spec_cpu_successful__run_no_sla(self, mock_ssh): - - options = { - "SPECint_benchmark": "perlbench", - "runspec_tune": "all", - "output_format": "all" - } - args = {"options": options} - s = spec_cpu_for_vm.SpecCPUforVM(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_ssh.SSH.from_node().get.return_value = (0, '', '') - s.run(self.result) - expected_result = {'SPEC_CPU_result': ''} - self.assertEqual(self.result, expected_result) - - def test_spec_cpu_unsuccessful_script_error(self, mock_ssh): - options = { - "benchmark_subset": "int" - } - args = {"options": options} - s = spec_cpu_for_vm.SpecCPUforVM(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, s.run, self.result) - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/compute/test_unixbench.py b/tests/unit/benchmark/scenarios/compute/test_unixbench.py deleted file mode 100644 index fec355b45..000000000 --- a/tests/unit/benchmark/scenarios/compute/test_unixbench.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and other. -# -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.compute.unixbench.Unixbench - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.compute import unixbench - - -@mock.patch('yardstick.benchmark.scenarios.compute.unixbench.ssh') -class UnixbenchTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - "host": { - "ip": "192.168.50.28", - "user": "root", - "key_filename": "mykey.key" - } - } - - def test_unixbench_successful_setup(self, mock_ssh): - - u = unixbench.Unixbench({}, self.ctx) - u.setup() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(u.client) - self.assertTrue(u.setup_done) - - def test_unixbench_successful_no_sla(self, mock_ssh): - - options = { - "test_type": 'dhry2reg', - "run_mode": 'verbose' - } - args = { - "options": options, - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - - sample_output = '{"Score":"4425.4"}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - u.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_unixbench_successful_in_quiet_mode(self, mock_ssh): - - options = { - "test_type": 'dhry2reg', - "run_mode": 'quiet', - "copies": 1 - } - args = { - "options": options, - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - - sample_output = '{"Score":"4425.4"}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - u.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_unixbench_successful_sla(self, mock_ssh): - - options = { - "test_type": 'dhry2reg', - "run_mode": 'verbose' - } - sla = { - "single_score": '100', - "parallel_score": '500' - } - args = { - "options": options, - "sla": sla - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - - sample_output = '{"signle_score":"2251.7","parallel_score":"4395.9"}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - u.run(result) - expected_result = jsonutils.loads(sample_output) - self.assertEqual(result, expected_result) - - def test_unixbench_unsuccessful_sla_single_score(self, mock_ssh): - - args = { - "options": {}, - "sla": {"single_score": "500"} - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - sample_output = '{"single_score":"200.7","parallel_score":"4395.9"}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, u.run, result) - - def test_unixbench_unsuccessful_sla_parallel_score(self, mock_ssh): - - args = { - "options": {}, - "sla": {"parallel_score": "4000"} - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - sample_output = '{"signle_score":"2251.7","parallel_score":"3395.9"}' - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, u.run, result) - - def test_unixbench_unsuccessful_script_error(self, mock_ssh): - - options = { - "test_type": 'dhry2reg', - "run_mode": 'verbose' - } - sla = { - "single_score": '100', - "parallel_score": '500' - } - args = { - "options": options, - "sla": sla - } - u = unixbench.Unixbench(args, self.ctx) - result = {} - - u.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, u.run, result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/dummy/__init__.py b/tests/unit/benchmark/scenarios/dummy/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/dummy/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/dummy/test_dummy.py b/tests/unit/benchmark/scenarios/dummy/test_dummy.py deleted file mode 100644 index bc5131806..000000000 --- a/tests/unit/benchmark/scenarios/dummy/test_dummy.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.dummy.dummy - -from __future__ import absolute_import -import unittest - -from yardstick.benchmark.scenarios.dummy import dummy - - -class DummyTestCase(unittest.TestCase): - - def setUp(self): - self.test_context = dummy.Dummy(None, None) - - self.assertIsNone(self.test_context.scenario_cfg) - self.assertIsNone(self.test_context.context_cfg) - self.assertFalse(self.test_context.setup_done) - - def test_run(self): - result = {} - self.test_context.run(result) - - self.assertEqual(result["hello"], "yardstick") - self.assertTrue(self.test_context.setup_done) diff --git a/tests/unit/benchmark/scenarios/lib/__init__.py b/tests/unit/benchmark/scenarios/lib/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/lib/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/lib/test_add_memory_load.py b/tests/unit/benchmark/scenarios/lib/test_add_memory_load.py deleted file mode 100644 index bda07f723..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_add_memory_load.py +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################## -# 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.add_memory_load import AddMemoryLoad - - -class AddMemoryLoadTestCase(unittest.TestCase): - - @mock.patch('yardstick.ssh.SSH.from_node') - def test_add_memory_load_with_load(self, mock_from_node): - scenario_cfg = { - 'options': { - 'memory_load': 0.5 - } - } - context_cfg = { - 'host': {} - } - mock_from_node().execute.return_value = (0, '0 2048 512', '') - obj = AddMemoryLoad(scenario_cfg, context_cfg) - obj.run({}) - self.assertTrue(mock_from_node.called) - - @mock.patch('yardstick.ssh.SSH.from_node') - def test_add_memory_load_without_load(self, mock_from_node): - scenario_cfg = { - 'options': { - 'memory_load': 0 - } - } - context_cfg = { - 'host': {} - } - obj = AddMemoryLoad(scenario_cfg, context_cfg) - obj.run({}) - self.assertTrue(mock_from_node.called) - - @mock.patch('yardstick.ssh.SSH.from_node') - def test_add_memory_load_without_args(self, mock_from_node): - scenario_cfg = { - 'options': { - } - } - context_cfg = { - 'host': {} - } - obj = AddMemoryLoad(scenario_cfg, context_cfg) - obj.run({}) - self.assertTrue(mock_from_node.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_attach_volume.py b/tests/unit/benchmark/scenarios/lib/test_attach_volume.py deleted file mode 100644 index e69924072..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_attach_volume.py +++ /dev/null @@ -1,33 +0,0 @@ -############################################################################## -# 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.attach_volume import AttachVolume - - -class AttachVolumeTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.attach_server_volume') - def test_attach_volume(self, mock_attach_server_volume): - options = { - 'volume_id': '123-456-000', - 'server_id': '000-123-456' - } - args = {"options": options} - obj = AttachVolume(args, {}) - obj.run({}) - self.assertTrue(mock_attach_server_volume.called) - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py b/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py deleted file mode 100644 index 1fb2f89ca..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################## -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.lib.check_connectivity.CheckConnectivity - -from __future__ import absolute_import - -import mock -import unittest - -from yardstick.benchmark.scenarios.lib import check_connectivity - - -class CheckConnectivityTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': 'mykey.key', - 'ssh_port': '22' - }, - 'target': { - 'ipaddr': '172.16.0.138' - } - } - - @mock.patch('yardstick.benchmark.scenarios.lib.check_connectivity.ssh') - def test_check_connectivity(self, mock_ssh): - - args = { - 'options': {'src_ip_addr': '192.168.23.2', - 'dest_ip_addr': '192.168.23.10', - 'ssh_user': 'root', - 'ssh_passwd': 'root', - 'ssh_port': '22', - 'ssh_timeout': 600, - 'ping_parameter': "-s 2048" - }, - 'sla': {'status': 'True', - 'action': 'assert'} - } - - result = {} - - obj = check_connectivity.CheckConnectivity(args, {}) - obj.setup() - mock_ssh.SSH.execute.return_value = (0, '100', '') - - - @mock.patch('yardstick.benchmark.scenarios.lib.check_connectivity.ssh') - def test_check_connectivity_key(self, mock_ssh): - - args = { - 'options': {'ssh_user': 'root', - 'ssh_key': '/root/.ssh/id_rsa', - 'ssh_port': '22', - 'ssh_timeout': 600, - 'ping_parameter': "-s 2048" - }, - 'sla': {'status': 'True', - 'action': 'assert'} - } - - result = {} - - obj = check_connectivity.CheckConnectivity(args, self.ctx) - obj.setup() - - mock_ssh.SSH.execute.return_value = (0, '100', '') - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_check_numa_info.py b/tests/unit/benchmark/scenarios/lib/test_check_numa_info.py deleted file mode 100644 index 1dd461d41..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_check_numa_info.py +++ /dev/null @@ -1,85 +0,0 @@ -############################################################################## -# 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.check_numa_info import CheckNumaInfo - - -class CheckNumaInfoTestCase(unittest.TestCase): - - @mock.patch( - 'yardstick.benchmark.scenarios.lib.check_numa_info.CheckNumaInfo._check_vm2_status') - def test_check_numa_info(self, mock_check_vm2): - scenario_cfg = {'info1': {}, 'info2': {}} - obj = CheckNumaInfo(scenario_cfg, {}) - obj.run({}) - self.assertTrue(mock_check_vm2.called) - - def test_check_vm2_status_length_eq_1(self): - info1 = { - 'pinning': [0], - 'vcpupin': [{ - 'cpuset': '1,2' - }] - } - info2 = { - 'pinning': [0], - 'vcpupin': [{ - 'cpuset': '1,2' - }] - } - scenario_cfg = {'info1': info1, 'info2': info2} - obj = CheckNumaInfo(scenario_cfg, {}) - status = obj._check_vm2_status(info1, info2) - self.assertTrue(status) - - def test_check_vm2_status_length_gt_1(self): - info1 = { - 'pinning': [0, 1], - 'vcpupin': [{ - 'cpuset': '1,2' - }] - } - info2 = { - 'pinning': [0, 1], - 'vcpupin': [{ - 'cpuset': '1,2' - }] - } - scenario_cfg = {'info1': info1, 'info2': info2} - obj = CheckNumaInfo(scenario_cfg, {}) - status = obj._check_vm2_status(info1, info2) - self.assertFalse(status) - - def test_check_vm2_status_length_not_in_set(self): - info1 = { - 'pinning': [0], - 'vcpupin': [{ - 'cpuset': '1,7' - }] - } - info2 = { - 'pinning': [0], - 'vcpupin': [{ - 'cpuset': '1,7' - }] - } - scenario_cfg = {'info1': info1, 'info2': info2} - obj = CheckNumaInfo(scenario_cfg, {}) - status = obj._check_vm2_status(info1, info2) - self.assertFalse(status) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_check_value.py b/tests/unit/benchmark/scenarios/lib/test_check_value.py deleted file mode 100644 index 21e83f830..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_check_value.py +++ /dev/null @@ -1,46 +0,0 @@ -############################################################################## -# 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 - -from yardstick.benchmark.scenarios.lib.check_value import CheckValue - - -class CheckValueTestCase(unittest.TestCase): - - def test_check_value_eq(self): - scenario_cfg = {'options': {'operator': 'eq', 'value1': 1, 'value2': 2}} - obj = CheckValue(scenario_cfg, {}) - try: - obj.run({}) - except Exception as e: - self.assertIsInstance(e, AssertionError) - - def test_check_value_eq_pass(self): - scenario_cfg = {'options': {'operator': 'eq', 'value1': 1, 'value2': 1}} - obj = CheckValue(scenario_cfg, {}) - try: - obj.run({}) - except Exception as e: - self.assertIsInstance(e, AssertionError) - - def test_check_value_ne(self): - scenario_cfg = {'options': {'operator': 'ne', 'value1': 1, 'value2': 1}} - obj = CheckValue(scenario_cfg, {}) - try: - obj.run({}) - except Exception as e: - self.assertIsInstance(e, AssertionError) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_flavor.py b/tests/unit/benchmark/scenarios/lib/test_create_flavor.py deleted file mode 100644 index 036ae952d..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_flavor.py +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################## -# 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.create_flavor import CreateFlavor - - -class CreateFlavorTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.create_flavor') - def test_create_flavor(self, mock_create_flavor): - options = { - 'flavor_name': 'yardstick_test_flavor', - 'vcpus': '2', - 'ram': '1024', - 'disk': '100', - 'is_public': 'True' - } - args = {"options": options} - obj = CreateFlavor(args, {}) - obj.run({}) - self.assertTrue(mock_create_flavor.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_floating_ip.py b/tests/unit/benchmark/scenarios/lib/test_create_floating_ip.py deleted file mode 100644 index 72dbcd7cd..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_floating_ip.py +++ /dev/null @@ -1,34 +0,0 @@ -############################################################################## -# 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.create_floating_ip import CreateFloatingIp - - -class CreateFloatingIpTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.create_floating_ip') - @mock.patch('yardstick.common.openstack_utils.get_network_id') - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - def test_create_floating_ip(self, mock_create_floating_ip, mock_get_network_id, mock_get_neutron_client): - options = {} - args = {"options": options} - obj = CreateFloatingIp(args, {}) - obj.run({}) - self.assertTrue(mock_create_floating_ip.called) - self.assertTrue(mock_get_network_id.called) - self.assertTrue(mock_get_neutron_client.called) - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_image.py b/tests/unit/benchmark/scenarios/lib/test_create_image.py deleted file mode 100644 index c213ceba0..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_image.py +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# 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.create_image import CreateImage - - -class CreateImageTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.create_image') - @mock.patch('yardstick.common.openstack_utils.get_glance_client') - def test_create_image(self, mock_get_glance_client, mock_create_image): - options = { - 'image_name': 'yardstick_test_image_01', - 'disk_format': 'qcow2', - 'container_format': 'bare', - 'min_disk': '1', - 'min_ram': '512', - 'protected': 'False', - 'tags': '["yardstick automatic test image"]', - 'file_path': '/home/opnfv/images/cirros-0.3.5-x86_64-disk.img' - } - args = {"options": options} - obj = CreateImage(args, {}) - obj.run({}) - self.assertTrue(mock_create_image.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_keypair.py b/tests/unit/benchmark/scenarios/lib/test_create_keypair.py deleted file mode 100644 index 4b9b72013..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_keypair.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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.create_keypair import CreateKeypair - -PREFIX = "yardstick.benchmark.scenarios.lib.create_keypair" - - -class CreateKeypairTestCase(unittest.TestCase): - @mock.patch('{}.paramiko'.format(PREFIX)) - @mock.patch('{}.op_utils'.format(PREFIX)) - def test_create_keypair(self, mock_op_utils, mock_paramiko): - options = { - 'key_name': 'yardstick_key', - 'key_path': '/tmp/yardstick_key' - } - args = {"options": options} - obj = CreateKeypair(args, {}) - obj.run({}) - self.assertTrue(mock_op_utils.create_keypair.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_network.py b/tests/unit/benchmark/scenarios/lib/test_create_network.py deleted file mode 100644 index 8e7d8b5a1..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_network.py +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.create_network import CreateNetwork - - -class CreateNetworkTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.create_neutron_net') - def test_create_network(self, mock_get_neutron_client, mock_create_neutron_net): - options = { - 'openstack_paras': { - 'name': 'yardstick_net', - 'admin_state_up': 'True' - } - } - args = {"options": options} - obj = CreateNetwork(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_create_neutron_net.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_port.py b/tests/unit/benchmark/scenarios/lib/test_create_port.py deleted file mode 100644 index 3b2aa2247..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_port.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.create_port import CreatePort - - -class CreatePortTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - def test_create_port(self, mock_get_neutron_client): - options = { - 'openstack_paras': { - 'name': 'yardstick_port' - } - } - args = {"options": options} - obj = CreatePort(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_router.py b/tests/unit/benchmark/scenarios/lib/test_create_router.py deleted file mode 100644 index b956a3634..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_router.py +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.create_router import CreateRouter - - -class CreateRouterTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.create_neutron_router') - def test_create_router(self, mock_get_neutron_client, mock_create_neutron_router): - options = { - 'openstack_paras': { - 'admin_state_up': 'True', - 'name': 'yardstick_router' - } - } - args = {"options": options} - obj = CreateRouter(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_create_neutron_router.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_sec_group.py b/tests/unit/benchmark/scenarios/lib/test_create_sec_group.py deleted file mode 100644 index b962f7f0e..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_sec_group.py +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.create_sec_group import CreateSecgroup - - -class CreateSecGroupTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.create_security_group_full') - def test_create_sec_group(self, mock_get_neutron_client, mock_create_security_group_full): - options = { - 'openstack_paras': { - 'sg_name': 'yardstick_sec_group', - 'description': 'security group for yardstick manual VM' - } - } - args = {"options": options} - obj = CreateSecgroup(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_create_security_group_full.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_server.py b/tests/unit/benchmark/scenarios/lib/test_create_server.py deleted file mode 100644 index 7c4193132..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_server.py +++ /dev/null @@ -1,42 +0,0 @@ -############################################################################## -# 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.create_server import CreateServer - - -class CreateServerTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.create_instance_and_wait_for_active') - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - @mock.patch('yardstick.common.openstack_utils.get_glance_client') - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - def test_create_server(self, mock_get_nova_client, mock_get_neutron_client, - mock_get_glance_client, mock_create_instance_and_wait_for_active): - scenario_cfg = { - 'options' : { - 'openstack_paras': 'example' - }, - 'output': 'server' - } - obj = CreateServer(scenario_cfg, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_get_glance_client.called) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_create_instance_and_wait_for_active.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_subnet.py b/tests/unit/benchmark/scenarios/lib/test_create_subnet.py deleted file mode 100644 index 0154755c4..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_subnet.py +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.create_subnet import CreateSubnet - - -class CreateSubnetTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.create_neutron_subnet') - def test_create_subnet(self, mock_get_neutron_client, mock_create_neutron_subnet): - options = { - 'openstack_paras': { - 'network_id': '123-123-123', - 'name': 'yardstick_subnet', - 'cidr': '10.10.10.0/24', - 'ip_version': '4' - } - } - args = {"options": options} - obj = CreateSubnet(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_create_neutron_subnet.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_create_volume.py b/tests/unit/benchmark/scenarios/lib/test_create_volume.py deleted file mode 100644 index ef2c0ccaf..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_create_volume.py +++ /dev/null @@ -1,91 +0,0 @@ -############################################################################## -# 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 - -import yardstick.benchmark.scenarios.lib.create_volume - - -class CreateVolumeTestCase(unittest.TestCase): - - def setUp(self): - self._mock_cinder_client = mock.patch( - 'yardstick.common.openstack_utils.get_cinder_client') - self.mock_cinder_client = self._mock_cinder_client.start() - self._mock_glance_client = mock.patch( - 'yardstick.common.openstack_utils.get_glance_client') - self.mock_glance_client = self._mock_glance_client.start() - self.addCleanup(self._stop_mock) - - self.scenario_cfg = { - "options" : - { - 'volume_name': 'yardstick_test_volume_01', - 'size': '256', - 'image': 'cirros-0.3.5' - } - } - - self.scenario = ( - yardstick.benchmark.scenarios.lib.create_volume.CreateVolume( - scenario_cfg=self.scenario_cfg, - context_cfg={})) - - def _stop_mock(self): - self._mock_cinder_client.stop() - self._mock_glance_client.stop() - - def test_init(self): - self.mock_cinder_client.return_value = "All volumes are equal" - self.mock_glance_client.return_value = "Images are more equal" - - expected_vol_name = self.scenario_cfg["options"]["volume_name"] - expected_vol_size = self.scenario_cfg["options"]["size"] - expected_im_name = self.scenario_cfg["options"]["image"] - expected_im_id = None - - scenario = ( - yardstick.benchmark.scenarios.lib.create_volume.CreateVolume( - scenario_cfg=self.scenario_cfg, - context_cfg={})) - - self.assertEqual(expected_vol_name, scenario.volume_name) - self.assertEqual(expected_vol_size, scenario.volume_size) - self.assertEqual(expected_im_name, scenario.image_name) - self.assertEqual(expected_im_id, scenario.image_id) - self.assertEqual("All volumes are equal", scenario.cinder_client) - self.assertEqual("Images are more equal", scenario.glance_client) - - def test_setup(self): - self.assertFalse(self.scenario.setup_done) - self.scenario.setup() - self.assertTrue(self.scenario.setup_done) - - @mock.patch('yardstick.common.openstack_utils.create_volume') - @mock.patch('yardstick.common.openstack_utils.get_image_id') - def test_run(self, mock_image_id, mock_create_volume): - self.scenario.run() - - mock_image_id.assert_called_once() - mock_create_volume.assert_called_once() - - @mock.patch.object( - yardstick.benchmark.scenarios.lib.create_volume.CreateVolume, 'setup') - def test_run_no_setup(self, scenario_setup): - self.scenario.setup_done = False - self.scenario.run() - scenario_setup.assert_called_once() - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_flavor.py b/tests/unit/benchmark/scenarios/lib/test_delete_flavor.py deleted file mode 100644 index 4a91b8939..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_flavor.py +++ /dev/null @@ -1,35 +0,0 @@ -############################################################################## -# 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.delete_flavor import DeleteFlavor - - -class DeleteFlavorTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.delete_flavor') - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - def test_delete_flavor(self, mock_get_nova_client, mock_delete_flavor): - options = { - 'flavor_name': 'yardstick_test_flavor' - } - args = {"options": options} - obj = DeleteFlavor(args, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_delete_flavor.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_floating_ip.py b/tests/unit/benchmark/scenarios/lib/test_delete_floating_ip.py deleted file mode 100644 index 7592c8070..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_floating_ip.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_floating_ip import DeleteFloatingIp - - -class DeleteFloatingIpTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - @mock.patch('yardstick.common.openstack_utils.delete_floating_ip') - def test_delete_floating_ip(self, mock_get_nova_client, mock_delete_floating_ip): - options = { - 'floating_ip_id': '123-123-123' - } - args = {"options": options} - obj = DeleteFloatingIp(args, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_delete_floating_ip.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_image.py b/tests/unit/benchmark/scenarios/lib/test_delete_image.py deleted file mode 100644 index 2bbf14d16..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_image.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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.delete_image import DeleteImage - - -class DeleteImageTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.delete_image') - @mock.patch('yardstick.common.openstack_utils.get_image_id') - @mock.patch('yardstick.common.openstack_utils.get_glance_client') - def test_delete_image(self, mock_get_glance_client, mock_image_id, mock_delete_image): - options = { - 'image_name': 'yardstick_test_image_01' - } - args = {"options": options} - obj = DeleteImage(args, {}) - obj.run({}) - self.assertTrue(mock_delete_image.called) - self.assertTrue(mock_image_id.called) - self.assertTrue(mock_get_glance_client.called) - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_keypair.py b/tests/unit/benchmark/scenarios/lib/test_delete_keypair.py deleted file mode 100644 index 9663fe9fb..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_keypair.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_keypair import DeleteKeypair - - -class DeleteKeypairTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - @mock.patch('yardstick.common.openstack_utils.delete_keypair') - def test_detach_volume(self, mock_get_nova_client, mock_delete_keypair): - options = { - 'key_name': 'yardstick_key' - } - args = {"options": options} - obj = DeleteKeypair(args, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_delete_keypair.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_network.py b/tests/unit/benchmark/scenarios/lib/test_delete_network.py deleted file mode 100644 index 9ccaa8232..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_network.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_network import DeleteNetwork - - -class DeleteNetworkTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.delete_neutron_net') - def test_delete_network(self, mock_get_neutron_client, mock_delete_neutron_net): - options = { - 'network_id': '123-123-123' - } - args = {"options": options} - obj = DeleteNetwork(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_delete_neutron_net.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_port.py b/tests/unit/benchmark/scenarios/lib/test_delete_port.py deleted file mode 100644 index 77b9c7009..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_port.py +++ /dev/null @@ -1,34 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_port import DeletePort - - -class DeletePortTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - def test_delete_port(self, mock_get_neutron_client): - options = { - 'port_id': '123-123-123' - } - args = {"options": options} - obj = DeletePort(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_router.py b/tests/unit/benchmark/scenarios/lib/test_delete_router.py deleted file mode 100644 index ab1ad5d35..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_router.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_router import DeleteRouter - - -class DeleteRouterTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.delete_neutron_router') - def test_delete_router(self, mock_get_neutron_client, mock_delete_neutron_router): - options = { - 'router_id': '123-123-123' - } - args = {"options": options} - obj = DeleteRouter(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_delete_neutron_router.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_router_gateway.py b/tests/unit/benchmark/scenarios/lib/test_delete_router_gateway.py deleted file mode 100644 index 1150dccda..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_router_gateway.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_router_gateway import DeleteRouterGateway - - -class DeleteRouterGatewayTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.remove_gateway_router') - def test_delete_router_gateway(self, mock_get_neutron_client, mock_remove_gateway_router): - options = { - 'router_id': '123-123-123' - } - args = {"options": options} - obj = DeleteRouterGateway(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_remove_gateway_router.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_router_interface.py b/tests/unit/benchmark/scenarios/lib/test_delete_router_interface.py deleted file mode 100644 index 2cc9c9f37..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_router_interface.py +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_router_interface import DeleteRouterInterface - - -class DeleteRouterInterfaceTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_neutron_client') - @mock.patch('yardstick.common.openstack_utils.remove_interface_router') - def test_delete_router_interface(self, mock_get_neutron_client, mock_remove_interface_router): - options = { - 'router_id': '123-123-123', - 'subnet_id': '321-321-321' - } - args = {"options": options} - obj = DeleteRouterInterface(args, {}) - obj.run({}) - self.assertTrue(mock_get_neutron_client.called) - self.assertTrue(mock_remove_interface_router.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_server.py b/tests/unit/benchmark/scenarios/lib/test_delete_server.py deleted file mode 100644 index 622ead5ac..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_server.py +++ /dev/null @@ -1,35 +0,0 @@ -############################################################################## -# 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.delete_server import DeleteServer - - -class DeleteServerTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.delete_instance') - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - def test_delete_server(self, mock_get_nova_client, mock_delete_instance): - options = { - 'server_id': '1234-4567-0000' - } - args = {"options": options} - obj = DeleteServer(args, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_delete_instance.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_delete_volume.py b/tests/unit/benchmark/scenarios/lib/test_delete_volume.py deleted file mode 100644 index a11d0121b..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_delete_volume.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.delete_volume import DeleteVolume - - -class DeleteVolumeTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_cinder_client') - @mock.patch('yardstick.common.openstack_utils.delete_volume') - def test_delete_volume(self, mock_get_cinder_client, mock_delete_volume): - options = { - 'volume_id': '123-123-123' - } - args = {"options": options} - obj = DeleteVolume(args, {}) - obj.run({}) - self.assertTrue(mock_get_cinder_client.called) - self.assertTrue(mock_delete_volume.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_detach_volume.py b/tests/unit/benchmark/scenarios/lib/test_detach_volume.py deleted file mode 100644 index 0cffcba15..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_detach_volume.py +++ /dev/null @@ -1,35 +0,0 @@ -############################################################################## -# 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 -import paramiko - -from yardstick.benchmark.scenarios.lib.detach_volume import DetachVolume - - -class DetachVolumeTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.detach_volume') - def test_detach_volume(self, mock_detach_volume): - options = { - 'server_id': '321-321-321', - 'volume_id': '123-123-123' - } - args = {"options": options} - obj = DetachVolume(args, {}) - obj.run({}) - self.assertTrue(mock_detach_volume.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_get_flavor.py b/tests/unit/benchmark/scenarios/lib/test_get_flavor.py deleted file mode 100644 index bf12e0a32..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_get_flavor.py +++ /dev/null @@ -1,33 +0,0 @@ -############################################################################## -# 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_flavor import GetFlavor - - -class GetFlavorTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_flavor_by_name') - def test_get_flavor(self, mock_get_flavor_by_name): - options = { - 'flavor_name': 'yardstick_test_flavor' - } - args = {"options": options} - obj = GetFlavor(args, {}) - obj.run({}) - self.assertTrue(mock_get_flavor_by_name.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_get_migrate_target_host.py b/tests/unit/benchmark/scenarios/lib/test_get_migrate_target_host.py deleted file mode 100644 index f046c92ea..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_get_migrate_target_host.py +++ /dev/null @@ -1,51 +0,0 @@ -############################################################################## -# 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_migrate_target_host import GetMigrateTargetHost - -BASE = 'yardstick.benchmark.scenarios.lib.get_migrate_target_host' - - -class GetMigrateTargetHostTestCase(unittest.TestCase): - - @mock.patch('{}.openstack_utils.get_nova_client'.format(BASE)) - @mock.patch('{}.GetMigrateTargetHost._get_migrate_host'.format(BASE)) - @mock.patch('{}.GetMigrateTargetHost._get_current_host_name'.format(BASE)) - def test_get_migrate_target_host(self, - mock_get_current_host_name, - mock_get_migrate_host, - mock_get_nova_client): - obj = GetMigrateTargetHost({}, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_get_current_host_name.called) - self.assertTrue(mock_get_migrate_host.called) - - @mock.patch('{}.openstack_utils.get_nova_client'.format(BASE)) - def test_get_migrate_host(self, mock_get_nova_client): - class A(object): - def __init__(self, service): - self.service = service - self.host = 'host4' - - mock_get_nova_client().hosts.list_all.return_value = [A('compute')] - obj = GetMigrateTargetHost({}, {}) - host = obj._get_migrate_host('host5') - self.assertTrue(mock_get_nova_client.called) - self.assertEqual(host, 'host4') - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_get_numa_info.py b/tests/unit/benchmark/scenarios/lib/test_get_numa_info.py deleted file mode 100644 index 680692fdc..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_get_numa_info.py +++ /dev/null @@ -1,106 +0,0 @@ -############################################################################## -# 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() diff --git a/tests/unit/benchmark/scenarios/lib/test_get_server.py b/tests/unit/benchmark/scenarios/lib/test_get_server.py deleted file mode 100644 index aebbf5416..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_get_server.py +++ /dev/null @@ -1,50 +0,0 @@ -############################################################################## -# 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_server import GetServer - - -class GetServerTestCase(unittest.TestCase): - - @mock.patch('yardstick.common.openstack_utils.get_server_by_name') - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - def test_get_server_with_name(self, mock_get_nova_client, mock_get_server_by_name): - scenario_cfg = { - 'options': { - 'server_name': 'yardstick_server' - }, - 'output': 'status server' - } - obj = GetServer(scenario_cfg, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - self.assertTrue(mock_get_server_by_name.called) - - @mock.patch('yardstick.common.openstack_utils.get_nova_client') - def test_get_server_with_id(self, mock_get_nova_client): - scenario_cfg = { - 'options': { - 'server_id': '1' - }, - 'output': 'status server' - } - mock_get_nova_client().servers.get.return_value = None - obj = GetServer(scenario_cfg, {}) - obj.run({}) - self.assertTrue(mock_get_nova_client.called) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/lib/test_get_server_ip.py b/tests/unit/benchmark/scenarios/lib/test_get_server_ip.py deleted file mode 100644 index 3d20d5439..000000000 --- a/tests/unit/benchmark/scenarios/lib/test_get_server_ip.py +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# 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 - -from yardstick.benchmark.scenarios.lib.get_server_ip import GetServerIp - - -class GetServerIpTestCase(unittest.TestCase): - def test_get_server_ip(self): - scenario_cfg = { - 'options': { - 'server': { - 'addresses': { - 'net1': [ - { - 'OS-EXT-IPS:type': 'floating', - 'addr': '127.0.0.1' - } - ] - } - } - }, - 'output': 'ip' - } - obj = GetServerIp(scenario_cfg, {}) - result = obj.run({}) - self.assertEqual(result, {'ip': '127.0.0.1'}) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/__init__.py b/tests/unit/benchmark/scenarios/networking/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/networking/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/networking/imix_voice.yaml b/tests/unit/benchmark/scenarios/networking/imix_voice.yaml deleted file mode 100644 index b8f8e5358..000000000 --- a/tests/unit/benchmark/scenarios/networking/imix_voice.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#imix definition for voice traffic -# -# it is a typical case for testing the synthetic VNF performance. -# -#percentage of the packets can be less than 100% -#the traffic in downstream and upstream direction could be different - -schema: "nsb:imix:0.1" - -imix: - private: - imix_small: 100 #ipv4 case - 72B should be 0 ipv6 case - 84B - imix_128B: 0 - imix_256B: 0 - imix_373B: 0 - imix_570B: 0 - imix_1400B: 0 - imix_1500B: 0 - - public: - imix_small: 100 #ipv4 case - 72B ipv6 - 84B - imix_128B: 0 - imix_256B: 0 - imix_373B: 0 - imix_570B: 0 - imix_1400B: 0 - imix_1500B: 0 diff --git a/tests/unit/benchmark/scenarios/networking/iperf3_sample_output.json b/tests/unit/benchmark/scenarios/networking/iperf3_sample_output.json deleted file mode 100644 index b56009ba1..000000000 --- a/tests/unit/benchmark/scenarios/networking/iperf3_sample_output.json +++ /dev/null @@ -1 +0,0 @@ -{"start": {"connecting_to": {"host": "172.16.0.252", "port": 5201}, "timestamp": {"timesecs": 1436254758, "time": "Tue, 07 Jul 2015 07:39:18 GMT"}, "test_start": {"protocol": "TCP", "num_streams": 1, "omit": 0, "bytes": 0, "blksize": 131072, "duration": 10, "blocks": 0, "reverse": 0}, "system_info": "Linux client 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\n", "version": "iperf 3.0.7", "connected": [{"local_host": "10.0.1.2", "local_port": 37633, "remote_host": "172.16.0.252", "socket": 4, "remote_port": 5201}], "cookie": "client.1436254758.606879.1fb328dc230", "tcp_mss_default": 1448}, "intervals": [{"sum": {"end": 1.00068, "seconds": 1.00068, "bytes": 16996624, "bits_per_second": 135881000.0, "start": 0, "retransmits": 0, "omitted": false}, "streams": [{"end": 1.00068, "socket": 4, "seconds": 1.00068, "bytes": 16996624, "bits_per_second": 135881000.0, "start": 0, "retransmits": 0, "omitted": false, "snd_cwnd": 451776}]}, {"sum": {"end": 2.00048, "seconds": 0.999804, "bytes": 20010192, "bits_per_second": 160113000.0, "start": 1.00068, "retransmits": 0, "omitted": false}, "streams": [{"end": 2.00048, "socket": 4, "seconds": 0.999804, "bytes": 20010192, "bits_per_second": 160113000.0, "start": 1.00068, "retransmits": 0, "omitted": false, "snd_cwnd": 713864}]}, {"sum": {"end": 3.00083, "seconds": 1.00035, "bytes": 18330464, "bits_per_second": 146592000.0, "start": 2.00048, "retransmits": 0, "omitted": false}, "streams": [{"end": 3.00083, "socket": 4, "seconds": 1.00035, "bytes": 18330464, "bits_per_second": 146592000.0, "start": 2.00048, "retransmits": 0, "omitted": false, "snd_cwnd": 768888}]}, {"sum": {"end": 4.00707, "seconds": 1.00624, "bytes": 19658376, "bits_per_second": 156292000.0, "start": 3.00083, "retransmits": 0, "omitted": false}, "streams": [{"end": 4.00707, "socket": 4, "seconds": 1.00624, "bytes": 19658376, "bits_per_second": 156292000.0, "start": 3.00083, "retransmits": 0, "omitted": false, "snd_cwnd": 812328}]}, {"sum": {"end": 5.00104, "seconds": 0.993972, "bytes": 15709072, "bits_per_second": 126435000.0, "start": 4.00707, "retransmits": 0, "omitted": false}, "streams": [{"end": 5.00104, "socket": 4, "seconds": 0.993972, "bytes": 15709072, "bits_per_second": 126435000.0, "start": 4.00707, "retransmits": 0, "omitted": false, "snd_cwnd": 849976}]}, {"sum": {"end": 6.00049, "seconds": 0.999443, "bytes": 19616288, "bits_per_second": 157018000.0, "start": 5.00104, "retransmits": 53, "omitted": false}, "streams": [{"end": 6.00049, "socket": 4, "seconds": 0.999443, "bytes": 19616288, "bits_per_second": 157018000.0, "start": 5.00104, "retransmits": 53, "omitted": false, "snd_cwnd": 641464}]}, {"sum": {"end": 7.00085, "seconds": 1.00036, "bytes": 22250480, "bits_per_second": 177939000.0, "start": 6.00049, "retransmits": 0, "omitted": false}, "streams": [{"end": 7.00085, "socket": 4, "seconds": 1.00036, "bytes": 22250480, "bits_per_second": 177939000.0, "start": 6.00049, "retransmits": 0, "omitted": false, "snd_cwnd": 706624}]}, {"sum": {"end": 8.00476, "seconds": 1.00391, "bytes": 22282240, "bits_per_second": 177564000.0, "start": 7.00085, "retransmits": 0, "omitted": false}, "streams": [{"end": 8.00476, "socket": 4, "seconds": 1.00391, "bytes": 22282240, "bits_per_second": 177564000.0, "start": 7.00085, "retransmits": 0, "omitted": false, "snd_cwnd": 761648}]}, {"sum": {"end": 9.0016, "seconds": 0.996847, "bytes": 19657680, "bits_per_second": 157759000.0, "start": 8.00476, "retransmits": 28, "omitted": false}, "streams": [{"end": 9.0016, "socket": 4, "seconds": 0.996847, "bytes": 19657680, "bits_per_second": 157759000.0, "start": 8.00476, "retransmits": 28, "omitted": false, "snd_cwnd": 570512}]}, {"sum": {"end": 10.0112, "seconds": 1.00955, "bytes": 20932520, "bits_per_second": 165876000.0, "start": 9.0016, "retransmits": 0, "omitted": false}, "streams": [{"end": 10.0112, "socket": 4, "seconds": 1.00955, "bytes": 20932520, "bits_per_second": 165876000.0, "start": 9.0016, "retransmits": 0, "omitted": false, "snd_cwnd": 615400}]}], "end": {"sum_received": {"seconds": 10.0112, "start": 0, "end": 10.0112, "bytes": 193366712, "bits_per_second": 154521000.0}, "streams": [{"sender": {"end": 10.0112, "socket": 4, "seconds": 10.0112, "bytes": 195443936, "bits_per_second": 156181000.0, "start": 0, "retransmits": 81}, "receiver": {"end": 10.0112, "socket": 4, "seconds": 10.0112, "bytes": 193366712, "bits_per_second": 154521000.0, "start": 0}}], "sum_sent": {"end": 10.0112, "seconds": 10.0112, "bytes": 195443936, "bits_per_second": 156181000.0, "start": 0, "retransmits": 81}, "cpu_utilization_percent": {"remote_user": 1.10295, "remote_system": 40.0403, "host_user": 2.41785, "remote_total": 41.1438, "host_system": 5.09548, "host_total": 7.51411}}}
\ No newline at end of file diff --git a/tests/unit/benchmark/scenarios/networking/iperf3_sample_output_udp.json b/tests/unit/benchmark/scenarios/networking/iperf3_sample_output_udp.json deleted file mode 100644 index 8173c8f64..000000000 --- a/tests/unit/benchmark/scenarios/networking/iperf3_sample_output_udp.json +++ /dev/null @@ -1 +0,0 @@ -{"start":{"connected":[{"socket":4, "local_host":"10.0.1.2", "local_port":46384, "remote_host":"172.16.9.195", "remote_port":5201}], "version":"iperf 3.0.7", "system_info":"Linux zeus 3.13.0-61-generic #100-Ubuntu SMP Wed Jul 29 11:21:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\n", "timestamp":{"time":"Tue, 29 Sep 2015 01:48:23 GMT", "timesecs":1443491303}, "connecting_to":{"host":"172.16.9.195", "port":5201}, "cookie":"zeus.1443491303.539703.3479129b58a5b", "test_start":{"protocol":"UDP", "num_streams":1, "blksize":8192, "omit":0, "duration":10, "bytes":0, "blocks":0, "reverse":0}}, "intervals":[{"streams":[{"socket":4, "start":0, "end":1.00022, "seconds":1.00022, "bytes":2252800, "bits_per_second":1.80184e+07, "packets":275, "omitted":false}], "sum":{"start":0, "end":1.00022, "seconds":1.00022, "bytes":2252800, "bits_per_second":1.80184e+07, "packets":275, "omitted":false}}, {"streams":[{"socket":4, "start":1.00022, "end":2.00022, "seconds":0.999993, "bytes":2498560, "bits_per_second":1.99886e+07, "packets":305, "omitted":false}], "sum":{"start":1.00022, "end":2.00022, "seconds":0.999993, "bytes":2498560, "bits_per_second":1.99886e+07, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":2.00022, "end":3.00022, "seconds":1, "bytes":2506752, "bits_per_second":2.0054e+07, "packets":306, "omitted":false}], "sum":{"start":2.00022, "end":3.00022, "seconds":1, "bytes":2506752, "bits_per_second":2.0054e+07, "packets":306, "omitted":false}}, {"streams":[{"socket":4, "start":3.00022, "end":4.00022, "seconds":1, "bytes":2498560, "bits_per_second":19988480, "packets":305, "omitted":false}], "sum":{"start":3.00022, "end":4.00022, "seconds":1, "bytes":2498560, "bits_per_second":19988480, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":4.00022, "end":5.0002, "seconds":0.999977, "bytes":2498560, "bits_per_second":1.99889e+07, "packets":305, "omitted":false}], "sum":{"start":4.00022, "end":5.0002, "seconds":0.999977, "bytes":2498560, "bits_per_second":1.99889e+07, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":5.0002, "end":6.00024, "seconds":1.00004, "bytes":2498560, "bits_per_second":1.99877e+07, "packets":305, "omitted":false}], "sum":{"start":5.0002, "end":6.00024, "seconds":1.00004, "bytes":2498560, "bits_per_second":1.99877e+07, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":6.00024, "end":7.00023, "seconds":0.999998, "bytes":2498560, "bits_per_second":1.99885e+07, "packets":305, "omitted":false}], "sum":{"start":6.00024, "end":7.00023, "seconds":0.999998, "bytes":2498560, "bits_per_second":1.99885e+07, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":7.00023, "end":8.00023, "seconds":0.999999, "bytes":2506752, "bits_per_second":2.0054e+07, "packets":306, "omitted":false}], "sum":{"start":7.00023, "end":8.00023, "seconds":0.999999, "bytes":2506752, "bits_per_second":2.0054e+07, "packets":306, "omitted":false}}, {"streams":[{"socket":4, "start":8.00023, "end":9.00018, "seconds":0.999945, "bytes":2498560, "bits_per_second":1.99896e+07, "packets":305, "omitted":false}], "sum":{"start":8.00023, "end":9.00018, "seconds":0.999945, "bytes":2498560, "bits_per_second":1.99896e+07, "packets":305, "omitted":false}}, {"streams":[{"socket":4, "start":9.00018, "end":10.0002, "seconds":1.00004, "bytes":2498560, "bits_per_second":1.99876e+07, "packets":305, "omitted":false}], "sum":{"start":9.00018, "end":10.0002, "seconds":1.00004, "bytes":2498560, "bits_per_second":1.99876e+07, "packets":305, "omitted":false}}], "end":{"streams":[{"udp":{"socket":4, "start":0, "end":10.0002, "seconds":10.0002, "bytes":24756224, "bits_per_second":1.98045e+07, "jitter_ms":0.0113579, "lost_packets":0, "packets":3022, "lost_percent":0}}], "sum":{"start":0, "end":10.0002, "seconds":10.0002, "bytes":24756224, "bits_per_second":1.98045e+07, "jitter_ms":0.0113579, "lost_packets":0, "packets":3022, "lost_percent":0}, "cpu_utilization_percent":{"host_total":0.647561, "host_user":0.146468, "host_system":0.501083, "remote_total":0.31751, "remote_user":0, "remote_system":0.31751}}} diff --git a/tests/unit/benchmark/scenarios/networking/ipv4_1flow_Packets_vpe.yaml b/tests/unit/benchmark/scenarios/networking/ipv4_1flow_Packets_vpe.yaml deleted file mode 100644 index f3046f463..000000000 --- a/tests/unit/benchmark/scenarios/networking/ipv4_1flow_Packets_vpe.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -flow: - srcip4_range: '152.16.0.20' - dstip4_range: '152.40.0.20' - count: 1 diff --git a/tests/unit/benchmark/scenarios/networking/ipv4_throughput_vpe.yaml b/tests/unit/benchmark/scenarios/networking/ipv4_throughput_vpe.yaml deleted file mode 100644 index 2123e4705..000000000 --- a/tests/unit/benchmark/scenarios/networking/ipv4_throughput_vpe.yaml +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# flow definition for ACL tests - 1K flows - ipv4 only -# -# the number of flows defines the widest range of parameters -# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255 -# and it should define only 16 flows -# -#there is assumption that packets generated will have a random sequences of following addresses pairs -# in the packets -# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512) -# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512) -# ... -# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512) -# -# not all combination should be filled -# Any other field with random range will be added to flow definition -# -# the example.yaml provides all possibilities for traffic generation -# -# the profile defines a public and private side to make limited traffic correlation -# between private and public side same way as it is made by IXIA solution. -# -schema: "isb:traffic_profile:0.1" - -# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator - -name: rfc2544 -description: Traffic profile to run RFC2544 latency -traffic_profile: - traffic_type : RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput - frame_rate : 100 # pc of linerate - # that specifies a range (e.g. ipv4 address, port) - - -private: - ipv4: - outer_l2: - framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" - 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" - 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" - 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" - 570B: "{{get(imix, 'imix.uplink.imix_570B', '0') }}" - 1400B: "{{get(imix, 'imix.uplink.imix_1400B', '0') }}" - 1518B: "{{get(imix, 'imix.uplink.imix_1500B', '0') }}" - - QinQ: - S-VLAN: - id: 128 - priority: 0 - cfi: 0 - C-VLAN: - id: 512 - priority: 0 - cfi: 0 - - outer_l3v4: - proto: "tcp" - srcip4: "{{get(flow, 'flow.srcip4_range', '192.168.0.0-192.168.255.255') }}" - dstip4: "{{get(flow, 'flow.dstip4_range', '192.16.0.0-192.16.0.31') }}" - ttl: 32 - dscp: 32 - - outer_l4: - srcport: "{{get(flow, 'flow.srcport_range', '0') }}" - dstport: "{{get(flow, 'flow.dstport_range', '0') }}" -public: - ipv4: - outer_l2: - framesize: - 64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}" - 128B: "{{ get(imix, 'imix.uplink.imix_128B', '0') }}" - 256B: "{{ get(imix, 'imix.uplink.imix_256B', '0') }}" - 373b: "{{ get(imix, 'imix.uplink.imix_373B', '0') }}" - 570B: "{{get(imix, 'imix.uplink.imix_570B', '0') }}" - 1400B: "{{get(imix, 'imix.uplink.imix_1400B', '0') }}" - 1518B: "{{get(imix, 'imix.uplink.imix_1500B', '0') }}" - - outer_l3v4: - proto: "tcp" - srcip4: "{{get(flow, 'flow.dstip4_range', '192.16.0.0-192.16.0.31') }}" - dstip4: "{{get(flow, 'flow.srcip4_range', '192.168.0.0-192.168.255.255') }}" - ttl: 32 - dscp: 32 - - outer_l4: - srcport: "{{get(flow, 'flow.dstport_range', '0') }}" - dstport: "{{get(flow, 'flow.srcport_range', '0') }}" diff --git a/tests/unit/benchmark/scenarios/networking/netperf_sample_output.json b/tests/unit/benchmark/scenarios/networking/netperf_sample_output.json deleted file mode 100755 index bba76cfa5..000000000 --- a/tests/unit/benchmark/scenarios/networking/netperf_sample_output.json +++ /dev/null @@ -1 +0,0 @@ -{"mean_latency":"9.49","troughput":"823.77","troughput_unit":"10^6bits/s"}
\ No newline at end of file diff --git a/tests/unit/benchmark/scenarios/networking/netutilization_sample_output1.txt b/tests/unit/benchmark/scenarios/networking/netutilization_sample_output1.txt deleted file mode 100644 index f90457cb3..000000000 --- a/tests/unit/benchmark/scenarios/networking/netutilization_sample_output1.txt +++ /dev/null @@ -1,9 +0,0 @@ -Linux 3.19.0-25-generic (huawei-pod4) 07/19/2016 _x86_64_ (1 CPU) - -02:01:50 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -02:01:51 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -02:01:51 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 - -Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 diff --git a/tests/unit/benchmark/scenarios/networking/netutilization_sample_output2.txt b/tests/unit/benchmark/scenarios/networking/netutilization_sample_output2.txt deleted file mode 100644 index 417613ec1..000000000 --- a/tests/unit/benchmark/scenarios/networking/netutilization_sample_output2.txt +++ /dev/null @@ -1,13 +0,0 @@ -Linux 3.19.0-25-generic (huawei-pod4) 07/19/2016 _x86_64_ (1 CPU) - -02:01:50 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -02:01:51 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -02:01:51 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 - -02:01:52 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -02:01:53 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -02:01:53 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 - -Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil -Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 diff --git a/tests/unit/benchmark/scenarios/networking/test_iperf3.py b/tests/unit/benchmark/scenarios/networking/test_iperf3.py deleted file mode 100644 index 4d3745230..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_iperf3.py +++ /dev/null @@ -1,202 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.iperf3.Iperf - -from __future__ import absolute_import - -import os -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.common import utils -from yardstick.benchmark.scenarios.networking import iperf3 - - -@mock.patch('yardstick.benchmark.scenarios.networking.iperf3.ssh') -class IperfTestCase(unittest.TestCase): - output_name_tcp = 'iperf3_sample_output.json' - output_name_udp = 'iperf3_sample_output_udp.json' - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': 'mykey.key' - }, - 'target': { - 'ip': '172.16.0.138', - 'user': 'root', - 'key_filename': 'mykey.key', - 'ipaddr': '172.16.0.138', - } - } - - def test_iperf_successful_setup(self, mock_ssh): - - p = iperf3.Iperf({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p.setup() - self.assertIsNotNone(p.target) - self.assertIsNotNone(p.host) - mock_ssh.SSH.from_node().execute.assert_called_with("iperf3 -s -D") - - def test_iperf_unsuccessful_setup(self, mock_ssh): - - p = iperf3.Iperf({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.setup) - - def test_iperf_successful_teardown(self, mock_ssh): - - p = iperf3.Iperf({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - p.target = mock_ssh.SSH.from_node() - - p.teardown() - self.assertTrue(mock_ssh.SSH.from_node().close.called) - mock_ssh.SSH.from_node().execute.assert_called_with("pkill iperf3") - - def test_iperf_successful_no_sla(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_tcp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - p.run(result) - self.assertEqual(result, expected_result) - - def test_iperf_successful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'bytes_per_second': 15000000} - } - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_tcp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - p.run(result) - self.assertEqual(result, expected_result) - - def test_iperf_unsuccessful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'bytes_per_second': 25000000} - } - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_tcp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_iperf_successful_sla_jitter(self, mock_ssh): - options = {"protocol": "udp", "bandwidth": "20m"} - args = { - 'options': options, - 'sla': {'jitter': 10} - } - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_udp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - p.run(result) - self.assertEqual(result, expected_result) - - def test_iperf_unsuccessful_sla_jitter(self, mock_ssh): - options = {"protocol": "udp", "bandwidth": "20m"} - args = { - 'options': options, - 'sla': {'jitter': 0.0001} - } - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_udp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_iperf_successful_tcp_protocal(self, mock_ssh): - options = {"protocol": "tcp", "nodelay": "yes"} - args = { - 'options': options, - 'sla': {'bytes_per_second': 15000000} - } - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.output_name_tcp) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = utils.flatten_dict_key(jsonutils.loads(sample_output)) - p.run(result) - self.assertEqual(result, expected_result) - - def test_iperf_unsuccessful_script_error(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = iperf3.Iperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def _read_sample_output(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, filename) - with open(output) as f: - sample_output = f.read() - return sample_output - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_netperf.py b/tests/unit/benchmark/scenarios/networking/test_netperf.py deleted file mode 100755 index d82a00931..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_netperf.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.netperf.Netperf - -from __future__ import absolute_import - -import os -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.networking import netperf - - -@mock.patch('yardstick.benchmark.scenarios.networking.netperf.ssh') -class NetperfTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': 'mykey.key' - }, - 'target': { - 'ip': '172.16.0.138', - 'user': 'cirros', - 'key_filename': 'mykey.key', - 'ipaddr': '172.16.0.138' - } - } - - def test_netperf_successful_setup(self, mock_ssh): - - p = netperf.Netperf({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p.setup() - self.assertIsNotNone(p.server) - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_netperf_successful_no_sla(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = netperf.Netperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = jsonutils.loads(sample_output) - p.run(result) - self.assertEqual(result, expected_result) - - def test_netperf_successful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'mean_latency': 100} - } - result = {} - - p = netperf.Netperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = jsonutils.loads(sample_output) - p.run(result) - self.assertEqual(result, expected_result) - - def test_netperf_unsuccessful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'mean_latency': 5} - } - result = {} - - p = netperf.Netperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_netperf_unsuccessful_script_error(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = netperf.Netperf(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def _read_sample_output(self): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, 'netperf_sample_output.json') - with open(output) as f: - sample_output = f.read() - return sample_output - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_netperf_node.py b/tests/unit/benchmark/scenarios/networking/test_netperf_node.py deleted file mode 100755 index 8be9bb94d..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_netperf_node.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.networking.netperf_node.NetperfNode - -from __future__ import absolute_import - -import os -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.networking import netperf_node - - -@mock.patch('yardstick.benchmark.scenarios.networking.netperf_node.ssh') -class NetperfNodeTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '192.168.10.10', - 'user': 'root', - 'password': 'root' - }, - 'target': { - 'ip': '192.168.10.11', - 'user': 'root', - 'password': 'root' - } - } - - def test_netperf_node_successful_setup(self, mock_ssh): - - p = netperf_node.NetperfNode({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p.setup() - self.assertIsNotNone(p.server) - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_netperf_node_successful_no_sla(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = netperf_node.NetperfNode(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = jsonutils.loads(sample_output) - p.run(result) - self.assertEqual(result, expected_result) - - def test_netperf_node_successful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'mean_latency': 100} - } - result = {} - - p = netperf_node.NetperfNode(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - expected_result = jsonutils.loads(sample_output) - p.run(result) - self.assertEqual(result, expected_result) - - def test_netperf_node_unsuccessful_sla(self, mock_ssh): - - options = {} - args = { - 'options': options, - 'sla': {'mean_latency': 5} - } - result = {} - - p = netperf_node.NetperfNode(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output() - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_netperf_node_unsuccessful_script_error(self, mock_ssh): - - options = {} - args = {'options': options} - result = {} - - p = netperf_node.NetperfNode(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - p.host = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def _read_sample_output(self): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, 'netperf_sample_output.json') - with open(output) as f: - sample_output = f.read() - return sample_output - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_netutilization.py b/tests/unit/benchmark/scenarios/networking/test_netutilization.py deleted file mode 100644 index 1227e056e..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_netutilization.py +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huawei Technologies Co.,Ltd and other. -# -# 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.networking.netutilization.NetUtilization - -from __future__ import absolute_import -import mock -import unittest -import os - -from yardstick.benchmark.scenarios.networking import netutilization - - -@mock.patch('yardstick.benchmark.scenarios.networking.netutilization.ssh') -class NetUtilizationTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - def test_setup_success(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - args = {'options': options} - - n = netutilization.NetUtilization(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - n.setup() - self.assertIsNotNone(n.client) - self.assertTrue(n.setup_done) - - def test_execute_command_success(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - args = {'options': options} - - n = netutilization.NetUtilization(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - n.setup() - - expected_result = 'abcdefg' - mock_ssh.SSH.from_node().execute.return_value = (0, expected_result, '') - result = n._execute_command("foo") - self.assertEqual(result, expected_result) - - def test_execute_command_failed(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - args = {'options': options} - - n = netutilization.NetUtilization(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - n.setup() - - mock_ssh.SSH.from_node().execute.return_value = (127, '', 'abcdefg') - self.assertRaises(RuntimeError, n._execute_command, - "failed") - - def test_get_network_utilization_success(self, mock_ssh): - options = { - "interval": 1, - "count": 1 - } - args = {'options': options} - - n = netutilization.NetUtilization(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - n.setup() - - mpstat_output = self._read_file("netutilization_sample_output1.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, mpstat_output, '') - result = n._get_network_utilization() - - expected_result = \ - {"network_utilization_maximun": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}, - "network_utilization_average": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}, - "network_utilization_minimum": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}} - - self.assertDictEqual(result, expected_result) - - def test_get_network_utilization_2_success(self, mock_ssh): - options = { - "interval": 1, - "count": 2 - } - args = {'options': options} - - n = netutilization.NetUtilization(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - n.setup() - - mpstat_output = self._read_file("netutilization_sample_output2.txt") - mock_ssh.SSH.from_node().execute.return_value = (0, mpstat_output, '') - result = n._get_network_utilization() - - expected_result = \ - {"network_utilization_maximun": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}, - "network_utilization_average": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}, - "network_utilization_minimum": { - "lo": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}, - "eth0": {"rxcmp/s": "0.00", - "%ifutil": "0.00", - "txcmp/s": "0.00", - "txkB/s": "0.00", - "rxkB/s": "0.00", - "rxpck/s": "0.00", - "txpck/s": "0.00", - "rxmcst/s": "0.00"}}} - - self.assertDictEqual(result, expected_result) - - def _read_file(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, filename) - with open(output) as f: - sample_output = f.read() - return sample_output diff --git a/tests/unit/benchmark/scenarios/networking/test_networkcapacity.py b/tests/unit/benchmark/scenarios/networking/test_networkcapacity.py deleted file mode 100644 index 3e7a3c5ee..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_networkcapacity.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.networking.networkcapacity.NetworkCapacity - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.networking import networkcapacity - -SAMPLE_OUTPUT = \ - '{"Number of connections":"308","Number of frames received": "166503"}' - - -@mock.patch('yardstick.benchmark.scenarios.networking.networkcapacity.ssh') -class NetworkCapacityTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'password': "root" - }, - } - - self.result = {} - - def test_capacity_successful_setup(self, mock_ssh): - c = networkcapacity.NetworkCapacity({}, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - self.assertIsNotNone(c.client) - self.assertTrue(c.setup_done) - - def test_capacity_successful(self, mock_ssh): - c = networkcapacity.NetworkCapacity({}, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, SAMPLE_OUTPUT, '') - c.run(self.result) - expected_result = jsonutils.loads(SAMPLE_OUTPUT) - self.assertEqual(self.result, expected_result) - - def test_capacity_unsuccessful_script_error(self, mock_ssh): - c = networkcapacity.NetworkCapacity({}, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, c.run, self.result) diff --git a/tests/unit/benchmark/scenarios/networking/test_nstat.py b/tests/unit/benchmark/scenarios/networking/test_nstat.py deleted file mode 100644 index 4b58e06c1..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_nstat.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.nstat.Nstat - -from __future__ import absolute_import - -import unittest - -import mock - -from yardstick.benchmark.scenarios.networking import nstat - - -@mock.patch('yardstick.benchmark.scenarios.networking.nstat.ssh') -class NstatTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - "host": { - "ip": "192.168.50.28", - "user": "root", - "key_filename": "mykey.key" - } - } - - def test_nstat_successful_setup(self, mock_ssh): - - n = nstat.Nstat({}, self.ctx) - n.setup() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(n.client) - self.assertTrue(n.setup_done) - - def test_nstat_successful_no_sla(self, mock_ssh): - - options = { - "duration": 0 - } - args = { - "options": options, - } - n = nstat.Nstat(args, self.ctx) - result = {} - - sample_output = '#kernel\nIpInReceives 1837 0.0\nIpInHdrErrors 0 0.0\nIpInAddrErrors 2 0.0\nIcmpInMsgs 319 0.0\nIcmpInErrors 0 0.0\nTcpInSegs 36 0.0\nTcpInErrs 0 0.0\nUdpInDatagrams 1318 0.0\nUdpInErrors 0 0.0\n' # pylint: disable=line-too-long - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - n.run(result) - expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318, - "Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2, - "IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2, - "TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319, - "IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0, - "Icmp_message_error_rate": 0.0, "UdpInErrors": 0} - self.assertEqual(result, expected_result) - - def test_nstat_successful_sla(self, mock_ssh): - - options = { - "duration": 0 - } - sla = { - "IP_datagram_error_rate": 0.1 - } - args = { - "options": options, - "sla": sla - } - n = nstat.Nstat(args, self.ctx) - result = {} - - sample_output = '#kernel\nIpInReceives 1837 0.0\nIpInHdrErrors 0 0.0\nIpInAddrErrors 2 0.0\nIcmpInMsgs 319 0.0\nIcmpInErrors 0 0.0\nTcpInSegs 36 0.0\nTcpInErrs 0 0.0\nUdpInDatagrams 1318 0.0\nUdpInErrors 0 0.0\n' # pylint: disable=line-too-long - - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - n.run(result) - expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318, - "Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2, - "IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2, - "TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319, - "IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0, - "Icmp_message_error_rate": 0.0, "UdpInErrors": 0} - self.assertEqual(result, expected_result) - - def test_nstat_unsuccessful_cmd_error(self, mock_ssh): - - options = { - "duration": 0 - } - sla = { - "IP_datagram_error_rate": 0.1 - } - args = { - "options": options, - "sla": sla - } - n = nstat.Nstat(args, self.ctx) - result = {} - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, n.run, result) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_ping.py b/tests/unit/benchmark/scenarios/networking/test_ping.py deleted file mode 100644 index 06353249a..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_ping.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.ping.Ping - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.networking import ping - - -class PingTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key" - }, - "target": { - "ipaddr": "10.229.17.105", - } - } - - @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh') - def test_ping_successful_no_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 200}, - 'target': 'ares.demo' - } - result = {} - - p = ping.Ping(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, '100', '') - p.run(result) - self.assertEqual(result, {'rtt.ares': 100.0}) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh') - def test_ping_successful_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 200}, - 'sla': {'max_rtt': 150}, - 'target': 'ares.demo' - } - result = {} - - p = ping.Ping(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, '100', '') - p.run(result) - self.assertEqual(result, {'rtt.ares': 100.0}) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh') - def test_ping_unsuccessful_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 200}, - 'sla': {'max_rtt': 50}, - 'target': 'ares.demo' - } - result = {} - - p = ping.Ping(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, '100', '') - self.assertRaises(AssertionError, p.run, result) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping.ssh') - def test_ping_unsuccessful_script_error(self, mock_ssh): - - args = { - 'options': {'packetsize': 200}, - 'sla': {'max_rtt': 50}, - 'target': 'ares.demo' - } - result = {} - - p = ping.Ping(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_ping6.py b/tests/unit/benchmark/scenarios/networking/test_ping6.py deleted file mode 100644 index d2be6f576..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_ping6.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.ping.Ping - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.networking import ping6 - - -class PingTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'nodes': { - 'host1': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'role': "Controller", - 'key_filename': "mykey.key", - 'password': "root" - }, - 'host2': { - "ip": "172.16.0.138", - "key_filename": "/root/.ssh/id_rsa", - "role": "Compute", - "name": "node3.IPV6", - "user": "root" - }, - } - } - - def test_get_controller_node(self): - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - 'sla': {'max_rtt': 50} - } - p = ping6.Ping6(args, self.ctx) - controller_node = p._get_controller_node(['host1', 'host2']) - self.assertEqual(controller_node, 'host1') - - @mock.patch('yardstick.benchmark.scenarios.networking.ping6.ssh') - def test_ping_successful_setup(self, mock_ssh): - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - 'sla': {'max_rtt': 50} - } - p = ping6.Ping6(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '0', '') - p.setup() - - self.assertTrue(p.setup_done) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping6.ssh') - def test_ping_successful_no_sla(self, mock_ssh): - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - - } - result = {} - - p = ping6.Ping6(args, self.ctx) - p.client = mock_ssh.SSH.from_node() - mock_ssh.SSH.from_node().execute.side_effect = [(0, 'host1', ''), (0, 100, '')] - p.run(result) - self.assertEqual(result, {'rtt': 100.0}) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping6.ssh') - def test_ping_successful_sla(self, mock_ssh): - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - 'sla': {'max_rtt': 150} - } - result = {} - - p = ping6.Ping6(args, self.ctx) - p.client = mock_ssh.SSH.from_node() - mock_ssh.SSH.from_node().execute.side_effect = [(0, 'host1', ''), (0, 100, '')] - p.run(result) - self.assertEqual(result, {'rtt': 100.0}) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping6.ssh') - def test_ping_unsuccessful_sla(self, mock_ssh): - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - 'sla': {'max_rtt': 50} - } - result = {} - - p = ping6.Ping6(args, self.ctx) - p.client = mock_ssh.SSH.from_node() - mock_ssh.SSH.from_node().execute.side_effect = [(0, 'host1', ''), (0, 100, '')] - self.assertRaises(AssertionError, p.run, result) - - @mock.patch('yardstick.benchmark.scenarios.networking.ping6.ssh') - def test_ping_unsuccessful_script_error(self, mock_ssh): - - args = { - 'options': {'host': 'host1', 'packetsize': 200, 'ping_count': 5}, - 'sla': {'max_rtt': 150} - } - result = {} - - p = ping6.Ping6(args, self.ctx) - p.client = mock_ssh.SSH.from_node() - mock_ssh.SSH.from_node().execute.side_effect = [ - (0, 'host1', ''), (1, '', 'FOOBAR')] - self.assertRaises(RuntimeError, p.run, result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_pktgen.py b/tests/unit/benchmark/scenarios/networking/test_pktgen.py deleted file mode 100644 index 005b53177..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_pktgen.py +++ /dev/null @@ -1,760 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.pktgen.Pktgen - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.networking import pktgen - - -@mock.patch('yardstick.benchmark.scenarios.networking.pktgen.ssh') -class PktgenTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': 'mykey.key' - }, - 'target': { - 'ip': '172.16.0.138', - 'user': 'root', - 'key_filename': 'mykey.key', - 'ipaddr': '172.16.0.138' - } - } - - def test_pktgen_successful_setup(self, mock_ssh): - - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.setup() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(p.server) - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_pktgen_successful_iptables_setup(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.number_of_ports = args['options']['number_of_ports'] - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p._iptables_setup() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "sudo iptables -F; " - "sudo iptables -A INPUT -p udp --dport 1000:%s -j DROP" - % 1010, timeout=60) - - def test_pktgen_unsuccessful_iptables_setup(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.number_of_ports = args['options']['number_of_ports'] - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p._iptables_setup) - - def test_pktgen_successful_iptables_get_result(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.number_of_ports = args['options']['number_of_ports'] - - mock_ssh.SSH.from_node().execute.return_value = (0, '150000', '') - p._iptables_get_result() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "sudo iptables -L INPUT -vnx |" - "awk '/dpts:1000:%s/ {{printf \"%%s\", $1}}'" - % 1010) - - def test_pktgen_unsuccessful_iptables_get_result(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.number_of_ports = args['options']['number_of_ports'] - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p._iptables_get_result) - - def test_pktgen_successful_no_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "packetsize": 60, "flows": 110, "ppm": 3179}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_successful_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 10000} - } - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "packetsize": 60, "flows": 110, "ppm": 3179}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_unsuccessful_sla(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 1000} - } - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "packetsize": 60, "flows": 110}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_pktgen_unsuccessful_script_error(self, mock_ssh): - - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 1000} - } - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def test_pktgen_get_vnic_driver_name(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, 'ixgbevf', '') - - vnic_driver_name = p._get_vnic_driver_name() - self.assertEqual(vnic_driver_name, 'ixgbevf') - - def test_pktgen_unsuccessful_get_vnic_driver_name(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._get_vnic_driver_name) - - def test_pktgen_get_sriov_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '2', '') - - p.queue_number = p._get_sriov_queue_number() - self.assertEqual(p.queue_number, 2) - - def test_pktgen_unsuccessful_get_sriov_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._get_sriov_queue_number) - - def test_pktgen_get_available_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '4', '') - - p._get_available_queue_number() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "sudo ethtool -l eth0 | grep Combined | head -1 |" - "awk '{printf $2}'") - - def test_pktgen_unsuccessful_get_available_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._get_available_queue_number) - - def test_pktgen_get_usable_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '1', '') - - p._get_usable_queue_number() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "sudo ethtool -l eth0 | grep Combined | tail -1 |" - "awk '{printf $2}'") - - def test_pktgen_unsuccessful_get_usable_queue_number(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._get_usable_queue_number) - - def test_pktgen_enable_ovs_multiqueue(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '4', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = 1 - p._get_usable_queue_number = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = 4 - p._get_available_queue_number = mock_result2 - - p.queue_number = p._enable_ovs_multiqueue() - self.assertEqual(p.queue_number, 4) - - def test_pktgen_enable_ovs_multiqueue_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '1', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = 1 - p._get_usable_queue_number = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = 1 - p._get_available_queue_number = mock_result2 - - p.queue_number = p._enable_ovs_multiqueue() - self.assertEqual(p.queue_number, 1) - - def test_pktgen_unsuccessful_enable_ovs_multiqueue(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = 1 - p._get_usable_queue_number = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = 4 - p._get_available_queue_number = mock_result2 - - self.assertRaises(RuntimeError, p._enable_ovs_multiqueue) - - def test_pktgen_setup_irqmapping_ovs(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '10', '') - - p._setup_irqmapping_ovs(4) - - mock_ssh.SSH.from_node().execute.assert_called_with( - "echo 8 | sudo tee /proc/irq/10/smp_affinity") - - def test_pktgen_setup_irqmapping_ovs_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '10', '') - - p._setup_irqmapping_ovs(1) - - mock_ssh.SSH.from_node().execute.assert_called_with( - "echo 1 | sudo tee /proc/irq/10/smp_affinity") - - def test_pktgen_unsuccessful_setup_irqmapping_ovs(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._setup_irqmapping_ovs, 4) - - def test_pktgen_unsuccessful_setup_irqmapping_ovs_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._setup_irqmapping_ovs, 1) - - def test_pktgen_setup_irqmapping_sriov(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '10', '') - - p._setup_irqmapping_sriov(2) - - mock_ssh.SSH.from_node().execute.assert_called_with( - "echo 2 | sudo tee /proc/irq/10/smp_affinity") - - def test_pktgen_setup_irqmapping_sriov_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '10', '') - - p._setup_irqmapping_sriov(1) - - mock_ssh.SSH.from_node().execute.assert_called_with( - "echo 1 | sudo tee /proc/irq/10/smp_affinity") - - def test_pktgen_unsuccessful_setup_irqmapping_sriov(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._setup_irqmapping_sriov, 2) - - def test_pktgen_unsuccessful_setup_irqmapping_sriov_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._setup_irqmapping_sriov, 1) - - def test_pktgen_is_irqbalance_disabled(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p._is_irqbalance_disabled() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "grep ENABLED /etc/default/irqbalance") - - def test_pktgen_unsuccessful_is_irqbalance_disabled(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._is_irqbalance_disabled) - - def test_pktgen_disable_irqbalance(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - p._disable_irqbalance() - - mock_ssh.SSH.from_node().execute.assert_called_with( - "sudo service irqbalance disable") - - def test_pktgen_unsuccessful_disable_irqbalance(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - self.assertRaises(RuntimeError, p._disable_irqbalance) - - def test_pktgen_multiqueue_setup_ovs(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'multiqueue': True}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '4', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = False - p._is_irqbalance_disabled = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = "virtio_net" - p._get_vnic_driver_name = mock_result2 - - mock_result3 = mock.Mock() - mock_result3.return_value = 1 - p._get_usable_queue_number = mock_result3 - - mock_result4 = mock.Mock() - mock_result4.return_value = 4 - p._get_available_queue_number = mock_result4 - - p.multiqueue_setup() - - self.assertEqual(p.queue_number, 4) - - def test_pktgen_multiqueue_setup_ovs_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'multiqueue': True}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '1', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = False - p._is_irqbalance_disabled = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = "virtio_net" - p._get_vnic_driver_name = mock_result2 - - mock_result3 = mock.Mock() - mock_result3.return_value = 1 - p._get_usable_queue_number = mock_result3 - - mock_result4 = mock.Mock() - mock_result4.return_value = 1 - p._get_available_queue_number = mock_result4 - - p.multiqueue_setup() - - self.assertEqual(p.queue_number, 1) - - def test_pktgen_multiqueue_setup_sriov(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'multiqueue': True}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '2', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = False - p._is_irqbalance_disabled = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = "ixgbevf" - p._get_vnic_driver_name = mock_result2 - - p.multiqueue_setup() - - self.assertEqual(p.queue_number, 2) - - def test_pktgen_multiqueue_setup_sriov_1q(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'multiqueue': True}, - } - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (0, '1', '') - - mock_result1 = mock.Mock() - mock_result1.return_value = False - p._is_irqbalance_disabled = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = "ixgbevf" - p._get_vnic_driver_name = mock_result2 - - p.multiqueue_setup() - - self.assertEqual(p.queue_number, 1) - - def test_pktgen_run_with_setup_done(self, mock_ssh): - args = { - 'options': { - 'packetsize': 60, - 'number_of_ports': 10, - 'duration': 20, - 'multiqueue': True}, - 'sla': { - 'max_ppm': 1}} - result = {} - p = pktgen.Pktgen(args, self.ctx) - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - p.setup_done = True - p.multiqueue_setup_done = True - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149300, "flows": 110, "ppm": 0}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_run_with_ovs_multiqueque(self, mock_ssh): - args = { - 'options': { - 'packetsize': 60, - 'number_of_ports': 10, - 'duration': 20, - 'multiqueue': True}, - 'sla': { - 'max_ppm': 1}} - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_result = mock.Mock() - mock_result.return_value = "virtio_net" - p._get_vnic_driver_name = mock_result - - mock_result1 = mock.Mock() - mock_result1.return_value = 1 - p._get_usable_queue_number = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = 4 - p._get_available_queue_number = mock_result2 - - mock_result3 = mock.Mock() - mock_result3.return_value = 4 - p._enable_ovs_multiqueue = mock_result3 - - mock_result4 = mock.Mock() - p._setup_irqmapping_ovs = mock_result4 - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149300, "flows": 110, "ppm": 0}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_run_with_sriov_multiqueque(self, mock_ssh): - args = { - 'options': { - 'packetsize': 60, - 'number_of_ports': 10, - 'duration': 20, - 'multiqueue': True}, - 'sla': { - 'max_ppm': 1}} - result = {} - - p = pktgen.Pktgen(args, self.ctx) - - p.server = mock_ssh.SSH.from_node() - p.client = mock_ssh.SSH.from_node() - - mock_result1 = mock.Mock() - mock_result1.return_value = "ixgbevf" - p._get_vnic_driver_name = mock_result1 - - mock_result2 = mock.Mock() - mock_result2.return_value = 2 - p._get_sriov_queue_number = mock_result2 - - mock_result3 = mock.Mock() - p._setup_irqmapping_sriov = mock_result3 - - mock_iptables_result = mock.Mock() - mock_iptables_result.return_value = 149300 - p._iptables_get_result = mock_iptables_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149300, "flows": 110, "ppm": 0}' - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk.py b/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk.py deleted file mode 100644 index c9eec4b94..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk.py +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 ZTE 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.pktgen.Pktgen - -from __future__ import absolute_import -import unittest - -import mock - -import yardstick.common.utils as utils -from yardstick.benchmark.scenarios.networking import pktgen_dpdk - - -class PktgenDPDKLatencyTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': 'mykey.key' - }, - 'target': { - 'ip': '172.16.0.138', - 'user': 'root', - 'key_filename': 'mykey.key', - 'ipaddr': '172.16.0.138' - } - } - - self._mock_ssh = mock.patch( - 'yardstick.benchmark.scenarios.networking.pktgen_dpdk.ssh') - self.mock_ssh = self._mock_ssh.start() - self._mock_time = mock.patch( - 'yardstick.benchmark.scenarios.networking.pktgen_dpdk.time') - self.mock_time = self._mock_time.start() - - self.addCleanup(self._stop_mock) - - def _stop_mock(self): - self._mock_ssh.stop() - self._mock_time.stop() - - def test_pktgen_dpdk_successful_setup(self): - - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - p.setup() - - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(p.server) - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_pktgen_dpdk_successful_get_port_ip(self): - - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - p.server = self.mock_ssh.SSH.from_node() - - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - utils.get_port_ip(p.server, "eth1") - - self.mock_ssh.SSH.from_node().execute.assert_called_with( - "ifconfig eth1 |grep 'inet addr' |awk '{print $2}' |cut -d ':' -f2 ") - - def test_pktgen_dpdk_unsuccessful_get_port_ip(self): - - args = { - 'options': {'packetsize': 60}, - } - - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - p.server = self.mock_ssh.SSH.from_node() - - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, utils.get_port_ip, p.server, "eth1") - - def test_pktgen_dpdk_successful_get_port_mac(self): - - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - p.server = self.mock_ssh.SSH.from_node() - - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - utils.get_port_mac(p.server, "eth1") - - self.mock_ssh.SSH.from_node().execute.assert_called_with( - "ifconfig |grep HWaddr |grep eth1 |awk '{print $5}' ") - - def test_pktgen_dpdk_unsuccessful_get_port_mac(self): - - args = { - 'options': {'packetsize': 60}, - } - - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - p.server = self.mock_ssh.SSH.from_node() - - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, utils.get_port_mac, p.server, "eth1") - - def test_pktgen_dpdk_successful_no_sla(self): - - args = { - 'options': {'packetsize': 60}, - } - - result = {} - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - - sample_output = '100\n110\n112\n130\n149\n150\n90\n150\n200\n162\n' - self.mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - # with python 3 we get float, might be due python division changes - # AssertionError: {'avg_latency': 132.33333333333334} != { - # 'avg_latency': 132} - delta = result['avg_latency'] - 132 - self.assertLessEqual(delta, 1) - - def test_pktgen_dpdk_successful_sla(self): - - args = { - 'options': {'packetsize': 60}, - 'sla': {'max_latency': 100} - } - result = {} - - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - - sample_output = '100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n' - self.mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - self.assertEqual(result, {"avg_latency": 100}) - - def test_pktgen_dpdk_unsuccessful_sla(self): - - args = { - 'options': {'packetsize': 60}, - 'sla': {'max_latency': 100} - } - result = {} - - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - - p.server = self.mock_ssh.SSH.from_node() - p.client = self.mock_ssh.SSH.from_node() - - sample_output = '100\n110\n112\n130\n149\n150\n90\n150\n200\n162\n' - self.mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_pktgen_dpdk_unsuccessful_script_error(self): - - args = { - 'options': {'packetsize': 60}, - 'sla': {'max_latency': 100} - } - result = {} - - p = pktgen_dpdk.PktgenDPDKLatency(args, self.ctx) - - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk_throughput.py b/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk_throughput.py deleted file mode 100644 index c2e35af75..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_pktgen_dpdk_throughput.py +++ /dev/null @@ -1,198 +0,0 @@ -############################################################################## -# Copyright (c) 2017 Nokia 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 -############################################################################## -#!/usr/bin/env python - -# Unittest for yardstick.benchmark.scenarios.networking.pktgen.PktgenDPDK - -from __future__ import absolute_import -import unittest - -from oslo_serialization import jsonutils -import mock - -from yardstick.benchmark.scenarios.networking import pktgen_dpdk_throughput - - -@mock.patch('yardstick.benchmark.scenarios.networking.pktgen_dpdk_throughput.ssh') -class PktgenDPDKTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': 'mykey.key' - }, - 'target': { - 'ip': '172.16.0.138', - 'user': 'root', - 'key_filename': 'mykey.key', - } - } - - self._mock_time = mock.patch( - 'yardstick.benchmark.scenarios.networking.pktgen_dpdk_throughput.time') - self.mock_time = self._mock_time.start() - - self.addCleanup(self._cleanup) - - def _cleanup(self): - self._mock_time.stop() - - def test_pktgen_dpdk_throughput_successful_setup(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - p.setup() - - mock_ssh.SSH().execute.return_value = (0, '', '') - self.assertIsNotNone(p.server) - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_pktgen_dpdk_throughput_successful_no_sla(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - } - - result = {} - - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_dpdk_result = mock.Mock() - mock_dpdk_result.return_value = 149300 - p._dpdk_get_result = mock_dpdk_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "flows": 110}' - mock_ssh.SSH().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_dpdk_throughput_successful_sla(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 10000} - } - result = {} - - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_dpdk_result = mock.Mock() - mock_dpdk_result.return_value = 149300 - p._dpdk_get_result = mock_dpdk_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "flows": 110}' - mock_ssh.SSH().execute.return_value = (0, sample_output, '') - - p.run(result) - expected_result = jsonutils.loads(sample_output) - expected_result["packets_received"] = 149300 - expected_result["packetsize"] = 60 - self.assertEqual(result, expected_result) - - def test_pktgen_dpdk_throughput_unsuccessful_sla(self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 1000} - } - result = {} - - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_dpdk_result = mock.Mock() - mock_dpdk_result.return_value = 149300 - p._dpdk_get_result = mock_dpdk_result - - sample_output = '{"packets_per_second": 9753, "errors": 0, \ - "packets_sent": 149776, "flows": 110}' - mock_ssh.SSH().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_pktgen_dpdk_throughput_unsuccessful_script_error( - self, mock_ssh): - args = { - 'options': {'packetsize': 60, 'number_of_ports': 10}, - 'sla': {'max_ppm': 1000} - } - result = {} - - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_ssh.SSH().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def test_pktgen_dpdk_throughput_is_dpdk_setup(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - p.server = mock_ssh.SSH() - - mock_ssh.SSH().execute.return_value = (0, '', '') - - p._is_dpdk_setup("server") - - mock_ssh.SSH().execute.assert_called_with( - "ip a | grep eth1 2>/dev/null") - - def test_pktgen_dpdk_throughput_dpdk_setup(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_ssh.SSH().execute.return_value = (0, '', '') - - p.dpdk_setup() - - self.assertTrue(p.dpdk_setup_done) - - def test_pktgen_dpdk_throughput_dpdk_get_result(self, mock_ssh): - args = { - 'options': {'packetsize': 60}, - } - p = pktgen_dpdk_throughput.PktgenDPDK(args, self.ctx) - p.server = mock_ssh.SSH() - p.client = mock_ssh.SSH() - - mock_ssh.SSH().execute.return_value = (0, '10000', '') - - p._dpdk_get_result() - - mock_ssh.SSH().execute.assert_called_with( - "sudo /dpdk/destdir/bin/dpdk-procinfo -- --stats-reset > /dev/null 2>&1") - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_sfc.py b/tests/unit/benchmark/scenarios/networking/test_sfc.py deleted file mode 100644 index 78c0352dd..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_sfc.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.networking.sfc - -from __future__ import absolute_import -import mock -import unittest - -from yardstick.benchmark.scenarios.networking import sfc - - -class SfcTestCase(unittest.TestCase): - - def setUp(self): - scenario_cfg = {} - context_cfg = { - # Used in Sfc.setup() - 'target': { - 'user': 'root', - 'password': 'opnfv', - 'ip': '127.0.0.1', - }, - - # Used in Sfc.run() - 'host': { - 'user': 'root', - 'password': 'opnfv', - 'ip': None, - } - } - - self.sfc = sfc.Sfc(scenario_cfg=scenario_cfg, context_cfg=context_cfg) - - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.ssh') - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.sfc_openstack') - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.subprocess') - def test_run_for_success(self, mock_subprocess, mock_openstack, mock_ssh): - # Mock a successfull SSH in Sfc.setup() and Sfc.run() - mock_ssh.SSH.from_node().execute.return_value = (0, '100', '') - mock_openstack.get_an_IP.return_value = "127.0.0.1" - mock_subprocess.call.return_value = 'mocked!' - - result = {} - self.sfc.setup() - self.sfc.run(result) - self.sfc.teardown() - - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.ssh') - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.sfc_openstack') - @mock.patch('yardstick.benchmark.scenarios.networking.sfc.subprocess') - def test2_run_for_success(self, mock_subprocess, mock_openstack, mock_ssh): - # Mock a successfull SSH in Sfc.setup() and Sfc.run() - mock_ssh.SSH.from_node().execute.return_value = ( - 0, 'vxlan_tool.py', 'succeeded timed out') - mock_openstack.get_an_IP.return_value = "127.0.0.1" - mock_subprocess.call.return_value = 'mocked!' - - result = {} - self.sfc.setup() - self.sfc.run(result) - self.sfc.teardown() - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py b/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py deleted file mode 100644 index 016608a21..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_vnf_generic.py +++ /dev/null @@ -1,787 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# Unittest for yardstick.benchmark.scenarios.networking.test_vnf_generic - -from __future__ import absolute_import - -import os -import errno -import unittest -import mock - -from copy import deepcopy - -from tests.unit import STL_MOCKS -from yardstick.benchmark.scenarios.networking.vnf_generic import \ - SshManager, NetworkServiceTestCase, IncorrectConfig, \ - open_relative_file -from yardstick.network_services.collector.subscriber import Collector -from yardstick.network_services.vnf_generic.vnf.base import \ - GenericTrafficGen, GenericVNF - - -COMPLETE_TREX_VNFD = { - 'vnfd:vnfd-catalog': { - 'vnfd': [ - { - 'benchmark': { - 'kpi': [ - 'rx_throughput_fps', - 'tx_throughput_fps', - 'tx_throughput_mbps', - 'rx_throughput_mbps', - 'tx_throughput_pc_linerate', - 'rx_throughput_pc_linerate', - 'min_latency', - 'max_latency', - 'avg_latency', - ], - }, - 'connection-point': [ - { - 'name': 'xe0', - 'type': 'VPORT', - }, - { - 'name': 'xe1', - 'type': 'VPORT', - }, - ], - 'description': 'TRex stateless traffic generator for RFC2544', - 'id': 'TrexTrafficGen', - 'mgmt-interface': { - 'ip': '1.1.1.1', - 'password': 'berta', - 'user': 'berta', - 'vdu-id': 'trexgen-baremetal', - }, - 'name': 'trexgen', - 'short-name': 'trexgen', - 'class-name': 'TrexTrafficGen', - 'vdu': [ - { - 'description': 'TRex stateless traffic generator for RFC2544', - 'external-interface': [ - { - 'name': 'xe0', - 'virtual-interface': { - 'bandwidth': '10 Gbps', - 'dst_ip': '1.1.1.1', - 'dst_mac': '00:01:02:03:04:05', - 'local_ip': '1.1.1.2', - 'local_mac': '00:01:02:03:05:05', - 'type': 'PCI-PASSTHROUGH', - 'netmask': "255.255.255.0", - 'driver': 'i40', - 'vpci': '0000:00:10.2', - }, - 'vnfd-connection-point-ref': 'xe0', - }, - { - 'name': 'xe1', - 'virtual-interface': { - 'bandwidth': '10 Gbps', - 'dst_ip': '2.1.1.1', - 'dst_mac': '00:01:02:03:04:06', - 'local_ip': '2.1.1.2', - 'local_mac': '00:01:02:03:05:06', - 'type': 'PCI-PASSTHROUGH', - 'netmask': "255.255.255.0", - 'driver': 'i40', - 'vpci': '0000:00:10.1', - }, - 'vnfd-connection-point-ref': 'xe1', - }, - ], - 'id': 'trexgen-baremetal', - 'name': 'trexgen-baremetal', - }, - ], - }, - ], - }, -} - -IP_ADDR_SHOW = """ -28: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP \ -group default qlen 1000 - link/ether 90:e2:ba:a7:6a:c8 brd ff:ff:ff:ff:ff:ff - inet 1.1.1.1/8 brd 1.255.255.255 scope global eth1 - inet6 fe80::92e2:baff:fea7:6ac8/64 scope link - valid_lft forever preferred_lft forever -29: eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP \ -group default qlen 1000 - link/ether 90:e2:ba:a7:6a:c9 brd ff:ff:ff:ff:ff:ff - inet 2.1.1.1/8 brd 2.255.255.255 scope global eth5 - inet6 fe80::92e2:baff:fea7:6ac9/64 scope link tentative - valid_lft forever preferred_lft forever -""" - -SYS_CLASS_NET = """ -lrwxrwxrwx 1 root root 0 sie 10 14:16 eth1 -> \ -../../devices/pci0000:80/0000:80:02.2/0000:84:00.1/net/eth1 -lrwxrwxrwx 1 root root 0 sie 3 10:37 eth2 -> \ -../../devices/pci0000:00/0000:00:01.1/0000:84:00.2/net/eth5 -""" - -TRAFFIC_PROFILE = { - "schema": "isb:traffic_profile:0.1", - "name": "fixed", - "description": "Fixed traffic profile to run UDP traffic", - "traffic_profile": { - "traffic_type": "FixedTraffic", - "frame_rate": 100, # pps - "flow_number": 10, - "frame_size": 64, - }, -} - - -class TestNetworkServiceTestCase(unittest.TestCase): - - def setUp(self): - self.tg__1 = { - 'name': 'trafficgen_1.yardstick', - 'ip': '10.10.10.11', - 'role': 'TrafficGen', - 'user': 'root', - 'password': 'r00t', - 'interfaces': { - 'xe0': { - 'netmask': '255.255.255.0', - 'local_ip': '152.16.100.20', - 'local_mac': '00:00:00:00:00:01', - 'driver': 'i40e', - 'vpci': '0000:07:00.0', - 'dpdk_port_num': 0, - }, - 'xe1': { - 'netmask': '255.255.255.0', - 'local_ip': '152.16.40.20', - 'local_mac': '00:00:00:00:00:02', - 'driver': 'i40e', - 'vpci': '0000:07:00.1', - 'dpdk_port_num': 1, - }, - }, - } - - self.vnf__1 = { - 'name': 'vnf.yardstick', - 'ip': '10.10.10.12', - 'host': '10.223.197.164', - 'role': 'vnf', - 'user': 'root', - 'password': 'r00t', - 'interfaces': { - 'xe0': { - 'netmask': '255.255.255.0', - 'local_ip': '152.16.100.19', - 'local_mac': '00:00:00:00:00:03', - 'driver': 'i40e', - 'vpci': '0000:07:00.0', - 'dpdk_port_num': 0, - }, - 'xe1': { - 'netmask': '255.255.255.0', - 'local_ip': '152.16.40.19', - 'local_mac': '00:00:00:00:00:04', - 'driver': 'i40e', - 'vpci': '0000:07:00.1', - 'dpdk_port_num': 1, - }, - }, - 'routing_table': [ - { - 'netmask': '255.255.255.0', - 'gateway': '152.16.100.20', - 'network': '152.16.100.20', - 'if': 'xe0', - }, - { - 'netmask': '255.255.255.0', - 'gateway': '152.16.40.20', - 'network': '152.16.40.20', - 'if': 'xe1', - }, - ], - 'nd_route_tbl': [ - { - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:6414', - 'network': '0064:ff9b:0:0:0:0:9810:6414', - 'if': 'xe0', - }, - { - 'netmask': '112', - 'gateway': '0064:ff9b:0:0:0:0:9810:2814', - 'network': '0064:ff9b:0:0:0:0:9810:2814', - 'if': 'xe1', - }, - ], - } - - self.context_cfg = { - 'nodes': { - 'tg__1': self.tg__1, - 'vnf__1': self.vnf__1, - }, - 'networks': { - GenericVNF.UPLINK: { - 'vld_id': GenericVNF.UPLINK, - }, - GenericVNF.DOWNLINK: { - 'vld_id': GenericVNF.DOWNLINK, - }, - }, - } - - self.vld0 = { - 'vnfd-connection-point-ref': [ - { - 'vnfd-connection-point-ref': 'xe0', - 'member-vnf-index-ref': '1', - 'vnfd-id-ref': 'trexgen' - }, - { - 'vnfd-connection-point-ref': 'xe0', - 'member-vnf-index-ref': '2', - 'vnfd-id-ref': 'trexgen' - } - ], - 'type': 'ELAN', - 'id': GenericVNF.UPLINK, - 'name': 'tg__1 to vnf__1 link 1' - } - - self.vld1 = { - 'vnfd-connection-point-ref': [ - { - 'vnfd-connection-point-ref': 'xe1', - 'member-vnf-index-ref': '1', - 'vnfd-id-ref': 'trexgen' - }, - { - 'vnfd-connection-point-ref': 'xe1', - 'member-vnf-index-ref': '2', - 'vnfd-id-ref': 'trexgen' - } - ], - 'type': 'ELAN', - 'id': GenericVNF.DOWNLINK, - 'name': 'vnf__1 to tg__1 link 2' - } - - self.topology = { - 'id': 'trex-tg-topology', - 'short-name': 'trex-tg-topology', - 'name': 'trex-tg-topology', - 'description': 'trex-tg-topology', - 'constituent-vnfd': [ - { - 'member-vnf-index': '1', - 'VNF model': 'tg_trex_tpl.yaml', - 'vnfd-id-ref': 'tg__1', - }, - { - 'member-vnf-index': '2', - 'VNF model': 'tg_trex_tpl.yaml', - 'vnfd-id-ref': 'vnf__1', - }, - ], - 'vld': [self.vld0, self.vld1], - } - - self.scenario_cfg = { - 'task_path': "", - "topology": self._get_file_abspath("vpe_vnf_topology.yaml"), - 'task_id': 'a70bdf4a-8e67-47a3-9dc1-273c14506eb7', - 'tc': 'tc_ipv4_1Mflow_64B_packetsize', - 'traffic_profile': 'ipv4_throughput_vpe.yaml', - 'type': 'ISB', - 'tc_options': { - 'rfc2544': { - 'allowed_drop_rate': '0.8 - 1', - }, - }, - 'options': { - 'framesize': {'64B': 100} - }, - 'runner': { - 'object': 'NetworkServiceTestCase', - 'interval': 35, - 'output_filename': 'yardstick.out', - 'runner_id': 74476, - 'duration': 400, - 'type': 'Duration', - }, - 'traffic_options': { - 'flow': 'ipv4_1flow_Packets_vpe.yaml', - 'imix': 'imix_voice.yaml' - }, - 'nodes': { - 'tg__2': 'trafficgen_2.yardstick', - 'tg__1': 'trafficgen_1.yardstick', - 'vnf__1': 'vnf.yardstick', - }, - } - - self.s = NetworkServiceTestCase(self.scenario_cfg, self.context_cfg) - - def _get_file_abspath(self, filename): - curr_path = os.path.dirname(os.path.abspath(__file__)) - file_path = os.path.join(curr_path, filename) - return file_path - - def test_ssh_manager(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - for node, node_dict in self.context_cfg["nodes"].items(): - with SshManager(node_dict) as conn: - self.assertIsNotNone(conn) - - def test___init__(self): - assert self.topology - - def test__get_ip_flow_range_string(self): - self.scenario_cfg["traffic_options"]["flow"] = \ - self._get_file_abspath("ipv4_1flow_Packets_vpe.yaml") - result = '152.16.100.2-152.16.100.254' - self.assertEqual(result, self.s._get_ip_flow_range('152.16.100.2-152.16.100.254')) - - def test__get_ip_flow_range(self): - self.scenario_cfg["traffic_options"]["flow"] = \ - self._get_file_abspath("ipv4_1flow_Packets_vpe.yaml") - result = '152.16.100.2-152.16.100.254' - self.assertEqual(result, self.s._get_ip_flow_range({"tg__1": 'xe0'})) - - @mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.ipaddress') - def test__get_ip_flow_range_no_node_data(self, mock_ipaddress): - scenario_cfg = deepcopy(self.scenario_cfg) - scenario_cfg["traffic_options"]["flow"] = \ - self._get_file_abspath("ipv4_1flow_Packets_vpe.yaml") - - mock_ipaddress.ip_network.return_value = ipaddr = mock.Mock() - ipaddr.hosts.return_value = [] - - expected = '0.0.0.0' - result = self.s._get_ip_flow_range({"tg__2": 'xe0'}) - self.assertEqual(result, expected) - - def test__get_ip_flow_range_no_nodes(self): - expected = '0.0.0.0' - result = self.s._get_ip_flow_range({}) - self.assertEqual(result, expected) - - def test___get_traffic_flow(self): - self.scenario_cfg["traffic_options"]["flow"] = \ - self._get_file_abspath("ipv4_1flow_Packets_vpe.yaml") - self.scenario_cfg["options"] = {} - self.scenario_cfg['options'] = { - 'flow': { - 'src_ip': [ - { - 'tg__1': 'xe0', - }, - ], - 'dst_ip': [ - { - 'tg__1': 'xe1', - }, - ], - 'public_ip': ['1.1.1.1'], - }, - } - result = {'flow': {'dst_ip0': '152.16.40.2-152.16.40.254', - 'src_ip0': '152.16.100.2-152.16.100.254'}} - - self.assertEqual({'flow': {}}, self.s._get_traffic_flow()) - - def test___get_traffic_flow_error(self): - self.scenario_cfg["traffic_options"]["flow"] = \ - "ipv4_1flow_Packets_vpe.yaml1" - self.assertEqual({'flow': {}}, self.s._get_traffic_flow()) - - def test_get_vnf_imp(self): - vnfd = COMPLETE_TREX_VNFD['vnfd:vnfd-catalog']['vnfd'][0]['class-name'] - with mock.patch.dict("sys.modules", STL_MOCKS): - self.assertIsNotNone(self.s.get_vnf_impl(vnfd)) - - with self.assertRaises(IncorrectConfig) as raised: - self.s.get_vnf_impl('NonExistentClass') - - exc_str = str(raised.exception) - print(exc_str) - self.assertIn('No implementation', exc_str) - self.assertIn('found in', exc_str) - - def test_load_vnf_models_invalid(self): - self.context_cfg["nodes"]['tg__1']['VNF model'] = \ - self._get_file_abspath("tg_trex_tpl.yaml") - self.context_cfg["nodes"]['vnf__1']['VNF model'] = \ - self._get_file_abspath("tg_trex_tpl.yaml") - - vnf = mock.Mock(autospec=GenericVNF) - self.s.get_vnf_impl = mock.Mock(return_value=vnf) - - self.assertIsNotNone( - self.s.load_vnf_models(self.scenario_cfg, self.context_cfg)) - - def test_load_vnf_models_no_model(self): - vnf = mock.Mock(autospec=GenericVNF) - self.s.get_vnf_impl = mock.Mock(return_value=vnf) - - self.assertIsNotNone( - self.s.load_vnf_models(self.scenario_cfg, self.context_cfg)) - - def test_map_topology_to_infrastructure(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - self.s.map_topology_to_infrastructure() - - nodes = self.context_cfg["nodes"] - self.assertEqual("../../vnf_descriptors/tg_rfc2544_tpl.yaml", nodes['tg__1']['VNF model']) - self.assertEqual("../../vnf_descriptors/vpe_vnf.yaml", nodes['vnf__1']['VNF model']) - - def test_map_topology_to_infrastructure_insufficient_nodes(self): - del self.context_cfg['nodes']['vnf__1'] - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(1, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - - with self.assertRaises(IncorrectConfig): - self.s.map_topology_to_infrastructure() - - def test_map_topology_to_infrastructure_config_invalid(self): - cfg = dict(self.context_cfg) - del cfg['nodes']['vnf__1']['interfaces']['xe0']['local_mac'] - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - - with self.assertRaises(IncorrectConfig): - self.s.map_topology_to_infrastructure() - - def test__resolve_topology_invalid_config(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - - # purge an important key from the data structure - for interface in self.tg__1['interfaces'].values(): - del interface['local_mac'] - - with mock.patch( - "yardstick.benchmark.scenarios.networking.vnf_generic.LOG") as mock_log: - with self.assertRaises(IncorrectConfig) as raised: - self.s._resolve_topology() - - self.assertIn('not found', str(raised.exception)) - - # restore local_mac - for index, interface in enumerate(self.tg__1['interfaces'].values()): - interface['local_mac'] = '00:00:00:00:00:{:2x}'.format(index) - - # make a connection point ref with 3 points - self.s.topology["vld"][0]['vnfd-connection-point-ref'].append( - self.s.topology["vld"][0]['vnfd-connection-point-ref'][0]) - - with mock.patch( - "yardstick.benchmark.scenarios.networking.vnf_generic.LOG") as mock_log: - with self.assertRaises(IncorrectConfig) as raised: - self.s._resolve_topology() - - self.assertIn('wrong endpoint count', str(raised.exception)) - - # make a connection point ref with 1 point - self.s.topology["vld"][0]['vnfd-connection-point-ref'] = \ - self.s.topology["vld"][0]['vnfd-connection-point-ref'][:1] - - with mock.patch( - "yardstick.benchmark.scenarios.networking.vnf_generic.LOG") as mock_log: - with self.assertRaises(IncorrectConfig) as raised: - self.s._resolve_topology() - - self.assertIn('wrong endpoint count', str(raised.exception)) - - def test_run(self): - tgen = mock.Mock(autospec=GenericTrafficGen) - tgen.traffic_finished = True - verified_dict = {"verified": True} - tgen.verify_traffic = lambda x: verified_dict - tgen.name = "tgen__1" - vnf = mock.Mock(autospec=GenericVNF) - vnf.runs_traffic = False - self.s.vnfs = [tgen, vnf] - self.s.traffic_profile = mock.Mock() - self.s.collector = mock.Mock(autospec=Collector) - self.s.collector.get_kpi = \ - mock.Mock(return_value={tgen.name: verified_dict}) - result = {} - self.s.run(result) - self.assertDictEqual(result, {tgen.name: verified_dict}) - - def test_setup(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - - tgen = mock.Mock(autospec=GenericTrafficGen) - tgen.traffic_finished = True - verified_dict = {"verified": True} - tgen.verify_traffic = lambda x: verified_dict - tgen.terminate = mock.Mock(return_value=True) - tgen.name = "tgen__1" - vnf = mock.Mock(autospec=GenericVNF) - vnf.runs_traffic = False - vnf.terminate = mock.Mock(return_value=True) - self.s.vnfs = [tgen, vnf] - self.s.traffic_profile = mock.Mock() - self.s.collector = mock.Mock(autospec=Collector) - self.s.collector.get_kpi = \ - mock.Mock(return_value={tgen.name: verified_dict}) - self.s.map_topology_to_infrastructure = mock.Mock(return_value=0) - self.s.load_vnf_models = mock.Mock(return_value=self.s.vnfs) - self.s._fill_traffic_profile = \ - mock.Mock(return_value=TRAFFIC_PROFILE) - self.assertEqual(None, self.s.setup()) - - def test_setup_exception(self): - with mock.patch("yardstick.ssh.SSH") as ssh: - ssh_mock = mock.Mock(autospec=ssh.SSH) - ssh_mock.execute = \ - mock.Mock(return_value=(0, SYS_CLASS_NET + IP_ADDR_SHOW, "")) - ssh.from_node.return_value = ssh_mock - - tgen = mock.Mock(autospec=GenericTrafficGen) - tgen.traffic_finished = True - verified_dict = {"verified": True} - tgen.verify_traffic = lambda x: verified_dict - tgen.terminate = mock.Mock(return_value=True) - tgen.name = "tgen__1" - vnf = mock.Mock(autospec=GenericVNF) - vnf.runs_traffic = False - vnf.instantiate.side_effect = RuntimeError("error during instantiate") - vnf.terminate = mock.Mock(return_value=True) - self.s.vnfs = [tgen, vnf] - self.s.traffic_profile = mock.Mock() - self.s.collector = mock.Mock(autospec=Collector) - self.s.collector.get_kpi = \ - mock.Mock(return_value={tgen.name: verified_dict}) - self.s.map_topology_to_infrastructure = mock.Mock(return_value=0) - self.s.load_vnf_models = mock.Mock(return_value=self.s.vnfs) - self.s._fill_traffic_profile = \ - mock.Mock(return_value=TRAFFIC_PROFILE) - with self.assertRaises(RuntimeError): - self.s.setup() - - def test__get_traffic_profile(self): - self.scenario_cfg["traffic_profile"] = \ - self._get_file_abspath("ipv4_throughput_vpe.yaml") - self.assertIsNotNone(self.s._get_traffic_profile()) - - def test__get_traffic_profile_exception(self): - with mock.patch.dict(self.scenario_cfg, {'traffic_profile': ''}): - with self.assertRaises(IOError): - self.s._get_traffic_profile() - - def test___get_traffic_imix_exception(self): - with mock.patch.dict(self.scenario_cfg["traffic_options"], {'imix': ''}): - self.assertEqual({'imix': {'64B': 100}}, self.s._get_traffic_imix()) - - def test__fill_traffic_profile(self): - with mock.patch.dict("sys.modules", STL_MOCKS): - self.scenario_cfg["traffic_profile"] = \ - self._get_file_abspath("ipv4_throughput_vpe.yaml") - self.scenario_cfg["traffic_options"]["flow"] = \ - self._get_file_abspath("ipv4_1flow_Packets_vpe.yaml") - self.scenario_cfg["traffic_options"]["imix"] = \ - self._get_file_abspath("imix_voice.yaml") - self.assertIsNotNone(self.s._fill_traffic_profile()) - - def test_teardown(self): - vnf = mock.Mock(autospec=GenericVNF) - vnf.terminate = mock.Mock(return_value=True) - vnf.name = str(vnf) - self.s.vnfs = [vnf] - self.s.traffic_profile = mock.Mock() - self.s.collector = mock.Mock(autospec=Collector) - self.s.collector.stop = \ - mock.Mock(return_value=True) - self.assertIsNone(self.s.teardown()) - - def test_teardown_exception(self): - vnf = mock.Mock(autospec=GenericVNF) - vnf.terminate = mock.Mock(side_effect=RuntimeError("error duing terminate")) - vnf.name = str(vnf) - self.s.vnfs = [vnf] - self.s.traffic_profile = mock.Mock() - self.s.collector = mock.Mock(autospec=Collector) - self.s.collector.stop = \ - mock.Mock(return_value=True) - with self.assertRaises(RuntimeError): - self.s.teardown() - - SAMPLE_NETDEVS = { - 'enp11s0': { - 'address': '0a:de:ad:be:ef:f5', - 'device': '0x1533', - 'driver': 'igb', - 'ifindex': '2', - 'interface_name': 'enp11s0', - 'operstate': 'down', - 'pci_bus_id': '0000:0b:00.0', - 'subsystem_device': '0x1533', - 'subsystem_vendor': '0x15d9', - 'vendor': '0x8086' - }, - 'lan': { - 'address': '0a:de:ad:be:ef:f4', - 'device': '0x153a', - 'driver': 'e1000e', - 'ifindex': '3', - 'interface_name': 'lan', - 'operstate': 'up', - 'pci_bus_id': '0000:00:19.0', - 'subsystem_device': '0x153a', - 'subsystem_vendor': '0x15d9', - 'vendor': '0x8086' - } - } - - SAMPLE_VM_NETDEVS = { - 'eth1': { - 'address': 'fa:de:ad:be:ef:5b', - 'device': '0x0001', - 'driver': 'virtio_net', - 'ifindex': '3', - 'interface_name': 'eth1', - 'operstate': 'down', - 'pci_bus_id': '0000:00:04.0', - 'vendor': '0x1af4' - } - } - - def test_parse_netdev_info(self): - output = """\ -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/ifindex:2 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/address:0a:de:ad:be:ef:f5 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/operstate:down -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/device/vendor:0x8086 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/device/device:0x1533 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/device/subsystem_vendor:0x15d9 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/device/subsystem_device:0x1533 -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/driver:igb -/sys/devices/pci0000:00/0000:00:1c.3/0000:0b:00.0/net/enp11s0/pci_bus_id:0000:0b:00.0 -/sys/devices/pci0000:00/0000:00:19.0/net/lan/ifindex:3 -/sys/devices/pci0000:00/0000:00:19.0/net/lan/address:0a:de:ad:be:ef:f4 -/sys/devices/pci0000:00/0000:00:19.0/net/lan/operstate:up -/sys/devices/pci0000:00/0000:00:19.0/net/lan/device/vendor:0x8086 -/sys/devices/pci0000:00/0000:00:19.0/net/lan/device/device:0x153a -/sys/devices/pci0000:00/0000:00:19.0/net/lan/device/subsystem_vendor:0x15d9 -/sys/devices/pci0000:00/0000:00:19.0/net/lan/device/subsystem_device:0x153a -/sys/devices/pci0000:00/0000:00:19.0/net/lan/driver:e1000e -/sys/devices/pci0000:00/0000:00:19.0/net/lan/pci_bus_id:0000:00:19.0 -""" - res = NetworkServiceTestCase.parse_netdev_info(output) - assert res == self.SAMPLE_NETDEVS - - def test_parse_netdev_info_virtio(self): - output = """\ -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/ifindex:3 -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/address:fa:de:ad:be:ef:5b -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/operstate:down -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/device/vendor:0x1af4 -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/device/device:0x0001 -/sys/devices/pci0000:00/0000:00:04.0/virtio1/net/eth1/driver:virtio_net -""" - res = NetworkServiceTestCase.parse_netdev_info(output) - assert res == self.SAMPLE_VM_NETDEVS - - def test_probe_missing_values(self): - netdevs = self.SAMPLE_NETDEVS.copy() - network = {'local_mac': '0a:de:ad:be:ef:f5'} - NetworkServiceTestCase._probe_missing_values(netdevs, network) - assert network['vpci'] == '0000:0b:00.0' - - network = {'local_mac': '0a:de:ad:be:ef:f4'} - NetworkServiceTestCase._probe_missing_values(netdevs, network) - assert network['vpci'] == '0000:00:19.0' - - def test_open_relative_path(self): - mock_open = mock.mock_open() - mock_open_result = mock_open() - mock_open_call_count = 1 # initial call to get result - - module_name = \ - 'yardstick.benchmark.scenarios.networking.vnf_generic.open' - - # test - with mock.patch(module_name, mock_open, create=True): - self.assertEqual(open_relative_file('foo', 'bar'), mock_open_result) - - mock_open_call_count += 1 # one more call expected - self.assertEqual(mock_open.call_count, mock_open_call_count) - self.assertIn('foo', mock_open.call_args_list[-1][0][0]) - self.assertNotIn('bar', mock_open.call_args_list[-1][0][0]) - - def open_effect(*args, **kwargs): - if kwargs.get('name', args[0]) == os.path.join('bar', 'foo'): - return mock_open_result - raise IOError(errno.ENOENT, 'not found') - - mock_open.side_effect = open_effect - self.assertEqual(open_relative_file('foo', 'bar'), mock_open_result) - - mock_open_call_count += 2 # two more calls expected - self.assertEqual(mock_open.call_count, mock_open_call_count) - self.assertIn('foo', mock_open.call_args_list[-1][0][0]) - self.assertIn('bar', mock_open.call_args_list[-1][0][0]) - - # test an IOError of type ENOENT - mock_open.side_effect = IOError(errno.ENOENT, 'not found') - with self.assertRaises(IOError): - # the second call still raises - open_relative_file('foo', 'bar') - - mock_open_call_count += 2 # two more calls expected - self.assertEqual(mock_open.call_count, mock_open_call_count) - self.assertIn('foo', mock_open.call_args_list[-1][0][0]) - self.assertIn('bar', mock_open.call_args_list[-1][0][0]) - - # test an IOError other than ENOENT - mock_open.side_effect = IOError(errno.EBUSY, 'busy') - with self.assertRaises(IOError): - open_relative_file('foo', 'bar') - - mock_open_call_count += 1 # one more call expected - self.assertEqual(mock_open.call_count, mock_open_call_count) diff --git a/tests/unit/benchmark/scenarios/networking/test_vsperf.py b/tests/unit/benchmark/scenarios/networking/test_vsperf.py deleted file mode 100644 index be8ac55d0..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_vsperf.py +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2016 Intel Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Unittest for yardstick.benchmark.scenarios.networking.vsperf.Vsperf - -from __future__ import absolute_import -try: - from unittest import mock -except ImportError: - import mock -import unittest - -from yardstick.benchmark.scenarios.networking import vsperf - - -@mock.patch('yardstick.benchmark.scenarios.networking.vsperf.subprocess') -@mock.patch('yardstick.benchmark.scenarios.networking.vsperf.ssh') -class VsperfTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - "host": { - "ip": "10.229.47.137", - "user": "ubuntu", - "password": "ubuntu", - }, - } - self.args = { - 'options': { - 'testname': 'p2p_rfc2544_continuous', - 'traffic_type': 'continuous', - 'frame_size': '64', - 'bidirectional': 'True', - 'iload': 100, - 'trafficgen_port1': 'eth1', - 'trafficgen_port2': 'eth3', - 'external_bridge': 'br-ex', - 'conf_file': 'vsperf-yardstick.conf', - 'setup_script': 'setup_yardstick.sh', - 'test_params': 'TRAFFICGEN_DURATION=30;', - }, - 'sla': { - 'metrics': 'throughput_rx_fps', - 'throughput_rx_fps': 500000, - 'action': 'monitor', - } - } - - def test_vsperf_setup(self, mock_ssh, mock_subprocess): - p = vsperf.Vsperf(self.args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_vsperf_teardown(self, mock_ssh, mock_subprocess): - p = vsperf.Vsperf(self.args, self.ctx) - - # setup() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - p.teardown() - self.assertFalse(p.setup_done) - - def test_vsperf_run_ok(self, mock_ssh, mock_subprocess): - p = vsperf.Vsperf(self.args, self.ctx) - - # setup() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - # run() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_ssh.SSH.from_node().execute.return_value = ( - 0, 'throughput_rx_fps\r\n14797660.000\r\n', '') - - result = {} - p.run(result) - - self.assertEqual(result['throughput_rx_fps'], '14797660.000') - - def test_vsperf_run_falied_vsperf_execution(self, mock_ssh, - mock_subprocess): - p = vsperf.Vsperf(self.args, self.ctx) - - # setup() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - # run() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - result = {} - self.assertRaises(RuntimeError, p.run, result) - - def test_vsperf_run_falied_csv_report(self, mock_ssh, mock_subprocess): - p = vsperf.Vsperf(self.args, self.ctx) - - # setup() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - # run() specific mocks - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - result = {} - self.assertRaises(RuntimeError, p.run, result) - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/test_vsperf_dpdk.py b/tests/unit/benchmark/scenarios/networking/test_vsperf_dpdk.py deleted file mode 100644 index fbe3ed804..000000000 --- a/tests/unit/benchmark/scenarios/networking/test_vsperf_dpdk.py +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2017 Nokia -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Unittest for yardstick.benchmark.scenarios.networking.vsperf.VsperfDPDK - -from __future__ import absolute_import -try: - from unittest import mock -except ImportError: - import mock -import unittest - -from yardstick.benchmark.scenarios.networking import vsperf_dpdk - - -@mock.patch('yardstick.benchmark.scenarios.networking.vsperf_dpdk.subprocess') -class VsperfDPDKTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - "host": { - "ip": "10.229.47.137", - "user": "ubuntu", - "password": "ubuntu", - }, - } - self.args = { - 'task_id': "1234-5678", - 'options': { - 'testname': 'pvp_tput', - 'traffic_type': 'rfc2544_throughput', - 'frame_size': '64', - 'test_params': 'TRAFFICGEN_DURATION=30;', - 'trafficgen_port1': 'ens4', - 'trafficgen_port2': 'ens5', - 'conf_file': 'vsperf-yardstick.conf', - 'setup_script': 'setup_yardstick.sh', - 'moongen_helper_file': '~/moongen.py', - 'moongen_host_ip': '10.5.201.151', - 'moongen_port1_mac': '8c:dc:d4:ae:7c:5c', - 'moongen_port2_mac': '8c:dc:d4:ae:7c:5d', - 'trafficgen_port1_nw': 'test2', - 'trafficgen_port2_nw': 'test3', - }, - 'sla': { - 'metrics': 'throughput_rx_fps', - 'throughput_rx_fps': 500000, - 'action': 'monitor', - } - } - - self._mock_ssh = mock.patch( - 'yardstick.benchmark.scenarios.networking.vsperf_dpdk.ssh') - self.mock_ssh = self._mock_ssh.start() - - self.addCleanup(self._cleanup) - - def _cleanup(self): - self._mock_ssh.stop() - - def test_vsperf_dpdk_setup(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_vsperf_dpdk_teardown(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - p.teardown() - self.assertFalse(p.setup_done) - - def test_vsperf_dpdk_is_dpdk_setup_no(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # is_dpdk_setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, 'dummy', '') - - result = p._is_dpdk_setup() - self.assertFalse(result) - - def test_vsperf_dpdk_is_dpdk_setup_yes(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # is_dpdk_setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - result = p._is_dpdk_setup() - self.assertTrue(result) - - @mock.patch('time.sleep') - def test_vsperf_dpdk_dpdk_setup_first(self, _, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # is_dpdk_setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, 'dummy', '') - - p.dpdk_setup() - self.assertFalse(p._is_dpdk_setup()) - self.assertTrue(p.dpdk_setup_done) - - @mock.patch('time.sleep') - def test_vsperf_dpdk_dpdk_setup_next(self, _, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - p.dpdk_setup() - self.assertTrue(p._is_dpdk_setup()) - self.assertTrue(p.dpdk_setup_done) - - @mock.patch('time.sleep') - def test_vsperf_dpdk_dpdk_setup_fail(self, _, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - self.assertTrue(p.setup_done) - - self.assertRaises(RuntimeError, p.dpdk_setup) - - @mock.patch('time.sleep') - def test_vsperf_dpdk_run_ok(self, _, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # run() specific mocks - mock_subprocess.call().execute.return_value = None - self.mock_ssh.SSH.from_node().execute.return_value = ( - 0, 'throughput_rx_fps\r\n14797660.000\r\n', '') - - result = {} - p.run(result) - - self.assertEqual(result['throughput_rx_fps'], '14797660.000') - - def test_vsperf_dpdk_run_falied_vsperf_execution(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # run() specific mocks - mock_subprocess.call().execute.return_value = None - mock_subprocess.call().execute.return_value = None - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - result = {} - self.assertRaises(RuntimeError, p.run, result) - - def test_vsperf_dpdk_run_falied_csv_report(self, mock_subprocess): - p = vsperf_dpdk.VsperfDPDK(self.args, self.ctx) - - # setup() specific mocks - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - mock_subprocess.call().execute.return_value = None - - p.setup() - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - # run() specific mocks - mock_subprocess.call().execute.return_value = None - mock_subprocess.call().execute.return_value = None - self.mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.mock_ssh.SSH.from_node().execute.return_value = (1, '', '') - - result = {} - self.assertRaises(RuntimeError, p.run, result) - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/networking/tg_trex_tpl.yaml b/tests/unit/benchmark/scenarios/networking/tg_trex_tpl.yaml deleted file mode 100644 index b1641836b..000000000 --- a/tests/unit/benchmark/scenarios/networking/tg_trex_tpl.yaml +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -vnfd:vnfd-catalog: - vnfd: - - id: TrexTrafficGen # NSPerf class mapping - name: trexgen - short-name: trexgen - description: TRex stateless traffic generator for tests - vm-flavor: - vcpu-count: '4' - memory-mb: '4096' - mgmt-interface: - vdu-id: trexgen-baremetal - user: '{{user}}' # Value filled by vnfdgen - password: '{{password}}' # Value filled by vnfdgen - ip: '{{ip}}' # Value filled by vnfdgen - connection-point: - - name: xe0 - type: VPORT - - name: xe1 - type: VPORT - vdu: - - id: trexgen-baremetal - name: trexgen-baremetal - description: TRex stateless traffic generator for tests - external-interface: - - name: xe0 - virtual-interface: - type: PCI-PASSTHROUGH - # Substitution variables MUST be quoted. Otherwise Python can misinterpet them. - vpci: '{{ interfaces.xe0.vpci }}' # Value filled by vnfdgen - local_ip: '{{ interfaces.xe0.local_ip }}' # Value filled by vnfdgen - driver: '{{ interfaces.xe0.driver}}' # Value filled by vnfdgen - dst_ip: '{{ interfaces.xe0.dst_ip }}' # Value filled by vnfdgen - local_mac: '{{ interfaces.xe0.local_mac }}' # Value filled by vnfdgen - dst_mac: '{{ interfaces.xe0.dst_mac }}' # Value filled by vnfdgen - vld_id: '{{ interfaces.xe0.vld_id }}' # Value filled by vnfdgen - bandwidth: 10 Gbps - vnfd-connection-point-ref: xe0 - - name: xe1 - virtual-interface: - type: PCI-PASSTHROUGH - vpci: '{{ interfaces.xe1.vpci }}' # Value filled by vnfdgen - local_ip: '{{ interfaces.xe1.local_ip }}' # Value filled by vnfdgen - driver: '{{ interfaces.xe1.driver}}' # Value filled by vnfdgen - dst_ip: '{{ interfaces.xe1.dst_ip }}' # Value filled by vnfdgen - local_mac: '{{ interfaces.xe1.local_mac }}' # Value filled by vnfdgen - dst_mac: '{{ interfaces.xe1.dst_mac }}' # Value filled by vnfdgen - vld_id: '{{ interfaces.xe1.vld_id }}' # Value filled by vnfdgen - bandwidth: 10 Gbps - vnfd-connection-point-ref: xe1 - - benchmark: - kpi: - - rx_throughput_fps - - tx_throughput_fps - - tx_throughput_mbps - - rx_throughput_mbps - - tx_throughput_pc_linerate - - rx_throughput_pc_linerate - - min_latency - - max_latency - - avg_latency diff --git a/tests/unit/benchmark/scenarios/networking/vpe_vnf_topology.yaml b/tests/unit/benchmark/scenarios/networking/vpe_vnf_topology.yaml deleted file mode 100644 index 1ac6c1f89..000000000 --- a/tests/unit/benchmark/scenarios/networking/vpe_vnf_topology.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2016-2017 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nsd:nsd-catalog: - nsd: - - id: VPE - name: VPE - short-name: VPE - description: scenario with VPE,L3fwd and VNF - constituent-vnfd: - - member-vnf-index: '1' - vnfd-id-ref: tg__1 - VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #tg_vpe_upstream.yaml #VPE VNF - - member-vnf-index: '2' - vnfd-id-ref: vnf__1 - VNF model: ../../vnf_descriptors/vpe_vnf.yaml #tg_l3fwd.yaml #tg_trex_tpl.yaml #TREX - - vld: - - id: uplink - name: tg__1 to vnf__1 link 1 - type: ELAN - vnfd-connection-point-ref: - - member-vnf-index-ref: '1' - vnfd-connection-point-ref: xe0 - vnfd-id-ref: tg__1 #TREX - - member-vnf-index-ref: '2' - vnfd-connection-point-ref: xe0 - vnfd-id-ref: vnf__1 #VNF - - - id: downlink - name: vnf__1 to tg__1 link 2 - type: ELAN - vnfd-connection-point-ref: - - member-vnf-index-ref: '2' - vnfd-connection-point-ref: xe1 - vnfd-id-ref: vnf__1 #L3fwd - - member-vnf-index-ref: '1' - vnfd-connection-point-ref: xe1 - vnfd-id-ref: tg__1 #VPE VNF diff --git a/tests/unit/benchmark/scenarios/parser/__init__.py b/tests/unit/benchmark/scenarios/parser/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/parser/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/parser/test_parser.py b/tests/unit/benchmark/scenarios/parser/test_parser.py deleted file mode 100644 index ee2bbc07d..000000000 --- a/tests/unit/benchmark/scenarios/parser/test_parser.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and other. -# -# 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 subprocess - -import unittest -import mock - -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.parser import parser - - -class ParserTestCase(unittest.TestCase): - - def setUp(self): - args = { - 'options': {'yangfile': '/root/yardstick/samples/yang.yaml', - 'toscafile': '/root/yardstick/samples/tosca.yaml'}, - } - self.scenario = parser.Parser(scenario_cfg=args, context_cfg={}) - - self._mock_popen = mock.patch.object(subprocess, 'Popen') - self.mock_popen = self._mock_popen.start() - self._mock_call = mock.patch.object(subprocess, 'call') - self.mock_call = self._mock_call.start() - - self.addCleanup(self._stop_mock) - - def _stop_mock(self): - self._mock_popen.stop() - self._mock_call.stop() - - def test_setup_successful(self): - - self.mock_call.return_value = 0 - self.scenario.setup() - self.assertTrue(self.scenario.setup_done) - - def test_run_successful(self): - - result = {} - - self.mock_popen().returncode = 0 - - expected_result = jsonutils.loads('{"yangtotosca": "success"}') - - self.scenario.run(result) - self.assertEqual(result, expected_result) - - def test_run_fail(self): - result = {} - - self.mock_popen().returncode = 1 - expected_result = jsonutils.loads('{"yangtotosca": "fail"}') - - self.scenario.run(result) - self.assertEqual(result, expected_result) - - def test_teardown_successful(self): - - self.mock_call.return_value = 0 - self.scenario.teardown() - self.assertTrue(self.scenario.teardown_done) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/storage/__init__.py b/tests/unit/benchmark/scenarios/storage/__init__.py deleted file mode 100644 index e69de29bb..000000000 --- a/tests/unit/benchmark/scenarios/storage/__init__.py +++ /dev/null diff --git a/tests/unit/benchmark/scenarios/storage/fio_read_sample_output.json b/tests/unit/benchmark/scenarios/storage/fio_read_sample_output.json deleted file mode 100644 index e9f642aba..000000000 --- a/tests/unit/benchmark/scenarios/storage/fio_read_sample_output.json +++ /dev/null @@ -1 +0,0 @@ -{"fioversion": "fio-2.1.3","jobs": [{"jobname": "yardstick-fio","groupid": 0,"error": 0,"read": {"io_bytes": 2166860,"bw": 36113,"iops": 9028,"runtime": 60001,"slat": {"min": 7,"max": 1807,"mean": 10.49,"stddev": 3.00},"clat": {"min": 1,"max": 16902,"mean": 97.84,"stddev": 78.16,"percentile": {"1.000000": 84,"5.000000": 86,"10.000000": 87,"20.000000": 88,"30.000000": 89,"40.000000": 90,"50.000000": 91,"60.000000": 93,"70.000000": 98,"80.000000": 103,"90.000000": 111,"95.000000": 127,"99.000000": 161,"99.500000": 177,"99.900000": 215,"99.950000": 266,"99.990000": 4128,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 86,"max": 16912,"mean": 108.70,"stddev": 78.29},"bw_min": 0,"bw_max": 38128,"bw_agg": 35816.54,"bw_mean": 35816.54,"bw_dev": 3579.16},"write": {"io_bytes": 0,"bw": 0,"iops": 0,"runtime": 0,"slat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"clat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00,"percentile": {"1.000000": 0,"5.000000": 0,"10.000000": 0,"20.000000": 0,"30.000000": 0,"40.000000": 0,"50.000000": 0,"60.000000": 0,"70.000000": 0,"80.000000": 0,"90.000000": 0,"95.000000": 0,"99.000000": 0,"99.500000": 0,"99.900000": 0,"99.950000": 0,"99.990000": 0,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"bw_min": 0,"bw_max": 0,"bw_agg": 0.00,"bw_mean": 0.00,"bw_dev": 0.00},"trim": {"io_bytes": 0,"bw": 0,"iops": 0,"runtime": 0,"slat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"clat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00,"percentile": {"1.000000": 0,"5.000000": 0,"10.000000": 0,"20.000000": 0,"30.000000": 0,"40.000000": 0,"50.000000": 0,"60.000000": 0,"70.000000": 0,"80.000000": 0,"90.000000": 0,"95.000000": 0,"99.000000": 0,"99.500000": 0,"99.900000": 0,"99.950000": 0,"99.990000": 0,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"bw_min": 0,"bw_max": 0,"bw_agg": 0.00,"bw_mean": 0.00,"bw_dev": 0.00},"usr_cpu": 4.86,"sys_cpu": 19.38,"ctx": 632024,"majf": 0,"minf": 30,"iodepth_level": {"1": 116.58,"2": 0.00,"4": 0.00,"8": 0.00,"16": 0.00,"32": 0.00,">=64": 0.00},"latency_us": {"2": 0.01,"4": 0.01,"10": 0.00,"20": 0.00,"50": 0.01,"100": 72.60,"250": 27.34,"500": 0.04,"750": 0.01,"1000": 0.01},"latency_ms": {"2": 0.01,"4": 0.01,"10": 0.01,"20": 0.01,"50": 0.00,"100": 0.00,"250": 0.00,"500": 0.00,"750": 0.00,"1000": 0.00,"2000": 0.00,">=2000": 0.00}}],"disk_util": [{"name": "vda","read_ios": 631084,"write_ios": 212,"read_merges": 0,"write_merges": 232,"read_ticks": 57300,"write_ticks": 324,"in_queue": 57400,"util": 81.55}]} diff --git a/tests/unit/benchmark/scenarios/storage/fio_rw_sample_output.json b/tests/unit/benchmark/scenarios/storage/fio_rw_sample_output.json deleted file mode 100644 index 4c7501818..000000000 --- a/tests/unit/benchmark/scenarios/storage/fio_rw_sample_output.json +++ /dev/null @@ -1 +0,0 @@ -{"jobs": [{"trim": {"io_bytes": 0, "slat": {"max": 0, "mean": 0.0, "stddev": 0.0, "min": 0}, "bw_max": 0, "bw_mean": 0.0, "iops": 0, "bw": 0, "lat": {"max": 0, "mean": 0.0, "stddev": 0.0, "min": 0}, "bw_agg": 0.0, "clat": {"max": 0, "mean": 0.0, "percentile": {"70.000000": 0, "5.000000": 0, "50.000000": 0, "99.990000": 0, "30.000000": 0, "10.000000": 0, "99.000000": 0, "0.00": 0, "90.000000": 0, "95.000000": 0, "60.000000": 0, "40.000000": 0, "20.000000": 0, "99.900000": 0, "99.950000": 0, "1.000000": 0, "99.500000": 0, "80.000000": 0}, "stddev": 0.0, "min": 0}, "runtime": 0, "bw_min": 0, "bw_dev": 0.0}, "latency_us": {"10": 0.01, "750": 0.03, "20": 0.0, "50": 0.02, "2": 0.01, "4": 0.01, "100": 0.75, "250": 88.37, "500": 10.72, "1000": 0.01}, "latency_ms": {"10": 0.01, "750": 0.0, "20": 0.01, ">=2000": 0.0, "50": 0.01, "2000": 0.0, "2": 0.07, "4": 0.01, "100": 0.0, "250": 0.01, "500": 0.0, "1000": 0.01}, "read": {"io_bytes": 839056, "slat": {"max": 1990, "mean": 18.14, "stddev": 15.4, "min": 0}, "bw_max": 10328, "bw_mean": 8721.27, "iops": 20972, "bw": 83888, "lat": {"max": 776676, "mean": 236.8, "stddev": 4668.12, "min": 45}, "bw_agg": 8721.27, "clat": {"max": 776663, "mean": 217.79, "percentile": {"70.000000": 199, "5.000000": 119, "50.000000": 175, "99.990000": 15168, "30.000000": 155, "10.000000": 131, "99.000000": 342, "0.00": 0, "90.000000": 247, "95.000000": 278, "60.000000": 185, "40.000000": 165, "20.000000": 145, "99.900000": 820, "99.950000": 1272, "1.000000": 96, "99.500000": 370, "80.000000": 217}, "stddev": 4667.79, "min": 0}, "runtime": 10002, "bw_min": 4, "bw_dev": 2178.08}, "majf": 0, "ctx": 490590, "minf": 87, "jobname": "yardstick-fio", "write": {"io_bytes": 841992, "slat": {"max": 2594, "mean": 19.78, "stddev": 16.25, "min": 0}, "bw_max": 10472, "bw_mean": 8464.0, "iops": 21045, "bw": 84182, "lat": {"max": 776709, "mean": 233.55, "stddev": 3115.46, "min": 64}, "bw_agg": 8464.0, "clat": {"max": 776685, "mean": 212.87, "percentile": {"70.000000": 211, "5.000000": 135, "50.000000": 187, "99.990000": 3536, "30.000000": 169, "10.000000": 145, "99.000000": 358, "0.00": 0, "90.000000": 258, "95.000000": 290, "60.000000": 197, "40.000000": 177, "20.000000": 159, "99.900000": 756, "99.950000": 1288, "1.000000": 114, "99.500000": 382, "80.000000": 229}, "stddev": 3115.23, "min": 0}, "runtime": 10002, "bw_min": 4, "bw_dev": 2584.23}, "iodepth_level": {"16": 0.0, "32": 0.0, "1": 111.92, "2": 0.0, "4": 0.0, ">=64": 0.0, "8": 0.0}, "usr_cp": 2.87, "error": 0, "sys_cp": 12.37, "groupid": 0}], "fio version": "fio-2.1.3", "disk_util": [{"aggr_write_ticks": 42020, "read_merges": 0, "name": "dm-0", "write_ios": 233547, "aggr_write_ios": 235129, "aggr_read_ticks": 42576, "read_ios": 233492, "util": 97.22, "read_ticks": 42096, "aggr_write_merge": 0, "write_merges": 0, "aggr_in_queue": 84524, "aggr_read_ios": 235224, "aggr_util": 96.96, "aggr_read_merges": 0, "in_queue": 83732, "write_ticks": 41468}, {"read_merges": 0, "name": "vda", "write_ios": 235129, "read_ios": 235224, "util": 96.96, "read_ticks": 42576, "write_merges": 0, "in_queue": 84524, "write_ticks": 42020}]} diff --git a/tests/unit/benchmark/scenarios/storage/fio_write_sample_output.json b/tests/unit/benchmark/scenarios/storage/fio_write_sample_output.json deleted file mode 100644 index 7c760e8bc..000000000 --- a/tests/unit/benchmark/scenarios/storage/fio_write_sample_output.json +++ /dev/null @@ -1 +0,0 @@ -{"fioversion": "fio-2.1.3","jobs": [{"jobname": "yardstick-fio","groupid": 0,"error": 0,"read": {"io_bytes": 0,"bw": 0,"iops": 0,"runtime": 0,"slat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"clat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00,"percentile": {"1.000000": 0,"5.000000": 0,"10.000000": 0,"20.000000": 0,"30.000000": 0,"40.000000": 0,"50.000000": 0,"60.000000": 0,"70.000000": 0,"80.000000": 0,"90.000000": 0,"95.000000": 0,"99.000000": 0,"99.500000": 0,"99.900000": 0,"99.950000": 0,"99.990000": 0,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"bw_min": 0,"bw_max": 0,"bw_agg": 0.00,"bw_mean": 0.00,"bw_dev": 0.00},"write": {"io_bytes": 2106508,"bw": 35107,"iops": 8776,"runtime": 60001,"slat": {"min": 8,"max": 5166,"mean": 11.83,"stddev": 7.05},"clat": {"min": 1,"max": 23472,"mean": 99.54,"stddev": 44.23,"percentile": {"1.000000": 85,"5.000000": 87,"10.000000": 88,"20.000000": 89,"30.000000": 90,"40.000000": 91,"50.000000": 93,"60.000000": 99,"70.000000": 104,"80.000000": 107,"90.000000": 113,"95.000000": 127,"99.000000": 161,"99.500000": 179,"99.900000": 231,"99.950000": 286,"99.990000": 628,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 87,"max": 23486,"mean": 111.74,"stddev": 45.61},"bw_min": 0,"bw_max": 37288,"bw_agg": 34839.53,"bw_mean": 34839.53,"bw_dev": 3387.37},"trim": {"io_bytes": 0,"bw": 0,"iops": 0,"runtime": 0,"slat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"clat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00,"percentile": {"1.000000": 0,"5.000000": 0,"10.000000": 0,"20.000000": 0,"30.000000": 0,"40.000000": 0,"50.000000": 0,"60.000000": 0,"70.000000": 0,"80.000000": 0,"90.000000": 0,"95.000000": 0,"99.000000": 0,"99.500000": 0,"99.900000": 0,"99.950000": 0,"99.990000": 0,"0.00": 0,"0.00": 0,"0.00": 0}},"lat": {"min": 0,"max": 0,"mean": 0.00,"stddev": 0.00},"bw_min": 0,"bw_max": 0,"bw_agg": 0.00,"bw_mean": 0.00,"bw_dev": 0.00},"usr_cpu": 5.25,"sys_cpu": 19.72,"ctx": 616160,"majf": 0,"minf": 27,"iodepth_level": {"1": 116.90,"2": 0.00,"4": 0.00,"8": 0.00,"16": 0.00,"32": 0.00,">=64": 0.00},"latency_us": {"2": 0.01,"4": 0.01,"10": 0.00,"20": 0.00,"50": 0.01,"100": 60.74,"250": 39.18,"500": 0.06,"750": 0.01,"1000": 0.01},"latency_ms": {"2": 0.01,"4": 0.01,"10": 0.01,"20": 0.00,"50": 0.01,"100": 0.00,"250": 0.00,"500": 0.00,"750": 0.00,"1000": 0.00,"2000": 0.00,">=2000": 0.00}}],"disk_util": [{"name": "vda","read_ios": 0,"write_ios": 615418,"read_merges": 0,"write_merges": 231,"read_ticks": 0,"write_ticks": 58284,"in_queue": 58024,"util": 82.45}]} diff --git a/tests/unit/benchmark/scenarios/storage/test_bonnie.py b/tests/unit/benchmark/scenarios/storage/test_bonnie.py deleted file mode 100644 index b3524e9a7..000000000 --- a/tests/unit/benchmark/scenarios/storage/test_bonnie.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.storage.bonnie.Bonnie - -from __future__ import absolute_import - -import unittest - -import mock - -from yardstick.common import utils -from yardstick.benchmark.scenarios.storage import bonnie - - -class BonnieTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'root', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - @mock.patch('yardstick.benchmark.scenarios.storage.bonnie.ssh') - def test_bonnie_successful_setup(self, mock_ssh): - - options = { - "file_size": "1024", - "ram_size": "512", - "test_dir": "/tmp", - "concurrency": "1", - "test_user": "root" - } - args = {"options": options} - b = bonnie.Bonnie(args, self.ctx) - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - - b.setup() - self.assertIsNotNone(b.client) - self.assertTrue(b.setup_done, True) - - @mock.patch('yardstick.benchmark.scenarios.storage.bonnie.ssh') - def test_bonnie_unsuccessful_script_error(self, mock_ssh): - options = { - "file_size": "1024", - "ram_size": "512", - "test_dir": "/tmp", - "concurrency": "1", - "test_user": "root" - } - args = {"options": options} - b = bonnie.Bonnie(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, b.run, self.result) - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/storage/test_fio.py b/tests/unit/benchmark/scenarios/storage/test_fio.py deleted file mode 100644 index 0cffea224..000000000 --- a/tests/unit/benchmark/scenarios/storage/test_fio.py +++ /dev/null @@ -1,273 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2015 Ericsson AB 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.storage.fio.Fio - -from __future__ import absolute_import - -import os -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.storage import fio - - -@mock.patch('yardstick.benchmark.scenarios.storage.fio.ssh') -class FioTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': 'mykey.key' - } - } - self.sample_output = { - 'read': 'fio_read_sample_output.json', - 'write': 'fio_write_sample_output.json', - 'rw': 'fio_rw_sample_output.json' - } - - def test_fio_successful_setup(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - p.setup() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_fio_job_file_successful_setup(self, mock_ssh): - - options = { - 'job_file': 'job_file.ini', - 'directory': '/FIO_Test' - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - p.setup() - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - self.assertIsNotNone(p.client) - self.assertTrue(p.setup_done) - - def test_fio_successful_no_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['rw']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - expected_result = '{"read_bw": 83888, "read_iops": 20972,' \ - '"read_lat": 236.8, "write_bw": 84182, "write_iops": 21045,'\ - '"write_lat": 233.55}' - expected_result = jsonutils.loads(expected_result) - self.assertEqual(result, expected_result) - - def test_fio_successful_read_no_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': "read", - 'ramp_time': 10 - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['read']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - expected_result = '{"read_bw": 36113, "read_iops": 9028,' \ - '"read_lat": 108.7}' - expected_result = jsonutils.loads(expected_result) - self.assertEqual(result, expected_result) - - def test_fio_successful_write_no_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'write', - 'ramp_time': 10 - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['write']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - expected_result = '{"write_bw": 35107, "write_iops": 8776,'\ - '"write_lat": 111.74}' - expected_result = jsonutils.loads(expected_result) - self.assertEqual(result, expected_result) - - def test_fio_successful_lat_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = { - 'options': options, - 'sla': {'write_lat': 300.1} - } - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['rw']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - expected_result = '{"read_bw": 83888, "read_iops": 20972,' \ - '"read_lat": 236.8, "write_bw": 84182, "write_iops": 21045,'\ - '"write_lat": 233.55}' - expected_result = jsonutils.loads(expected_result) - self.assertEqual(result, expected_result) - - def test_fio_unsuccessful_lat_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = { - 'options': options, - 'sla': {'write_lat': 200.1} - } - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['rw']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_fio_successful_bw_iops_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = { - 'options': options, - 'sla': {'read_iops': 20000} - } - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['rw']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - - p.run(result) - - expected_result = '{"read_bw": 83888, "read_iops": 20972,' \ - '"read_lat": 236.8, "write_bw": 84182, "write_iops": 21045,'\ - '"write_lat": 233.55}' - expected_result = jsonutils.loads(expected_result) - self.assertEqual(result, expected_result) - - def test_fio_unsuccessful_bw_iops_sla(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = { - 'options': options, - 'sla': {'read_iops': 30000} - } - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - sample_output = self._read_sample_output(self.sample_output['rw']) - mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '') - self.assertRaises(AssertionError, p.run, result) - - def test_fio_unsuccessful_script_error(self, mock_ssh): - - options = { - 'filename': '/home/ubuntu/data.raw', - 'bs': '4k', - 'rw': 'rw', - 'ramp_time': 10 - } - args = {'options': options} - p = fio.Fio(args, self.ctx) - result = {} - - p.client = mock_ssh.SSH.from_node() - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, p.run, result) - - def _read_sample_output(self, file_name): - curr_path = os.path.dirname(os.path.abspath(__file__)) - output = os.path.join(curr_path, file_name) - with open(output) as f: - sample_output = f.read() - return sample_output - - -def main(): - unittest.main() - - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/storage/test_storagecapacity.py b/tests/unit/benchmark/scenarios/storage/test_storagecapacity.py deleted file mode 100644 index 095674f72..000000000 --- a/tests/unit/benchmark/scenarios/storage/test_storagecapacity.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 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 -############################################################################## - -# Unittest for -# yardstick.benchmark.scenarios.storage.storagecapacity.StorageCapacity - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.storage import storagecapacity - -DISK_SIZE_SAMPLE_OUTPUT = \ - '{"Numberf of devides": "2", "Total disk size in bytes": "1024000000"}' -BLOCK_SIZE_SAMPLE_OUTPUT = '{"/dev/sda": 1024, "/dev/sdb": 4096}' -DISK_UTIL_RAW_OUTPUT = "vda 10.00\nvda 0.00" -DISK_UTIL_SAMPLE_OUTPUT = \ - '{"vda": {"avg_util": 5.0, "max_util": 10.0, "min_util": 0.0}}' - - -@mock.patch('yardstick.benchmark.scenarios.storage.storagecapacity.ssh') -class StorageCapacityTestCase(unittest.TestCase): - - def setUp(self): - self.scn = { - "options": { - 'test_type': 'disk_size' - } - } - self.ctx = { - "host": { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'password': "root" - } - } - self.result = {} - - def test_capacity_successful_setup(self, mock_ssh): - c = storagecapacity.StorageCapacity(self.scn, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, '', '') - c.setup() - self.assertIsNotNone(c.client) - self.assertTrue(c.setup_done) - - def test_capacity_disk_size_successful(self, mock_ssh): - c = storagecapacity.StorageCapacity(self.scn, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, DISK_SIZE_SAMPLE_OUTPUT, '') - c.run(self.result) - expected_result = jsonutils.loads( - DISK_SIZE_SAMPLE_OUTPUT) - self.assertEqual(self.result, expected_result) - - def test_capacity_block_size_successful(self, mock_ssh): - args = { - "options": { - 'test_type': 'block_size' - } - } - c = storagecapacity.StorageCapacity(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, BLOCK_SIZE_SAMPLE_OUTPUT, '') - c.run(self.result) - expected_result = jsonutils.loads( - BLOCK_SIZE_SAMPLE_OUTPUT) - self.assertEqual(self.result, expected_result) - - def test_capacity_disk_utilization_successful(self, mock_ssh): - args = { - "options": { - 'test_type': 'disk_utilization', - 'interval': 1, - 'count': 2 - } - } - c = storagecapacity.StorageCapacity(args, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (0, DISK_UTIL_RAW_OUTPUT, '') - c.run(self.result) - expected_result = jsonutils.loads( - DISK_UTIL_SAMPLE_OUTPUT) - self.assertEqual(self.result, expected_result) - - def test_capacity_unsuccessful_script_error(self, mock_ssh): - c = storagecapacity.StorageCapacity(self.scn, self.ctx) - - mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR') - self.assertRaises(RuntimeError, c.run, self.result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/storage/test_storperf.py b/tests/unit/benchmark/scenarios/storage/test_storperf.py deleted file mode 100644 index 7b16bb37d..000000000 --- a/tests/unit/benchmark/scenarios/storage/test_storperf.py +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# Copyright (c) 2016 Huawei Technologies Co.,Ltd. -# -# 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 -############################################################################## - -# Unittest for yardstick.benchmark.scenarios.storage.storperf.StorPerf - -from __future__ import absolute_import - -import unittest - -import mock -from oslo_serialization import jsonutils - -from yardstick.benchmark.scenarios.storage import storperf - - -def mocked_requests_config_post(*args, **kwargs): - class MockResponseConfigPost: - - def __init__(self, json_data, status_code): - self.content = json_data - self.status_code = status_code - - return MockResponseConfigPost( - '{"stack_id": "dac27db1-3502-4300-b301-91c64e6a1622",' - '"stack_created": "false"}', - 200) - - -def mocked_requests_config_get(*args, **kwargs): - class MockResponseConfigGet: - - def __init__(self, json_data, status_code): - self.content = json_data - self.status_code = status_code - - return MockResponseConfigGet( - '{"stack_id": "dac27db1-3502-4300-b301-91c64e6a1622",' - '"stack_created": "true"}', - 200) - - -def mocked_requests_job_get(*args, **kwargs): - class MockResponseJobGet: - - def __init__(self, json_data, status_code): - self.content = json_data - self.status_code = status_code - - return MockResponseJobGet( - '{"Status": "Completed",\ - "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}', - 200) - - -def mocked_requests_job_post(*args, **kwargs): - class MockResponseJobPost: - - def __init__(self, json_data, status_code): - self.content = json_data - self.status_code = status_code - - return MockResponseJobPost('{"job_id": \ - "d46bfb8c-36f4-4a40-813b-c4b4a437f728"}', 200) - - -def mocked_requests_job_delete(*args, **kwargs): - class MockResponseJobDelete: - - def __init__(self, json_data, status_code): - self.content = json_data - self.status_code = status_code - - return MockResponseJobDelete('{}', 200) - - -def mocked_requests_delete(*args, **kwargs): - class MockResponseDelete: - - def __init__(self, json_data, status_code): - self.json_data = json_data - self.status_code = status_code - - return MockResponseDelete('{}', 200) - - -def mocked_requests_delete_failed(*args, **kwargs): - class MockResponseDeleteFailed: - - def __init__(self, json_data, status_code): - self.json_data = json_data - self.status_code = status_code - - if args[0] == "http://172.16.0.137:5000/api/v1.0/configurations": - return MockResponseDeleteFailed('{"message": "Teardown failed"}', 400) - - return MockResponseDeleteFailed('{}', 404) - - -class StorPerfTestCase(unittest.TestCase): - - def setUp(self): - self.ctx = { - 'host': { - 'ip': '172.16.0.137', - 'user': 'cirros', - 'key_filename': "mykey.key" - } - } - - self.result = {} - - @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.post', - side_effect=mocked_requests_config_post) - @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.get', - side_effect=mocked_requests_config_get) - def test_successful_setup(self, mock_post, mock_get): - options = { - "agent_count": 8, - "public_network": 'ext-net', - "volume_size": 10, - "block_sizes": 4096, - "queue_depths": 4, - "workload": "rs", - "StorPerf_ip": "192.168.23.2", - "query_interval": 0, - "timeout": 60 - } - - args = { - "options": options - } - - s = storperf.StorPerf(args, self.ctx) - - s.setup() - - self.assertTrue(s.setup_done) - - @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.post', - side_effect=mocked_requests_job_post) - @mock.patch('yardstick.benchmark.scenarios.storage.storperf.requests.get', - side_effect=mocked_requests_job_get) - @mock.patch( - 'yardstick.benchmark.scenarios.storage.storperf.requests.delete', - side_effect=mocked_requests_job_delete) - def test_successful_run(self, mock_post, mock_get, mock_delete): - options = { - "agent_count": 8, - "public_network": 'ext-net', - "volume_size": 10, - "block_sizes": 4096, - "queue_depths": 4, - "workload": "rs", - "StorPerf_ip": "192.168.23.2", - "query_interval": 0, - "timeout": 60 - } - - args = { - "options": options - } - - s = storperf.StorPerf(args, self.ctx) - s.setup_done = True - - sample_output = '{"Status": "Completed",\ - "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}' - - expected_result = jsonutils.loads(sample_output) - - s.run(self.result) - - self.assertEqual(self.result, expected_result) - - @mock.patch( - 'yardstick.benchmark.scenarios.storage.storperf.requests.delete', - side_effect=mocked_requests_delete) - def test_successful_teardown(self, mock_delete): - options = { - "agent_count": 8, - "public_network": 'ext-net', - "volume_size": 10, - "block_sizes": 4096, - "queue_depths": 4, - "workload": "rs", - "StorPerf_ip": "192.168.23.2", - "query_interval": 10, - "timeout": 60 - } - - args = { - "options": options - } - - s = storperf.StorPerf(args, self.ctx) - - s.teardown() - - self.assertFalse(s.setup_done) - - @mock.patch( - 'yardstick.benchmark.scenarios.storage.storperf.requests.delete', - side_effect=mocked_requests_delete_failed) - def test_failed_teardown(self, mock_delete): - options = { - "agent_count": 8, - "public_network": 'ext-net', - "volume_size": 10, - "block_sizes": 4096, - "queue_depths": 4, - "workload": "rs", - "StorPerf_ip": "192.168.23.2", - "query_interval": 10, - "timeout": 60 - } - - args = { - "options": options - } - - s = storperf.StorPerf(args, self.ctx) - - self.assertRaises(AssertionError, s.teardown(), self.result) - - -def main(): - unittest.main() - -if __name__ == '__main__': - main() diff --git a/tests/unit/benchmark/scenarios/test_base.py b/tests/unit/benchmark/scenarios/test_base.py deleted file mode 100644 index a95e6bc86..000000000 --- a/tests/unit/benchmark/scenarios/test_base.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2017: Intel Ltd. -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import unittest - -from yardstick.benchmark.scenarios import base - - -class ScenarioTestCase(unittest.TestCase): - - def test_get_scenario_type(self): - scenario_type = 'dummy scenario' - - class DummyScenario(base.Scenario): - __scenario_type__ = scenario_type - - self.assertEqual(scenario_type, DummyScenario.get_scenario_type()) - - def test_get_scenario_type_not_defined(self): - class DummyScenario(base.Scenario): - pass - - self.assertEqual(str(None), DummyScenario.get_scenario_type()) - - def test_get_description(self): - docstring = """First line - Second line - Third line - """ - - class DummyScenario(base.Scenario): - __doc__ = docstring - - self.assertEqual(docstring.splitlines()[0], - DummyScenario.get_description()) - - def test_get_description_empty(self): - class DummyScenario(base.Scenario): - pass - - self.assertEqual(str(None), DummyScenario.get_description()) - - def test_get_types(self): - scenario_names = set( - scenario.__scenario_type__ for scenario in - base.Scenario.get_types() if hasattr(scenario, - '__scenario_type__')) - existing_scenario_class_names = { - 'Iperf3', 'CACHEstat', 'SpecCPU2006', 'Dummy', 'NSPerf', 'Parser'} - self.assertTrue(existing_scenario_class_names.issubset(scenario_names)) - - def test_get_cls_existing_scenario(self): - scenario_name = 'NSPerf' - scenario = base.Scenario.get_cls(scenario_name) - self.assertEqual(scenario_name, scenario.__scenario_type__) - - def test_get_cls_non_existing_scenario(self): - wrong_scenario_name = 'Non-existing-scenario' - with self.assertRaises(RuntimeError) as exc: - base.Scenario.get_cls(wrong_scenario_name) - self.assertEqual('No such scenario type %s' % wrong_scenario_name, - str(exc.exception)) - - def test_get_existing_scenario(self): - scenario_name = 'NSPerf' - scenario_module = ('yardstick.benchmark.scenarios.networking.' - 'vnf_generic.NetworkServiceTestCase') - self.assertEqual(scenario_module, base.Scenario.get(scenario_name)) - - def test_get_non_existing_scenario(self): - wrong_scenario_name = 'Non-existing-scenario' - with self.assertRaises(RuntimeError) as exc: - base.Scenario.get(wrong_scenario_name) - self.assertEqual('No such scenario type %s' % wrong_scenario_name, - str(exc.exception)) - - -class IterScenarioClassesTestCase(unittest.TestCase): - - def test_no_scenario_type_defined(self): - some_existing_scenario_class_names = [ - 'Iperf3', 'CACHEstat', 'SpecCPU2006', 'Dummy', 'NSPerf', 'Parser'] - scenario_types = [scenario.__scenario_type__ for scenario - in base._iter_scenario_classes()] - for class_name in some_existing_scenario_class_names: - self.assertIn(class_name, scenario_types) - - def test_scenario_type_defined(self): - some_existing_scenario_class_names = [ - 'Iperf3', 'CACHEstat', 'SpecCPU2006', 'Dummy', 'NSPerf', 'Parser'] - for class_name in some_existing_scenario_class_names: - scenario_class = next(base._iter_scenario_classes( - scenario_type=class_name)) - self.assertEqual(class_name, scenario_class.__scenario_type__) |