diff options
20 files changed, 1660 insertions, 634 deletions
diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml index 4213816fa..487319f2a 100644 --- a/ansible/scale_out_test_templates.yml +++ b/ansible/scale_out_test_templates.yml @@ -40,6 +40,10 @@ dest: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml - template: + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-{{ num_vnfs }}.yaml + +- template: src: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml dest: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml diff --git a/docs/release/release-notes/release-notes.rst b/docs/release/release-notes/release-notes.rst index bbd7e8417..c998f0fbf 100644 --- a/docs/release/release-notes/release-notes.rst +++ b/docs/release/release-notes/release-notes.rst @@ -1,18 +1,16 @@ -======= License ======= -OPNFV Danube release note for Yardstick Docs +OPNFV Euphrates release note for Yardstick Docs are licensed under a Creative Commons Attribution 4.0 International License. You should have received a copy of the license along with this. If not, see <http://creativecommons.org/licenses/by/4.0/>. -The *Yardstick framework*, the *Yardstick test cases* are opensource software, +The *Yardstick framework*, the *Yardstick test cases* are open-source software, licensed under the terms of the Apache License, Version 2.0. -========================================= -OPNFV Danube Release Note for Yardstick -========================================= +OPNFV Euphrates Release Note for Yardstick +========================================== .. toctree:: :maxdepth: 2 @@ -25,35 +23,24 @@ OPNFV Danube Release Note for Yardstick Abstract -======== +-------- This document describes the release note of Yardstick project. Version History -=============== - -+----------------+--------------------+---------------------------------+ -| *Date* | *Version* | *Comment* | -| | | | -+----------------+--------------------+---------------------------------+ -| | 3.2 | Yardstick for Danube release | -| | | | -| | | Note: The 3.2 tag is due to a | -| | | code issue during Danube 3.1 | -| | | release | -| | | | -+----------------+--------------------+---------------------------------+ -| May 4th, 2017 | 2.0 | Yardstick for Danube release | -| | | | -+----------------+--------------------+---------------------------------+ -| Mar 31st, 2017 | 1.0 | Yardstick for Danube release | -| | | | -+----------------+--------------------+---------------------------------+ +--------------- ++------------------+-----------+---------------------------------+ +| *Date* | *Version* | *Comment* | +| | | | ++------------------+-----------+---------------------------------+ +| October 20, 2017 | 5.0.0 | Yardstick for Euphrates release | +| | | | ++------------------+-----------+---------------------------------+ Important Notes -=============== +--------------- The software delivered in the OPNFV Yardstick_ Project, comprising the *Yardstick framework*, the *Yardstick test cases* and the experimental @@ -63,11 +50,10 @@ NFV-TST001_. The *Yardstick* framework is *installer*, *infrastructure* and *application* independent. +OPNFV Euphrates Release +----------------------- -OPNFV Danube Release -====================== - -This Danube release provides *Yardstick* as a framework for NFVI testing +This Euphrates release provides *Yardstick* as a framework for NFVI testing and OPNFV feature testing, automated in the OPNFV CI pipeline, including: * Documentation generated with Sphinx @@ -93,9 +79,9 @@ and OPNFV feature testing, automated in the OPNFV CI pipeline, including: * Yardstick test cases yaml files -* Yardstick plug-in configration yaml files, plug-in install/remove scripts +* Yardstick plug-in configuration yaml files, plug-in install/remove scripts -For Danube release, the *Yardstick framework* is used for the following +For Euphrates release, the *Yardstick framework* is used for the following testing: * OPNFV platform testing - generic test cases to measure the categories: @@ -127,8 +113,7 @@ testing: * virtual Traffic Classifier The *Yardstick framework* is developed in the OPNFV community, by the -Yardstick_ team. The *virtual Traffic Classifier* is a part of the Yardstick -Project. +Yardstick_ team. .. note:: The test case description template used for the Yardstick test cases is based on the document ETSI-ISG NFV-TST001_; the results report template @@ -136,336 +121,201 @@ Project. Release Data -============ - -+--------------------------------------+--------------------------------------+ -| **Project** | Yardstick | -| | | -+--------------------------------------+--------------------------------------+ -| **Repo/tag** | yardstick/Danube.3.2 | -| | | -+--------------------------------------+--------------------------------------+ -| **Yardstick Docker image tag** | Danube.3.2 | -| | | -+--------------------------------------+--------------------------------------+ -| **Release designation** | Danube | -| | | -+--------------------------------------+--------------------------------------+ -| **Release date** | August 15th, 2017 | -| | | -+--------------------------------------+--------------------------------------+ -| **Purpose of the delivery** | OPNFV Danube release 3.0 | -| | | -+--------------------------------------+--------------------------------------+ +------------ + ++--------------------------------+-----------------------+ +| **Project** | Yardstick | +| | | ++--------------------------------+-----------------------+ +| **Repo/tag** | yardstick/opnfv-5.0.0 | +| | | ++--------------------------------+-----------------------+ +| **Yardstick Docker image tag** | opnfv-5.0.0 | +| | | ++--------------------------------+-----------------------+ +| **Release designation** | Euphrates | +| | | ++--------------------------------+-----------------------+ +| **Release date** | October 20, 2017 | +| | | ++--------------------------------+-----------------------+ +| **Purpose of the delivery** | OPNFV Euphrates 5.0.0 | +| | | ++--------------------------------+-----------------------+ Deliverables -============ +------------ Documents ---------- +^^^^^^^^^ - - User Guide: http://docs.opnfv.org/en/stable-danube/submodules/yardstick/docs/testing/user/userguide/index.html + - User Guide: http://docs.opnfv.org/en/stable-euphrates/submodules/yardstick/docs/testing/user/userguide/index.html - - Developer Guide: http://docs.opnfv.org/en/stable-danube/submodules/yardstick/docs/testing/developer/devguide/index.html + - Developer Guide: http://docs.opnfv.org/en/stable-euphrates/submodules/yardstick/docs/testing/developer/devguide/index.html Software Deliverables ---------------------- - - - - The Yardstick Docker image: https://hub.docker.com/r/opnfv/yardstick (tag: danube.3.2) - - -**Contexts** - -+---------------------+-------------------------------------------------------+ -| **Context** | **Description** | -| | | -+---------------------+-------------------------------------------------------+ -| *Heat* | Models orchestration using OpenStack Heat | -| | | -+---------------------+-------------------------------------------------------+ -| *Node* | Models Baremetal, Controller, Compute | -| | | -+---------------------+-------------------------------------------------------+ -| *Standalone* | Models VM running on Non-Managed NFVi | -| | | -+---------------------+-------------------------------------------------------+ - - -**Runners** - -+---------------------+-------------------------------------------------------+ -| **Runner** | **Description** | -| | | -+---------------------+-------------------------------------------------------+ -| *Arithmetic* | Steps every run arithmetically according to specified | -| | input value | -| | | -+---------------------+-------------------------------------------------------+ -| *Duration* | Runs for a specified period of time | -| | | -+---------------------+-------------------------------------------------------+ -| *Iteration* | Runs for a specified number of iterations | -| | | -+---------------------+-------------------------------------------------------+ -| *Sequence* | Selects input value to a scenario from an input file | -| | and runs all entries sequentially | -| | | -+---------------------+-------------------------------------------------------+ - - -**Scenarios** - -+---------------------+-------------------------------------------------------+ -| **Category** | **Delivered** | -| | | -+---------------------+-------------------------------------------------------+ -| *Availability* | Attacker: | -| | | -| | * baremetal, process | -| | | -| | HA tools: | -| | | -| | * check host, openstack, process, service | -| | * kill process | -| | * start/stop service | -| | | -| | Monitor: | -| | | -| | * command, process | -| | | -+---------------------+-------------------------------------------------------+ -| *Compute* | * cpuload | -| | | -| | * cyclictest | -| | | -| | * lmbench | -| | | -| | * lmbench_cache | -| | | -| | * perf | -| | | -| | * unixbench | -| | | -| | * ramspeed | -| | | -| | * cachestat | -| | | -| | * memeoryload | -| | | -| | * computecapacity | -| | | -+---------------------+-------------------------------------------------------+ -| *Networking* | * iperf3 | -| | | -| | * netperf | -| | | -| | * netperf_node | -| | | -| | * ping | -| | | -| | * ping6 | -| | | -| | * pktgen | -| | | -| | * sfc | -| | | -| | * sfc with tacker | -| | | -| | * vtc instantion validation | -| | | -| | * vtc instantion validation with noisy neighbors | -| | | -| | * vtc throughput | -| | | -| | * vtc throughput in the presence of noisy neighbors | -| | | -| | * networkcapacity | -| | | -| | * netutilization | -| | | -| | * nstat | -| | | -+---------------------+-------------------------------------------------------+ -| *Parser* | Tosca2Heat | -| | | -+---------------------+-------------------------------------------------------+ -| *Storage* | fio | -| | | -| | storagecapacity | -| | | -+---------------------+-------------------------------------------------------+ -| *StorPerf* | storperf | -| | | -+---------------------+-------------------------------------------------------+ -| *NSB* | vPE thoughput test case | -| | | -+---------------------+-------------------------------------------------------+ - - -**Test Results Output** - -+-----------------------------+-----------------------------------------------+ -| **Dispatcher** | **Description** | -| | | -+-----------------------------+-----------------------------------------------+ -| file | Log to a file. | -| | | -+-----------------------------+-----------------------------------------------+ -| http | Post data to html. | -| | | -+-----------------------------+-----------------------------------------------+ -| influxdb | Post data to influxDB. | -| | | -+-----------------------------+-----------------------------------------------+ - - -Delivered Test cases --------------------- - -* Generic NFVI test cases - - * OPNFV_YARDSTICK_TCOO1 - NW Performance - - * OPNFV_YARDSTICK_TCOO2 - NW Latency - - * OPNFV_YARDSTICK_TCOO4 - Cache Utilization - - * OPNFV_YARDSTICK_TCOO5 - Storage Performance - - * OPNFV_YARDSTICK_TCOO8 - Packet Loss Extended Test - - * OPNFV_YARDSTICK_TCOO9 - Packet Loss - - * OPNFV_YARDSTICK_TCO10 - Memory Latency - - * OPNFV_YARDSTICK_TCO11 - Packet Delay Variation Between VMs - - * OPNFV_YARDSTICK_TCO12 - Memory Bandwidth - - * OPNFV_YARDSTICK_TCO14 - Processing Speed - - * OPNFV_YARDSTICK_TCO24 - CPU Load - - * OPNFV_YARDSTICK_TCO37 - Latency, CPU Load, Throughput, Packet Loss - - * OPNFV_YARDSTICK_TCO38 - Latency, CPU Load, Throughput, Packet Loss Extended - Test - - * OPNFV_YARDSTICK_TCO42 - Network Performance - - * OPNFV_YARDSTICK_TCO43 - Network Latency Between NFVI Nodes - - * OPNFV_YARDSTICK_TCO44 - Memory Utilization - - * OPNFV_YARDSTICK_TCO55 - Compute Capacity - - * OPNFV_YARDSTICK_TCO61 - Network Utilization - - * OPNFV_YARDSTICK_TCO63 - Storage Capacity - - * OPNFV_YARDSTICK_TCO69 - Memory Bandwidth - - * OPNFV_YARDSTICK_TCO70 - Latency, Memory Utilization, Throughput, Packet - Loss - - * OPNFV_YARDSTICK_TCO71 - Latency, Cache Utilization, Throughput, Packet Loss - - * OPNFV_YARDSTICK_TCO72 - Latency, Network Utilization, Throughput, Packet - Loss - - * OPNFV_YARDSTICK_TC073 - Network Latency and Throughput Between Nodes - - * OPNFV_YARDSTICK_TCO75 - Network Capacity and Scale - - * OPNFV_YARDSTICK_TCO76 - Network frame error rate - -* Test Cases for OPNFV HA Project: - - * OPNFV_YARDSTICK_TCO19 - HA: Control node Openstack service down - - * OPNFV_YARDSTICK_TC025 - HA: OpenStacK Controller Node abnormally down - - * OPNFV_YARDSTICK_TCO45 - HA: Control node Openstack service down - neutron - server +^^^^^^^^^^^^^^^^^^^^^ + + + - The Yardstick Docker image: https://hub.docker.com/r/opnfv/yardstick (tag: opnfv-5.0.0) + + +New Contexts +############ + ++--------------+-------------------------------------------+ +| **Context** | **Description** | +| | | ++--------------+-------------------------------------------+ +| *Heat* | Models orchestration using OpenStack Heat | +| | | ++--------------+-------------------------------------------+ +| *Node* | Models Baremetal, Controller, Compute | +| | | ++--------------+-------------------------------------------+ +| *Standalone* | Models VM running on Non-Managed NFVi | +| | | ++--------------+-------------------------------------------+ +| *Kubernetes* | Models VM running on Non-Managed NFVi | +| | | ++--------------+-------------------------------------------+ + + +New Runners +########### + ++--------------+-------------------------------------------------------+ +| **Runner** | **Description** | +| | | ++--------------+-------------------------------------------------------+ +| *Arithmetic* | Steps every run arithmetically according to specified | +| | input value | +| | | ++--------------+-------------------------------------------------------+ +| *Duration* | Runs for a specified period of time | +| | | ++--------------+-------------------------------------------------------+ +| *Iteration* | Runs for a specified number of iterations | +| | | ++--------------+-------------------------------------------------------+ +| *Sequence* | Selects input value to a scenario from an input file | +| | and runs all entries sequentially | +| | | ++--------------+-------------------------------------------------------+ + + +New Scenarios +############# + ++----------------+-----------------------------------------------------+ +| **Category** | **Delivered** | +| | | ++----------------+-----------------------------------------------------+ +| *Availability* | Attacker: | +| | | +| | * baremetal, process | +| | | +| | HA tools: | +| | | +| | * check host, openstack, process, service | +| | * kill process | +| | * start/stop service | +| | | +| | Monitor: | +| | | +| | * command, process | +| | | ++----------------+-----------------------------------------------------+ +| *Compute* | * cpuload | +| | | +| | * cyclictest | +| | | +| | * lmbench | +| | | +| | * lmbench_cache | +| | | +| | * perf | +| | | +| | * unixbench | +| | | +| | * ramspeed | +| | | +| | * cachestat | +| | | +| | * memeoryload | +| | | +| | * computecapacity | +| | | ++----------------+-----------------------------------------------------+ +| *Networking* | * iperf3 | +| | | +| | * netperf | +| | | +| | * netperf_node | +| | | +| | * ping | +| | | +| | * ping6 | +| | | +| | * pktgen | +| | | +| | * sfc | +| | | +| | * sfc with tacker | +| | | +| | * vtc instantion validation | +| | | +| | * vtc instantion validation with noisy neighbors | +| | | +| | * vtc throughput | +| | | +| | * vtc throughput in the presence of noisy neighbors | +| | | +| | * networkcapacity | +| | | +| | * netutilization | +| | | +| | * nstat | +| | | ++----------------+-----------------------------------------------------+ +| *Parser* | Tosca2Heat | +| | | ++----------------+-----------------------------------------------------+ +| *Storage* | fio | +| | | +| | storagecapacity | +| | | ++----------------+-----------------------------------------------------+ +| *StorPerf* | storperf | +| | | ++----------------+-----------------------------------------------------+ +| *NSB* | vPE thoughput test case | +| | | ++----------------+-----------------------------------------------------+ + + + +New Test cases +^^^^^^^^^^^^^^ - * OPNFV_YARDSTICK_TC046 - HA: Control node Openstack service down - keystone - - * OPNFV_YARDSTICK_TCO47 - HA: Control node Openstack service down - glance - api - - * OPNFV_YARDSTICK_TC048 - HA: Control node Openstack service down - cinder - api - - * OPNFV_YARDSTICK_TCO49 - HA: Control node Openstack service down - swift - proxy - - * OPNFV_YARDSTICK_TC050 - HA: OpenStack Controller Node Network High - Availability - - * OPNFV_YARDSTICK_TCO51 - HA: OpenStack Controller Node CPU Overload High - Availability - - * OPNFV_YARDSTICK_TC052 - HA: OpenStack Controller Node Disk I/O Block High - Availability - - * OPNFV_YARDSTICK_TCO53 - HA: OpenStack Controller Load Balance Service High - Availability - - * OPNFV_YARDSTICK_TC054 - HA: OpenStack Virtual IP High Availability - -* Test Case for OPNFV IPv6 Project: - - * OPNFV_YARDSTICK_TCO27 - IPv6 connectivity - -* Test Case for OPNFV KVM Project: - - * OPNFV_YARDSTICK_TCO28 - KVM Latency measurements - -* Test Case for OPNFV Parser Project: - - * OPNFV_YARDSTICK_TCO40 - Verify Parser Yang-to-Tosca - -* Test Case for OPNFV StorPerf Project: - - * OPNFV_YARDSTICK_TCO74 - Storperf - -* Test Cases for Virtual Traffic Classifier: - - * OPNFV_YARDSTICK_TC006 - Virtual Traffic Classifier Data Plane Throughput - -* Benchmarking Test: - - * OPNFV_YARDSTICK_TC007 - Virtual Traffic Classifier Data Plane Throughput - -* Benchmarking in presence of noisy neighbors Test: - - * OPNFV_YARDSTICK_TC020 - Virtual Traffic Classifier Instantiation Test - - * OPNFV_YARDSTICK_TC021 - Virtual Traffic Classifier Instantiation in - presence of noisy neighbors Test Version Change -============== +-------------- Module Version Changes ----------------------- +^^^^^^^^^^^^^^^^^^^^^^ This is the fourth tracked release of Yardstick. It is based on following upstream versions: -- ONOS Ibis - -- OpenStack Newton - -- OpenDaylight Boron +- OpenStack Ocata Document Version Changes ------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^ This is the fourth tracked version of the Yardstick framework in OPNFV. It includes the following documentation updates: @@ -480,7 +330,7 @@ It includes the following documentation updates: Feature additions ------------------ +^^^^^^^^^^^^^^^^^ - Yardstick RESTful API support @@ -494,7 +344,7 @@ Feature additions - yardstick report CLI - - Node context support openstack configuration via Ansible + - Node context support OpenStack configuration via Ansible - Https support @@ -502,78 +352,78 @@ Feature additions Scenario Matrix -=============== - -For Danube 3.0, Yardstick was tested on the following scenarios: - -+-------------------------+---------+---------+---------+---------+ -| Scenario | Apex | Compass | Fuel | Joid | -+=========================+=========+=========+=========+=========+ -| os-nosdn-nofeature-noha | | | X | X | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-nofeature-ha | X | X | X | X | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-nofeature-ha | | X | X | X | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-nofeature-noha| | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l3-nofeature-ha | X | X | X | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l3-nofeature-noha| | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-onos-sfc-ha | | | | | -+-------------------------+---------+---------+---------+---------+ -| os-onos-nofeature-ha | | X | | X | -+-------------------------+---------+---------+---------+---------+ -| os-onos-nofeature-noha | | | | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-sfc-ha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-sfc-noha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-bgpvpn-ha | X | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-bgpvpn-noha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm-ha | X | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm-noha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-ovs-ha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-ovs-noha | | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-ocl-nofeature-ha | | X | | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-lxd-ha | | | | X | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-lxd-noha | | | | X | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-fdio-ha | X | | | | -+-------------------------+---------+---------+---------+---------+ -| os-odl_l2-fdio-noha | X | | | | -+-------------------------+---------+---------+---------+---------+ -| os-odl-gluon-noha | X | | | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-openo-ha | | X | | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm_ovs_dpdk | | | X | | -| -noha | | | | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm_ovs_dpdk-ha| | | X | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm_ovs_dpdk | | | X | | -| _bar-ha | | | | | -+-------------------------+---------+---------+---------+---------+ -| os-nosdn-kvm_ovs_dpdk | | | X | | -| _bar-noha | | | | | -+-------------------------+---------+---------+---------+---------+ -| opnfv_os-ovn-nofeature- | X | | | | -| noha_daily | | | | | -+-------------------------+---------+---------+---------+---------+ +--------------- + +For Euphrates 5.0.0, Yardstick was tested on the following scenarios: + ++--------------------------+------+---------+------+------+ +| Scenario | Apex | Compass | Fuel | Joid | ++==========================+======+=========+======+======+ +| os-nosdn-nofeature-noha | | | X | X | ++--------------------------+------+---------+------+------+ +| os-nosdn-nofeature-ha | X | X | X | X | ++--------------------------+------+---------+------+------+ +| os-odl_l2-nofeature-ha | | X | X | X | ++--------------------------+------+---------+------+------+ +| os-odl_l2-nofeature-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-odl_l3-nofeature-ha | X | X | X | | ++--------------------------+------+---------+------+------+ +| os-odl_l3-nofeature-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-onos-sfc-ha | | | | | ++--------------------------+------+---------+------+------+ +| os-onos-nofeature-ha | | X | | X | ++--------------------------+------+---------+------+------+ +| os-onos-nofeature-noha | | | | | ++--------------------------+------+---------+------+------+ +| os-odl_l2-sfc-ha | | | X | | ++--------------------------+------+---------+------+------+ +| os-odl_l2-sfc-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-odl_l2-bgpvpn-ha | X | | X | | ++--------------------------+------+---------+------+------+ +| os-odl_l2-bgpvpn-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm-ha | X | | X | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-nosdn-ovs-ha | | | X | | ++--------------------------+------+---------+------+------+ +| os-nosdn-ovs-noha | | | X | | ++--------------------------+------+---------+------+------+ +| os-ocl-nofeature-ha | | X | | | ++--------------------------+------+---------+------+------+ +| os-nosdn-lxd-ha | | | | X | ++--------------------------+------+---------+------+------+ +| os-nosdn-lxd-noha | | | | X | ++--------------------------+------+---------+------+------+ +| os-nosdn-fdio-ha | X | | | | ++--------------------------+------+---------+------+------+ +| os-odl_l2-fdio-noha | X | | | | ++--------------------------+------+---------+------+------+ +| os-odl-gluon-noha | X | | | | ++--------------------------+------+---------+------+------+ +| os-nosdn-openo-ha | | X | | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm_ovs_dpdk | | | X | | +| -noha | | | | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm_ovs_dpdk-ha | | | X | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm_ovs_dpdk | | | X | | +| _bar-ha | | | | | ++--------------------------+------+---------+------+------+ +| os-nosdn-kvm_ovs_dpdk | | | X | | +| _bar-noha | | | | | ++--------------------------+------+---------+------+------+ +| opnfv_os-ovn-nofeature- | X | | | | +| noha_daily | | | | | ++--------------------------+------+---------+------+------+ Test results -============ +------------ Test results are available in: @@ -581,180 +431,81 @@ Test results are available in: The reporting pages can be found at: - * apex: http://testresults.opnfv.org/reporting/yardstick/release/danube/index-status-apex.html - * compass: http://testresults.opnfv.org/reporting/yardstick/release/danube/index-status-compass.html - * fuel: http://testresults.opnfv.org/reporting/yardstick/release/danube/index-status-fuel.html - * joid: http://testresults.opnfv.org/reporting/yardstick/release/danube/index-status-joid.html - ++---------------+-------------------------------------------------------------------------------------+ +| apex | http://testresults.opnfv.org/reporting/euphrates/yardstick/status-apex.html | ++---------------+-------------------------------------------------------------------------------------+ +| compass | http://testresults.opnfv.org/reporting/euphrates/yardstick/status-compass.html | ++---------------+-------------------------------------------------------------------------------------+ +| fuel\@x86 | http://testresults.opnfv.org/reporting/euphrates/yardstick/status-fuel@x86.html | ++---------------+-------------------------------------------------------------------------------------+ +| fuel\@aarch64 | http://testresults.opnfv.org/reporting/euphrates/yardstick/status-fuel@aarch64.html | ++---------------+-------------------------------------------------------------------------------------+ +| joid | http://testresults.opnfv.org/reporting/euphrates/yardstick/status-joid.html | ++---------------+-------------------------------------------------------------------------------------+ Known Issues/Faults ------------- +^^^^^^^^^^^^^^^^^^^ - - Floating IP not supported in bgpvpn scenario - - VM instance cannot get floating IP in compass-os-odl_l2-nofeature-ha scenario +Corrected Faults +^^^^^^^^^^^^^^^^ -.. note:: The faults not related to *Yardstick* framework, addressing scenarios - which were not fully verified, are listed in the OPNFV installer's release - notes. +Euphrates 5.0.0: ++---------------------+--------------------------------------------+ +| **JIRA REFERENCE** | **DESCRIPTION** | +| | | ++---------------------+--------------------------------------------+ +| JIRA: YARDSTICK-599 | Could not load EntryPoint.parse when using | +| | 'openstack -h' | ++---------------------+--------------------------------------------+ +| JIRA: YARDSTICK-602 | Don't rely on staic ip addresses as they | +| | are dynamic | ++---------------------+--------------------------------------------+ -Corrected Faults ----------------- - -Danube.3.2: - -+----------------------------+------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-776 | Bugfix: cannot run task if without | -| | yardstick.conf in danube | -+----------------------------+------------------------------------------------+ - - -Danube.3.1: - -+----------------------------+------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-714 | Add yardstick env influxdb/grafana command for | -| | CentOS | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-655 | Monitor command in tc019 may not show the | -| | real nova-api service status | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-397 | HA testing framework improvement | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-660 | Improve monitor_process pass criteria | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-657 | HA monitor_multi bug, | -| | KeyError: 'max_outage_time' | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-647 | TC025 fault_type value is wrong when using | -| | baremetal pod scripts | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-659 | Terminate openstack service process using kill | -| | command in HA test cases | -+----------------------------+------------------------------------------------+ -| JIRA: ARMBAND-275 | Yardstick TC005 fails with | -| | "Cannot map zero-fill pages" error | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-561 | Bugfix: AttributeError: 'dict' object has no | -| | attribute 'split' if run sample/ping-hot.yaml | -+----------------------------+------------------------------------------------+ -| JIRA: ARMBAND-268 | ERROR No JSON object could be decoded from | -| | LMBENCH in TC010 | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-680 | storperf test case tc074 do not get results | -| | | -+----------------------------+------------------------------------------------+ - -Danube.2.0: - -+----------------------------+------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-608 | Set work directory in Yardstick container | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-616 | Bugfix: https support should adapt insecure | -| | situation | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-620 | Yardstick virtualenv support | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-621 | Bugfix: fix query job status in TC074 | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-622 | Bugfix: take test case modification into | -| | effect in load_images.sh | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-623 | change openrc file path to | -| | /etc/yardstick/openstack.creds | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-624 | Add opnfv_os-ovn-nofeature-noha_daily test | -| | suite | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-628 | Bugfix: Make tc019 and tc025 accept | -| | --task-args options | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-629 | Bugfix: yardstick env prepare cmd do not | -| | support other installer | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-632 | Bugfix: KeyError when using http dispatcher | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-633 | Bugfix: Environment Compatibility Issues in HA | -| | Test Cases | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-634 | fix ha issue when run tc050~tc054 in ci | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-635 | Bugfix: Local Openstack Operation in HA test | -| | frameworks | -+----------------------------+------------------------------------------------+ - -Danube.1.0: - -+----------------------------+------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-599 | Could not load EntryPoint.parse when using | -| | 'openstack -h' | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-602 | Don't rely on staic ip addresses as they | -| | are dynamic | -+----------------------------+------------------------------------------------+ - - -Danube 3.2 known restrictions/issues -==================================== + +Euphratess 5.0.0 known restrictions/issues +------------------------------------------ +-----------+-----------+----------------------------------------------+ -| Installer | Scenario | Issue | +| Installer | Scenario | Issue | +===========+===========+==============================================+ -| any | *-bgpvpn | Floating ips not supported. Some Test cases | +| any | \*-bgpvpn | Floating ips not supported. Some Test cases | | | | related to floating ips are excluded. | +-----------+-----------+----------------------------------------------+ -| any | odl_l3-* | Some test cases related to using floating IP | +| any | odl_l3-\* | Some test cases related to using floating IP | | | | addresses fail because of a known ODL bug. | | | | | +-----------+-----------+----------------------------------------------+ -| compass | odl_l2-* | In some test cases, VM instance will failed | +| compass | odl_l2-\* | In some test cases, VM instance will failed | | | | raising network interfaces. | | | | | +-----------+-----------+----------------------------------------------+ Open JIRA tickets -================= - -+----------------------------+------------------------------------------------+ -| **JIRA REFERENCE** | **DESCRIPTION** | -| | | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-626 | Fio and Lmbench don't work in Ubuntu-arm64 | -| | image | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-603 | Timeout waiting for floating ip | -| | (which actually pingable) | -+----------------------------+------------------------------------------------+ -| JIRA: YARDSTICK-412 | IPv6 test case should add support for newton | -| | | -+----------------------------+------------------------------------------------+ +----------------- + ++---------------------+----------------------------------------------+ +| **JIRA REFERENCE** | **DESCRIPTION** | +| | | ++---------------------+----------------------------------------------+ +| JIRA: YARDSTICK-626 | Fio and Lmbench don't work in Ubuntu-arm64 | +| | image | ++---------------------+----------------------------------------------+ +| JIRA: YARDSTICK-603 | Timeout waiting for floating ip | +| | (which actually pingable) | ++---------------------+----------------------------------------------+ +| JIRA: YARDSTICK-412 | IPv6 test case should add support for newton | +| | | ++---------------------+----------------------------------------------+ Useful links -============ +------------ - wiki project page: https://wiki.opnfv.org/display/yardstick/Yardstick - - wiki Yardstick Danube release planing page: https://wiki.opnfv.org/display/yardstick/Yardstick+Danube+Release+Planning + - wiki Yardstick Euphrates release planing page: https://wiki.opnfv.org/display/yardstick/Yardstick+Euphrates+Release+Planning - Yardstick repo: https://git.opnfv.org/cgit/yardstick diff --git a/docs/testing/user/userguide/08-api.rst b/docs/testing/user/userguide/08-api.rst index 1d9ea6d64..ff6e62228 100644 --- a/docs/testing/user/userguide/08-api.rst +++ b/docs/testing/user/userguide/08-api.rst @@ -10,7 +10,7 @@ Yardstick Restful API Abstract -------- -Yardstick support restful API in danube. +Yardstick support restful API since Danube. Available API @@ -19,19 +19,19 @@ Available API /yardstick/env/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to do some work related to environment. For now, we support: +Description: This API is used to prepare Yardstick test environment. For Euphrates, it supports: -1. Prepare yardstick environment(Including fetch openrc file, get external network and load images) -2. Start a InfluxDB docker container and config yardstick output to InfluxDB. -3. Start a Grafana docker container and config with the InfluxDB. +1. Prepare yardstick test environment, including set external network environment variable, load Yardstick VM images and create flavors; +2. Start an InfluxDB Docker container and config Yardstick output to InfluxDB; +3. Start a Grafana Docker container and config it with the InfluxDB. -Which API to call will depend on the Parameters. +Which API to call will depend on the parameters. Method: POST -Prepare Yardstick Environment +Prepare Yardstick test environment Example:: { @@ -41,7 +41,7 @@ Example:: This is an asynchronous API. You need to call /yardstick/asynctask API to get the task result. -Start and Config InfluxDB docker container +Start and config an InfluxDB docker container Example:: { @@ -51,7 +51,7 @@ Example:: This is an asynchronous API. You need to call /yardstick/asynctask API to get the task result. -Start and Config Grafana docker container +Start and config a Grafana docker container Example:: { @@ -64,13 +64,13 @@ This is an asynchronous API. You need to call /yardstick/asynctask API to get th /yardstick/asynctask ^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to get the status of asynchronous task +Description: This API is used to get the status of asynchronous tasks Method: GET -Get the status of asynchronous task +Get the status of asynchronous tasks Example:: http://localhost:8888/yardstick/asynctask?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c @@ -81,13 +81,13 @@ The returned status will be 0(running), 1(finished) and 2(failed). /yardstick/testcases ^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to list all release test cases now in yardstick. +Description: This API is used to list all released Yardstick test cases. Method: GET -Get a list of release test cases +Get a list of released test cases Example:: http://localhost:8888/yardstick/testcases @@ -96,13 +96,13 @@ Example:: /yardstick/testcases/release/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick release test case. +Description: This API is used to run a Yardstick released test case. Method: POST -Run a release test case +Run a released test case Example:: { @@ -119,7 +119,7 @@ This is an asynchronous API. You need to call /yardstick/results to get the resu /yardstick/testcases/samples/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick sample test case. +Description: This API is used to run a Yardstick sample test case. Method: POST @@ -139,10 +139,25 @@ Example:: This is an asynchronous API. You need to call /yardstick/results to get the result. +/yardstick/testcases/<testcase_name>/docs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Description: This API is used to the documentation of a certain released test case. + + +Method: GET + + +Get the documentation of a certain test case +Example:: + + http://localhost:8888/yardstick/taskcases/opnfv_yardstick_tc002/docs + + /yardstick/testsuites/action ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Description: This API is used to run a yardstick test suite. +Description: This API is used to run a Yardstick test suite. Method: POST @@ -162,11 +177,27 @@ Example:: This is an asynchronous API. You need to call /yardstick/results to get the result. +/yardstick/tasks/<task_id>/log + +Description: This API is used to get the real time log of test case execution. + + +Method: GET + + +Get real time of test case execution +Example:: + + http://localhost:8888/yardstick/tasks/14795be8-f144-4f54-81ce-43f4e3eab33f/log?index=0 + + /yardstick/results ^^^^^^^^^^^^^^^^^^ +Description: This API is used to get the test results of tasks. If you call /yardstick/testcases/samples/action API, it will return a task id. You can use the returned task id to get the results by using this API. + -Description: This API is used to get the test results of certain task. If you call /yardstick/testcases/samples/action API, it will return a task id. You can use the returned task id to get the results by using this API. +Method: GET Get test results of one task @@ -175,3 +206,457 @@ Example:: http://localhost:8888/yardstick/results?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c This API will return a list of test case result + + +/api/v2/yardstick/openrcs/action + +Description: This API provides functionality of handling OpenStack credential file (openrc). For Euphrates, it supports: + +1. Upload an openrc file for an OpenStack environment; +2. Update an openrc file; +3. Get openrc file information; +4. Delete an openrc file. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload an openrc file for an OpenStack environment +Example:: + + { + 'action': 'upload_openrc', + 'args': { + 'file': file, + 'environment_id': environment_id + } + } + + +METHOD: POST + + +Update an openrc file +Example:: + + { + 'action': 'update_openrc', + 'args': { + 'openrc': { + "EXTERNAL_NETWORK": "ext-net", + "OS_AUTH_URL": "http://192.168.23.51:5000/v3", + "OS_IDENTITY_API_VERSION": "3", + "OS_IMAGE_API_VERSION": "2", + "OS_PASSWORD": "console", + "OS_PROJECT_DOMAIN_NAME": "default", + "OS_PROJECT_NAME": "admin", + "OS_TENANT_NAME": "admin", + "OS_USERNAME": "admin", + "OS_USER_DOMAIN_NAME": "default" + }, + 'environment_id': environment_id + } + } + + +METHOD: GET + +Get openrc file information +Example:: + + http://localhost:8888/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + + +Delete openrc file +Example:: + + http://localhost:8888/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/pods/action + +Description: This API provides functionality of handling Yardstick pod file (pod.yaml). For Euphrates, it supports: + +1. Upload a pod file; +2. Get pod file information; +3. Delete an openrc file. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload a pod.yaml file +Example:: + + { + 'action': 'upload_pod_file', + 'args': { + 'file': file, + 'environment_id': environment_id + } + } + + +METHOD: GET + +Get pod file information +Example:: + + http://localhost:8888/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete openrc file +Example:: + + http://localhost:8888/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/images/action + +Description: This API is used to do some work related to Yardstick VM images. For Euphrates, it supports: + +1. Load Yardstick VM images; +2. Get image's information; +3. Delete images. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Load VM images +Example:: + + { + 'action': 'load_images' + } + + +METHOD: GET + +Get image information +Example:: + + http://localhost:8888/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete images +Example:: + + http://localhost:8888/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/tasks/action + +Description: This API is used to do some work related to yardstick tasks. For Euphrates, it supports: + +1. Create a Yardstick task; +2. run a Yardstick task; +3. Add a test case to a task; +4. Add a test suite to a task; +5. Get a tasks' information; +6. Delete a task. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Yardstick task +Example:: + + { + 'action': 'create_task', + 'args': { + 'name': 'task1', + 'project_id': project_id + } + } + + +METHOD: PUT + + +Run a task +Example:: + + { + 'action': 'run' + } + + +METHOD: PUT + + +Add a test case to a task +Example:: + + { + 'action': 'add_case', + 'args': { + 'case_name': 'opnfv_yardstick_tc002', + 'case_content': case_content + } + } + + +METHOD: PUT + + +Add a test suite to a task +Example:: + + { + 'action': 'add_suite', + 'args': { + 'suite_name': 'opnfv_smoke', + 'suite_content': suite_content + } + } + + +METHOD: GET + +Get a task's information +Example:: + + http://localhost:8888/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +METHOD: DELETE + +Delete a task +Example:: + http://localhost:8888/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c + + +/api/v2/yardstick/testcases/action + +Description: This API is used to do some work related to yardstick testcases. For Euphrates, it supports: + +1. Upload a test case; +2. Get all released test cases' information; +3. Get a certain released test case's information; +4. Delete a test case. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Upload a test case +Example:: + + { + 'action': 'upload_case', + 'args': { + 'file': file + } + } + + +METHOD: GET + + +Get all released test cases' information +Example:: + + http://localhost:8888/api/v2/yardstick/testcases + + +METHOD: GET + + +Get a certain released test case's information +Example:: + + http://localhost:8888/api/v2/yardstick/testcases/opnfv_yardstick_tc002 + + +METHOD: DELETE + + +Delete a certain test case +Example:: + http://localhost:8888/api/v2/yardstick/testcases/opnfv_yardstick_tc002 + + +/api/v2/yardstick/testsuites/action + +Description: This API is used to do some work related to yardstick test suites. For Euphrates, it supports: + +1. Create a test suite; +2. Get a certain test suite's information; +3. Get all test suites; +4. Delete a test case. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a test suite +Example:: + + { + 'action': 'create_sutie', + 'args': { + 'name': <suite_name>, + 'testcases': [ + 'opnfv_yardstick_tc002' + ] + } + } + + +METHOD: GET + + +Get a certain test suite's information +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites/<suite_name> + + +METHOD: GET + + +Get all test suite +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites + + +METHOD: DELETE + + +Delete a certain test suite +Example:: + + http://localhost:8888/api/v2/yardstick/testsuites/<suite_name> + + +/api/v2/yardstick/projects/action + +Description: This API is used to do some work related to yardstick test projects. For Euphrates, it supports: + +1. Create a Yardstick project; +2. Get a certain project's information; +3. Get all projects; +4. Delete a project. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Yardstick project +Example:: + + { + 'action': 'create_project', + 'args': { + 'name': 'project1' + } + } + + +METHOD: GET + + +Get a certain project's information +Example:: + + http://localhost:8888/api/v2/yardstick/projects/<project_id> + + +METHOD: GET + + +Get all projects' information +Example:: + + http://localhost:8888/api/v2/yardstick/projects + + +METHOD: DELETE + + +Delete a certain project +Example:: + + http://localhost:8888/api/v2/yardstick/projects/<project_id> + + +/api/v2/yardstick/containers/action + +Description: This API is used to do some work related to Docker containers. For Euphrates, it supports: + +1. Create a Grafana Docker container; +2. Create an InfluxDB Docker container; +3. Get a certain container's information; +4. Delete a container. + +Which API to call will depend on the parameters. + + +METHOD: POST + + +Create a Grafana Docker container +Example:: + + { + 'action': 'create_grafana', + 'args': { + 'environment_id': <environment_id> + } + } + + +METHOD: POST + + +Create an InfluxDB Docker container +Example:: + + { + 'action': 'create_influxdb', + 'args': { + 'environment_id': <environment_id> + } + } + + +METHOD: GET + + +Get a certain container's information +Example:: + + http://localhost:8888/api/v2/yardstick/containers/<container_id> + + +METHOD: DELETE + + +Delete a certain container +Example:: + + http://localhost:8888/api/v2/yardstick/containers/<container_id> diff --git a/etc/yardstick/nodes/standalone/trex_bm.yaml.sample b/etc/yardstick/nodes/standalone/trex_bm.yaml.sample new file mode 100644 index 000000000..55a359ce1 --- /dev/null +++ b/etc/yardstick/nodes/standalone/trex_bm.yaml.sample @@ -0,0 +1,38 @@ +# Copyright (c) 2016-2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +nodes: +- + name: tg__0 + role: tg__0 + ip: 1.1.1.1 + user: root + password: r00t + interfaces: + xe0: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:07:00.0" + driver: i40e # default kernel driver + dpdk_port_num: 0 + local_ip: "152.16.100.20" + netmask: "255.255.255.0" + local_mac: "00:00:00:00:00:01" + xe1: # logical name from topology.yaml and vnfd.yaml + vpci: "0000:07:00.1" + driver: i40e # default kernel driver + dpdk_port_num: 1 + local_ip: "152.16.40.20" + netmask: "255.255.255.0" + local_mac: "00:00.00:00:00:02" + diff --git a/samples/check_connectivity.yaml b/samples/check_connectivity.yaml new file mode 100644 index 000000000..47f7d2c81 --- /dev/null +++ b/samples/check_connectivity.yaml @@ -0,0 +1,31 @@ +############################################################################## +# 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 +############################################################################## +--- +schema: "yardstick:task:0.1" + +scenarios: +- + type: CheckConnectivity + options: + src_ip_addr: '192.168.23.2' + dest_ip_addr: '192.168.23.10' + ssh_user: 'root' + ssh_passwd: 'root' + # ssh_key: + ssh_port: 22 + ssh_timeout: 600 + ping_parameter: "-s 2048" + + runner: + type: Iteration + iterations: 1 + + sla: + status: True + action: assert diff --git a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex.yaml b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex.yaml index 78cb0fe44..9c6cd7fc4 100644 --- a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex.yaml +++ b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex.yaml @@ -19,8 +19,8 @@ scenarios: traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml topology: acl-tg-topology.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: tg_0.yardstick + vnf__0: vnf_0.yardstick options: framesize: uplink: {64B: 100} @@ -56,27 +56,37 @@ context: pgrp1: policy: "availability" servers: - vnf: + vnf_0: floating_ip: true placement: "pgrp1" - trafficgen_1: + network_ports: + mgmt: + - mgmt + uplink_0: + - xe0 + downlink_0: + - xe1 + tg_0: floating_ip: true placement: "pgrp1" + network_ports: + mgmt: + - mgmt + uplink_0: + - xe0 + downlink_0: + - xe1 networks: mgmt: cidr: '10.0.1.0/24' - xe0: - cidr: '10.0.2.0/24' + uplink_0: + cidr: '10.1.0.0/24' gateway_ip: 'null' -# port_security_enabled: False - allowed_address_pairs: - - ip_address: - '0.0.0.0/0' - xe1: - cidr: '10.0.3.0/24' + port_security_enabled: False + enable_dhcp: 'false' + downlink_0: + cidr: '10.1.1.0/24' gateway_ip: 'null' -# port_security_enabled: False - allowed_address_pairs: - - ip_address: - '0.0.0.0/0' + port_security_enabled: False + enable_dhcp: 'false' diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml index cf60ba1f9..1d9c4e1c6 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml @@ -15,22 +15,22 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml - topology: vfw-tg-topology-3node-10.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick - vnf__0: vnf_0.yardstick - vnf__1: vnf_1.yardstick - vnf__2: vnf_2.yardstick - vnf__3: vnf_3.yardstick - vnf__4: vnf_4.yardstick - vnf__5: vnf_5.yardstick - vnf__6: vnf_6.yardstick - vnf__7: vnf_7.yardstick - vnf__8: vnf_8.yardstick - vnf__9: vnf_9.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml + topology: vfw-tg-topology-3node-10.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick + vnf__0: vnf_0.yardstick + vnf__1: vnf_1.yardstick + vnf__2: vnf_2.yardstick + vnf__3: vnf_3.yardstick + vnf__4: vnf_4.yardstick + vnf__5: vnf_5.yardstick + vnf__6: vnf_6.yardstick + vnf__7: vnf_7.yardstick + vnf__8: vnf_8.yardstick + vnf__9: vnf_9.yardstick options: framesize: uplink: {64B: 100} diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml index 64633eb77..bd29ab76c 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml @@ -15,16 +15,16 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml - topology: vfw-tg-topology-3node-4.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick - vnf__0: vnf_0.yardstick - vnf__1: vnf_1.yardstick - vnf__2: vnf_2.yardstick - vnf__3: vnf_3.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml + topology: vfw-tg-topology-3node-4.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick + vnf__0: vnf_0.yardstick + vnf__1: vnf_1.yardstick + vnf__2: vnf_2.yardstick + vnf__3: vnf_3.yardstick options: framesize: uplink: {64B: 100} diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml index 767ecbc1c..be15e4550 100644 --- a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml +++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml @@ -15,14 +15,14 @@ --- schema: yardstick:task:0.1 scenarios: -- type: NSPerf - traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml - topology: vfw-tg-topology-3node-{{ num_vnfs }}.yaml - nodes: - tg__0: tg_0.yardstick - tg__1: tg_1.yardstick + - type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml + topology: vfw-tg-topology-3node-{{ num_vnfs }}.yaml + nodes: + tg__0: tg_0.yardstick + tg__1: tg_1.yardstick {% for vnf_num in range(num_vnfs|int) %} - vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick + vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick {% endfor %} options: framesize: diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml new file mode 100644 index 000000000..99ac9e8c9 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml @@ -0,0 +1,260 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 10-vnf-correlated + name: 10-vnf-correlated + short-name: 10-vnf-correlated + description: 10-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '4' + vnfd-id-ref: vnf__2 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '5' + vnfd-id-ref: vnf__3 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '6' + vnfd-id-ref: vnf__4 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '7' + vnfd-id-ref: vnf__5 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '8' + vnfd-id-ref: vnf__6 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '9' + vnfd-id-ref: vnf__7 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '10' + vnfd-id-ref: vnf__8 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '11' + vnfd-id-ref: vnf__9 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + - id: uplink_2 + name: "tg__0 to vnf__2 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__2 + - id: downlink_2 + name: "vnf__2 to tg__1 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__2 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__1 + - id: uplink_3 + name: "tg__0 to vnf__3 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__3 + - id: downlink_3 + name: "vnf__3 to tg__1 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__3 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__1 + - id: uplink_4 + name: "tg__0 to vnf__4 link 4" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe4 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '6' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__4 + - id: downlink_4 + name: "vnf__4 to tg__1 link 4" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '6' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__4 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe4 + vnfd-id-ref: tg__1 + - id: uplink_5 + name: "tg__0 to vnf__5 link 5" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe5 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '7' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__5 + - id: downlink_5 + name: "vnf__5 to tg__1 link 5" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '7' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__5 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe5 + vnfd-id-ref: tg__1 + - id: uplink_6 + name: "tg__0 to vnf__6 link 6" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe6 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '8' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__6 + - id: downlink_6 + name: "vnf__6 to tg__1 link 6" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '8' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__6 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe6 + vnfd-id-ref: tg__1 + - id: uplink_7 + name: "tg__0 to vnf__7 link 7" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe7 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '9' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__7 + - id: downlink_7 + name: "vnf__7 to tg__1 link 7" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '9' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__7 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe7 + vnfd-id-ref: tg__1 + - id: uplink_8 + name: "tg__0 to vnf__8 link 8" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe8 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '10' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__8 + - id: downlink_8 + name: "vnf__8 to tg__1 link 8" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '10' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__8 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe8 + vnfd-id-ref: tg__1 + - id: uplink_9 + name: "tg__0 to vnf__9 link 9" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe9 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '11' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__9 + - id: downlink_9 + name: "vnf__9 to tg__1 link 9" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '11' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__9 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe9 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml new file mode 100644 index 000000000..a1043c280 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml @@ -0,0 +1,76 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 2-vnf-correlated + name: 2-vnf-correlated + short-name: 2-vnf-correlated + description: 2-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml new file mode 100644 index 000000000..22e172d58 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml @@ -0,0 +1,122 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: 4-vnf-correlated + name: 4-vnf-correlated + short-name: 4-vnf-correlated + description: 4-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '4' + vnfd-id-ref: vnf__2 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + - member-vnf-index: '5' + vnfd-id-ref: vnf__3 + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type + + vld: + - id: uplink_0 + name: "tg__0 to vnf__0 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__0 + - id: downlink_0 + name: "vnf__0 to tg__1 link 0" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: tg__1 + - id: uplink_1 + name: "tg__0 to vnf__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__1 + - id: downlink_1 + name: "vnf__1 to tg__1 link 1" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: tg__1 + - id: uplink_2 + name: "tg__0 to vnf__2 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__2 + - id: downlink_2 + name: "vnf__2 to tg__1 link 2" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '4' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__2 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe2 + vnfd-id-ref: tg__1 + - id: uplink_3 + name: "tg__0 to vnf__3 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__3 + - id: downlink_3 + name: "vnf__3 to tg__1 link 3" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '5' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__3 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe3 + vnfd-id-ref: tg__1 + diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml new file mode 100644 index 000000000..0052c4139 --- /dev/null +++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml @@ -0,0 +1,57 @@ +# Copyright (c) 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +nsd:nsd-catalog: + nsd: + - id: {{ num_vnfs }}-vnf-correlated + name: {{ num_vnfs }}-vnf-correlated + short-name: {{ num_vnfs }}-vnf-correlated + description: {{ num_vnfs }}-vnf-correlated + constituent-vnfd: + - member-vnf-index: '0' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #VNF type + - member-vnf-index: '1' + vnfd-id-ref: tg__1 + VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml #VNF type +{% for vnf_num in range(num_vnfs|int) %} + - member-vnf-index: '{{ vnf_num + 2 }}' + vnfd-id-ref: vnf__{{ vnf_num }} + VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type +{% endfor %} + + vld: +{% for vnf_num in range(num_vnfs|int) %} + - id: uplink_{{ vnf_num }} + name: "tg__0 to vnf__{{ vnf_num }} link {{ vnf_num }}" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '0' + vnfd-connection-point-ref: xe{{ vnf_num }} + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '{{ vnf_num + 2 }}' + vnfd-connection-point-ref: xe0 + vnfd-id-ref: vnf__{{ vnf_num }} + - id: downlink_{{ vnf_num }} + name: "vnf__{{ vnf_num }} to tg__1 link {{ vnf_num }}" + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '{{ vnf_num + 2}}' + vnfd-connection-point-ref: xe1 + vnfd-id-ref: vnf__{{ vnf_num }} + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe{{ vnf_num }} + vnfd-id-ref: tg__1 +{% endfor %} + diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml index 4e72fde1a..5b5b4473b 100644 --- a/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml +++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml @@ -56,6 +56,8 @@ uplink_0: 373B: "{{get(imix, 'imix.uplink.373B', '0') }}" 512B: "{{get(imix, 'imix.uplink.512B', '0') }}" 570B: "{{get(imix, 'imix.uplink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.uplink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.uplink.1280B', '0') }}" 1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}" 1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}" 1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}" @@ -82,6 +84,8 @@ downlink_0: 373b: "{{ get(imix, 'imix.downlink.373B', '0') }}" 512B: "{{ get(imix, 'imix.downlink.512B', '0') }}" 570B: "{{get(imix, 'imix.downlink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.downlink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.downlink.1280B', '0') }}" 1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}" 1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}" 1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}" @@ -108,6 +112,8 @@ uplink_1: 373B: "{{get(imix, 'imix.uplink.373B', '0') }}" 512B: "{{get(imix, 'imix.uplink.512B', '0') }}" 570B: "{{get(imix, 'imix.uplink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.uplink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.uplink.1280B', '0') }}" 1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}" 1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}" 1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}" @@ -134,6 +140,8 @@ downlink_1: 373b: "{{ get(imix, 'imix.downlink.373B', '0') }}" 512B: "{{ get(imix, 'imix.downlink.512B', '0') }}" 570B: "{{get(imix, 'imix.downlink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.downlink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.downlink.1280B', '0') }}" 1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}" 1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}" 1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}" diff --git a/opnfv_os-odl-fdio_dvr-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-odl-fdio_dvr-noha_daily.yaml index cd00b4c0c..cd00b4c0c 100644 --- a/opnfv_os-odl-fdio_dvr-noha_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_os-odl-fdio_dvr-noha_daily.yaml diff --git a/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py b/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py new file mode 100644 index 000000000..1fb2f89ca --- /dev/null +++ b/tests/unit/benchmark/scenarios/lib/test_check_connectivity.py @@ -0,0 +1,84 @@ +############################################################################## +# 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 +############################################################################## + +# Unittest for yardstick.benchmark.scenarios.lib.check_connectivity.CheckConnectivity + +from __future__ import absolute_import + +import mock +import unittest + +from yardstick.benchmark.scenarios.lib import check_connectivity + + +class CheckConnectivityTestCase(unittest.TestCase): + + def setUp(self): + self.ctx = { + 'host': { + 'ip': '172.16.0.137', + 'user': 'root', + 'key_filename': 'mykey.key', + 'ssh_port': '22' + }, + 'target': { + 'ipaddr': '172.16.0.138' + } + } + + @mock.patch('yardstick.benchmark.scenarios.lib.check_connectivity.ssh') + def test_check_connectivity(self, mock_ssh): + + args = { + 'options': {'src_ip_addr': '192.168.23.2', + 'dest_ip_addr': '192.168.23.10', + 'ssh_user': 'root', + 'ssh_passwd': 'root', + 'ssh_port': '22', + 'ssh_timeout': 600, + 'ping_parameter': "-s 2048" + }, + 'sla': {'status': 'True', + 'action': 'assert'} + } + + result = {} + + obj = check_connectivity.CheckConnectivity(args, {}) + obj.setup() + mock_ssh.SSH.execute.return_value = (0, '100', '') + + + @mock.patch('yardstick.benchmark.scenarios.lib.check_connectivity.ssh') + def test_check_connectivity_key(self, mock_ssh): + + args = { + 'options': {'ssh_user': 'root', + 'ssh_key': '/root/.ssh/id_rsa', + 'ssh_port': '22', + 'ssh_timeout': 600, + 'ping_parameter': "-s 2048" + }, + 'sla': {'status': 'True', + 'action': 'assert'} + } + + result = {} + + obj = check_connectivity.CheckConnectivity(args, self.ctx) + obj.setup() + + mock_ssh.SSH.execute.return_value = (0, '100', '') + +def main(): + unittest.main() + + +if __name__ == '__main__': + main() diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py index a6d40877d..e29e8ddcd 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py @@ -348,9 +348,9 @@ class TestProxApproxVnf(unittest.TestCase): prox_approx_vnf.resource_helper = resource_helper expected = { - 'packets_in': 7, + 'packets_in': 6, 'packets_dropped': 1, - 'packets_fwd': 6, + 'packets_fwd': 7, 'collect_stats': {'core': {'result': 234}}, } result = prox_approx_vnf.collect_kpi() diff --git a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py index e990e46f5..fcb7bb66c 100644 --- a/yardstick/benchmark/contexts/standalone/ovs_dpdk.py +++ b/yardstick/benchmark/contexts/standalone/ovs_dpdk.py @@ -138,6 +138,7 @@ class OvsDpdkContext(Context): cmd_list = [ "mkdir -p /usr/local/var/run/openvswitch", + "mkdir -p {}".format(os.path.dirname(log_path)), "ovsdb-server --remote=punix:/{0}/{1} --pidfile --detach".format(vpath, ovs_sock_path), ovs_other_config.format("--no-wait ", "dpdk-init=true"), diff --git a/yardstick/benchmark/scenarios/lib/check_connectivity.py b/yardstick/benchmark/scenarios/lib/check_connectivity.py new file mode 100644 index 000000000..bdf52d4c8 --- /dev/null +++ b/yardstick/benchmark/scenarios/lib/check_connectivity.py @@ -0,0 +1,99 @@ +############################################################################## +# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +from __future__ import print_function +from __future__ import absolute_import + +import logging +import yardstick.ssh as ssh + +from yardstick.benchmark.scenarios import base + +LOG = logging.getLogger(__name__) + + +class CheckConnectivity(base.Scenario): + """Check connectivity between two VMs""" + + __scenario_type__ = "CheckConnectivity" + + def __init__(self, scenario_cfg, context_cfg): + self.scenario_cfg = scenario_cfg + self.context_cfg = context_cfg + self.options = self.scenario_cfg['options'] + + try: + self.source_ip_addr = self.options['src_ip_addr'] + self.dest_ip_addr = self.options['dest_ip_addr'] + except KeyError: + host = self.context_cfg['host'] + target = self.context_cfg['target'] + self.ssh_user = host.get('user', 'ubuntu') + self.ssh_port = host.get("ssh_port", 22) + self.source_ip_addr = host.get('ip', None) + self.dest_ip_addr = target.get('ipaddr', None) + self.ssh_key = host.get('key_filename', '/root/.ssh/id_rsa') + self.ssh_passwd = host.get('password', None) + self.ssh_timeout = 600 + else: + self.ssh_user = self.options.get("ssh_user", 'ubuntu') + self.ssh_port = self.options.get("ssh_port", 22) + self.ssh_key = self.options.get("ssh_key", '/root/.ssh/id_rsa') + self.ssh_passwd = self.options.get("ssh_passwd", None) + self.ssh_timeout = self.options.get("ssh_timeout", 600) + + self.connection = None + self.setup_done = False + + def setup(self): + """scenario setup""" + + if self.ssh_passwd is not None: + LOG.info("Log in via pw, user:%s, host:%s, pw:%s", + self.ssh_user, self.source_ip_addr, self.ssh_passwd) + self.connection = ssh.SSH(self.ssh_user, + self.source_ip_addr, + password=self.ssh_passwd, + port=self.ssh_port) + else: + LOG.info("Log in via key, user:%s, host:%s, key_filename:%s", + self.ssh_user, self.source_ip_addr, self.ssh_key) + self.connection = ssh.SSH(self.ssh_user, + self.source_ip_addr, + key_filename=self.ssh_key, + port=self.ssh_port) + + self.connection.wait(timeout=self.ssh_timeout) + self.setup_done = True + + def run(self, result): # pragma: no cover + """execute the test""" + + if not self.setup_done: + self.setup() + + cmd = 'ping -c 4 ' + self.dest_ip_addr + parameter = self.options.get('ping_parameter', None) + if parameter: + cmd += (" %s" % parameter) + + LOG.info("Executing command: %s", cmd) + LOG.info("ping %s ==> %s", self.source_ip_addr, self.dest_ip_addr) + status, stdout, stderr = self.connection.execute(cmd) + + conn_status = self.scenario_cfg['sla']['status'] + + if bool(status) != bool(conn_status): + LOG.info("%s ===> %s connectivity check passed!" % (self.source_ip_addr, + self.dest_ip_addr)) + result['Check_Connectivity'] = 'PASS' + else: + LOG.info("%s ===> %s connectivity check failed!" % (self.source_ip_addr, + self.dest_ip_addr)) + result['Check_Connectivity'] = 'FAIL' diff --git a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py index 24712dd27..b7d295eee 100644 --- a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py @@ -89,9 +89,9 @@ class ProxApproxVnf(SampleVNF): return {} result = { - "packets_in": tx_total, - "packets_dropped": abs(rx_total - tx_total), - "packets_fwd": rx_total, + "packets_in": rx_total, + "packets_dropped": max((tx_total - rx_total), 0), + "packets_fwd": tx_total, # we share ProxResourceHelper with TG, but we want to collect # collectd KPIs here and not TG KPIs, so use a different method name "collect_stats": self.resource_helper.collect_collectd_kpi(), |