# 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. import argparse import os import subprocess import mock from six.moves import builtins import unittest from yardstick.cmd import NSBperf @mock.patch('six.moves.input', return_value='0') class TestHandler(unittest.TestCase): def test_handler(self, *args): subprocess.call = mock.Mock(return_value=0) self.assertRaises(SystemExit, NSBperf.sigint_handler) class TestYardstickNSCli(unittest.TestCase): def setUp(self): self._mock_print = mock.patch.object(builtins, 'print') self.mock_print = self._mock_print.start() self.addCleanup(self._stop_mocks) def _stop_mocks(self): self._mock_print.stop() def test___init__(self): yardstick_ns_cli = NSBperf.YardstickNSCli() self.assertIsNotNone(yardstick_ns_cli) def test_generate_final_report(self): yardstick_ns_cli = NSBperf.YardstickNSCli() test_case = "tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml" if os.path.isfile("/tmp/yardstick.out"): os.remove('/tmp/yardstick.out') self.assertIsNone(yardstick_ns_cli.generate_final_report(test_case)) def test_generate_kpi_results(self): yardstick_ns_cli = NSBperf.YardstickNSCli() tkey = "cpu" tgen = {"cpu": {"ipc": 0}} self.assertIsNone(yardstick_ns_cli.generate_kpi_results(tkey, tgen)) def test_generate_nfvi_results(self): yardstick_ns_cli = NSBperf.YardstickNSCli() nfvi = {"collect_stats": {"cpu": {"ipc": 0, "Hz": 2.6}}} self.assertIsNone(yardstick_ns_cli.generate_nfvi_results(nfvi)) def test_handle_list_options(self): yardstick_ns_cli = NSBperf.YardstickNSCli() CLI_PATH = os.path.dirname(os.path.realpath(__file__)) repo_dir = CLI_PATH + "/../../../" test_path = os.path.join(repo_dir, "../samples/vnf_samples/nsut/") args = {"list_vnfs": True, "list": False} self.assertRaises(SystemExit, yardstick_ns_cli.handle_list_options, args, test_path) args = {"list_vnfs": False, "list": True} self.assertRaises(SystemExit, yardstick_ns_cli.handle_list_options, args, test_path) def test_main(self): yardstick_ns_cli = NSBperf.YardstickNSCli() yardstick_ns_cli.parse_arguments = mock.Mock(return_value=0) yardstick_ns_cli.handle_list_options = mock.Mock(return_value=0) yardstick_ns_cli.terminate_if_less_options = mock.Mock(return_value=0) yardstick_ns_cli.run_test = mock.Mock(return_value=0) self.assertIsNone(yardstick_ns_cli.main()) @mock.patch.object(argparse.ArgumentParser, 'parse_args') def test_parse_arguments(self, mock_parse): class DummyArgs(object): var1 = 'value1' mock_parse.return_value = DummyArgs yardstick_ns_cli = NSBperf.YardstickNSCli() self.assertIn('var1', yardstick_ns_cli.parse_arguments()) def test_run_test(self): cur_dir = os.getcwd() CLI_PATH = os.path.dirname(os.path.realpath(__file__)) YARDSTICK_REPOS_DIR = os.path.join(CLI_PATH + "/../../") test_path = os.path.join(YARDSTICK_REPOS_DIR, "../samples/vnf_samples/nsut/") yardstick_ns_cli = NSBperf.YardstickNSCli() subprocess.check_output = mock.Mock(return_value=0) args = {"vnf": "vpe", "test": "tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml"} self.assertIsNone(yardstick_ns_cli.run_test(args, test_path)) os.chdir(cur_dir) args = {"vnf": "vpe1"} self.assertIsNone(yardstick_ns_cli.run_test(args, test_path)) os.chdir(cur_dir) args = {"vnf": "vpe", "test": "tc_baremetal_rfc2544_ipv4_1flow_1518B.yaml."} self.assertIsNone(yardstick_ns_cli.run_test(args, test_path)) os.chdir(cur_dir) args = [] self.assertIsNone(yardstick_ns_cli.run_test(args, test_path)) os.chdir(cur_dir) def test_terminate_if_less_options(self): yardstick_ns_cli = NSBperf.YardstickNSCli() args = {"vnf": False} self.assertRaises(SystemExit, yardstick_ns_cli.terminate_if_less_options, args) def test_validate_input(self): yardstick_ns_cli = NSBperf.YardstickNSCli() self.assertEqual(1, yardstick_ns_cli.validate_input("", 4)) NSBperf.input = lambda _: 'yes' self.assertEqual(1, yardstick_ns_cli.validate_input(5, 4)) subprocess.call = mock.Mock(return_value=0) self.assertEqual(0, yardstick_ns_cli.validate_input(2, 4)) subprocess.call = mock.Mock(return_value=0)