summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTING.rst18
-rwxr-xr-xdocker/run_qtip.sh14
-rw-r--r--docs/designspec/compute_QPI.rst69
-rw-r--r--docs/designspec/index.rst1
-rw-r--r--qtip/__init__.py14
-rw-r--r--qtip/runner/__init__.py (renamed from __init__.py)0
-rw-r--r--qtip/runner/perftest.py27
-rw-r--r--qtip/runner/suite.py28
-rw-r--r--qtip/runner/test_plan.py28
-rw-r--r--scripts/qtip.py (renamed from qtip.py)0
-rw-r--r--setup.cfg22
-rw-r--r--setup.py16
-rw-r--r--tests/__init__.py0
-rw-r--r--tests/data/output/hosts (renamed from tests/output/hosts)0
-rw-r--r--tests/data/schema/test_bm_schema.yaml (renamed from tests/schema/test_bm_schema.yaml)0
-rw-r--r--tests/data/schema/test_vm_schema.yaml (renamed from tests/schema/test_vm_schema.yaml)0
-rw-r--r--tests/data/test_plan/bm_ping.yaml (renamed from tests/test_case/bm_ping.yaml)0
-rw-r--r--tests/data/test_plan/bm_with_proxy.yaml (renamed from tests/test_case/bm_with_proxy.yaml)0
-rw-r--r--tests/data/test_plan/bm_without_proxy.yaml (renamed from tests/test_case/bm_without_proxy.yaml)0
-rw-r--r--tests/data/test_plan/vm.yaml (renamed from tests/test_case/vm.yaml)0
-rw-r--r--tests/data/test_plan/vm_error.yaml (renamed from tests/test_case/vm_error.yaml)0
-rw-r--r--tests/functional/__init__.py0
-rw-r--r--tests/functional/yaml_schema_test.py (renamed from tests/yaml_schema_test.py)0
-rw-r--r--tests/unit/__init__.py0
-rw-r--r--tests/unit/api/__init__.py0
-rw-r--r--tests/unit/api/qtip_server_test.py (renamed from tests/qtip_server_test.py)0
-rw-r--r--tests/unit/cli/__init__.py0
-rw-r--r--tests/unit/runner/__init__.py0
-rw-r--r--tests/unit/runner/perftest_test.py13
-rw-r--r--tests/unit/runner/suite_test.py13
-rw-r--r--tests/unit/runner/test_plan_test.py13
-rw-r--r--tests/unit/utils/__init__.py0
-rw-r--r--tests/unit/utils/ansible_api_test.py (renamed from tests/ansible_api_test.py)0
-rw-r--r--tests/unit/utils/args_handler_test.py (renamed from tests/args_handler_test.py)0
-rw-r--r--tests/unit/utils/cli_test.py (renamed from tests/cli_test.py)0
-rw-r--r--tests/unit/utils/create_zones_test.py (renamed from tests/create_zones_test.py)0
-rw-r--r--tests/unit/utils/driver_test.py (renamed from tests/driver_test.py)0
-rw-r--r--tests/unit/utils/env_setup_test.py (renamed from tests/env_setup_test.py)0
-rw-r--r--tests/unit/utils/spawn_vm_test.py (renamed from tests/spawn_vm_test.py)0
-rw-r--r--tox.ini8
40 files changed, 261 insertions, 23 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 6350a862..d10f1393 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -15,9 +15,26 @@ Peer review is the most important communication channel between developers.
Every subtle change to the code or document **MUST** be reviewed before
submission.
+Add group ``qtip-reviewers`` in `gerrit`_ when you consider a patch set is ready.
+
Please make sure there is at least one ``+1`` or ``+2`` from others before
submitting[#f1] a patch set.
+Active Reviewers
+================
+
+Current list of active reviewers in gerrit group ``qtip-reviewers``
+
+* Serena Feng <feng.xiaowei@zte.com.cn>
+* Taseer Ahmed <taseer94@gmail.com>
+* Yujun Zhang <zhang.yujunz@zte.com.cn>
+* Zhifeng Jiang <jiang.zhifeng@zte.com.cn>
+* Zhihui Wu <wu.zhihui1@zte.com.cn>
+
+By becoming an active reviewer, you agree to allow others to invite you as
+reviewers in QTIP project freely. Any one in OPNFV community can apply to join
+QTIP reviewers group or leave by submitting a patch on this document.
+
****************
Tasks and Issues
****************
@@ -88,6 +105,7 @@ to submit. The current members are listed in `INFO`_.
.. rubric:: Reference
.. _Developer Getting Started: https://wiki.opnfv.org/display/DEV/Developer+Getting+Started
+.. _gerrit: https://gerrit.opnfv.org/gerrit/#/q/project:+qtip
.. _JIRA: https://jira.opnfv.org/browse/QTIP
.. _OPNFV Releases: https://wiki.opnfv.org/display/SWREL
.. _Issue Types: https://jira.opnfv.org/secure/ShowConstantsHelp.jspa?decorator=popup#IssueTypes
diff --git a/docker/run_qtip.sh b/docker/run_qtip.sh
index a7a20501..c2cf8c7b 100755
--- a/docker/run_qtip.sh
+++ b/docker/run_qtip.sh
@@ -1,20 +1,22 @@
#! /bin/bash
+QTIP=scripts/qtip.py
+
run_test_suite()
{
if [ "$TEST_CASE" == "compute" ]; then
- cd ${QTIP_DIR} && python qtip.py -l default -f compute
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f compute
cd ${QTIP_DIR} && python scripts/ref_results/suite_result.py compute
elif [ "$TEST_CASE" == "storage" ]; then
- cd ${QTIP_DIR} && python qtip.py -l default -f storage
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f storage
cd ${QTIP_DIR} && python scripts/ref_results/suite_result.py storage
elif [ "$TEST_CASE" == "network" ]; then
- cd ${QTIP_DIR} && python qtip.py -l default -f network
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f network
cd ${QTIP_DIR} && python scripts/ref_results/suite_result.py network
elif [ "$TEST_CASE" == "all" ]; then
- cd ${QTIP_DIR} && python qtip.py -l default -f compute
- cd ${QTIP_DIR} && python qtip.py -l default -f storage
- cd ${QTIP_DIR} && python qtip.py -l default -f network
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f compute
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f storage
+ cd ${QTIP_DIR} && python ${QTIP} -l default -f network
cd ${QTIP_DIR} && python scripts/ref_results/suite_result.py compute
cd ${QTIP_DIR} && python scripts/ref_results/suite_result.py storage
diff --git a/docs/designspec/compute_QPI.rst b/docs/designspec/compute_QPI.rst
new file mode 100644
index 00000000..2e5aa87c
--- /dev/null
+++ b/docs/designspec/compute_QPI.rst
@@ -0,0 +1,69 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) 2016 ZTE Corp.
+
+
+***********
+Compute QPI
+***********
+
+The compute QPI gives user an overall score for system compute performace.
+
+Summary
+=======
+
+The compute QPI are calibrated a ZTE `E9000 <http://www.zte.com.cn/global/products/cocloud/cloud_computing/cloud_infrastructure/cloud_hw/429552>`_ server as a baseline with score of 2500 points.
+Higher scores are better, with double the score indicating double the performance.
+The compute QPI provides three different kinds of scores:
+
+* Workload Scores
+* Section Scores
+* Compute QPI Scores
+
+Baseline
+========
+
+ZTE E9000 server with an 2 Deca core Intel Xeon CPU processor,128560.0MB Memory.
+
+Workload Scores
+===============
+
+Each time a workload is executed QTIP calculates a score based on the computer's performance
+compared to the baseline performance.
+
+Section Scores
+==============
+
+QTIP uses a number of different tests, or workloads, to measure performance.
+The workloads are divided into five different sections:
+
++-----------------+--------------------------------------------------------------+------------------------------------------+
+| Section | Detail | Indication |
++=================+==============================================================+==========================================+
+| Integer | Integer workloads measure the integer instruction performace | All app relies on integer |
+| | of host or vm by performing Dhrystone test. | performance |
++-----------------+--------------------------------------------------------------+------------------------------------------+
+| Floating point | Floating point workloads measure the floating pointperfo | Floating point performance is especially |
+| | rmance by performing Whetstone test. | important in video games,digital content |
+| | | creation applications. |
++-----------------+--------------------------------------------------------------+------------------------------------------+
+| Memory | Memory workloads measure memory bandwidth by performing | Software working with cipher large |
+| | RamSpeed test. | amounts data relies on SSL Performace. |
++-----------------+--------------------------------------------------------------+------------------------------------------+
+| DPI | DPI workloads measure deep-packet inspection speed by | Software working with network packet |
+| | performing nDPI test. | anlysis relies on DPI performance. |
++-----------------+--------------------------------------------------------------+------------------------------------------+
+| SSL | SSL Performance workloads measure cipher speeds by | Software working with cipher large |
+| | using the OpenSSL tool. | amounts data relies on SSL Performace |
++-----------------+--------------------------------------------------------------+------------------------------------------+
+
+A section score is the `geometric mean <https://en.wikipedia.org/wiki/Geometric_mean>`_ of all the workload scores for workloads
+that are part of the section. These scores are useful for determining the performance of
+the computer in a particular area.
+
+Compute QPI Scores
+==================
+
+The compute QPI score is the `weighted arithmetic mean <https://en.wikipedia.org/wiki/Weighted_arithmetic_mean>`_ of the five section scores.
+The compute QPI score provides a way to quickly compare performance across different
+computers and different platforms without getting bogged down in details.
diff --git a/docs/designspec/index.rst b/docs/designspec/index.rst
index e9b3f9fd..d3bed217 100644
--- a/docs/designspec/index.rst
+++ b/docs/designspec/index.rst
@@ -11,3 +11,4 @@ QTIP Design Specifications
:maxdepth: 2
dashboard.rst
+ compute_QPI.rst
diff --git a/qtip/__init__.py b/qtip/__init__.py
index e69de29b..228d036f 100644
--- a/qtip/__init__.py
+++ b/qtip/__init__.py
@@ -0,0 +1,14 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import pbr.version
+
+
+__version__ = pbr.version.VersionInfo(
+ 'qtip').version_string()
diff --git a/__init__.py b/qtip/runner/__init__.py
index e69de29b..e69de29b 100644
--- a/__init__.py
+++ b/qtip/runner/__init__.py
diff --git a/qtip/runner/perftest.py b/qtip/runner/perftest.py
new file mode 100644
index 00000000..835f2a81
--- /dev/null
+++ b/qtip/runner/perftest.py
@@ -0,0 +1,27 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class PerfTest:
+ """A perf test collects raw performance metrics by running test tools"""
+
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def list_all():
+ """list all available perf tests"""
+ pass
+
+ def desc(self):
+ """description of the perf test"""
+ pass
+
+ def run(self):
+ pass
diff --git a/qtip/runner/suite.py b/qtip/runner/suite.py
new file mode 100644
index 00000000..f0f2f63e
--- /dev/null
+++ b/qtip/runner/suite.py
@@ -0,0 +1,28 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class Suite:
+ """A suite is consist of one or several perf tests and produces one QPI"""
+
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def list_all():
+ """list all available suites"""
+ pass
+
+ def desc(self):
+ """description of the suite"""
+ pass
+
+ def run(self):
+ """run included perftests in the suite"""
+ pass
diff --git a/qtip/runner/test_plan.py b/qtip/runner/test_plan.py
new file mode 100644
index 00000000..d20221df
--- /dev/null
+++ b/qtip/runner/test_plan.py
@@ -0,0 +1,28 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class TestPlan:
+ """A test plan is consist of test configuration and selected test suites"""
+
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def list_all():
+ """list all available test plans"""
+ pass
+
+ def desc(self):
+ """description of the test plan"""
+ pass
+
+ def run(self):
+ """run included suites"""
+ pass
diff --git a/qtip.py b/scripts/qtip.py
index 66ff674f..66ff674f 100644
--- a/qtip.py
+++ b/scripts/qtip.py
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 00000000..63286949
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,22 @@
+[metadata]
+name = qtip
+summary = Platform Performance Benchmarking
+description-file =
+ README.md
+author = OPNFV
+author-email = opnfv-tech-discuss@lists.opnfv.org
+home-page = https://wiki.opnfv.org/display/qtip
+
+[global]
+setup-hooks =
+ pbr.hooks.setup_hook
+
+[entry_points]
+console_scripts =
+ qtip = qtip.cli:entry
+
+[files]
+packages =
+ qtip
+data_files =
+ etc/qtip = benchmarks/*
diff --git a/setup.py b/setup.py
index 15900362..ce14d42e 100644
--- a/setup.py
+++ b/setup.py
@@ -2,19 +2,7 @@
from setuptools import setup
-
setup(
- name='qtip-cli',
- version='0.1.dev0',
- description='Platform Performance Benchmarking for OPNFV',
- author='OPNFV',
- author_email='zhang.yujunz@zte.com.cn',
- install_requires=['click', 'pyyaml', 'prettytable'],
- packages=['qtip.cli'],
- entry_points={
- 'console_scripts': ['qtip=qtip.cli.entry:cli']
- },
- license='Apache-2.0',
- keywords="performance benchmark opnfv",
- url="https://wiki.opnfv.org/display/qtip"
+ setup_requires=['pbr>=1.9', 'setuptools>=17.1'],
+ pbr=True,
)
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/__init__.py
diff --git a/tests/output/hosts b/tests/data/output/hosts
index 9b47df0e..9b47df0e 100644
--- a/tests/output/hosts
+++ b/tests/data/output/hosts
diff --git a/tests/schema/test_bm_schema.yaml b/tests/data/schema/test_bm_schema.yaml
index a7c27e3f..a7c27e3f 100644
--- a/tests/schema/test_bm_schema.yaml
+++ b/tests/data/schema/test_bm_schema.yaml
diff --git a/tests/schema/test_vm_schema.yaml b/tests/data/schema/test_vm_schema.yaml
index 524f8fe4..524f8fe4 100644
--- a/tests/schema/test_vm_schema.yaml
+++ b/tests/data/schema/test_vm_schema.yaml
diff --git a/tests/test_case/bm_ping.yaml b/tests/data/test_plan/bm_ping.yaml
index 41d696e2..41d696e2 100644
--- a/tests/test_case/bm_ping.yaml
+++ b/tests/data/test_plan/bm_ping.yaml
diff --git a/tests/test_case/bm_with_proxy.yaml b/tests/data/test_plan/bm_with_proxy.yaml
index 1d73300b..1d73300b 100644
--- a/tests/test_case/bm_with_proxy.yaml
+++ b/tests/data/test_plan/bm_with_proxy.yaml
diff --git a/tests/test_case/bm_without_proxy.yaml b/tests/data/test_plan/bm_without_proxy.yaml
index a9ae3b71..a9ae3b71 100644
--- a/tests/test_case/bm_without_proxy.yaml
+++ b/tests/data/test_plan/bm_without_proxy.yaml
diff --git a/tests/test_case/vm.yaml b/tests/data/test_plan/vm.yaml
index 4c8453ca..4c8453ca 100644
--- a/tests/test_case/vm.yaml
+++ b/tests/data/test_plan/vm.yaml
diff --git a/tests/test_case/vm_error.yaml b/tests/data/test_plan/vm_error.yaml
index f13d3a00..f13d3a00 100644
--- a/tests/test_case/vm_error.yaml
+++ b/tests/data/test_plan/vm_error.yaml
diff --git a/tests/functional/__init__.py b/tests/functional/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/functional/__init__.py
diff --git a/tests/yaml_schema_test.py b/tests/functional/yaml_schema_test.py
index a975dca6..a975dca6 100644
--- a/tests/yaml_schema_test.py
+++ b/tests/functional/yaml_schema_test.py
diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/unit/__init__.py
diff --git a/tests/unit/api/__init__.py b/tests/unit/api/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/unit/api/__init__.py
diff --git a/tests/qtip_server_test.py b/tests/unit/api/qtip_server_test.py
index 96544c95..96544c95 100644
--- a/tests/qtip_server_test.py
+++ b/tests/unit/api/qtip_server_test.py
diff --git a/tests/unit/cli/__init__.py b/tests/unit/cli/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/unit/cli/__init__.py
diff --git a/tests/unit/runner/__init__.py b/tests/unit/runner/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/unit/runner/__init__.py
diff --git a/tests/unit/runner/perftest_test.py b/tests/unit/runner/perftest_test.py
new file mode 100644
index 00000000..798afadd
--- /dev/null
+++ b/tests/unit/runner/perftest_test.py
@@ -0,0 +1,13 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class TestPerfTest:
+ def test_list(self):
+ assert True
diff --git a/tests/unit/runner/suite_test.py b/tests/unit/runner/suite_test.py
new file mode 100644
index 00000000..a2023cf8
--- /dev/null
+++ b/tests/unit/runner/suite_test.py
@@ -0,0 +1,13 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class TestSuite:
+ def test_list(self):
+ assert True
diff --git a/tests/unit/runner/test_plan_test.py b/tests/unit/runner/test_plan_test.py
new file mode 100644
index 00000000..81f618c7
--- /dev/null
+++ b/tests/unit/runner/test_plan_test.py
@@ -0,0 +1,13 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class TestTestPlan:
+ def test_list(self):
+ assert True
diff --git a/tests/unit/utils/__init__.py b/tests/unit/utils/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/unit/utils/__init__.py
diff --git a/tests/ansible_api_test.py b/tests/unit/utils/ansible_api_test.py
index 6b1afb44..6b1afb44 100644
--- a/tests/ansible_api_test.py
+++ b/tests/unit/utils/ansible_api_test.py
diff --git a/tests/args_handler_test.py b/tests/unit/utils/args_handler_test.py
index b67fd993..b67fd993 100644
--- a/tests/args_handler_test.py
+++ b/tests/unit/utils/args_handler_test.py
diff --git a/tests/cli_test.py b/tests/unit/utils/cli_test.py
index 86dd6b98..86dd6b98 100644
--- a/tests/cli_test.py
+++ b/tests/unit/utils/cli_test.py
diff --git a/tests/create_zones_test.py b/tests/unit/utils/create_zones_test.py
index 8b1e97cc..8b1e97cc 100644
--- a/tests/create_zones_test.py
+++ b/tests/unit/utils/create_zones_test.py
diff --git a/tests/driver_test.py b/tests/unit/utils/driver_test.py
index 432ce1ae..432ce1ae 100644
--- a/tests/driver_test.py
+++ b/tests/unit/utils/driver_test.py
diff --git a/tests/env_setup_test.py b/tests/unit/utils/env_setup_test.py
index e28c6a18..e28c6a18 100644
--- a/tests/env_setup_test.py
+++ b/tests/unit/utils/env_setup_test.py
diff --git a/tests/spawn_vm_test.py b/tests/unit/utils/spawn_vm_test.py
index ba237378..ba237378 100644
--- a/tests/spawn_vm_test.py
+++ b/tests/unit/utils/spawn_vm_test.py
diff --git a/tox.ini b/tox.ini
index d955416c..0ca99932 100644
--- a/tox.ini
+++ b/tox.ini
@@ -10,17 +10,19 @@ skipsdist = True
[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
-deps =
+deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands=
py.test \
--basetemp={envtmpdir} \
- {posargs} tests
+ {posargs}
+setenv=
+ PYTHONPATH = {toxinidir}
[testenv:pep8]
deps = flake8
-commands = flake8 {toxinidir}
+commands = flake8 {toxinidir}
[flake8]
# H803 skipped on purpose per list discussion.