summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/userguide/opnfv_yardstick_tc044.rst82
-rw-r--r--docs/userguide/opnfv_yardstick_tc071.rst109
-rw-r--r--samples/memload.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml (renamed from tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml)28
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_attacker_general.py1
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_monitor_general.py2
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_operation_general.py2
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_result_checker_general.py1
-rw-r--r--yardstick/benchmark/scenarios/availability/attacker/attacker_general.py3
-rw-r--r--yardstick/benchmark/scenarios/availability/monitor/monitor_general.py4
-rw-r--r--yardstick/benchmark/scenarios/availability/operation/operation_general.py4
-rw-r--r--yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py3
12 files changed, 224 insertions, 22 deletions
diff --git a/docs/userguide/opnfv_yardstick_tc044.rst b/docs/userguide/opnfv_yardstick_tc044.rst
new file mode 100644
index 000000000..2be8517a1
--- /dev/null
+++ b/docs/userguide/opnfv_yardstick_tc044.rst
@@ -0,0 +1,82 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, Huawei Technologies Co.,Ltd and others.
+
+*************************************
+Yardstick Test Case Description TC044
+*************************************
+
+.. _man-pages: http://manpages.ubuntu.com/manpages/trusty/en/man1/free.1.html
+
++-----------------------------------------------------------------------------+
+|Memory Utilization |
+| |
++--------------+--------------------------------------------------------------+
+|test case id | OPNFV_YARDSTICK_TC044_Memory Utilization |
+| | |
++--------------+--------------------------------------------------------------+
+|metric | Memory utilization |
+| | |
++--------------+--------------------------------------------------------------+
+|test purpose | To evaluate the IaaS compute capability with regards to |
+| | memory utilization.This test case should be run in parallel |
+| | to other Yardstick test cases and not run as a stand-alone |
+| | test case. |
+| | Measure the memory usage statistics including used memory, |
+| | free memory, buffer, cache and shared memory. |
+| | Both average and maximun values are obtained. |
+| | The purpose is also to be able to spot trends. |
+| | Test results, graphs and similar shall be stored for |
+| | comparison reasons and product evolution understanding |
+| | between different OPNFV versions and/or configurations. |
+| | |
++--------------+--------------------------------------------------------------+
+|configuration | File: memload.yaml (in the 'samples' directory) |
+| | |
+| | * interval: 1 - repeat, pausing every 1 seconds in-between. |
+| | * count: 10 - display statistics 10 times, then exit. |
+| | |
++--------------+--------------------------------------------------------------+
+|test tool | free |
+| | |
+| | free provides information about unused and used memory and |
+| | swap space on any computer running Linux or another Unix-like|
+| | operating system. |
+| | free is normally part of a Linux distribution, hence it |
+| | doesn't needs to be installed. |
+| | |
++--------------+--------------------------------------------------------------+
+|references | man-pages_ |
+| | |
+| | ETSI-NFV-TST001 |
+| | |
++--------------+--------------------------------------------------------------+
+|applicability | Test can be configured with different: |
+| | |
+| | * interval; |
+| | * count; |
+| | * runner Iteration and intervals. |
+| | |
+| | There are default values for each above-mentioned option. |
+| | Run in background with other test cases. |
+| | |
++--------------+--------------------------------------------------------------+
+|pre-test | The test case image needs to be installed into Glance |
+|conditions | with free included in the image. |
+| | |
+| | No POD specific requirements have been identified. |
+| | |
++--------------+--------------------------------------------------------------+
+|test sequence | description and expected result |
+| | |
++--------------+--------------------------------------------------------------+
+|step 1 | The host is installed as client. The related TC, or TCs, is |
+| | invoked and free logs are produced and stored. |
+| | |
+| | Result: logs are stored. |
+| | |
++--------------+--------------------------------------------------------------+
+|test verdict | None. Memory utilization results are fetched and stored. |
+| | |
++--------------+--------------------------------------------------------------+
diff --git a/docs/userguide/opnfv_yardstick_tc071.rst b/docs/userguide/opnfv_yardstick_tc071.rst
new file mode 100644
index 000000000..673480b55
--- /dev/null
+++ b/docs/userguide/opnfv_yardstick_tc071.rst
@@ -0,0 +1,109 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, Huawei Technologies Co.,Ltd and others.
+
+*************************************
+Yardstick Test Case Description TC071
+*************************************
+
+.. _cirros: https://download.cirros-cloud.net
+.. _pktgen: https://www.kernel.org/doc/Documentation/networking/pktgen.txt
+.. _cachestat: https://github.com/brendangregg/perf-tools/tree/master/fs
+
++-----------------------------------------------------------------------------+
+|Latency, Cache Utilization, Throughput, Packet Loss |
+| |
++--------------+--------------------------------------------------------------+
+|test case id | OPNFV_YARDSTICK_TC071_Latency, Cache Utilization, |
+| | Throughput,Packet Loss |
+| | |
++--------------+--------------------------------------------------------------+
+|metric | Number of flows, latency, throughput, Cache Utilization, |
+| | packet loss |
+| | |
++--------------+--------------------------------------------------------------+
+|test purpose | To evaluate the IaaS network performance with regards to |
+| | flows and throughput, such as if and how different amounts |
+| | of flows matter for the throughput between hosts on different|
+| | compute blades. Typically e.g. the performance of a vSwitch |
+| | depends on the number of flows running through it. Also |
+| | performance of other equipment or entities can depend |
+| | on the number of flows or the packet sizes used. |
+| | The purpose is also to be able to spot trends. |
+| | Test results, graphs and similar shall be stored for |
+| | comparison reasons and product evolution understanding |
+| | between different OPNFV versions and/or configurations. |
+| | |
++--------------+--------------------------------------------------------------+
+|configuration | file: opnfv_yardstick_tc071.yaml |
+| | |
+| | Packet size: 64 bytes |
+| | Number of ports: 1, 10, 50, 100, 300, 500, 750 and 1000. |
+| | The amount configured ports map from 2 up to 1001000 flows, |
+| | respectively. Each port amount is run two times, for 20 |
+| | seconds each. Then the next port_amount is run, and so on. |
+| | During the test Cache Utilization on both client and server, |
+| | and the network latency between the client and server are |
+| | measured. |
+| | The client and server are distributed on different HW. |
+| | For SLA max_ppm is set to 1000. |
+| | |
++--------------+--------------------------------------------------------------+
+|test tool | pktgen |
+| | |
+| | Pktgen is not always part of a Linux distribution, hence it |
+| | needs to be installed. It is part of the Yardstick Glance |
+| | image. |
+| | (As an example see the /yardstick/tools/ directory for how |
+| | to generate a Linux image with pktgen included.) |
+| | |
+| | ping |
+| | |
+| | Ping is normally part of any Linux distribution, hence it |
+| | doesn't need to be installed. It is also part of the |
+| | Yardstick Glance image. |
+| | (For example also a cirros_ image can be downloaded, it |
+| | includes ping) |
+| | |
+| | cachestat |
+| | |
+| | cachestat is not always part of a Linux distribution, hence |
+| | it needs to be installed. |
+| | |
++--------------+--------------------------------------------------------------+
+|references | Ping man pages |
+| | |
+| | pktgen_ |
+| | |
+| | cachestat_ |
+| | |
+| | ETSI-NFV-TST001 |
+| | |
++--------------+--------------------------------------------------------------+
+|applicability | Test can be configured with different packet sizes, amount |
+| | of flows and test duration. Default values exist. |
+| | |
+| | SLA (optional): max_ppm: The number of packets per million |
+| | packets sent that are acceptable to lose, not received. |
+| | |
++--------------+--------------------------------------------------------------+
+|pre-test | The test case image needs to be installed into Glance |
+|conditions | with pktgen included in it. |
+| | |
+| | No POD specific requirements have been identified. |
+| | |
++--------------+--------------------------------------------------------------+
+|test sequence | description and expected result |
+| | |
++--------------+--------------------------------------------------------------+
+|step 1 | The hosts are installed, as server and client. pktgen is |
+| | invoked and logs are produced and stored. |
+| | |
+| | Result: Logs are stored. |
+| | |
++--------------+--------------------------------------------------------------+
+|test verdict | Fails only if SLA is not passed, or if there is a test case |
+| | execution problem. |
+| | |
++--------------+--------------------------------------------------------------+
diff --git a/samples/memload.yaml b/samples/memload.yaml
index 0acba21b1..87d727707 100644
--- a/samples/memload.yaml
+++ b/samples/memload.yaml
@@ -9,13 +9,14 @@ scenarios:
type: MEMORYload
options:
interval: 1
- count: 1
+ count: 10
host: kratos.demo
runner:
- type: Duration
- duration: 60
+ type: Iteration
+ iterations: 5
+ interval: 1
context:
name: demo
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml
index d7406832d..644010916 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc071.yaml
@@ -1,35 +1,33 @@
---
-# Yardstick TC044 config file
-# Measure memory usage statistics, network throughput, latency and packet loss.
+# 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 memory usage statistics and network latency are
-# recorded/measured using sar and ping, respectively.
+# 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"
scenarios:
-
- type: MEMORYload
+ type: CACHEstat
run_in_background: true
options:
interval: 1
- count: 1
- host: demeter.yardstick-TC044
+ host: demeter.yardstick-TC071
-
- type: MEMORYload
+ type: CACHEstat
run_in_background: true
options:
interval: 1
- count: 1
- host: poseidon.yardstick-TC044
+ host: poseidon.yardstick-TC071
-
type: Ping
run_in_background: true
@@ -37,8 +35,8 @@ scenarios:
options:
packetsize: 100
- host: demeter.yardstick-TC044
- target: poseidon.yardstick-TC044
+ host: demeter.yardstick-TC071
+ target: poseidon.yardstick-TC071
sla:
max_rtt: 10
@@ -51,8 +49,8 @@ scenarios:
number_of_ports: {{num_ports}}
duration: 20
- host: demeter.yardstick-TC044
- target: poseidon.yardstick-TC044
+ host: demeter.yardstick-TC071
+ target: poseidon.yardstick-TC071
runner:
type: Iteration
@@ -65,7 +63,7 @@ scenarios:
{% endfor %}
context:
- name: yardstick-TC044
+ name: yardstick-TC071
image: yardstick-trusty-server
flavor: yardstick-flavor
user: ubuntu
diff --git a/tests/unit/benchmark/scenarios/availability/test_attacker_general.py b/tests/unit/benchmark/scenarios/availability/test_attacker_general.py
index 643c1e7ac..aa2e0cc4d 100644
--- a/tests/unit/benchmark/scenarios/availability/test_attacker_general.py
+++ b/tests/unit/benchmark/scenarios/availability/test_attacker_general.py
@@ -33,6 +33,7 @@ class GeneralAttackerServiceTestCase(unittest.TestCase):
'action_parameter':{'process_name':'nova_api'},
'rollback_parameter':{'process_name':'nova_api'},
'key':'stop-service',
+ 'attack_key':'stop-service',
'host': 'node1',
}
diff --git a/tests/unit/benchmark/scenarios/availability/test_monitor_general.py b/tests/unit/benchmark/scenarios/availability/test_monitor_general.py
index b48434c99..de7d26cbf 100644
--- a/tests/unit/benchmark/scenarios/availability/test_monitor_general.py
+++ b/tests/unit/benchmark/scenarios/availability/test_monitor_general.py
@@ -32,6 +32,7 @@ class GeneralMonitorServiceTestCase(unittest.TestCase):
self.monitor_cfg = {
'monitor_type': 'general-monitor',
'key': 'service-status',
+ 'monitor_key': 'service-status',
'host': 'node1',
'monitor_time': 3,
'parameter': {'serviceName': 'haproxy'},
@@ -40,6 +41,7 @@ class GeneralMonitorServiceTestCase(unittest.TestCase):
self.monitor_cfg_noparam = {
'monitor_type': 'general-monitor',
'key': 'service-status',
+ 'monitor_key': 'service-status',
'host': 'node1',
'monitor_time': 3,
'sla': {'max_outage_time': 1}
diff --git a/tests/unit/benchmark/scenarios/availability/test_operation_general.py b/tests/unit/benchmark/scenarios/availability/test_operation_general.py
index 6713733a8..26cd3f7c4 100644
--- a/tests/unit/benchmark/scenarios/availability/test_operation_general.py
+++ b/tests/unit/benchmark/scenarios/availability/test_operation_general.py
@@ -34,11 +34,13 @@ class GeneralOperaionTestCase(unittest.TestCase):
'action_parameter': {'ins_cup': 2},
'rollback_parameter': {'ins_id': 'id123456'},
'key': 'nova-create-instance',
+ 'operation_key': 'nova-create-instance',
'host': 'node1',
}
self.operation_cfg_noparam = {
'operation_type': 'general-operation',
'key': 'nova-create-instance',
+ 'operation_key': 'nova-create-instance',
'host': 'node1',
}
diff --git a/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py b/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py
index 88a9b9d20..bbadf0ac3 100644
--- a/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py
+++ b/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py
@@ -38,6 +38,7 @@ class GeneralResultCheckerTestCase(unittest.TestCase):
'condition' : 'eq',
'expectedValue' : 1,
'key' : 'process-checker',
+ 'checker_key' : 'process-checker',
'host': 'node1'
}
diff --git a/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py b/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py
index 018362a15..816e7e37d 100644
--- a/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py
+++ b/yardstick/benchmark/scenarios/availability/attacker/attacker_general.py
@@ -31,6 +31,7 @@ class GeneralAttacker(BaseAttacker):
LOG.debug("ssh host success!")
self.key = self._config['key']
+ self.attack_key = self._config['attack_key']
if "action_parameter" in self._config:
actionParameter = self._config['action_parameter']
@@ -50,7 +51,7 @@ class GeneralAttacker(BaseAttacker):
l = list(item for item in rollbackParameter.values())
self.rollback_param = str.format(*l)
- self.fault_cfg = BaseAttacker.attacker_cfgs.get(self.key)
+ self.fault_cfg = BaseAttacker.attacker_cfgs.get(self.attack_key)
self.inject_script = self.get_script_fullpath(
self.fault_cfg['inject_script'])
self.recovery_script = self.get_script_fullpath(
diff --git a/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py b/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py
index e7e4d5bce..61efc0520 100644
--- a/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py
+++ b/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py
@@ -27,6 +27,7 @@ class GeneralMonitor(basemonitor.BaseMonitor):
user = host.get("user", "root")
key_filename = host.get("key_filename", "~/.ssh/id_rsa")
self.key = self._config["key"]
+ self.monitor_key = self._config["monitor_key"]
self.monitor_type = self._config["monitor_type"]
if "parameter" in self._config:
@@ -35,7 +36,8 @@ class GeneralMonitor(basemonitor.BaseMonitor):
l = list(item for item in parameter.values())
self.cmd_param = str.format(*l)
- self.monitor_cfg = basemonitor.BaseMonitor.monitor_cfgs.get(self.key)
+ self.monitor_cfg = basemonitor.BaseMonitor.monitor_cfgs.get(
+ self.monitor_key)
self.monitor_script = self.get_script_fullpath(
self.monitor_cfg['monitor_script'])
self.connection = ssh.SSH(user, ip, key_filename=key_filename)
diff --git a/yardstick/benchmark/scenarios/availability/operation/operation_general.py b/yardstick/benchmark/scenarios/availability/operation/operation_general.py
index d41371629..e43f6e1d5 100644
--- a/yardstick/benchmark/scenarios/availability/operation/operation_general.py
+++ b/yardstick/benchmark/scenarios/availability/operation/operation_general.py
@@ -30,6 +30,7 @@ class GeneralOperaion(BaseOperation):
LOG.debug("ssh host success!")
self.key = self._config['key']
+ self.operation_key = self._config['operation_key']
if "action_parameter" in self._config:
actionParameter = self._config['action_parameter']
@@ -43,7 +44,8 @@ class GeneralOperaion(BaseOperation):
l = list(item for item in rollbackParameter.values())
self.rollback_param = str.format(*l)
- self.operation_cfgs = BaseOperation.operation_cfgs.get(self.key)
+ self.operation_cfgs = BaseOperation.operation_cfgs.get(
+ self.operation_key)
self.action_script = self.get_script_fullpath(
self.operation_cfgs['action_script'])
self.rollback_script = self.get_script_fullpath(
diff --git a/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py b/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py
index 70bf9aea6..681fbf63f 100644
--- a/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py
+++ b/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py
@@ -32,6 +32,7 @@ class GeneralResultChecker(BaseResultChecker):
LOG.debug("ssh host success!")
self.key = self._config['key']
+ self.resultchecker_key = self._config['checker_key']
self.type = self._config['checker_type']
self.condition = self._config['condition']
self.expectedResult = self._config['expectedValue']
@@ -45,7 +46,7 @@ class GeneralResultChecker(BaseResultChecker):
self.shell_cmd = str.format(*l)
self.resultchecker_cfgs = BaseResultChecker.resultchecker_cfgs.get(
- self.key)
+ self.resultchecker_key)
self.verify_script = self.get_script_fullpath(
self.resultchecker_cfgs['verify_script'])