aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/client.py37
-rw-r--r--api/resources/testcases.py21
-rw-r--r--api/urls.py1
-rw-r--r--api/views.py5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc001.yaml10
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc005.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc007.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc008.yaml19
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc009.yaml13
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc010.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc012.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc014.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc020.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc021.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc025.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc027.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml18
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc038.yaml18
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc040.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc042.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml3
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc054.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml19
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc070.yaml18
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml18
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml18
-rwxr-xr-xtests/opnfv/test_cases/opnfv_yardstick_tc073.yaml16
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml6
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml8
-rw-r--r--tests/unit/benchmark/core/test_task.py36
-rw-r--r--tests/unit/benchmark/core/test_testcase.py4
-rw-r--r--tests/unit/cmd/commands/test_testcase.py21
-rw-r--r--tox.ini22
-rw-r--r--yardstick/benchmark/core/task.py4
-rw-r--r--yardstick/benchmark/core/testcase.py143
-rw-r--r--yardstick/cmd/commands/__init__.py12
-rw-r--r--yardstick/cmd/commands/task.py22
-rw-r--r--yardstick/cmd/commands/testcase.py21
-rw-r--r--yardstick/common/constants.py4
-rw-r--r--yardstick/common/utils.py10
-rw-r--r--yardstick/dispatcher/file.py51
56 files changed, 449 insertions, 275 deletions
diff --git a/api/client.py b/api/client.py
new file mode 100644
index 000000000..167754c39
--- /dev/null
+++ b/api/client.py
@@ -0,0 +1,37 @@
+##############################################################################
+# 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
+##############################################################################
+import logging
+import requests
+
+from oslo_serialization import jsonutils
+
+from yardstick.common import constants as consts
+
+logger = logging.getLogger(__name__)
+
+
+def post(url, data={}):
+ url = '{}{}'.format(consts.BASE_URL, url)
+ data = jsonutils.dumps(data)
+ headers = {'Content-Type': 'application/json'}
+ try:
+ response = requests.post(url, data=data, headers=headers)
+ result = response.json()
+ logger.debug('The result is: %s', result)
+
+ return result
+ except Exception as e:
+ logger.exception('Failed: %s', e)
+ raise
+
+
+def get(url):
+ url = '{}{}'.format(consts.BASE_URL, url)
+ response = requests.get(url)
+ return response.json()
diff --git a/api/resources/testcases.py b/api/resources/testcases.py
new file mode 100644
index 000000000..6ee15efb3
--- /dev/null
+++ b/api/resources/testcases.py
@@ -0,0 +1,21 @@
+# ############################################################################
+# 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 yardstick.benchmark.core.testcase import Testcase
+from yardstick.benchmark.core import Param
+from api.utils import common as common_utils
+
+
+def default(args):
+ return listAllTestcases(args)
+
+
+def listAllTestcases(args):
+ param = Param(args)
+ testcase_list = Testcase().list_all(param)
+ return common_utils.result_handler(1, testcase_list)
diff --git a/api/urls.py b/api/urls.py
index 04b7485f1..3ccb67dbc 100644
--- a/api/urls.py
+++ b/api/urls.py
@@ -13,6 +13,7 @@ from api.utils.common import Url
urlpatterns = [
Url('/yardstick/asynctask', views.Asynctask, 'asynctask'),
+ Url('/yardstick/testcases', views.Testcases, 'testcases'),
Url('/yardstick/testcases/release/action', views.ReleaseAction, 'release'),
Url('/yardstick/testcases/samples/action', views.SamplesAction, 'samples'),
Url('/yardstick/testsuites/action', views.TestsuitesAction, 'testsuites'),
diff --git a/api/views.py b/api/views.py
index 0c39bfad0..9fd236fad 100644
--- a/api/views.py
+++ b/api/views.py
@@ -30,6 +30,11 @@ class Asynctask(ApiResource):
return self._dispatch_get()
+class Testcases(ApiResource):
+ def get(self):
+ return self._dispatch_get()
+
+
class ReleaseAction(ApiResource):
@swag_from(os.getcwd() + '/swagger/docs/release_action.yaml')
def post(self):
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc001.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc001.yaml
index aa2980f69..ceec6cf5e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc001.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc001.yaml
@@ -1,11 +1,11 @@
---
-# Yardstick TC001 config file
-# Measure network throughput using pktgen
-# Different amounts of flows are tested with, from 2 up to 1001000
-# All tests are run twice. First twice with the least amount of
-#ports and further on.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC001 config file;
+ Measure network throughput using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run twice. First twice with the least amount of ports and further on.
scenarios:
{% for num_ports in [1, 10, 50, 100, 500, 1000] %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml
index 3c7b988c0..6830dcd72 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml
@@ -1,7 +1,10 @@
---
-# measure network latency using ping
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC002 config file;
+ measure network latency using ping;
+
{% set image = image or "cirros-0.3.3" %}
scenarios:
{% for i in range(2) %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc005.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc005.yaml
index f5a2778e8..82e85dbd1 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc005.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc005.yaml
@@ -1,8 +1,10 @@
---
-# Yardstick TC005 config file
-# Measure Storage IOPS, throughput and latency using fio
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC005 config file;
+ Measure Storage IOPS, throughput and latency using fio.
+
scenarios:
{% for rw in ['read', 'write', 'randwrite', 'randread', 'rw'] %}
{% for bs in ['4k', '64k', '1024k'] %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml
index 7221518ab..5dfb29b97 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc006.yaml
@@ -1,5 +1,8 @@
---
+
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC006 config file.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc007.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc007.yaml
index 6f99ea6f2..882b3cf9c 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc007.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc007.yaml
@@ -1,8 +1,9 @@
---
-# Sample benchmark task config file
-# vTC
schema: "yardstick:task:0.1"
+description: >
+ Sample benchmark task config file;
+ vTC.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc008.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc008.yaml
index a2f5f3adc..89986f7f1 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc008.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc008.yaml
@@ -1,15 +1,16 @@
---
-# Yardstick TC008 config file
-# Measure network throughput and packet loss using Pktgen.
-# Different amount of flows, from 2 up to 1001000, in combination
-# with different packet sizes are run in each test.
-# Each combination of packet size and flow amount is run 10 times.
-# First 10 times with the smallest packet size, starting with the
-# least amount of ports/flows, then next amount of ports with same
-# packet size, and so on. The test sequence continues with the next
-# packet size, with same ports/flows sequence as before.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC008 config file;
+ Measure network throughput and packet loss using Pktgen;
+ Different amount of flows, from 2 up to 1001000, in combination
+ with different packet sizes are run in each test.
+ Each combination of packet size and flow amount is run 10 times.
+ First 10 times with the smallest packet size, starting with the
+ least amount of ports/flows, then next amount of ports with same
+ packet size, and so on. The test sequence continues with the next
+ packet size, with same ports/flows sequence as before.
scenarios:
{% for pkt_size in [64, 128, 256, 512, 1024, 1280, 1518] %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc009.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc009.yaml
index f9fa1b778..e18ca789d 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc009.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc009.yaml
@@ -1,12 +1,13 @@
---
-# Yardstick TC009 config file
-# Measure network throughput and packet loss using pktgen.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 10 times each. First 10 times with the least
-# amount of ports, then 10 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC009 config file;
+ Measure network throughput and packet loss using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 10 times each. First 10 times with the least
+ amount of ports, then 10 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
scenarios:
{% for num_ports in [1, 10, 50, 100, 500, 1000] %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc010.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc010.yaml
index 6c7f96799..ad344e58f 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc010.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc010.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC010 config file
-# measure memory read latency using lmbench
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC010 config file;
+ measure memory read latency using lmbench.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml
index 4cd3119bb..5ff31ea9b 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc011.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC011 config file
-# Measure packet delay variation (jitter) using iperf3
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC011 config file;
+ Measure packet delay variation (jitter) using iperf3.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc012.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc012.yaml
index ba246ff11..805f627c0 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc012.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc012.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC012 config file
-# Measure memory read and write bandwidth using lmbench
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC012 config file;
+ Measure memory read and write bandwidth using lmbench.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc014.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc014.yaml
index 1ac0f2961..fc1446206 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc014.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc014.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC014 config file
-# Measure Processing speed using unixbench
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC014 config file;
+ Measure Processing speed using unixbench.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
index 2e5a4a56f..b49019633 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
@@ -1,7 +1,8 @@
---
-# Sample test case for the HA of controller node Openstack service
schema: "yardstick:task:0.1"
+description: >
+ Sample test case for the HA of controller node Openstack service.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc020.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc020.yaml
index cbdaf3970..3bcabaac6 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc020.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc020.yaml
@@ -1,5 +1,8 @@
---
+
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC020 config file.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc021.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc021.yaml
index 17249785a..263663ebe 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc021.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc021.yaml
@@ -1,5 +1,8 @@
---
+
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC021 config file.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc025.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc025.yaml
index b083f6f20..0bbc5b8a6 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc025.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc025.yaml
@@ -1,7 +1,8 @@
---
-# Sample test case for the HA of OpenStack Controll Node abnormally shutdown
schema: "yardstick:task:0.1"
+description: >
+ Sample test case for the HA of OpenStack Controll Node abnormally shutdown.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc027.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc027.yaml
index 5032f3de3..036b6e9fd 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc027.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc027.yaml
@@ -1,8 +1,10 @@
---
-# Yardstick TC027 config file
-# Measure IPV6 network latency using ping6
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC027 config file;
+ Measure IPV6 network latency using ping6.
+
{% set openrc = openrc or "/opt/admin-openrc.sh" %}
{% set external_network = external_network or "ext-net" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_physical/pod.yaml" %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml
index cd42098d2..0db490a15 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml
@@ -1,15 +1,15 @@
---
-# Yardstick TC037 config file
-# Measure network throughput and packet loss using pktgen.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 2 times each. First 2 times with the least
-# amount of ports, then 2 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
-#
-# During the measurements system load and network latency are
-# recorded/measured using ping and mpstat, respectively.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC037 config file;
+ Measure network throughput and packet loss using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 2 times each. First 2 times with the least
+ amount of ports, then 2 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
+ During the measurements system load and network latency are
+ recorded/measured using ping and mpstat, respectively;
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc038.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc038.yaml
index c2e5b4028..e6ba0c1a4 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc038.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc038.yaml
@@ -1,15 +1,15 @@
---
-# Yardstick TC038 config file
-# Measure network throughput and packet loss using pktgen.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 10 times each. First 10 times with the least
-# amount of ports, then 10 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
-#
-# During the measurements system load and network latency are
-# recorded/measured using ping and mpstat, respectively.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC038 config file;
+ Measure network throughput and packet loss using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 10 times each. First 10 times with the least
+ amount of ports, then 10 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
+ During the measurements system load and network latency are
+ recorded/measured using ping and mpstat, respectively;
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc040.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc040.yaml
index 0a6dee656..c6094678e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc040.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc040.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC040 config file
-# Running Parser Yang-to-Tosca module as a tool, validating output against expected outcome
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC040 config file;
+ Running Parser Yang-to-Tosca module as a tool, validating output against expected outcome.
scenarios:
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc042.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc042.yaml
index 158f5076e..c233acb2f 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc042.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc042.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC042 config file
-# Measure network latency using testpmd and pktgen-dpdk
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC042 config file;
+ Measure network latency using testpmd and pktgen-dpdk.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
index d5754b966..2546b6209 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
@@ -1,8 +1,10 @@
---
-# Yardstick TC043 config file
-# Measure latency between NFVI nodes using ping
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC043 config file;
+ Measure latency between NFVI nodes using ping.
+
{% set host = host or "node1.LF" %}
{% set target = target or "node2.LF" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_physical/pod.yaml" %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
index 79ad61e86..196994544 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
@@ -1,7 +1,8 @@
---
-# Test case for TC045 :Control node Openstack service down - neutron server
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC045 :Control node Openstack service down - neutron server.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
index 69cef40a8..1af561964 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
@@ -1,7 +1,8 @@
---
-# Test case for TC046 :Control node Openstack service down - keystone
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC046 :Control node Openstack service down - keystone.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
index f6019f6d5..24c28f5de 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
@@ -1,7 +1,8 @@
---
-# Test case for TC047 :Control node Openstack service down - glance api
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC047 :Control node Openstack service down - glance api.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
index 543db9780..190084db9 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
@@ -1,7 +1,8 @@
---
-# Test case for TC048 :Control node Openstack service down - cinder api
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC048 :Control node Openstack service down - cinder api.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
index 759867d46..66c154117 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
@@ -1,7 +1,8 @@
---
-# Test case for TC049 :Control node Openstack service down - swift proxy
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC049 :Control node Openstack service down - swift proxy.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
index 0b21f8861..a8cb920ea 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC050 :OpenStack Controller Node Network High Availability
-# This test case is written by new scenario-based HA testing framework
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC050 :OpenStack Controller Node Network High Availability;
+ This test case is written by new scenario-based HA testing framework.
+
scenarios:
-
type: "GeneralHA"
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
index 8e2e0c789..1115b35f6 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC051 :OpenStack Controller Node CPU Overload High Availability
-# This test case is written by new scenario-based HA testing framework
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC051 :OpenStack Controller Node CPU Overload High Availability;
+ This test case is written by new scenario-based HA testing framework.
+
scenarios:
-
type: "GeneralHA"
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
index 714306881..67619d3d0 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability
-# This test case is written by new scenario-based HA testing framework
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability;
+ This test case is written by new scenario-based HA testing framework.
+
scenarios:
-
type: "GeneralHA"
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
index 696ed3ba4..16a971124 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC053 :Openstack Controller Load Balance Service High Availability
-# This test case is written by new scenario-based HA testing framework
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC053 :Openstack Controller Load Balance Service High Availability;
+ This test case is written by new scenario-based HA testing framework.
+
scenarios:
-
type: "GeneralHA"
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc054.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc054.yaml
index 7d94e3de8..93948d3b1 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc054.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc054.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC054 :OpenStack VIP Master Node abnormally shutdown High Availability
-# This test case is written by new scenario-based HA testing framework
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC054 :OpenStack VIP Master Node abnormally shutdown High Availability;
+ This test case is written by new scenario-based HA testing framework.
+
scenarios:
-
type: "GeneralHA"
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
index 54fc965c6..405247f4e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
@@ -1,15 +1,16 @@
---
-# Yardstick TC055 config file
-# Collect hardware specification from /proc/cpuinfo /proc/meminfo
-# compute capacity and scale.
-
-# the results have
-# number of CPUs, number of physical cores in a single CPU
-# number of logical cores, total memory size
-# cache size per CPU, total cache size
-# HT (Hyper-Thread) support status, 1 for open, 0 for close
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC055 config file;
+ Collect hardware specification from /proc/cpuinfo /proc/meminfo;
+ compute capacity and scale.
+ the results have,
+ number of CPUs, number of physical cores in a single CPU;
+ number of logical cores, total memory size;
+ cache size per CPU, total cache size;
+ HT (Hyper-Thread) support status, 1 for open, 0 for close.
+
{% set host = host or "node5.yardstick-TC055" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_virtual/pod.yaml" %}
scenarios:
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
index 981783765..f1eb3c63e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
@@ -1,8 +1,10 @@
---
-# Yardstick TC063 config file
-# Measure disk size, block size and disk utilization using fdisk and iostat
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC063 config file;
+ Measure disk size, block size and disk utilization using fdisk and iostat.
+
{% set host = host or "node5.yardstick-TC063" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_virtual/pod.yaml" %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml
index dcc34d80d..a11337d4f 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml
@@ -1,8 +1,9 @@
---
-# Yardstick TC069 config file
-# Measure memory read and write bandwidth using ramspeed
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC069 config file;
+ Measure memory read and write bandwidth using ramspeed.
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc070.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc070.yaml
index 931587b5b..c4ad715ec 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc070.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc070.yaml
@@ -1,15 +1,15 @@
---
-# Yardstick TC070 config file
-# Measure network throughput and packet loss using pktgen.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 2 times each. First 2 times with the least
-# amount of ports, then 2 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
-#
-# During the measurements memory usage statistics and network latency are
-# recorded/measured using free and ping, respectively.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC070 config file;
+ Measure network throughput and packet loss using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 2 times each. First 2 times with the least
+ amount of ports, then 2 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
+ During the measurements memory usage statistics and network latency are
+ recorded/measured using free and ping, respectively;
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml
index 6f006eeaf..59bfc24bd 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml
@@ -1,15 +1,15 @@
---
-# Yardstick TC071 config file
-# Measure cache hit/miss ratio and usage, network throughput and latency.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 2 times each. First 2 times with the least
-# amount of ports, then 2 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
-#
-# During the measurements cache hit/miss ration, cache usage statistics and
-# network latency are recorded/measured using cachestat and ping, respectively.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC071 config file;
+ Measure cache hit/miss ratio and usage, network throughput and latency;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 2 times each. First 2 times with the least
+ amount of ports, then 2 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
+ During the measurements cache hit/miss ration, cache usage statistics and
+ network latency are recorded/measured using cachestat and ping, respectively;
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml
index e1fa33173..10db287cf 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml
@@ -1,15 +1,15 @@
---
-# Yardstick TC072 config file
-# Measure network throughput and packet loss using pktgen.
-# Different amounts of flows are tested with, from 2 up to 1001000.
-# All tests are run 2 times each. First 2 times with the least
-# amount of ports, then 2 times with the next amount of ports,
-# and so on until all packet sizes have been run with.
-#
-# During the measurements network usage statistics and network latency are
-# recorded/measured using sar and ping, respectively.
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC072 config file;
+ Measure network throughput and packet loss using pktgen;
+ Different amounts of flows are tested with, from 2 up to 1001000;
+ All tests are run 2 times each. First 2 times with the least
+ amount of ports, then 2 times with the next amount of ports,
+ and so on until all packet sizes have been run with;
+ During the measurements network usage statistics and network latency are
+ recorded/measured using sar and ping, respectively;
scenarios:
-
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
index fd95b8c9d..99a0ffe81 100755
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
@@ -1,13 +1,15 @@
---
-# Yardstick TC073 config file
-# measure network latency and throughput using netperf
-# There are two sample scenarios: bulk test and request/response test
-# In bulk test, UDP_STREAM and TCP_STREAM can be used
-# send_msg_size and recv_msg_size are options of bulk test
-# In req/rsp test, TCP_RR TCP_CRR UDP_RR can be used
-# req_rsp_size is option of req/rsp test
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC073 config file;
+ measure network latency and throughput using netperf;
+ There are two sample scenarios: bulk test and request/response test;
+ In bulk test, UDP_STREAM and TCP_STREAM can be used;
+ send_msg_size and recv_msg_size are options of bulk test;
+ In req/rsp test, TCP_RR TCP_CRR UDP_RR can be used;
+ req_rsp_size is option of req/rsp test;
+
{% set host = host or "node1.LF" %}
{% set target = target or "node2.LF" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_physical/pod.yaml" %}
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml
index 6dda2d436..3fb3a05be 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc074.yaml
@@ -1,8 +1,10 @@
---
-# Test case for TC074 StorPerf benchmark task config file
-# StorPerf is a tool to measure block and object storage performance in an NFVI
schema: "yardstick:task:0.1"
+description: >
+ Test case for TC074 StorPerf benchmark task config file;
+ StorPerf is a tool to measure block and object storage performance in an NFVI.
+
{% set public_network = public_network or "ext-net" %}
{% set StorPerf_ip = StorPerf_ip or "192.168.200.1" %}
scenarios:
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
index fb5a12e8a..1c1a7e4cd 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
@@ -1,9 +1,11 @@
---
-# Yardstick TC075 config file
-# Measure network capacity and scale.
-# Measure number of connections, number of frames received
schema: "yardstick:task:0.1"
+description: >
+ Yardstick TC075 config file;
+ Measure network capacity and scale.
+ Measure number of connections, number of frames received;
+
{% set host = host or "node1.LF" %}
{% set pod_info = pod_info or "etc/yardstick/nodes/compass_sclab_virtual/pod.yaml" %}
diff --git a/tests/unit/benchmark/core/test_task.py b/tests/unit/benchmark/core/test_task.py
index 5dd32ea17..c56e21047 100644
--- a/tests/unit/benchmark/core/test_task.py
+++ b/tests/unit/benchmark/core/test_task.py
@@ -24,6 +24,7 @@ except ImportError:
from yardstick.benchmark.core import task
+from yardstick.common import constants as consts
class TaskTestCase(unittest.TestCase):
@@ -92,10 +93,10 @@ class TaskTestCase(unittest.TestCase):
task_files, task_args, task_args_fnames = t.parse_suite()
print("files=%s, args=%s, fnames=%s" % (task_files, task_args,
task_args_fnames))
- self.assertEqual(task_files[0],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml')
- self.assertEqual(task_files[1],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml')
+ self.assertEqual(task_files[0], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml'))
+ self.assertEqual(task_files[1], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml'))
self.assertEqual(task_args[0], None)
self.assertEqual(task_args[1], None)
self.assertEqual(task_args_fnames[0], None)
@@ -109,10 +110,10 @@ class TaskTestCase(unittest.TestCase):
task_files, task_args, task_args_fnames = t.parse_suite()
print("files=%s, args=%s, fnames=%s" % (task_files, task_args,
task_args_fnames))
- self.assertEqual(task_files[0],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml')
- self.assertEqual(task_files[1],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml')
+ self.assertEqual(task_files[0], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml'))
+ self.assertEqual(task_files[1], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml'))
self.assertEqual(task_args[0], None)
self.assertEqual(task_args[1],
'{"host": "node1.LF","target": "node2.LF"}')
@@ -127,10 +128,10 @@ class TaskTestCase(unittest.TestCase):
task_files, task_args, task_args_fnames = t.parse_suite()
print("files=%s, args=%s, fnames=%s" % (task_files, task_args,
task_args_fnames))
- self.assertEqual(task_files[0],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml')
- self.assertEqual(task_files[1],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml')
+ self.assertEqual(task_files[0], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml'))
+ self.assertEqual(task_files[1], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml'))
self.assertEqual(task_args[0], None)
self.assertEqual(task_args[1], None)
self.assertEqual(task_args_fnames[0], None)
@@ -144,10 +145,10 @@ class TaskTestCase(unittest.TestCase):
task_files, task_args, task_args_fnames = t.parse_suite()
print("files=%s, args=%s, fnames=%s" % (task_files, task_args,
task_args_fnames))
- self.assertEqual(task_files[0],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml')
- self.assertEqual(task_files[1],
- 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml')
+ self.assertEqual(task_files[0], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc037.yaml'))
+ self.assertEqual(task_files[1], self.change_to_abspath(
+ 'tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml'))
self.assertEqual(task_args[0], None)
self.assertEqual(task_args[1],
'{"host": "node1.LF","target": "node2.LF"}')
@@ -159,6 +160,9 @@ class TaskTestCase(unittest.TestCase):
file_path = os.path.join(curr_path, filename)
return file_path
+ def change_to_abspath(self, filepath):
+ return os.path.join(consts.YARDSTICK_ROOT_PATH, filepath)
+
def main():
unittest.main()
diff --git a/tests/unit/benchmark/core/test_testcase.py b/tests/unit/benchmark/core/test_testcase.py
index c7da2de7c..1f5aad75e 100644
--- a/tests/unit/benchmark/core/test_testcase.py
+++ b/tests/unit/benchmark/core/test_testcase.py
@@ -28,13 +28,13 @@ class TestcaseUT(unittest.TestCase):
def test_list_all(self):
t = testcase.Testcase()
result = t.list_all("")
- self.assertEqual(result, True)
+ self.assertIsInstance(result, list)
def test_show(self):
t = testcase.Testcase()
casename = Arg()
result = t.show(casename)
- self.assertEqual(result, True)
+ self.assertTrue(result)
def main():
diff --git a/tests/unit/cmd/commands/test_testcase.py b/tests/unit/cmd/commands/test_testcase.py
new file mode 100644
index 000000000..515784352
--- /dev/null
+++ b/tests/unit/cmd/commands/test_testcase.py
@@ -0,0 +1,21 @@
+import unittest
+from mock import patch
+
+from yardstick.cmd.commands.testcase import TestcaseCommands
+
+
+class TestcaseCommandsUT(unittest.TestCase):
+ @patch('yardstick.cmd.commands.testcase.TestcaseCommands._format_print')
+ @patch('yardstick.cmd.commands.client')
+ def test_do_list(self, mock_client, mock_print):
+ mock_client.get.return_value = {'result': []}
+ TestcaseCommands().do_list({})
+ self.assertTrue(mock_print.called)
+
+
+def main():
+ unittest.main()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 000000000..3dfb982bf
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,22 @@
+[tox]
+minversion = 2.0
+skipsdist = True
+envlist = py27,py3
+
+[testenv]
+usedevelop=True
+deps = -rrequirements.txt
+commands = /bin/bash ./run_tests.sh
+whitelist_externals = /bin/bash
+
+[flake8]
+# E125 is deliberately excluded. See https://github.com/jcrocholl/pep8/issues/126
+# The rest of the ignores are TODOs
+# New from hacking 0.9: E129, E131, H407, H405
+# E251 Skipped due to https://github.com/jcrocholl/pep8/issues/301
+
+# nova flake8 ignores
+#ignore = E121,E122,E123,E124,E125,E126,E127,E128,E129,E131,E251,H405
+# dovetail flake8 ignores
+ignore = E123,E125,H803
+exclude = .venv,.git,.tox,dist,docs,*egg,build
diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py
index 6cfec7b13..87d70f42f 100644
--- a/yardstick/benchmark/core/task.py
+++ b/yardstick/benchmark/core/task.py
@@ -66,8 +66,6 @@ class Task(object): # pragma: no cover
if args.parse_only:
sys.exit(0)
- if os.path.isfile(args.output_file):
- os.remove(args.output_file)
# parse task_files
for i in range(0, len(task_files)):
one_task_start_time = time.time()
@@ -195,6 +193,8 @@ class TaskParser(object): # pragma: no cover
LOG.info("\nStarting scenario:%s", cfg["name"])
test_cases_dir = cfg.get("test_cases_dir", test_cases_dir_default)
+ test_cases_dir = os.path.join(constants.YARDSTICK_ROOT_PATH,
+ test_cases_dir)
if test_cases_dir[-1] != os.sep:
test_cases_dir += os.sep
diff --git a/yardstick/benchmark/core/testcase.py b/yardstick/benchmark/core/testcase.py
index 92198bd91..7b23b73aa 100644
--- a/yardstick/benchmark/core/testcase.py
+++ b/yardstick/benchmark/core/testcase.py
@@ -10,13 +10,15 @@
""" Handler for yardstick command 'testcase' """
from __future__ import absolute_import
from __future__ import print_function
+
import os
import yaml
-import sys
+import logging
-from yardstick.benchmark.core import print_hbar
from yardstick.common.task_template import TaskTemplate
-from yardstick.definitions import YARDSTICK_ROOT_PATH
+from yardstick.common import constants as consts
+
+LOG = logging.getLogger(__name__)
class Testcase(object):
@@ -25,91 +27,80 @@ class Testcase(object):
Set of commands to discover and display test cases.
"""
- def __init__(self):
- self.test_case_path = YARDSTICK_ROOT_PATH + 'tests/opnfv/test_cases/'
- self.testcase_list = []
-
def list_all(self, args):
"""List existing test cases"""
- try:
- testcase_files = os.listdir(self.test_case_path)
- except Exception as e:
- print("Failed to list dir:\n%(path)s\n%(err)s\n"
- % {"path": self.test_case_path, "err": e})
- raise e
- testcase_files.sort()
-
- for testcase_file in testcase_files:
- record = self._get_record(testcase_file)
- self.testcase_list.append(record)
-
- self._format_print(self.testcase_list)
- return True
+ testcase_files = self._get_testcase_file_list()
+ testcase_list = [self._get_record(f) for f in testcase_files]
- def show(self, args):
- """Show details of a specific test case"""
- testcase_name = args.casename[0]
- testcase_path = self.test_case_path + testcase_name + ".yaml"
+ return testcase_list
+
+ def _get_testcase_file_list(self):
try:
- with open(testcase_path) as f:
- try:
- testcase_info = f.read()
- print(testcase_info)
-
- except Exception as e:
- print("Failed to load test cases:"
- "\n%(testcase_file)s\n%(err)s\n"
- % {"testcase_file": testcase_path, "err": e})
- raise e
- except IOError as ioerror:
- sys.exit(ioerror)
- return True
+ testcase_files = sorted(os.listdir(consts.TESTCASE_DIR))
+ except OSError:
+ LOG.exception('Failed to list dir:\n%s\n', consts.TESTCASE_DIR)
+ raise
+
+ return testcase_files
def _get_record(self, testcase_file):
- try:
- with open(self.test_case_path + testcase_file) as f:
- try:
- testcase_info = f.read()
- except Exception as e:
- print("Failed to load test cases:"
- "\n%(testcase_file)s\n%(err)s\n"
- % {"testcase_file": testcase_file, "err": e})
- raise e
- description, installer, deploy_scenarios = \
- self._parse_testcase(testcase_info)
-
- record = {'Name': testcase_file.split(".")[0],
- 'Description': description,
- 'installer': installer,
- 'deploy_scenarios': deploy_scenarios}
- return record
- except IOError as ioerror:
- sys.exit(ioerror)
+ file_path = os.path.join(consts.TESTCASE_DIR, testcase_file)
+ with open(file_path) as f:
+ try:
+ testcase_info = f.read()
+ except IOError:
+ LOG.exception('Failed to load test case:\n%s\n', testcase_file)
+ raise
+
+ description, installer, deploy_scenarios = self._parse_testcase(
+ testcase_info)
+
+ record = {
+ 'Name': testcase_file.split(".")[0],
+ 'Description': description,
+ 'installer': installer,
+ 'deploy_scenarios': deploy_scenarios
+ }
+
+ return record
def _parse_testcase(self, testcase_info):
- kw = {}
- rendered_testcase = TaskTemplate.render(testcase_info, **kw)
+ rendered_testcase = TaskTemplate.render(testcase_info)
testcase_cfg = yaml.load(rendered_testcase)
- test_precondition = testcase_cfg.get('precondition', None)
- installer_type = 'all'
- deploy_scenarios = 'all'
- if test_precondition is not None:
- installer_type = test_precondition.get('installer_type', 'all')
- deploy_scenarios = test_precondition.get('deploy_scenarios', 'all')
-
- description = testcase_info.split("\n")[2][1:].strip()
+
+ test_precondition = testcase_cfg.get('precondition', {})
+ installer_type = test_precondition.get('installer_type', 'all')
+ deploy_scenarios = test_precondition.get('deploy_scenarios', 'all')
+
+ description = self._get_description(testcase_cfg)
+
return description, installer_type, deploy_scenarios
- def _format_print(self, testcase_list):
- """format output"""
+ def _get_description(self, testcase_cfg):
+ try:
+ description_list = testcase_cfg['description'].split(';')
+ except KeyError:
+ return ''
+ else:
+ try:
+ return description_list[1].replace(os.linesep, '').strip()
+ except IndexError:
+ return description_list[0].replace(os.linesep, '').strip()
- print_hbar(88)
- print("| %-21s | %-60s" % ("Testcase Name", "Description"))
- print_hbar(88)
- for testcase_record in testcase_list:
- print("| %-16s | %-60s" % (testcase_record['Name'],
- testcase_record['Description']))
- print_hbar(88)
+ def show(self, args):
+ """Show details of a specific test case"""
+ testcase_name = args.casename[0]
+ testcase_path = os.path.join(consts.TESTCASE_DIR,
+ testcase_name + ".yaml")
+ with open(testcase_path) as f:
+ try:
+ testcase_info = f.read()
+ except IOError:
+ LOG.exception('Failed to load test case:\n%s\n', testcase_path)
+ raise
+
+ print(testcase_info)
+ return True
diff --git a/yardstick/cmd/commands/__init__.py b/yardstick/cmd/commands/__init__.py
index 5c5356736..9bc0e9fac 100644
--- a/yardstick/cmd/commands/__init__.py
+++ b/yardstick/cmd/commands/__init__.py
@@ -1,10 +1,20 @@
from __future__ import absolute_import
from yardstick.benchmark.core import Param
+from api import client
def change_osloobj_to_paras(args):
param = Param({})
- for k in param.__dict__:
+ for k in vars(param):
if hasattr(args, k):
setattr(param, k, getattr(args, k))
return param
+
+
+class Commands(object):
+ def __init__(self):
+ self.client = client
+
+ def _change_to_dict(self, args):
+ p = Param({})
+ return {k: getattr(args, k) for k in vars(p) if hasattr(args, k)}
diff --git a/yardstick/cmd/commands/task.py b/yardstick/cmd/commands/task.py
index 1c5db1f46..20ab086e5 100644
--- a/yardstick/cmd/commands/task.py
+++ b/yardstick/cmd/commands/task.py
@@ -1,4 +1,4 @@
-##############################################################################
+#############################################################################
# Copyright (c) 2015 Ericsson AB and others.
#
# All rights reserved. This program and the accompanying materials
@@ -9,10 +9,12 @@
""" Handler for yardstick command 'task' """
from __future__ import print_function
-
from __future__ import absolute_import
+
from yardstick.benchmark.core.task import Task
from yardstick.common.utils import cliargs
+from yardstick.common.utils import write_json_to_file
+from yardstick.common import constants as consts
from yardstick.cmd.commands import change_osloobj_to_paras
output_file_default = "/tmp/yardstick.out"
@@ -42,4 +44,18 @@ class TaskCommands(object):
action="store_true")
def do_start(self, args, **kwargs):
param = change_osloobj_to_paras(args)
- Task().start(param)
+
+ self._init_result_file()
+
+ try:
+ Task().start(param)
+ except Exception as e:
+ self._write_error_data(e)
+
+ def _init_result_file(self):
+ data = {'status': 0, 'result': []}
+ write_json_to_file(consts.DEFAULT_OUTPUT_FILE, data)
+
+ def _write_error_data(self, error):
+ data = {'status': 2, 'result': str(error)}
+ write_json_to_file(consts.DEFAULT_OUTPUT_FILE, data)
diff --git a/yardstick/cmd/commands/testcase.py b/yardstick/cmd/commands/testcase.py
index bd17b1aa5..a151871b3 100644
--- a/yardstick/cmd/commands/testcase.py
+++ b/yardstick/cmd/commands/testcase.py
@@ -9,14 +9,16 @@
""" Handler for yardstick command 'testcase' """
from __future__ import print_function
-
from __future__ import absolute_import
+
from yardstick.benchmark.core.testcase import Testcase
+from yardstick.benchmark.core import print_hbar
from yardstick.common.utils import cliargs
from yardstick.cmd.commands import change_osloobj_to_paras
+from yardstick.cmd.commands import Commands
-class TestcaseCommands(object):
+class TestcaseCommands(Commands):
"""Testcase commands.
Set of commands to discover and display test cases.
@@ -24,11 +26,22 @@ class TestcaseCommands(object):
def do_list(self, args):
"""List existing test cases"""
- param = change_osloobj_to_paras(args)
- Testcase().list_all(param)
+ testcase_list = self.client.get('/yardstick/testcases')['result']
+ self._format_print(testcase_list)
@cliargs("casename", type=str, help="test case name", nargs=1)
def do_show(self, args):
"""Show details of a specific test case"""
param = change_osloobj_to_paras(args)
Testcase().show(param)
+
+ def _format_print(self, testcase_list):
+ """format output"""
+
+ print_hbar(88)
+ print("| %-21s | %-60s" % ("Testcase Name", "Description"))
+ print_hbar(88)
+ for testcase_record in testcase_list:
+ print("| %-16s | %-60s" % (testcase_record['Name'],
+ testcase_record['Description']))
+ print_hbar(88)
diff --git a/yardstick/common/constants.py b/yardstick/common/constants.py
index ffca4b3e9..e6faf6828 100644
--- a/yardstick/common/constants.py
+++ b/yardstick/common/constants.py
@@ -31,6 +31,8 @@ INSTALLERS = ['apex', 'compass', 'fuel', 'joid']
YARDSTICK_ROOT_PATH = dirname(dirname(dirname(abspath(__file__)))) + sep
+TESTCASE_DIR = join(YARDSTICK_ROOT_PATH, 'tests/opnfv/test_cases/')
+
YARDSTICK_REPOS_DIR = '/home/opnfv/repos/yardstick'
YARDSTICK_CONFIG_DIR = '/etc/yardstick/'
@@ -57,3 +59,5 @@ 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'
diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py
index 57ace14e6..473bbf540 100644
--- a/yardstick/common/utils.py
+++ b/yardstick/common/utils.py
@@ -30,6 +30,7 @@ from keystoneauth1 import identity
from keystoneauth1 import session
from neutronclient.v2_0 import client
from oslo_utils import importutils
+from oslo_serialization import jsonutils
import yardstick
@@ -145,3 +146,12 @@ def get_neutron_client():
sess = get_openstack_session()
neutron_client = client.Client(session=sess)
return neutron_client
+
+
+def write_json_to_file(path, data, mode='w'):
+ write_file(path, jsonutils.dump_as_bytes(data), mode)
+
+
+def write_file(path, data, mode='w'):
+ with open(path, mode) as f:
+ f.write(data)
diff --git a/yardstick/dispatcher/file.py b/yardstick/dispatcher/file.py
index 9c728e983..8d3c3693d 100644
--- a/yardstick/dispatcher/file.py
+++ b/yardstick/dispatcher/file.py
@@ -18,28 +18,9 @@
from __future__ import absolute_import
-import logging
-import logging.handlers
-
-from oslo_serialization import jsonutils
-from oslo_config import cfg
-
from yardstick.dispatcher.base import Base as DispatchBase
-
-CONF = cfg.CONF
-OPTS = [
- cfg.StrOpt('file_path',
- default='/tmp/yardstick.out',
- help='Name and the location of the file to record '
- 'data.'),
- cfg.IntOpt('max_bytes',
- default=0,
- help='The max size of the file.'),
- cfg.IntOpt('backup_count',
- default=0,
- help='The max number of the files to keep.'),
-]
-CONF.register_opts(OPTS, group="dispatcher_file")
+from yardstick.common import constants as consts
+from yardstick.common import utils
class FileDispatcher(DispatchBase):
@@ -50,29 +31,13 @@ class FileDispatcher(DispatchBase):
def __init__(self, conf):
super(FileDispatcher, self).__init__(conf)
- self.log = None
-
- # if the directory and path are configured, then log to the file
- if CONF.dispatcher_file.file_path:
- dispatcher_logger = logging.Logger('dispatcher.file')
- dispatcher_logger.setLevel(logging.INFO)
- # create rotating file handler which logs result
- rfh = logging.handlers.RotatingFileHandler(
- self.conf.get('file_path', CONF.dispatcher_file.file_path),
- maxBytes=CONF.dispatcher_file.max_bytes,
- backupCount=CONF.dispatcher_file.backup_count,
- encoding='utf8')
-
- rfh.setLevel(logging.INFO)
- # Only wanted the data to be saved in the file, not the
- # project root logger.
- dispatcher_logger.propagate = False
- dispatcher_logger.addHandler(rfh)
- self.log = dispatcher_logger
+ self.result = []
def record_result_data(self, data):
- if self.log:
- self.log.info(jsonutils.dump_as_bytes(data))
+ self.result.append(data)
def flush_result_data(self):
- pass
+ file_path = self.conf.get('file_path', consts.DEFAULT_OUTPUT_FILE)
+
+ data = {'status': 1, 'result': self.result}
+ utils.write_json_to_file(file_path, data)