diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | docs/pre-hook.sh | 11 | ||||
-rw-r--r-- | docs/userguide/opnfv_yardstick_tc069.rst | 95 | ||||
-rw-r--r-- | docs/userguide/opnfv_yardstick_tc072.rst | 110 | ||||
-rw-r--r-- | tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml | 38 | ||||
-rw-r--r-- | tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml | 87 | ||||
-rw-r--r-- | yardstick/benchmark/contexts/node.py | 4 | ||||
-rw-r--r-- | yardstick/benchmark/scenarios/networking/sfc_openstack.py | 2 | ||||
-rw-r--r-- | yardstick/cmd/commands/plugin.py | 2 |
9 files changed, 348 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore index 6f462f55a..4843ba8ba 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,4 @@ cover/ .*.sw? /docs_build/ /docs_output/ -/releng/ +/docs/apidocs/yardstick*.rst diff --git a/docs/pre-hook.sh b/docs/pre-hook.sh new file mode 100644 index 000000000..4ecdb198e --- /dev/null +++ b/docs/pre-hook.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2016 NEC 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 +############################################################################## + +sphinx-apidoc -o docs/apidocs yardstick diff --git a/docs/userguide/opnfv_yardstick_tc069.rst b/docs/userguide/opnfv_yardstick_tc069.rst new file mode 100644 index 000000000..51807e246 --- /dev/null +++ b/docs/userguide/opnfv_yardstick_tc069.rst @@ -0,0 +1,95 @@ +.. 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 TC069 +************************************* + +.. _RAMspeed: http://alasir.com/software/ramspeed/ + ++-----------------------------------------------------------------------------+ +|Memory Bandwidth | +| | ++--------------+--------------------------------------------------------------+ +|test case id | OPNFV_YARDSTICK_TC069_Memory Bandwidth | +| | | ++--------------+--------------------------------------------------------------+ +|metric | Megabyte per second (MBps) | +| | | ++--------------+--------------------------------------------------------------+ +|test purpose | To evaluate the IaaS compute performance with regards to | +| | memory bandwidth. | +| | Measure the maximum possible cache and memory performance | +| | while reading and writing certain blocks of data (starting | +| | from 1Kb and further in power of 2) continuously through ALU | +| | and FPU respectively. | +| | Measure different aspects of memory performance via synthetic| +| | simulations. Each simulation consists of four performances | +| | (Copy, Scale, Add, Triad). | +| | 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_tc069.yaml | +| | | +| | * SLA (optional): 7000 (MBps) min_bandwidth: The minimum | +| | amount of memory bandwidth that is accepted. | +| | * type_id: 1 - runs a specified benchmark (by an ID number): | +| | 1 -- INTmark [writing] 4 -- FLOATmark [writing] | +| | 2 -- INTmark [reading] 5 -- FLOATmark [reading] | +| | 3 -- INTmem 6 -- FLOATmem | +| | * block_size: 64 Megabytes - the maximum block size per array| +| | * load: 32 Gigabytes - the amount of data load per pass | +| | * iterations: 5 - test is run 5 times iteratively. | +| | * interval: 1 - there is 1 second delay between each | +| | iteration. | +| | | ++--------------+--------------------------------------------------------------+ +|test tool | RAMspeed | +| | | +| | RAMspeed is a free open source command line utility to | +| | measure cache and memory performance of computer systems. | +| | RAMspeed is not always part of a Linux distribution, hence it| +| | needs to be installed in the test image. | +| | | ++--------------+--------------------------------------------------------------+ +|references | RAMspeed_ | +| | | +| | ETSI-NFV-TST001 | +| | | ++--------------+--------------------------------------------------------------+ +|applicability | Test can be configured with different: | +| | | +| | * benchmark operations (such as INTmark [writing], | +| | INTmark [reading], FLOATmark [writing], | +| | FLOATmark [reading], INTmem, FLOATmem); | +| | * block size per array; | +| | * load per pass; | +| | * number of batch run iterations; | +| | * iterations and intervals. | +| | | +| | There are default values for each above-mentioned option. | +| | | ++--------------+--------------------------------------------------------------+ +|pre-test | The test case image needs to be installed into Glance | +|conditions | with RAmspeed 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. RAMspeed is invoked and logs| +| | are produced and stored. | +| | | +| | Result: logs are stored. | +| | | ++--------------+--------------------------------------------------------------+ +|test verdict | Test fails if the measured memory bandwidth is below the SLA | +| | value or if there is a test case execution problem. | +| | | ++--------------+--------------------------------------------------------------+ diff --git a/docs/userguide/opnfv_yardstick_tc072.rst b/docs/userguide/opnfv_yardstick_tc072.rst new file mode 100644 index 000000000..2e7ee057c --- /dev/null +++ b/docs/userguide/opnfv_yardstick_tc072.rst @@ -0,0 +1,110 @@ +.. 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 TC072 +************************************* + +.. _cirros: https://download.cirros-cloud.net +.. _pktgen: https://www.kernel.org/doc/Documentation/networking/pktgen.txt +.. _sar: http://linux.die.net/man/1/sar + ++-----------------------------------------------------------------------------+ +|Latency, Network Utilization, Throughput, Packet Loss | +| | ++--------------+--------------------------------------------------------------+ +|test case id | OPNFV_YARDSTICK_TC072_Latency, Network Utilization, | +| | Throughput,Packet Loss | +| | | ++--------------+--------------------------------------------------------------+ +|metric | Number of flows, latency, throughput, Network 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_tc072.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 Network 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) | +| | | +| | sar | +| | | +| | The sar command writes to standard output the contents of | +| | selected cumulative activity counters in the operating | +| | system. | +| | sar is normally part of a Linux distribution, hence it | +| | doesn't needs to be installed. | +| | | ++--------------+--------------------------------------------------------------+ +|references | Ping and sar man pages | +| | | +| | pktgen_ | +| | | +| | 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/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml new file mode 100644 index 000000000..637e160c6 --- /dev/null +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc069.yaml @@ -0,0 +1,38 @@ +--- +# Yardstick TC069 config file +# Measure memory read and write bandwidth using ramspeed + +schema: "yardstick:task:0.1" + +scenarios: +- + type: Ramspeed + options: + type_id: 1 + load: 32 + block_size: 64 + + host: kratos.yardstick-TC069 + + runner: + type: Iteration + iterations: 5 + interval: 1 + + sla: + min_bandwidth: 7000 + action: monitor + +context: + name: yardstick-TC069 + image: yardstick-trusty-server + flavor: yardstick-flavor + user: ubuntu + + servers: + kratos: + floating_ip: true + + networks: + test: + cidr: '10.0.1.0/24' diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml new file mode 100644 index 000000000..f3e6d4c40 --- /dev/null +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc072.yaml @@ -0,0 +1,87 @@ +--- +# 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" + +scenarios: +- + type: NetUtilization + run_in_background: true + + options: + interval: 1 + count: 10 + + host: demeter.yardstick-TC072 +- + type: NetUtilization + run_in_background: true + + options: + interval: 1 + count: 10 + + host: poseidon.yardstick-TC072 +- + type: Ping + run_in_background: true + + options: + packetsize: 100 + + host: demeter.yardstick-TC072 + target: poseidon.yardstick-TC072 + + sla: + max_rtt: 10 + action: monitor +{% for num_ports in [1, 10, 50, 100, 300, 500, 750, 1000] %} +- + type: Pktgen + options: + packetsize: 64 + number_of_ports: {{num_ports}} + duration: 20 + + host: demeter.yardstick-TC072 + target: poseidon.yardstick-TC072 + + runner: + type: Iteration + iterations: 2 + interval: 1 + + sla: + max_ppm: 1000 + action: monitor +{% endfor %} + +context: + name: yardstick-TC072 + image: yardstick-trusty-server + flavor: yardstick-flavor + user: ubuntu + + placement_groups: + pgrp1: + policy: "availability" + + servers: + demeter: + floating_ip: true + placement: "pgrp1" + poseidon: + floating_ip: true + placement: "pgrp1" + + networks: + test: + cidr: '10.0.1.0/24' diff --git a/yardstick/benchmark/contexts/node.py b/yardstick/benchmark/contexts/node.py index 54ee076f4..c3d652119 100644 --- a/yardstick/benchmark/contexts/node.py +++ b/yardstick/benchmark/contexts/node.py @@ -82,6 +82,8 @@ class NodeContext(Context): LOG.error("Nodes: %r" % nodes) sys.exit(-1) - node = nodes[0] + # A clone is created in order to avoid affecting the + # original one. + node = dict(nodes[0]) node["name"] = attr_name return node diff --git a/yardstick/benchmark/scenarios/networking/sfc_openstack.py b/yardstick/benchmark/scenarios/networking/sfc_openstack.py index 2a5fbde1c..d1d45d8e4 100644 --- a/yardstick/benchmark/scenarios/networking/sfc_openstack.py +++ b/yardstick/benchmark/scenarios/networking/sfc_openstack.py @@ -1,5 +1,5 @@ import os -from novaclient.v2 import client as novaclient +from novaclient import client as novaclient from neutronclient.v2_0 import client as neutronclient diff --git a/yardstick/cmd/commands/plugin.py b/yardstick/cmd/commands/plugin.py index e65c818fa..52ecf2005 100644 --- a/yardstick/cmd/commands/plugin.py +++ b/yardstick/cmd/commands/plugin.py @@ -50,6 +50,8 @@ class PluginCommands(object): print("Done, exiting") + @cliargs("input_file", type=str, help="path to plugin configuration file", + nargs=1) def do_remove(self, args): '''Remove a plugin.''' |