diff options
39 files changed, 3037 insertions, 336 deletions
diff --git a/ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml b/ansible/roles/cpu_pin_local_teardown/tasks/main.yaml index 29475421d..29475421d 100644 --- a/ansible/roles/cpu_pin_local_teardowm/tasks/main.yaml +++ b/ansible/roles/cpu_pin_local_teardown/tasks/main.yaml diff --git a/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml b/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml index 2a456ab9a..2278525eb 100644 --- a/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml +++ b/ansible/roles/vcpu_pin_set_setup/tasks/main.yaml @@ -18,4 +18,4 @@ lineinfile: dest: /etc/nova/nova.conf insertafter: 'DEFAULT' - line: 'vcpu_pin_set={{cpu_set}} + line: 'vcpu_pin_set={{cpu_set}}' diff --git a/api/api-prepare.sh b/api/api-prepare.sh index 5cc65c959..7632d9da9 100755 --- a/api/api-prepare.sh +++ b/api/api-prepare.sh @@ -8,6 +8,36 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +: ${YARDSTICK_REPO_DIR:='/home/opnfv/repos/yardstick'} + +# generate uwsgi config file +mkdir -p /etc/yardstick +uwsgi_config='/etc/yardstick/yardstick.ini' +if [[ ! -e "${uwsgi_config}" ]];then + + cat << EOF > "${uwsgi_config}" +[uwsgi] +master = true +debug = true +chdir = ${YARDSTICK_REPO_DIR}/api +module = server +plugins = python +processes = 10 +threads = 5 +async = true +max-requests = 5000 +chmod-socket = 666 +callable = app_wrapper +enable-threads = true +close-on-exec = 1 +daemonize= /var/log/yardstick/uwsgi.log +socket = /var/run/yardstick.sock +EOF + if [[ "${YARDSTICK_VENV}" ]];then + echo "virtualenv = ${YARDSTICK_VENV}" >> "${uwsgi_config}" + fi +fi + # nginx config nginx_config='/etc/nginx/conf.d/yardstick.conf' @@ -24,7 +54,6 @@ server { } } EOF -echo "daemon off;" >> /etc/nginx/nginx.conf fi # nginx service start when boot @@ -42,7 +71,7 @@ autorestart = true [program:yardstick_uwsgi] user = root -directory = /home/opnfv/repos/yardstick/api +directory = /etc/yardstick command = uwsgi -i yardstick.ini autorestart = true EOF diff --git a/api/conf.py b/api/conf.py deleted file mode 100644 index a4f332533..000000000 --- a/api/conf.py +++ /dev/null @@ -1,28 +0,0 @@ -############################################################################## -# 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 -############################################################################## -from __future__ import absolute_import -from pyroute2 import IPDB - - -# configuration for influxdb -with IPDB() as ip: - GATEWAY_IP = ip.routes['default'].gateway -PORT = 8086 - -TEST_CASE_PATH = '../tests/opnfv/test_cases/' - -SAMPLE_PATH = '../samples/' - -TEST_CASE_PRE = 'opnfv_yardstick_' - -TEST_SUITE_PATH = '../tests/opnfv/test_suites/' - -TEST_SUITE_PRE = 'opnfv_' - -OUTPUT_CONFIG_FILE_PATH = '/etc/yardstick/yardstick.conf' diff --git a/api/resources/env_action.py b/api/resources/env_action.py index 9d1686a1d..f6f43e5ac 100644 --- a/api/resources/env_action.py +++ b/api/resources/env_action.py @@ -19,17 +19,17 @@ import glob from six.moves import configparser from oslo_serialization import jsonutils +from docker import Client -from api import conf as api_conf from api.database.handler import AsyncTaskHandler from api.utils import influx from api.utils.common import result_handler -from docker import Client -from yardstick.common import constants as config +from yardstick.common import constants as consts from yardstick.common import utils as yardstick_utils from yardstick.common import openstack_utils from yardstick.common.httpClient import HttpClient + logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) @@ -46,12 +46,12 @@ def createGrafanaContainer(args): def _create_grafana(task_id): _create_task(task_id) - client = Client(base_url=config.DOCKER_URL) + client = Client(base_url=consts.DOCKER_URL) try: - if not _check_image_exist(client, '%s:%s' % (config.GRAFANA_IMAGE, - config.GRAFANA_TAGS)): - client.pull(config.GRAFANA_IMAGE, config.GRAFANA_TAGS) + image = '{}:{}'.format(consts.GRAFANA_IMAGE, consts.GRAFANA_TAG) + if not _check_image_exist(client, image): + client.pull(consts.GRAFANA_IMAGE, consts.GRAFANA_TAG) _create_grafana_container(client) @@ -64,13 +64,12 @@ def _create_grafana(task_id): _update_task_status(task_id) except Exception as e: _update_task_error(task_id, str(e)) - logger.debug('Error: %s', e) + logger.exception('Error: %s', e) def _create_dashboard(): - url = 'http://admin:admin@%s:3000/api/dashboards/db' % api_conf.GATEWAY_IP - path = os.path.join(config.YARDSTICK_REPOS_DIR, 'dashboard', - '*dashboard.json') + url = 'http://admin:admin@%s:3000/api/dashboards/db' % consts.GRAFANA_IP + path = os.path.join(consts.REPOS_DIR, 'dashboard', '*dashboard.json') for i in sorted(glob.iglob(path)): with open(i) as f: @@ -79,12 +78,12 @@ def _create_dashboard(): def _create_data_source(): - url = 'http://admin:admin@%s:3000/api/datasources' % api_conf.GATEWAY_IP + url = 'http://admin:admin@%s:3000/api/datasources' % consts.GRAFANA_IP data = { "name": "yardstick", "type": "influxdb", "access": "proxy", - "url": "http://%s:8086" % api_conf.GATEWAY_IP, + "url": "http://%s:8086" % consts.INFLUXDB_IP, "password": "root", "user": "root", "database": "yardstick", @@ -101,8 +100,8 @@ def _create_grafana_container(client): port_bindings = {k: k for k in ports} host_config = client.create_host_config(port_bindings=port_bindings) - container = client.create_container(image='%s:%s' % (config.GRAFANA_IMAGE, - config.GRAFANA_TAGS), + container = client.create_container(image='%s:%s' % (consts.GRAFANA_IMAGE, + consts.GRAFANA_TAG), ports=ports, detach=True, tty=True, @@ -126,14 +125,14 @@ def createInfluxDBContainer(args): def _create_influxdb(task_id): _create_task(task_id) - client = Client(base_url=config.DOCKER_URL) + client = Client(base_url=consts.DOCKER_URL) try: _change_output_to_influxdb() - if not _check_image_exist(client, '%s:%s' % (config.INFLUXDB_IMAGE, - config.INFLUXDB_TAG)): - client.pull(config.INFLUXDB_IMAGE, tag=config.INFLUXDB_TAG) + if not _check_image_exist(client, '%s:%s' % (consts.INFLUXDB_IMAGE, + consts.INFLUXDB_TAG)): + client.pull(consts.INFLUXDB_IMAGE, tag=consts.INFLUXDB_TAG) _create_influxdb_container(client) @@ -153,8 +152,8 @@ def _create_influxdb_container(client): port_bindings = {k: k for k in ports} host_config = client.create_host_config(port_bindings=port_bindings) - container = client.create_container(image='%s:%s' % (config.INFLUXDB_IMAGE, - config.INFLUXDB_TAG), + container = client.create_container(image='%s:%s' % (consts.INFLUXDB_IMAGE, + consts.INFLUXDB_TAG), ports=ports, detach=True, tty=True, @@ -165,24 +164,26 @@ def _create_influxdb_container(client): def _config_influxdb(): try: client = influx.get_data_db_client() - client.create_user(config.USER, config.PASSWORD, config.DATABASE) - client.create_database(config.DATABASE) + client.create_user(consts.INFLUXDB_USER, + consts.INFLUXDB_PASS, + consts.INFLUXDB_DB_NAME) + client.create_database(consts.INFLUXDB_DB_NAME) logger.info('Success to config influxDB') except Exception as e: logger.debug('Failed to config influxDB: %s', e) def _change_output_to_influxdb(): - yardstick_utils.makedirs(config.YARDSTICK_CONFIG_DIR) + yardstick_utils.makedirs(consts.CONF_DIR) parser = configparser.ConfigParser() - parser.read(config.YARDSTICK_CONFIG_SAMPLE_FILE) + parser.read(consts.CONF_SAMPLE_FILE) parser.set('DEFAULT', 'dispatcher', 'influxdb') parser.set('dispatcher_influxdb', 'target', - 'http://%s:8086' % api_conf.GATEWAY_IP) + 'http://%s:8086' % consts.INFLUXDB_IP) - with open(config.YARDSTICK_CONFIG_FILE, 'w') as f: + with open(consts.CONF_FILE, 'w') as f: parser.write(f) @@ -213,7 +214,7 @@ def _prepare_env_daemon(task_id): _create_directories() - rc_file = config.OPENSTACK_RC_FILE + rc_file = consts.OPENRC if not _already_source_openrc(): _get_remote_rc_file(rc_file, installer_ip, installer_type) @@ -240,12 +241,12 @@ def _check_variables(installer_ip, installer_type): if installer_type == 'undefined': raise SystemExit('Missing INSTALLER_TYPE') - elif installer_type not in config.INSTALLERS: + elif installer_type not in consts.INSTALLERS: raise SystemExit('INSTALLER_TYPE is not correct') def _create_directories(): - yardstick_utils.makedirs(config.YARDSTICK_CONFIG_DIR) + yardstick_utils.makedirs(consts.CONF_DIR) def _source_file(rc_file): @@ -254,7 +255,7 @@ def _source_file(rc_file): def _get_remote_rc_file(rc_file, installer_ip, installer_type): - os_fetch_script = os.path.join(config.RELENG_DIR, config.OS_FETCH_SCRIPT) + os_fetch_script = os.path.join(consts.RELENG_DIR, consts.FETCH_SCRIPT) try: cmd = [os_fetch_script, '-d', rc_file, '-i', installer_type, @@ -287,17 +288,15 @@ def _append_external_network(rc_file): def _clean_images(): - cmd = [config.CLEAN_IMAGES_SCRIPT] - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - cwd=config.YARDSTICK_REPOS_DIR) + cmd = [consts.CLEAN_IMAGES_SCRIPT] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=consts.REPOS_DIR) output = p.communicate()[0] logger.debug('The result is: %s', output) def _load_images(): - cmd = [config.LOAD_IMAGES_SCRIPT] - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - cwd=config.YARDSTICK_REPOS_DIR) + cmd = [consts.LOAD_IMAGES_SCRIPT] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=consts.REPOS_DIR) output = p.communicate()[0] logger.debug('The result is: %s', output) diff --git a/api/resources/release_action.py b/api/resources/release_action.py index c5aa20afc..9016d4aa2 100644 --- a/api/resources/release_action.py +++ b/api/resources/release_action.py @@ -11,8 +11,8 @@ import uuid import os import logging -from api import conf from api.utils import common as common_utils +from yardstick.common import constants as consts logger = logging.getLogger(__name__) @@ -24,8 +24,8 @@ def runTestCase(args): except KeyError: return common_utils.error_handler('Lack of testcase argument') - testcase_name = conf.TEST_CASE_PRE + testcase - testcase = os.path.join(conf.TEST_CASE_PATH, testcase_name + '.yaml') + testcase_name = consts.TESTCASE_PRE + testcase + testcase = os.path.join(consts.TESTCASE_DIR, testcase_name + '.yaml') task_id = str(uuid.uuid4()) diff --git a/api/resources/samples_action.py b/api/resources/samples_action.py index 490e48b25..3093864e0 100644 --- a/api/resources/samples_action.py +++ b/api/resources/samples_action.py @@ -11,8 +11,8 @@ import uuid import os import logging -from api import conf from api.utils import common as common_utils +from yardstick.common import constants as consts logger = logging.getLogger(__name__) @@ -24,7 +24,7 @@ def runTestCase(args): except KeyError: return common_utils.error_handler('Lack of testcase argument') - testcase = os.path.join(conf.SAMPLE_PATH, testcase_name + '.yaml') + testcase = os.path.join(consts.SAMPLE_CASE_DIR, testcase_name + '.yaml') task_id = str(uuid.uuid4()) diff --git a/api/urls.py b/api/urls.py index 3ccb67dbc..b9ddd4c72 100644 --- a/api/urls.py +++ b/api/urls.py @@ -7,6 +7,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## from __future__ import absolute_import + from api import views from api.utils.common import Url diff --git a/api/utils/common.py b/api/utils/common.py index 3e9bf8f8b..f8b0d40ba 100644 --- a/api/utils/common.py +++ b/api/utils/common.py @@ -11,10 +11,10 @@ import collections import logging from flask import jsonify +import six from api.utils.daemonthread import DaemonThread from yardstick.cmd.cli import YardstickCLI -import six logger = logging.getLogger(__name__) diff --git a/api/utils/daemonthread.py b/api/utils/daemonthread.py index 0049834eb..3d5625547 100644 --- a/api/utils/daemonthread.py +++ b/api/utils/daemonthread.py @@ -11,7 +11,7 @@ import threading import os import errno -from api import conf +from yardstick.common import constants as consts from api.database.handlers import TasksHandler @@ -43,7 +43,7 @@ class DaemonThread(threading.Thread): def _handle_testsuite_file(task_id): try: - os.remove(os.path.join(conf.TEST_SUITE_PATH, task_id + '.yaml')) + os.remove(os.path.join(consts.TESTSUITE_DIR, task_id + '.yaml')) except OSError as e: if e.errno != errno.ENOENT: raise diff --git a/api/utils/influx.py b/api/utils/influx.py index 08996b9c9..9bc6e9abe 100644 --- a/api/utils/influx.py +++ b/api/utils/influx.py @@ -14,7 +14,7 @@ import six.moves.configparser as ConfigParser from six.moves.urllib.parse import urlsplit from influxdb import InfluxDBClient -from api import conf +from yardstick.common import constants as consts logger = logging.getLogger(__name__) @@ -22,7 +22,7 @@ logger = logging.getLogger(__name__) def get_data_db_client(): parser = ConfigParser.ConfigParser() try: - parser.read(conf.OUTPUT_CONFIG_FILE_PATH) + parser.read(consts.CONF_FILE) if parser.get('DEFAULT', 'dispatcher') != 'influxdb': raise RuntimeError @@ -35,10 +35,10 @@ def get_data_db_client(): def _get_client(parser): ip = _get_ip(parser.get('dispatcher_influxdb', 'target')) - username = parser.get('dispatcher_influxdb', 'username') + user = parser.get('dispatcher_influxdb', 'username') password = parser.get('dispatcher_influxdb', 'password') db_name = parser.get('dispatcher_influxdb', 'db_name') - return InfluxDBClient(ip, conf.PORT, username, password, db_name) + return InfluxDBClient(ip, consts.INFLUXDB_PORT, user, password, db_name) def _get_ip(url): diff --git a/api/yardstick.ini b/api/yardstick.ini deleted file mode 100644 index d2e8956e2..000000000 --- a/api/yardstick.ini +++ /dev/null @@ -1,16 +0,0 @@ -[uwsgi] -master = true -debug = true -chdir = /home/opnfv/repos/yardstick/api -module = server -plugins = python -processes = 10 -threads = 5 -async = true -max-requests = 5000 -chmod-socket = 666 -callable = app_wrapper -enable-threads = true -close-on-exec = 1 -daemonize= /var/log/yardstick/uwsgi.log -socket = /var/run/yardstick.sock diff --git a/dashboard/KVMFORNFV-Packet-Forwarding b/dashboard/KVMFORNFV-Packet-Forwarding new file mode 100644 index 000000000..41f8c73e4 --- /dev/null +++ b/dashboard/KVMFORNFV-Packet-Forwarding @@ -0,0 +1,2636 @@ +{ + "id": 50, + "title": "KVMFORNFV-Packet-Forwarding", + "originalTitle": "KVMFORNFV-Packet-Forwarding", + "tags": [ + "KVMFORNFV" + ], + "style": "dark", + "timezone": "browser", + "editable": true, + "hideControls": false, + "sharedCrosshair": false, + "rows": [ + { + "collapse": false, + "editable": true, + "height": 35, + "panels": [ + { + "content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><center>OPNFV_KVMFORNFV_Packet_Forwarding - Real time benchmark</center> </a></h5>\n<center>\n<p>Packet forwarding latency tests measures the time taken by a Packet generated by the traffic generator to travel from the originating device through the network to the destination device.\nFor more information see <a style=\"color:#31A7D3\"; href=\"http://artifacts.opnfv.org/kvmfornfv/docs/index.html#document-release/userguide/packet_forwarding.userguide\">Packet_Forwarding</a></p>\n</center>\n\n\n", + "editable": true, + "error": false, + "id": 22, + "links": [], + "mode": "html", + "span": 12, + "style": {}, + "title": "", + "type": "text" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": false, + "title": "About", + "titleSize": "h6" + }, + { + "collapse": false, + "editable": true, + "height": 460, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 2, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '64' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "64" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput 64", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 3, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '128' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "128" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput 128", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 4, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '512' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "512" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput 512", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 5, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1024' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1024" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput 1024", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 6, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1518' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1518" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput 1518", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "KVM4NFV-pvp-tput-OVS_with_DPDK_and_vHost_User", + "titleSize": "h6" + }, + { + "collapse": false, + "editable": true, + "height": "460", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 7, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '64' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "64" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput 64", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 8, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '128' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "128" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput 128", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 9, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '512' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "512" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput 512", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 10, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1024' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1024" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput 1024", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 11, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1518' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1518" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput 1518", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "KVM4NFV-phy2phy-tput-OVS_with_DPDK_and_vHost_User", + "titleSize": "h6" + }, + { + "collapse": false, + "editable": true, + "height": "460", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 12, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '64' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "64" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput_mod_vlan 64", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 13, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '128' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "128" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput_mod_vlan 128", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 14, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '512' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "512" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput_mod_vlan 512", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 15, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1024' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1024" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput_mod_vlan 1024", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 16, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"phy2phy_tput_mod_vlan_OVS_with_DPDK_and_vHost_User\" WHERE \"packet_size\" = '1518' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1518" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "phy2phy_tput_mod_vlan 1518", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "KVM4NFV-phy2phy-tput-mod_vlan-OVS_with_DPDK_and_vHost_User", + "titleSize": "h6" + }, + { + "collapse": false, + "editable": true, + "height": "460", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 17, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_SRIOV", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_SRIOV\" WHERE \"packet_size\" = '64' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "64" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput_SRIOV 64", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 18, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_SRIOV", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_SRIOV\" WHERE \"packet_size\" = '128' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "128" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput_SRIOV 128", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 19, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_SRIOV", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_SRIOV\" WHERE \"packet_size\" = '512' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "512" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput_SRIOV 512", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 20, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_SRIOV", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_SRIOV\" WHERE \"packet_size\" = '1024' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1024" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput_SRIOV 1024", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "yardstick-vtc", + "fill": 0, + "grid": { + "leftLogBase": 1, + "leftMax": null, + "leftMin": null, + "rightLogBase": 1, + "rightMax": null, + "rightMin": null, + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 21, + "leftYAxisLabel": "latency", + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": true, + "renderer": "flot", + "seriesOverrides": [], + "span": 6, + "stack": false, + "steppedLine": false, + "targets": [ + { + "dsType": "influxdb", + "groupBy": [], + "measurement": "pvp_tput_SRIOV", + "policy": "default", + "query": "SELECT \"min_value\", \"avg_value\", \"max_value\" FROM \"pvp_tput_SRIOV\" WHERE \"packet_size\" = '1518' AND $timeFilter", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "min_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "avg_value" + ], + "type": "field" + } + ], + [ + { + "params": [ + "max_value" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "packet_size", + "operator": "=", + "value": "1518" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "pvp_tput_SRIOV 1518", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "x-axis": true, + "xaxis": { + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "y-axis": true, + "y_formats": [ + "short", + "short" + ], + "yaxes": [ + { + "format": "ns", + "label": "latency", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "KVM4NFV-pvp-tput-SRIOV", + "titleSize": "h6" + } + ], + "time": { + "from": "now-7d", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "templating": { + "list": [] + }, + "annotations": { + "list": [] + }, + "refresh": "1d", + "schemaVersion": 8, + "version": 4, + "links": [] +} diff --git a/docker/Dockerfile b/docker/Dockerfile index 551693554..96a5d774d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -15,51 +15,17 @@ ARG BRANCH=master # GIT repo directory ENV REPOS_DIR /home/opnfv/repos +ENV IMAGE_DIR /home/opnfv/images/ # Set work directory -WORKDIR /home/opnfv/repos # Yardstick repo ENV YARDSTICK_REPO_DIR ${REPOS_DIR}/yardstick ENV RELENG_REPO_DIR ${REPOS_DIR}/releng -RUN sed -i -e 's/^deb /deb [arch=amd64] /g' /etc/apt/sources.list -RUN sed -i -e 's/^deb-src /# deb-src /g' /etc/apt/sources.list -RUN echo "APT::Default-Release \"trusty\";" > /etc/apt/apt.conf.d/default-distro -RUN echo "\n\ -deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ xenial-updates universe \n\ -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main universe multiverse restricted \n\ -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main universe multiverse restricted \n\ -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-security main universe multiverse restricted \n\ -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-proposed main universe multiverse restricted" >> /etc/apt/sources.list -RUN echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf -RUN dpkg --add-architecture arm64 -RUN apt-get update && apt-get install -y \ - qemu-user-static/xenial \ - libc6:arm64 \ - wget \ - expect \ - curl \ - git \ - sshpass \ - qemu-utils \ - kpartx \ - libffi-dev \ - libssl-dev \ - libzmq-dev \ - python \ - python-dev \ - libxml2-dev \ - libxslt1-dev \ - nginx \ - uwsgi \ - uwsgi-plugin-python \ - supervisor \ - python-setuptools && \ - easy_install -U setuptools==30.0.0 - -RUN apt-get -y autoremove && \ - apt-get clean +RUN apt-get update && apt-get install -y git python-setuptools python-pip +RUN easy_install -U setuptools==30.0.0 +RUN pip install appdirs==1.4.0 RUN mkdir -p ${REPOS_DIR} @@ -67,17 +33,17 @@ RUN git config --global http.sslVerify false RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO_DIR} RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO_DIR} -# install yardstick + dependencies -RUN cd ${YARDSTICK_REPO_DIR} && easy_install -U pip -RUN cd ${YARDSTICK_REPO_DIR} && pip install -r requirements.txt -RUN cd ${YARDSTICK_REPO_DIR} && pip install . +WORKDIR ${YARDSTICK_REPO_DIR} +RUN ${YARDSTICK_REPO_DIR}/install.sh -RUN ${YARDSTICK_REPO_DIR}/api/api-prepare.sh +RUN echo "daemon off;" >> /etc/nginx/nginx.conf EXPOSE 5000 -ADD http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img /home/opnfv/images/ -ADD http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img /home/opnfv/images/ +ADD http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img ${IMAGE_DIR} +ADD http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img ${IMAGE_DIR} COPY ./exec_tests.sh /usr/local/bin/ + +WORKDIR ${REPOS_DIR} CMD ["/usr/bin/supervisord"] diff --git a/docs/testing/user/userguide/04-installation.rst b/docs/testing/user/userguide/04-installation.rst index 7ea40eddd..c1325cab5 100644 --- a/docs/testing/user/userguide/04-installation.rst +++ b/docs/testing/user/userguide/04-installation.rst @@ -212,9 +212,9 @@ The created image can be added to OpenStack using the ``glance image-create`` or --file /tmp/workspace/yardstick/yardstick-image.img .. _`Cirros 0.3.5`: http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -.. _`Ubuntu 14.04`: https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img +.. _`Ubuntu 16.04`: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -Some Yardstick test cases use a `Cirros 0.3.5`_ image and/or a `Ubuntu 14.04`_ image. Add Cirros and Ubuntu images to OpenStack:: +Some Yardstick test cases use a `Cirros 0.3.5`_ image and/or a `Ubuntu 16.04`_ image. Add Cirros and Ubuntu images to OpenStack:: openstack image create \ --disk-format qcow2 \ @@ -226,7 +226,7 @@ Some Yardstick test cases use a `Cirros 0.3.5`_ image and/or a `Ubuntu 14.04`_ i --disk-format qcow2 \ --container-format bare \ --file $ubuntu_image_file \ - Ubuntu-14.04 + Ubuntu-16.04 The third way diff --git a/etc/yardstick/yardstick.yaml b/etc/yardstick/yardstick.yaml new file mode 100644 index 000000000..5b39fa08b --- /dev/null +++ b/etc/yardstick/yardstick.yaml @@ -0,0 +1,33 @@ +dir: + conf: /etc/yardstick + repos: /home/opnfv/repos/yardstick + releng: /home/opnfv/repos/releng + log: /tmp/yardstick + +file: + openrc: /etc/yardstick/openstack.creds + fetch_script: utils/fetch_os_creds.sh + clean_image_script: tests/ci/clean_images.sh + load_image_script: tests/ci/load_images.sh + output_file: /tmp/yardstick.out + html_file: /tmp/yardstick.htm + +influxdb: + ip: 172.17.0.1 + port: 8086 + username: root + password: root + db_name: yardstick + image: tutum/influxdb + tag: 0.13 + +grafana: + ip: 172.17.0.1 + port: 3000 + username: admin + password: admin + image: grafana/grafana + tag: 3.1.1 + +api: + server_ip: 172.17.0.1 diff --git a/install.sh b/install.sh index a918340ca..dc2663628 100755 --- a/install.sh +++ b/install.sh @@ -8,8 +8,26 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +# fit for arm64 +source_file=/etc/apt/sources.list +sed -i -e 's/^deb \([^/[]\)/deb [arch=amd64] \1/g' "${source_file}" +sed -i -e 's/^deb-src /# deb-src /g' "${source_file}" +echo "APT::Default-Release \"trusty\";" > /etc/apt/apt.conf.d/default-distro + +sub_source_file=/etc/apt/sources.list.d/yardstick.list +touch "${sub_source_file}" +echo -e "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ xenial-updates universe +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main universe multiverse restricted +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main universe multiverse restricted +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-security main universe multiverse restricted +deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-proposed main universe multiverse restricted" > "${sub_source_file}" +echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf +dpkg --add-architecture arm64 + # install tools apt-get update && apt-get install -y \ + qemu-user-static/xenial \ + libc6:arm64 \ wget \ expect \ curl \ @@ -19,38 +37,29 @@ apt-get update && apt-get install -y \ kpartx \ libffi-dev \ libssl-dev \ + libzmq-dev \ python \ python-dev \ - python-pip \ - flake8 libxml2-dev \ libxslt1-dev \ nginx \ uwsgi \ uwsgi-plugin-python \ supervisor \ - python-setuptools && \ - easy_install -U setuptools + python-pip \ + vim apt-get -y autoremove && apt-get clean +git config --global http.sslVerify false -# fit for arm64 -source_file=/etc/apt/sources.list -sed -i -e 's/^deb \([^/[]\)/deb [arch=amd64] \1/g' "${source_file}" -sed -i -e 's/^deb-src /# deb-src /g' "${source_file}" - -sub_source_file=/etc/apt/sources.list.d/yardstick.list -touch "${sub_source_file}" -echo -e "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main universe multiverse restricted -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main universe multiverse restricted -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-security main universe multiverse restricted -deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-proposed main universe multiverse restricted" > "${sub_source_file}" -echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf -dpkg --add-architecture arm64 -apt-get install -y qemu-user-static libc6:arm64 # install yardstick + dependencies easy_install -U pip pip install -r requirements.txt -pip install . +pip install -e . + +/bin/bash "$(pwd)/api/api-prepare.sh" + +service nginx restart +uwsgi -i /etc/yardstick/yardstick.ini diff --git a/requirements.txt b/requirements.txt index 80547f5cd..0e6db69e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -appdirs==1.4.0 +ansible==2.2.0.0 Babel==2.3.4 backport-ipaddress==0.1 cliff==2.3.0 @@ -70,6 +70,7 @@ PyYAML==3.11 requests==2.10.0 requestsexceptions==1.1.3 scp==0.10.2 +shade==1.17.0 simplejson==3.8.2 six==1.10.0 stevedore==1.17.1 diff --git a/samples/storperf.yaml b/samples/storperf.yaml index d8641fc0c..5000759e0 100644 --- a/samples/storperf.yaml +++ b/samples/storperf.yaml @@ -17,7 +17,7 @@ scenarios: type: StorPerf options: agent_count: 1 - agent_image: "Ubuntu-14.04" + agent_image: "Ubuntu-16.04" public_network: "ext-net" volume_size: 2 # target: diff --git a/tests/ci/clean_images.sh b/tests/ci/clean_images.sh index 9e5e61edf..27da9e279 100755 --- a/tests/ci/clean_images.sh +++ b/tests/ci/clean_images.sh @@ -19,7 +19,7 @@ cleanup() return fi - for image in $(openstack image list | grep -e cirros-0.3.5 -e yardstick-image -e Ubuntu-14.04 \ + for image in $(openstack image list | grep -e cirros-0.3.5 -e yardstick-image -e Ubuntu-16.04 \ | awk '{print $2}'); do echo "Deleting image $image..." openstack image delete $image || true diff --git a/tests/ci/load_images.sh b/tests/ci/load_images.sh index ec3ec4604..2e22b83c2 100755 --- a/tests/ci/load_images.sh +++ b/tests/ci/load_images.sh @@ -45,26 +45,30 @@ build_yardstick_image() echo "========== Build yardstick cloud image ==========" if [[ "$DEPLOY_SCENARIO" == *"-lxd-"* ]]; then - local cmd - cmd="sudo $(which yardstick-img-lxd-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" + if [ ! -f "${RAW_IMAGE}" ];then + local cmd + cmd="sudo $(which yardstick-img-lxd-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" - # Build the image. Retry once if the build fails - $cmd || $cmd + # Build the image. Retry once if the build fails + $cmd || $cmd - if [ ! -f "${RAW_IMAGE}" ]; then - echo "Failed building RAW image" - exit 1 + if [ ! -f "${RAW_IMAGE}" ]; then + echo "Failed building RAW image" + exit 1 + fi fi else - local cmd - cmd="sudo $(which yardstick-img-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" + if [ ! -f "${QCOW_IMAGE}" ];then + local cmd + cmd="sudo $(which yardstick-img-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" - # Build the image. Retry once if the build fails - $cmd || $cmd + # Build the image. Retry once if the build fails + $cmd || $cmd - if [ ! -f "${QCOW_IMAGE}" ]; then - echo "Failed building QCOW image" - exit 1 + if [ ! -f "${QCOW_IMAGE}" ]; then + echo "Failed building QCOW image" + exit 1 + fi fi fi } @@ -189,7 +193,7 @@ load_ubuntu_image() echo echo "========== Loading ubuntu cloud image ==========" - local ubuntu_image_file=/home/opnfv/images/trusty-server-cloudimg-amd64-disk1.img + local ubuntu_image_file=/home/opnfv/images/xenial-server-cloudimg-amd64-disk1.img EXTRA_PARAMS="" # VPP requires guest memory to be backed by large pages @@ -202,7 +206,7 @@ load_ubuntu_image() --container-format bare \ $EXTRA_PARAMS \ --file $ubuntu_image_file \ - Ubuntu-14.04) + Ubuntu-16.04) echo "$output" UBUNTU_IMAGE_ID=$(echo "$output" | grep " id " | awk '{print $(NF-1)}') @@ -245,6 +249,13 @@ main() QCOW_IMAGE="/tmp/workspace/yardstick/yardstick-image.img" RAW_IMAGE="/tmp/workspace/yardstick/yardstick-image.tar.gz" + if [ -f /home/opnfv/images/yardstick-image.img ];then + QCOW_IMAGE='/home/opnfv/images/yardstick-image.img' + fi + if [ -f /home/opnfv/images/yardstick-image.tar.gz ];then + RAW_IMAGE='/home/opnfv/images/yardstick-image.tar.gz' + fi + build_yardstick_image load_yardstick_image if [ "${YARD_IMG_ARCH}" == "arm64" ]; then diff --git a/tests/ci/prepare_env.sh b/tests/ci/prepare_env.sh index be59b7f37..e8f287bcd 100755 --- a/tests/ci/prepare_env.sh +++ b/tests/ci/prepare_env.sh @@ -21,35 +21,41 @@ export EXTERNAL_NETWORK=$(echo $EXTERNAL_NETWORK | cut -f1 -d \;) # Create openstack credentials echo "INFO: Creating openstack credentials .." -OPENRC=/home/opnfv/openrc +mkdir -p /etc/yardstick +OPENRC=/etc/yardstick/openstack.creds INSTALLERS=(apex compass fuel joid) -if [ ! -f $OPENRC ]; then - # credentials file is not given, check if environment variables are set - # to get the creds using fetch_os_creds.sh later on - echo "INFO: Checking environment variables INSTALLER_TYPE and INSTALLER_IP" - if [ -z ${INSTALLER_TYPE} ]; then - echo "environment variable 'INSTALLER_TYPE' is not defined." - exit 1 - elif [[ ${INSTALLERS[@]} =~ ${INSTALLER_TYPE} ]]; then - echo "INSTALLER_TYPE env variable found: ${INSTALLER_TYPE}" - else - echo "Invalid env variable INSTALLER_TYPE=${INSTALLER_TYPE}" - exit 1 - fi +RC_VAR_EXIST=false +if [ "${OS_AUTH_URL}" -a "${OS_USERNAME}" -a "${OS_PASSWORD}" -a "${EXTERNAL_NETWORK}" ];then + RC_VAR_EXIST=true +fi - if [ "$DEPLOY_TYPE" == "virt" ]; then - FETCH_CRED_ARG="-v -d $OPENRC -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}" - else - FETCH_CRED_ARG="-d $OPENRC -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}" - fi +if [ "${RC_VAR_EXIST}" = false ]; then + if [ ! -f $OPENRC ];then + # credentials file is not given, check if environment variables are set + # to get the creds using fetch_os_creds.sh later on + echo "INFO: Checking environment variables INSTALLER_TYPE and INSTALLER_IP" + if [ -z ${INSTALLER_TYPE} ]; then + echo "environment variable 'INSTALLER_TYPE' is not defined." + exit 1 + elif [[ ${INSTALLERS[@]} =~ ${INSTALLER_TYPE} ]]; then + echo "INSTALLER_TYPE env variable found: ${INSTALLER_TYPE}" + else + echo "Invalid env variable INSTALLER_TYPE=${INSTALLER_TYPE}" + exit 1 + fi - $RELENG_REPO_DIR/utils/fetch_os_creds.sh $FETCH_CRED_ARG + if [ "$DEPLOY_TYPE" == "virt" ]; then + FETCH_CRED_ARG="-v -d $OPENRC -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}" + else + FETCH_CRED_ARG="-d $OPENRC -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}" + fi + $RELENG_REPO_DIR/utils/fetch_os_creds.sh $FETCH_CRED_ARG + fi + source $OPENRC fi -source $OPENRC - export EXTERNAL_NETWORK INSTALLER_TYPE DEPLOY_TYPE NODE_NAME # Prepare a admin-rc file for StorPerf integration diff --git a/tests/ci/yardstick-verify b/tests/ci/yardstick-verify index 2986c9f2f..096ea534f 100755 --- a/tests/ci/yardstick-verify +++ b/tests/ci/yardstick-verify @@ -97,18 +97,6 @@ error_exit() set -o errexit set -o pipefail -install_yardstick() -{ - echo - echo "========== Installing yardstick ==========" - - # uninstall previous version - pip uninstall -y yardstick || true - - # Install yardstick - pip install . -} - install_storperf() { # Install Storper on huawei-pod1 @@ -320,9 +308,6 @@ main() echo " external network: $net" done - # install yardstick - install_yardstick - source $YARDSTICK_REPO_DIR/tests/ci/clean_images.sh trap "error_exit" EXIT SIGTERM diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml index 14604f844..326fdf53b 100644 --- a/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml @@ -20,7 +20,7 @@ scenarios: type: StorPerf options: agent_count: 1 - agent_image: "Ubuntu-14.04" + agent_image: "Ubuntu-16.04" public_network: {{public_network}} volume_size: 4 block_sizes: "4096" diff --git a/tests/opnfv/test_suites/opnfv_os-ovn-nofeature-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-ovn-nofeature-noha_daily.yaml new file mode 100644 index 000000000..9e20186bb --- /dev/null +++ b/tests/opnfv/test_suites/opnfv_os-ovn-nofeature-noha_daily.yaml @@ -0,0 +1,62 @@ +############################################################################## +# 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 +############################################################################## +--- +# os-ovn-nofeature-noha daily task suite + +schema: "yardstick:suite:0.1" + +name: "os-ovn-nofeature-noha" +test_cases_dir: "tests/opnfv/test_cases/" +test_cases: +- + file_name: opnfv_yardstick_tc002.yaml +- + file_name: opnfv_yardstick_tc005.yaml +- + file_name: opnfv_yardstick_tc010.yaml +- + file_name: opnfv_yardstick_tc011.yaml +- + file_name: opnfv_yardstick_tc012.yaml +- + file_name: opnfv_yardstick_tc014.yaml +- + file_name: opnfv_yardstick_tc037.yaml +- + file_name: opnfv_yardstick_tc055.yaml + constraint: + installer: compass + pod: huawei-pod1 + task_args: + huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml", + "host": "node5.yardstick-TC055"}' +- + file_name: opnfv_yardstick_tc063.yaml + constraint: + installer: compass + pod: huawei-pod1 + task_args: + huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml", + "host": "node5.yardstick-TC063"}' +- + file_name: opnfv_yardstick_tc069.yaml +- + file_name: opnfv_yardstick_tc070.yaml +- + file_name: opnfv_yardstick_tc071.yaml +- + file_name: opnfv_yardstick_tc072.yaml +- + file_name: opnfv_yardstick_tc075.yaml + constraint: + installer: compass + pod: huawei-pod1 + task_args: + huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml", + "host": "node1.LF"}' diff --git a/tests/unit/benchmark/scenarios/storage/test_storperf.py b/tests/unit/benchmark/scenarios/storage/test_storperf.py index adc9d47c6..00054d531 100644 --- a/tests/unit/benchmark/scenarios/storage/test_storperf.py +++ b/tests/unit/benchmark/scenarios/storage/test_storperf.py @@ -55,7 +55,7 @@ def mocked_requests_job_get(*args, **kwargs): self.status_code = status_code return MockResponseJobGet( - '{"status": "completed",\ + '{"Status": "Completed",\ "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}', 200) @@ -171,7 +171,7 @@ class StorPerfTestCase(unittest.TestCase): s = storperf.StorPerf(args, self.ctx) s.setup_done = True - sample_output = '{"status": "completed",\ + sample_output = '{"Status": "Completed",\ "_ssd_preconditioning.queue-depth.8.block-size.16384.duration": 6}' expected_result = jsonutils.loads(sample_output) diff --git a/tests/unit/common/test_utils.py b/tests/unit/common/test_utils.py index 267c71312..8f52b53b0 100644 --- a/tests/unit/common/test_utils.py +++ b/tests/unit/common/test_utils.py @@ -87,24 +87,21 @@ class ImportModulesFromPackageTestCase(unittest.TestCase): class GetParaFromYaml(unittest.TestCase): - def test_get_para_from_yaml_file_not_exist(self): - file_path = '/etc/yardstick/hello.yaml' - args = 'hello.world' - para = utils.get_para_from_yaml(file_path, args) - self.assertIsNone(para) - - def test_get_para_from_yaml_para_not_found(self): + @mock.patch('yardstick.common.utils.os.environ.get') + def test_get_param_para_not_found(self, get_env): file_path = 'config_sample.yaml' - file_path = self._get_file_abspath(file_path) + get_env.return_value = self._get_file_abspath(file_path) args = 'releng.file' - self.assertIsNone(utils.get_para_from_yaml(file_path, args)) + default = 'hello' + self.assertTrue(utils.get_param(args, default), default) - def test_get_para_from_yaml_para_exists(self): + @mock.patch('yardstick.common.utils.os.environ.get') + def test_get_param_para_exists(self, get_env): file_path = 'config_sample.yaml' - file_path = self._get_file_abspath(file_path) + get_env.return_value = self._get_file_abspath(file_path) args = 'releng.dir' para = '/home/opnfv/repos/releng' - self.assertEqual(para, utils.get_para_from_yaml(file_path, args)) + self.assertEqual(para, utils.get_param(args)) def _get_file_abspath(self, filename): curr_path = os.path.dirname(os.path.abspath(__file__)) diff --git a/yardstick/__init__.py b/yardstick/__init__.py index e19be36fd..2f5ae9feb 100644 --- a/yardstick/__init__.py +++ b/yardstick/__init__.py @@ -20,8 +20,8 @@ from yardstick.common import utils as yardstick_utils # without having to install apexlake. sys.path.append(os.path.dirname(apexlake.__file__)) -yardstick_utils.makedirs(constants.YARDSTICK_LOG_DIR) -LOG_FILE = os.path.join(constants.YARDSTICK_LOG_DIR, 'yardstick.log') +yardstick_utils.makedirs(constants.LOG_DIR) +LOG_FILE = os.path.join(constants.LOG_DIR, 'yardstick.log') LOG_FORMATTER = ('%(asctime)s ' '%(name)s %(filename)s:%(lineno)d ' '%(levelname)s %(message)s') diff --git a/yardstick/benchmark/contexts/heat.py b/yardstick/benchmark/contexts/heat.py index eb01d096f..d5dccd2a2 100644 --- a/yardstick/benchmark/contexts/heat.py +++ b/yardstick/benchmark/contexts/heat.py @@ -25,7 +25,7 @@ from yardstick.benchmark.contexts.model import PlacementGroup, ServerGroup from yardstick.benchmark.contexts.model import Server from yardstick.benchmark.contexts.model import update_scheduler_hints from yardstick.orchestrator.heat import HeatTemplate, get_short_key_uuid -from yardstick.definitions import YARDSTICK_ROOT_PATH +from yardstick.common.constants import YARDSTICK_ROOT_PATH LOG = logging.getLogger(__name__) diff --git a/yardstick/benchmark/contexts/node.py b/yardstick/benchmark/contexts/node.py index 8bf915609..a4a2cfc57 100644 --- a/yardstick/benchmark/contexts/node.py +++ b/yardstick/benchmark/contexts/node.py @@ -19,7 +19,7 @@ import pkg_resources from yardstick import ssh from yardstick.benchmark.contexts.base import Context -from yardstick.common.constants import YARDSTICK_ROOT_PATH +from yardstick.common import constants as consts LOG = logging.getLogger(__name__) @@ -57,7 +57,7 @@ class NodeContext(Context): except IOError as ioerror: if ioerror.errno == errno.ENOENT: self.file_path = \ - os.path.join(YARDSTICK_ROOT_PATH, self.file_path) + os.path.join(consts.YARDSTICK_ROOT_PATH, self.file_path) cfg = self.read_config_file() else: raise @@ -108,8 +108,7 @@ class NodeContext(Context): def _do_ansible_job(self, path): cmd = 'ansible-playbook -i inventory.ini %s' % path - base = '/home/opnfv/repos/yardstick/ansible' - p = subprocess.Popen(cmd, shell=True, cwd=base) + p = subprocess.Popen(cmd, shell=True, cwd=consts.ANSIBLE_DIR) p.communicate() def _get_server(self, attr_name): @@ -164,7 +163,7 @@ class NodeContext(Context): def _execute_local_script(self, info): script, options = self._get_script(info) - script = os.path.join(YARDSTICK_ROOT_PATH, script) + script = os.path.join(consts.YARDSTICK_ROOT_PATH, script) cmd = ['bash', script, options] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) diff --git a/yardstick/benchmark/contexts/standalone.py b/yardstick/benchmark/contexts/standalone.py index 674e57f54..78eaac7ee 100644 --- a/yardstick/benchmark/contexts/standalone.py +++ b/yardstick/benchmark/contexts/standalone.py @@ -20,7 +20,7 @@ import collections import yaml from yardstick.benchmark.contexts.base import Context -from yardstick.definitions import YARDSTICK_ROOT_PATH +from yardstick.common.constants import YARDSTICK_ROOT_PATH LOG = logging.getLogger(__name__) diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py index 40122764c..3a151dbba 100644 --- a/yardstick/benchmark/core/task.py +++ b/yardstick/benchmark/core/task.py @@ -503,7 +503,7 @@ def check_environment(): auth_url = os.environ.get('OS_AUTH_URL', None) if not auth_url: try: - source_env(constants.OPENSTACK_RC_FILE) + source_env(constants.OPENRC) except IOError as e: if e.errno != errno.EEXIST: raise diff --git a/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py b/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py index 24888af98..ab5e99860 100644 --- a/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py +++ b/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py @@ -40,19 +40,19 @@ class GeneralAttacker(BaseAttacker): if "action_parameter" in self._config: actionParameter = self._config['action_parameter'] str = util.buildshellparams(actionParameter) - LOG.debug("inject parameter is: {0}".format(actionParameter)) - LOG.debug("inject parameter values are: {0}" - .format(list(actionParameter.values()))) - l = list(item for item in actionParameter.values()) + LOG.debug("inject parameter is: %s", actionParameter) + LOG.debug("inject parameter values are: %s", + list(actionParameter.values())) + l = list(actionParameter.values()) self.action_param = str.format(*l) if "rollback_parameter" in self._config: rollbackParameter = self._config['rollback_parameter'] str = util.buildshellparams(rollbackParameter) - LOG.debug("recover parameter is: {0}".format(rollbackParameter)) - LOG.debug("recover parameter values are: {0}". - format(list(rollbackParameter.values()))) - l = list(item for item in rollbackParameter.values()) + LOG.debug("recover parameter is: %s", rollbackParameter) + LOG.debug("recover parameter values are: %s", + list(rollbackParameter.values())) + l = list(rollbackParameter.values()) self.rollback_param = str.format(*l) self.fault_cfg = BaseAttacker.attacker_cfgs.get(self.attack_key) @@ -77,10 +77,9 @@ class GeneralAttacker(BaseAttacker): "/bin/bash -s ", stdin=stdin_file) - LOG.debug("the inject_fault's exit status is: {0}".format(exit_status)) + LOG.debug("the inject_fault's exit status is: %s", exit_status) if exit_status == 0: - LOG.debug("success,the inject_fault's output is: {0}" - .format(stdout)) + LOG.debug("success,the inject_fault's output is: %s", stdout) else: LOG.error( "the inject_fault's error, stdout:%s, stderr:%s", diff --git a/yardstick/benchmark/scenarios/compute/cyclictest.py b/yardstick/benchmark/scenarios/compute/cyclictest.py index ae1d37324..9ca3a8a37 100644 --- a/yardstick/benchmark/scenarios/compute/cyclictest.py +++ b/yardstick/benchmark/scenarios/compute/cyclictest.py @@ -172,14 +172,15 @@ class Cyclictest(base.Scenario): options = self.scenario_cfg["options"] affinity = options.get("affinity", 1) + breaktrace = options.get("breaktrace", 1000) interval = options.get("interval", 1000) priority = options.get("priority", 99) loops = options.get("loops", 1000) threads = options.get("threads", 1) histogram = options.get("histogram", 90) - cmd_args = "-a %s -i %s -p %s -l %s -t %s -h %s %s" \ - % (affinity, interval, priority, loops, + cmd_args = "-a %s -b %s -i %s -p %s -l %s -t %s -h %s %s" \ + % (affinity, breaktrace, interval, priority, loops, threads, histogram, default_args) cmd = "bash cyclictest_benchmark.sh %s" % (cmd_args) LOG.debug("Executing command: %s", cmd) @@ -221,6 +222,7 @@ def _test(): # pragma: no cover options = { "affinity": 2, + "breaktrace": 1000, "interval": 100, "priority": 88, "loops": 10000, diff --git a/yardstick/benchmark/scenarios/networking/pktgen_dpdk.py b/yardstick/benchmark/scenarios/networking/pktgen_dpdk.py index 0b70629f8..7e3044dbb 100644 --- a/yardstick/benchmark/scenarios/networking/pktgen_dpdk.py +++ b/yardstick/benchmark/scenarios/networking/pktgen_dpdk.py @@ -137,10 +137,12 @@ class PktgenDPDKLatency(base.Scenario): # wait for finishing test time.sleep(1) - cmd = "cat ~/result.log -vT \ - |awk '{match($0,/\[8;40H +[0-9]+/)} \ - {print substr($0,RSTART,RLENGTH)}' \ - |grep -v ^$ |awk '{if ($2 != 0) print $2}'" + cmd = r"""\ +cat ~/result.log -vT \ +|awk '{match($0,/\[8;40H +[0-9]+/)} \ +{print substr($0,RSTART,RLENGTH)}' \ +|grep -v ^$ |awk '{if ($2 != 0) print $2}'\ +""" client_status, client_stdout, client_stderr = self.client.execute(cmd) if client_status: diff --git a/yardstick/benchmark/scenarios/storage/storperf.py b/yardstick/benchmark/scenarios/storage/storperf.py index 6ea035133..672cfaba2 100644 --- a/yardstick/benchmark/scenarios/storage/storperf.py +++ b/yardstick/benchmark/scenarios/storage/storperf.py @@ -117,7 +117,8 @@ class StorPerf(base.Scenario): """Query the status of the supplied job_id and report on metrics""" LOG.info("Fetching report for %s...", job_id) report_res = requests.get('http://{}:5000/api/v1.0/jobs'.format - (self.target), params={'id': job_id}) + (self.target), + params={'id': job_id, 'type': 'status'}) report_res_content = jsonutils.loads( report_res.content) @@ -126,10 +127,10 @@ class StorPerf(base.Scenario): raise RuntimeError("Failed to fetch report, error message:", report_res_content["message"]) else: - job_status = report_res_content["status"] + job_status = report_res_content["Status"] LOG.debug("Job is: %s...", job_status) - self.job_completed = job_status == "completed" + self.job_completed = job_status == "Completed" # TODO: Support using StorPerf ReST API to read Job ETA. diff --git a/yardstick/common/constants.py b/yardstick/common/constants.py index 6550cc8fd..cb98c356d 100644 --- a/yardstick/common/constants.py +++ b/yardstick/common/constants.py @@ -9,61 +9,78 @@ from __future__ import absolute_import import os -DOCKER_URL = 'unix://var/run/docker.sock' - -# database config -USER = 'root' -PASSWORD = 'root' -DATABASE = 'yardstick' - -INFLUXDB_IMAGE = 'tutum/influxdb' -INFLUXDB_TAG = '0.13' +from yardstick.common.utils import get_param -GRAFANA_IMAGE = 'grafana/grafana' -GRAFANA_TAGS = '3.1.1' dirname = os.path.dirname abspath = os.path.abspath join = os.path.join sep = os.path.sep -INSTALLERS = ['apex', 'compass', 'fuel', 'joid'] - +try: + SERVER_IP = get_param('api.server_ip') +except KeyError: + try: + from pyroute2 import IPDB + except ImportError: + SERVER_IP = '172.17.0.1' + else: + with IPDB() as ip: + SERVER_IP = ip.routes['default'].gateway + +# dir +CONF_DIR = get_param('dir.conf', '/etc/yardstick') +REPOS_DIR = get_param('dir.repos', '/home/opnfv/repos/yardstick') +RELENG_DIR = get_param('dir.releng', '/home/opnfv/repos/releng') +LOG_DIR = get_param('dir.log', '/tmp/yardstick/') YARDSTICK_ROOT_PATH = dirname(dirname(dirname(abspath(__file__)))) + sep - +CONF_SAMPLE_DIR = join(REPOS_DIR, 'etc/yardstick/') +ANSIBLE_DIR = join(REPOS_DIR, 'ansible') +SAMPLE_CASE_DIR = join(REPOS_DIR, 'samples') TESTCASE_DIR = join(YARDSTICK_ROOT_PATH, 'tests/opnfv/test_cases/') - TESTSUITE_DIR = join(YARDSTICK_ROOT_PATH, 'tests/opnfv/test_suites/') -YARDSTICK_REPOS_DIR = '/home/opnfv/repos/yardstick' - -YARDSTICK_LOG_DIR = '/tmp/yardstick/' - -YARDSTICK_CONFIG_DIR = '/etc/yardstick/' - -YARDSTICK_CONFIG_FILE = join(YARDSTICK_CONFIG_DIR, 'yardstick.conf') - -YARDSTICK_CONFIG_SAMPLE_DIR = join(YARDSTICK_ROOT_PATH, 'etc/yardstick/') - -YARDSTICK_CONFIG_SAMPLE_FILE = join(YARDSTICK_CONFIG_SAMPLE_DIR, - 'yardstick.conf.sample') - -RELENG_DIR = '/home/opnfv/repos/releng' - -OS_FETCH_SCRIPT = 'utils/fetch_os_creds.sh' - -CLEAN_IMAGES_SCRIPT = 'tests/ci/clean_images.sh' - -LOAD_IMAGES_SCRIPT = 'tests/ci/load_images.sh' - -OPENSTACK_RC_FILE = join(YARDSTICK_CONFIG_DIR, 'openstack.creds') +# file +OPENRC = get_param('file.openrc', '/etc/yardstick/openstack.creds') +CONF_FILE = join(CONF_DIR, 'yardstick.conf') +CONF_SAMPLE_FILE = join(CONF_SAMPLE_DIR, 'yardstick.conf.sample') +FETCH_SCRIPT = get_param('file.fetch_script', 'utils/fetch_os_creds.sh') +FETCH_SCRIPT = join(RELENG_DIR, FETCH_SCRIPT) +CLEAN_IMAGES_SCRIPT = get_param('file.clean_image_script', + 'tests/ci/clean_images.sh') +CLEAN_IMAGES_SCRIPT = join(REPOS_DIR, CLEAN_IMAGES_SCRIPT) +LOAD_IMAGES_SCRIPT = get_param('file.load_image_script', + 'tests/ci/load_images.sh') +LOAD_IMAGES_SCRIPT = join(REPOS_DIR, LOAD_IMAGES_SCRIPT) +DEFAULT_OUTPUT_FILE = get_param('file.output_file', '/tmp/yardstick.out') +DEFAULT_HTML_FILE = get_param('file.html_file', '/tmp/yardstick.htm') + +# influxDB +INFLUXDB_IP = get_param('influxdb.ip', SERVER_IP) +INFLUXDB_PORT = get_param('influxdb.port', 8086) +INFLUXDB_USER = get_param('influxdb.username', 'root') +INFLUXDB_PASS = get_param('influxdb.password', 'root') +INFLUXDB_DB_NAME = get_param('influxdb.db_name', 'yardstick') +INFLUXDB_IMAGE = get_param('influxdb.image', 'tutum/influxdb') +INFLUXDB_TAG = get_param('influxdb.tag', '0.13') + +# grafana +GRAFANA_IP = get_param('grafana.ip', SERVER_IP) +GRAFANA_PORT = get_param('grafana.port', 3000) +GRAFANA_USER = get_param('grafana.username', 'admin') +GRAFANA_PASS = get_param('grafana.password', 'admin') +GRAFANA_IMAGE = get_param('grafana.image', 'grafana/grafana') +GRAFANA_TAG = get_param('grafana.tag', '3.1.1') + +# api +DOCKER_URL = 'unix://var/run/docker.sock' +INSTALLERS = ['apex', 'compass', 'fuel', 'joid'] +SQLITE = 'sqlite:////tmp/yardstick.db' BASE_URL = 'http://localhost:5000' ENV_ACTION_API = BASE_URL + '/yardstick/env/action' ASYNC_TASK_API = BASE_URL + '/yardstick/asynctask' -SQLITE = 'sqlite:////tmp/yardstick.db' - -DEFAULT_OUTPUT_FILE = '/tmp/yardstick.out' - -DEFAULT_HTML_FILE = '/tmp/yardstick.htm' +# general +TESTCASE_PRE = 'opnfv_yardstick_' +TESTSUITE_PRE = 'opnfv_' diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py index d2be8000e..7035f3374 100644 --- a/yardstick/common/utils.py +++ b/yardstick/common/utils.py @@ -84,26 +84,30 @@ def import_modules_from_package(package): try_append_module(module_name, sys.modules) -def get_para_from_yaml(file_path, args): - - def func(a, b): - if a is None: - return None - return a.get(b) - - if os.path.exists(file_path): +def parse_yaml(file_path): + try: with open(file_path) as f: value = yaml.safe_load(f) - value = reduce(func, args.split('.'), value) + except IOError: + return {} + except OSError as e: + if e.errno != errno.EEXIST: + raise + else: + return value - if value is None: - print('parameter not found') - return None - return value - else: - print('file not exist') - return None +def get_param(key, default=''): + + conf_file = os.environ.get('CONF_FILE', '/etc/yardstick/yardstick.yaml') + + conf = parse_yaml(conf_file) + try: + return reduce(lambda a, b: a[b], key.split('.'), conf) + except KeyError: + if not default: + raise + return default def makedirs(d): diff --git a/yardstick/definitions.py b/yardstick/definitions.py deleted file mode 100644 index 64a4a80d4..000000000 --- a/yardstick/definitions.py +++ /dev/null @@ -1,14 +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 -############################################################################## -from __future__ import absolute_import -import os - -dirname = os.path.dirname -YARDSTICK_ROOT_PATH = dirname(dirname(os.path.abspath(__file__))) -YARDSTICK_ROOT_PATH += os.path.sep |