diff options
25 files changed, 106 insertions, 68 deletions
diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 35d16c7e..a6d457dd 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -2,7 +2,7 @@ nodaemon=true [program:qtip_server] -command=bash -c "cd $REPOS_DIR/qtip&&python restful_server/qtip_server.py" +command=bash -c "cd $REPOS_DIR/qtip&&python qtip/api/qtip_server.py" numprocs=1 autostart=true autorestart=true diff --git a/docs/userguide/_02-network.rst b/docs/userguide/_02-network.rst index 18f328ae..60604bf3 100644 --- a/docs/userguide/_02-network.rst +++ b/docs/userguide/_02-network.rst @@ -25,7 +25,7 @@ One of the compute nodes is used as a server and the other as a client. The client pushes traffic to the server for a duration specified by the user in the configuration file for Iperf3. -These files can be found in the "test_plan/{POD}/network/" directory. +These files can be found in the "benchmarks/test_plan/{POD}/network/" directory. The bandwidth is limited by the physical link layer speed connecting the two compute nodes. The result file includes the b/s bandwidth and the CPU usage for both the client and server. diff --git a/docs/userguide/introduction.rst b/docs/userguide/introduction.rst index 0c8e1665..46bd37e4 100644 --- a/docs/userguide/introduction.rst +++ b/docs/userguide/introduction.rst @@ -18,7 +18,7 @@ QTIP Directory structure The QTIP directory has been sectioned off into multiple folders to facilitate segmenting information into relevant categories. The folders that concern - the end user are `test_plan/` and `benchmarks/suite/`. + the end user are `benchmarks/test_plan/` and `benchmarks/suite/`. **test_plan/:** @@ -315,7 +315,7 @@ Commands to run the Framework: ------------------------------ In order to start QTIP on the default lab please use the following commands (asssuming your installer -is 'fuel' or 'compass', you use the config files in the test_plan/default/ directory and listed the +is 'fuel' or 'compass', you use the config files in the benchmarks/test_plan/default/ directory and listed the intended suite in the benchmarks/suite/<RELEVANT-SUITE-FILE>): First step is to export the necessary information to the environment and generate QTIP key pair. diff --git a/opnfv-creds.sh b/opnfv-creds.sh deleted file mode 100644 index 54d5aa3a..00000000 --- a/opnfv-creds.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -export LC_ALL=C -export OS_NO_CACHE='true' -export OS_TENANT_NAME='admin' -export OS_USERNAME='admin' -export OS_PASSWORD='admin' -export OS_AUTH_URL='http://172.18.1.5:5000/v2.0' -export OS_AUTH_STRATEGY='keystone' -export OS_REGION_NAME='RegionOne' -export CINDER_ENDPOINT_TYPE='internalURL' -export GLANCE_ENDPOINT_TYPE='internalURL' -export KEYSTONE_ENDPOINT_TYPE='internalURL' -export NOVA_ENDPOINT_TYPE='internalURL' -export NEUTRON_ENDPOINT_TYPE='internalURL' -export OS_ENDPOINT_TYPE='internalURL' -export MURANO_REPO_URL='http://storage.apps.openstack.org/' diff --git a/opt/servers/inventory b/opt/servers/inventory index 74c04c42..b5d66985 100644 --- a/opt/servers/inventory +++ b/opt/servers/inventory @@ -1,4 +1,4 @@ -qtip-dev ansible_host=qtip.openzero.net +qtip-dev ansible_host=dev.qtip.io [elk-servers] qtip-dev @@ -7,7 +7,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -from utils.cli import Cli +from qtip.utils.cli import Cli def main(): diff --git a/qtip/__init__.py b/qtip/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/qtip/__init__.py diff --git a/qtip/api/qtip_server.py b/qtip/api/qtip_server.py index 537b2c05..9b9dd633 100644 --- a/qtip/api/qtip_server.py +++ b/qtip/api/qtip_server.py @@ -12,8 +12,8 @@ from flask_restful_swagger import swagger import threading from copy import copy import db -import utils.args_handler as args_handler -import restful_server.result_handler as result_handler +import qtip.utils.args_handler as args_handler +import qtip.api.result_handler as result_handler app = Flask(__name__) diff --git a/qtip/api/result_handler.py b/qtip/api/result_handler.py index 200330cb..de91cd2c 100644 --- a/qtip/api/result_handler.py +++ b/qtip/api/result_handler.py @@ -8,7 +8,7 @@ ############################################################################## import json import scripts.ref_results.suite_result as suite_result -import dashboard.pushtoDB as push_to_db +import qtip.utils.dashboard.pushtoDB as push_to_db def dump_suite_result(suite_name): diff --git a/qtip/cli/commands/ansible.py b/qtip/cli/commands/cmd_ansible.py index 001185a3..001185a3 100644 --- a/qtip/cli/commands/ansible.py +++ b/qtip/cli/commands/cmd_ansible.py diff --git a/qtip/cli/commands/perftest.py b/qtip/cli/commands/cmd_perftest.py index 0eb6d062..0eb6d062 100644 --- a/qtip/cli/commands/perftest.py +++ b/qtip/cli/commands/cmd_perftest.py diff --git a/qtip/cli/commands/suite.py b/qtip/cli/commands/cmd_suite.py index 757f11a1..757f11a1 100644 --- a/qtip/cli/commands/suite.py +++ b/qtip/cli/commands/cmd_suite.py diff --git a/qtip/cli/commands/cmd_version.py b/qtip/cli/commands/cmd_version.py new file mode 100644 index 00000000..b8779a72 --- /dev/null +++ b/qtip/cli/commands/cmd_version.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 click + + +class Version: + + def __init__(self): + pass + + def list(self): + click.echo("Lists all the different versions") + + def install(self, tag): + click.echo("Install: %s" % tag) + + def uninstall(self, tag): + click.echo("Uninstall: %s" % tag) + + +@click.group() +def cli(): + pass + + +@cli.group() +def version(): + pass + +_version = Version() + + +@version.command('list', help="List all the available QTIP versions.") +def list(): + _version.list() + + +@version.command('install', help="Install the specified QTIP version.") +@click.argument('tag') +def install(tag): + _version.install(tag) + + +@version.command('uninstall', help="Install the specified QTIP version.") +@click.argument('tag') +def uninstall(tag): + _version.uninstall(tag) diff --git a/qtip/utils/args_handler.py b/qtip/utils/args_handler.py index 879fd204..513309ab 100644 --- a/qtip/utils/args_handler.py +++ b/qtip/utils/args_handler.py @@ -21,13 +21,13 @@ def get_files_in_suite(suite_name, case_type='all'): def get_files_in_test_plan(lab, suite_name, case_type='all'): - test_case_all = os.listdir('./test_plan/{0}/{1}'.format(lab, suite_name)) + test_case_all = os.listdir('benchmarks/test_plan/{0}/{1}'.format(lab, suite_name)) return test_case_all if case_type == 'all' else \ filter(lambda x: case_type in x, test_case_all) def get_benchmark_path(lab, suit, benchmark): - return './test_plan/{0}/{1}/{2}'.format(lab, suit, benchmark) + return 'benchmarks/test_plan/{0}/{1}/{2}'.format(lab, suit, benchmark) def check_suite(suite_name): @@ -35,11 +35,11 @@ def check_suite(suite_name): def check_lab_name(lab_name): - return True if os.path.isdir('test_plan/' + lab_name) else False + return True if os.path.isdir('benchmarks/test_plan/' + lab_name) else False def check_benchmark_name(lab, file, benchmark): - return os.path.isfile('test_plan/' + lab + '/' + file + '/' + benchmark) + return os.path.isfile('benchmarks/test_plan/' + lab + '/' + file + '/' + benchmark) def _get_f_name(test_case_path): diff --git a/qtip/utils/cli.py b/qtip/utils/cli.py index def70061..c0a14214 100644 --- a/qtip/utils/cli.py +++ b/qtip/utils/cli.py @@ -23,7 +23,7 @@ class Cli: parser = argparse.ArgumentParser() parser.add_argument('-l ', '--lab', required=True, help='Name of Lab ' 'on which being tested, These can' - 'be found in the test_plan/ directory. Please ' + 'be found in the benchmarks/test_plan/ directory. Please ' 'ensure that you have edited the respective files ' 'before using them. For testing other than through Jenkins' ' The user should list default after -l . all the fields in' @@ -49,7 +49,7 @@ class Cli: sys.exit(1) if not args_handler.check_lab_name(args.lab): - logger.error("You have specified a lab that is not present under test_plan/.\ + logger.error("You have specified a lab that is not present under benchmarks/test_plan/.\ Please enter correct file. If unsure how to proceed, use -l default.") sys.exit(1) suite = args.file diff --git a/qtip/utils/dashboard/pushtoDB.py b/qtip/utils/dashboard/pushtoDB.py index e6a4d239..b901f542 100644 --- a/qtip/utils/dashboard/pushtoDB.py +++ b/qtip/utils/dashboard/pushtoDB.py @@ -3,7 +3,7 @@ import json import datetime import os import sys -from utils import logger_utils +from qtip.utils import logger_utils logger = logger_utils.QtipLogger('push_db').get diff --git a/scripts/ref_results/suite_result.py b/scripts/ref_results/suite_result.py index 217181f9..66213391 100644 --- a/scripts/ref_results/suite_result.py +++ b/scripts/ref_results/suite_result.py @@ -9,7 +9,7 @@ import json import importlib import sys -from utils import logger_utils +from qtip.utils import logger_utils from os.path import expanduser logger = logger_utils.QtipLogger('suite_result').get diff --git a/tests/ansible_api_test.py b/tests/ansible_api_test.py index a259c422..6b1afb44 100644 --- a/tests/ansible_api_test.py +++ b/tests/ansible_api_test.py @@ -6,7 +6,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -from utils.ansible_api import AnsibleApi +from qtip.utils.ansible_api import AnsibleApi class TestClass: diff --git a/tests/args_handler_test.py b/tests/args_handler_test.py index 625a42f5..b67fd993 100644 --- a/tests/args_handler_test.py +++ b/tests/args_handler_test.py @@ -8,28 +8,28 @@ ############################################################################## import pytest import mock -import utils.args_handler +import qtip.utils.args_handler class TestClass: @pytest.mark.parametrize("test_input, expected", [ - (['fuel', '/home', './test_plan/default/network/iperf_bm.yaml'], + (['fuel', '/home', 'benchmarks/test_plan/default/network/iperf_bm.yaml'], ['fuel', '/home', "iperf", [('1-server', ['10.20.0.23']), ('2-host', ['10.20.0.24'])], "iperf_bm.yaml", [('duration', 20), ('protocol', 'tcp'), ('bandwidthGbps', 10)], [("10.20.0.24", [None]), ("10.20.0.23", [None])], {}]) ]) - @mock.patch('utils.args_handler.Env_setup.call_ping_test') - @mock.patch('utils.args_handler.Env_setup.call_ssh_test') - @mock.patch('utils.args_handler.Env_setup.update_ansible') - @mock.patch('utils.args_handler.SpawnVM') - @mock.patch('utils.args_handler.Driver.drive_bench') + @mock.patch('qtip.utils.args_handler.Env_setup.call_ping_test') + @mock.patch('qtip.utils.args_handler.Env_setup.call_ssh_test') + @mock.patch('qtip.utils.args_handler.Env_setup.update_ansible') + @mock.patch('qtip.utils.args_handler.SpawnVM') + @mock.patch('qtip.utils.args_handler.Driver.drive_bench') def test_prepare_and_run_benchmark_successful(self, mock_driver, mock_sqawn_vm, mock_env_setup_ping, mock_env_setup_ssh, mock_update_ansible, test_input, expected): mock_ips = mock.Mock(return_value=["10.20.0.23", "10.20.0.24"]) - utils.args_handler.Env_setup.fetch_compute_ips = mock_ips - utils.args_handler.prepare_and_run_benchmark(test_input[0], test_input[1], test_input[2]) + qtip.utils.args_handler.Env_setup.fetch_compute_ips = mock_ips + qtip.utils.args_handler.prepare_and_run_benchmark(test_input[0], test_input[1], test_input[2]) call = mock_driver.call_args call_args, call_kwargs = call assert sorted(map(sorted, call_args)) == sorted(map(sorted, expected)) diff --git a/tests/cli_test.py b/tests/cli_test.py index 255c2a37..86dd6b98 100644 --- a/tests/cli_test.py +++ b/tests/cli_test.py @@ -1,7 +1,7 @@ import pytest import mock import os -from func.cli import Cli +from qtip.utils.cli import Cli from os.path import expanduser @@ -10,7 +10,7 @@ class TestClass: (['-l', 'zte', '-f', - 'compute'], "You have specified a lab that is not present under test_plan"), + 'compute'], "You have specified a lab that is not present under benchmarks/test_plan"), (['-l', 'default', '-f', @@ -30,10 +30,10 @@ class TestClass: (['-l', 'default', '-f', - 'storage'], [('fuel', '/home', './test_plan/default/storage/fio_bm.yaml'), - ('fuel', '/home', './test_plan/default/storage/fio_vm.yaml')]) + 'storage'], [('fuel', '/home', 'benchmarks/test_plan/default/storage/fio_bm.yaml'), + ('fuel', '/home', 'benchmarks/test_plan/default/storage/fio_vm.yaml')]) ]) - @mock.patch('func.cli.args_handler.prepare_and_run_benchmark') + @mock.patch('qtip.utils.cli.args_handler.prepare_and_run_benchmark') def test_cli_successful(self, mock_args_handler, test_input, expected): k = mock.patch.dict(os.environ, {'INSTALLER_TYPE': 'fuel', 'PWD': '/home'}) k.start() diff --git a/tests/create_zones_test.py b/tests/create_zones_test.py index 0f57581d..8b1e97cc 100644 --- a/tests/create_zones_test.py +++ b/tests/create_zones_test.py @@ -2,7 +2,7 @@ import pytest import mock from mock import Mock, MagicMock import os -from utils.create_zones import AvailabilityZone +from qtip.utils.create_zones import AvailabilityZone return_list = [] @@ -57,13 +57,13 @@ class TestClass: 'add_host:compute1:10.20.0.4', 'create:compute2:compute2', 'add_host:compute2:10.20.0.5']), - (['compute1', 'compute1'], + (['compute1'], ['create:compute1:compute1', 'add_host:compute1:10.20.0.4']), ]) - @mock.patch('utils.create_zones.client', autospec=True) - @mock.patch('utils.create_zones.v2', autospec=True) - @mock.patch('utils.create_zones.session') + @mock.patch('qtip.utils.create_zones.client', autospec=True) + @mock.patch('qtip.utils.create_zones.v2', autospec=True) + @mock.patch('qtip.utils.create_zones.session') def test_create_zones_success(self, mock_keystone_session, mock_keystone_v2, mock_nova_client, test_input, expected, capfd): nova_obj = NovaMock() mock_nova_client.Client.return_value = nova_obj() @@ -88,9 +88,9 @@ class TestClass: ([], []), ]) - @mock.patch('utils.create_zones.client', autospec=True) - @mock.patch('utils.create_zones.v2', autospec=True) - @mock.patch('utils.create_zones.session') + @mock.patch('qtip.utils.create_zones.client', autospec=True) + @mock.patch('qtip.utils.create_zones.v2', autospec=True) + @mock.patch('qtip.utils.create_zones.session') def test_clean_all_aggregates(self, mock_keystone_session, mock_keystone_v2, mock_nova_client, test_input, expected, capfd): global return_list return_list = test_input diff --git a/tests/driver_test.py b/tests/driver_test.py index d3025bd2..432ce1ae 100644 --- a/tests/driver_test.py +++ b/tests/driver_test.py @@ -1,6 +1,6 @@ import pytest import mock -from utils.driver import Driver +from qtip.utils.driver import Driver from os.path import expanduser HOME_DIR = expanduser('~') @@ -65,8 +65,8 @@ class TestClass: 'bandwidthGbps': 0, "role": "2-host"}]) ]) - @mock.patch('utils.driver.AnsibleApi.execute_playbook') - @mock.patch('utils.driver.AnsibleApi.get_detail_playbook_stats') + @mock.patch('qtip.utils.driver.AnsibleApi.execute_playbook') + @mock.patch('qtip.utils.driver.AnsibleApi.get_detail_playbook_stats') def test_driver_success(self, mock_stats, mock_ansible, test_input, expected): mock_ansible.return_value = True mock_stats.return_value = [(u'10.20.6.14', {'unreachable': 0, diff --git a/tests/env_setup_test.py b/tests/env_setup_test.py index 07f426e1..e28c6a18 100644 --- a/tests/env_setup_test.py +++ b/tests/env_setup_test.py @@ -9,7 +9,7 @@ import pytest import filecmp -from utils.env_setup import Env_setup +from qtip.utils.env_setup import Env_setup import mock diff --git a/tests/qtip_server_test.py b/tests/qtip_server_test.py index 81bb302b..96544c95 100644 --- a/tests/qtip_server_test.py +++ b/tests/qtip_server_test.py @@ -1,4 +1,4 @@ -import restful_server.qtip_server as server +import qtip.api.qtip_server as server import pytest import json import mock @@ -66,7 +66,7 @@ class TestClass: 'state_detail': [{u'state': u'finished', u'benchmark': u'dhrystone_vm.yaml'}], 'result': 0}) ]) - @mock.patch('restful_server.qtip_server.args_handler.prepare_and_run_benchmark') + @mock.patch('qtip.api.qtip_server.args_handler.prepare_and_run_benchmark') def test_post_get_delete_job_successful(self, mock_args_handler, app_client, body, expected): mock_args_handler.return_value = {'result': 0, 'detail': {'host': [(u'10.20.6.14', {'unreachable': 0, @@ -107,7 +107,7 @@ class TestClass: ['job_id', 'It already has one job running now!']) ]) - @mock.patch('restful_server.qtip_server.args_handler.prepare_and_run_benchmark', + @mock.patch('qtip.api.qtip_server.args_handler.prepare_and_run_benchmark', side_effect=[side_effect_sleep(0.5), side_effect_pass]) def test_post_two_jobs_unsuccessful(self, mock_args_hanler, app_client, body, expected): reply_1 = app_client.post("/api/v1.0/jobs", data=body[0]) diff --git a/tests/spawn_vm_test.py b/tests/spawn_vm_test.py index c0d87cac..ba237378 100644 --- a/tests/spawn_vm_test.py +++ b/tests/spawn_vm_test.py @@ -2,7 +2,7 @@ import pytest import mock from mock import Mock, MagicMock import os -from utils.spawn_vm import SpawnVM +from qtip.utils.spawn_vm import SpawnVM class KeystoneMock(MagicMock): @@ -40,10 +40,10 @@ class TestClass: 'role': ['1-server', '2-host']}, [('172.10.0.154', '')]), ]) - @mock.patch('utils.spawn_vm.Env_setup') - @mock.patch('utils.spawn_vm.AvailabilityZone') - @mock.patch('utils.spawn_vm.keystoneclient.v2_0', autospec=True) - @mock.patch('utils.spawn_vm.heatclient.client', autospec=True) + @mock.patch('qtip.utils.spawn_vm.Env_setup') + @mock.patch('qtip.utils.spawn_vm.AvailabilityZone') + @mock.patch('qtip.utils.spawn_vm.keystoneclient.v2_0', autospec=True) + @mock.patch('qtip.utils.spawn_vm.heatclient.client', autospec=True) def test_create_zones_success(self, mock_heat, mock_keystone, mock_zone, mock_setup, test_input, expected): open('./config/QtipKey.pub', 'a').close() |