diff options
34 files changed, 520 insertions, 180 deletions
diff --git a/docs/release/release-notes.rst b/docs/release/release-notes.rst index 2494e42da..72f263c2d 100644 --- a/docs/release/release-notes.rst +++ b/docs/release/release-notes.rst @@ -38,6 +38,9 @@ Version History | *Date* | *Version* | *Comment* | | | | | +----------------+--------------------+---------------------------------+ +| Oct 27nd, 2016 | 2.0 | Yardstick for Colorado release | +| | | | ++----------------+--------------------+---------------------------------+ | Aug 22nd, 2016 | 1.0 | Yardstick for Colorado release | | | | | +----------------+--------------------+---------------------------------+ @@ -129,19 +132,19 @@ Release Data | **Project** | Yardstick | | | | +--------------------------------------+--------------------------------------+ -| **Repo/tag** | yardstick/colorado.1.0 | +| **Repo/tag** | yardstick/colorado.2.0 | | | | +--------------------------------------+--------------------------------------+ -| **Yardstick Docker image tag** | colorado.1.0 | +| **Yardstick Docker image tag** | colorado.2.0 | | | | +--------------------------------------+--------------------------------------+ -| **Release designation** | Colorado base release | +| **Release designation** | Colorado | | | | +--------------------------------------+--------------------------------------+ -| **Release date** | September 22 2016 | +| **Release date** | October 27 2016 | | | | +--------------------------------------+--------------------------------------+ -| **Purpose of the delivery** | Colorado base release | +| **Purpose of the delivery** | OPNFV Colorado release 2.0 | | | | +--------------------------------------+--------------------------------------+ @@ -160,22 +163,22 @@ Documents Software Deliverables --------------------- -**Yardstick framework source code <colorado.1.0>** +**Yardstick framework source code <colorado.2.0>** +--------------------------------------+--------------------------------------+ | **Project** | Yardstick | | | | +--------------------------------------+--------------------------------------+ -| **Repo/tag** | yardstick/colorado.1.0 | +| **Repo/tag** | yardstick/colorado.2.0 | | | | +--------------------------------------+--------------------------------------+ -| **Yardstick Docker image tag** | colorado.1.0 | +| **Yardstick Docker image tag** | colorado.2.0 | | | | +--------------------------------------+--------------------------------------+ -| **Release designation** | colorado | +| **Release designation** | Colorado | | | | +--------------------------------------+--------------------------------------+ -| **Release date** | September 22th, 2016 | +| **Release date** | October 27th, 2016 | | | | +--------------------------------------+--------------------------------------+ | **Purpose of the delivery** | OPNFV Colorado release | @@ -462,7 +465,7 @@ Version Change Module Version Changes ---------------------- -This is the third tracked release of Yardstick. It is based on following +This is the second tracked release of Yardstick. It is based on following upstream versions: - ONOS Goldeneye @@ -475,7 +478,7 @@ upstream versions: Document Version Changes ------------------------ -This is the first tracked version of the Yardstick framework in OPNFV. +This is the second tracked version of the Yardstick framework in OPNFV. It includes the following documentation updates: - Yardstick User Guide: added yardstick plugin chapter; added Store Other @@ -492,12 +495,14 @@ verified scenarios and limitations Feature additions ----------------- - Yardstick plugin + - Yardstick reporting + - StorPerf Integration Scenario Matrix =============== -For Colorado 1.0, Yardstick was tested on the following scenarios: +For Colorado 2.0, Yardstick was tested on the following scenarios: +-------------------------+---------+---------+---------+---------+ | Scenario | Apex | Compass | Fuel | Joid | @@ -532,9 +537,9 @@ For Colorado 1.0, Yardstick was tested on the following scenarios: +-------------------------+---------+---------+---------+---------+ | os-nosdn-kvm-noha | | X | | | +-------------------------+---------+---------+---------+---------+ -| os-nosdn-ovs-ha | | | | | +| os-nosdn-ovs-ha | | | X | | +-------------------------+---------+---------+---------+---------+ -| os-nosdn-ovs-noha | X | X | | | +| os-nosdn-ovs-noha | X | | X | | +-------------------------+---------+---------+---------+---------+ | os-ocl-nofeature-ha | | | | | +-------------------------+---------+---------+---------+---------+ @@ -569,11 +574,8 @@ for the date of the test you are interested in. Known Issues/Faults ------------ - - Boot up VM failed in joid-os-nosdn-lxd-ha and joid-os-nosdn-lxd-noha scenarios - - Yardstick CI job timeout in fuel-os-onos-nofeature-ha scenario - - SSH timeout in apex-os-onos-sfc-ha, apex-os-onos-nofeature-ha scenarios + - Floating IP not supported in bgpvpn scenario - Floating IP not supported in apex-os-odl_l3-nofeature-ha scenario - - Scp /home/stack/overcloudrc failed in apex-os-nosdn-ovs-noha and apex-os-odl_l2-sfc-noha scenarios .. note:: The faults not related to *Yardstick* framework, addressing scenarios which were not fully verified, are listed in the OPNFV installer's release @@ -582,10 +584,44 @@ Known Issues/Faults Corrected Faults ---------------- -* TODO * - -Colorado known restrictions/issues +Colorado.2.0: + ++----------------------------+------------------------------------------------+ +| **JIRA REFERENCE** | **SLOGAN** | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-325 | Provide raw format yardstick vm image for | +| | nova-lxd scenario. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-358 | tc027 ipv6 test case to de-coupling to the | +| | installers. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-359 | ipv6 testcase disable port-security on | +| | vRouter. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-363 | ipv6 testcase to support fuel. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-367 | Add d3 graph presentation to yardstick | +| | reporting. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-371 | Provide raw format yardstick vm image for | +| | nova-lxd scenario. | +| | | ++----------------------------+------------------------------------------------+ +| JIRA: YARDSTICK-372 | cannot find yardstick-img-dpdk-modify and | +| | yardstick-img-lxd-modify in environment | +| | varibales. | +| | | ++----------------------------+------------------------------------------------+ + + +Colorado 2.0 known restrictions/issues ================================== +-----------+-----------+----------------------------------------------+ | Installer | Scenario | Issue | @@ -597,25 +633,11 @@ Colorado known restrictions/issues | | | addresses fail because of a known ODL bug. | | | | https://jira.opnfv.org/browse/APEX-112 | +-----------+-----------+----------------------------------------------+ -| apex | *-fdio | Due to late integration, fdio scenarios' | -| | | test suite file is not provided. | -+-----------+-----------+----------------------------------------------+ -| joid | *-lxd | In the LXD scenarios, nova-lxd does not | -| | | support qcow2 Images. | -| | | https://jira.opnfv.org/browse/YARDSTICK-325 | -+-----------+-----------+----------------------------------------------+ Open JIRA tickets ================= -+------------------+-----------------------------------------------+ -| JIRA | Description | -+==================+===============================================+ -| `YARDSTICK-325`_ | Add imge format support for LXD scenario | -| | | -+------------------+-----------------------------------------------+ - Useful links ============ @@ -636,3 +658,14 @@ Useful links .. _`YARDSTICK-325` : https://jira.opnfv.org/browse/YARDSTICK-325 +.. _`YARDSTICK-358` : https://jira.opnfv.org/browse/YARDSTICK-358 + +.. _`YARDSTICK-359` : https://jira.opnfv.org/browse/YARDSTICK-359 + +.. _`YARDSTICK-363` : https://jira.opnfv.org/browse/YARDSTICK-363 + +.. _`YARDSTICK-367` : https://jira.opnfv.org/browse/YARDSTICK-367 + +.. _`YARDSTICK-371` : https://jira.opnfv.org/browse/YARDSTICK-371 + +.. _`YARDSTICK-372` : https://jira.opnfv.org/browse/YARDSTICK-372 diff --git a/docs/results/os-onos-nofeature-ha.rst b/docs/results/os-onos-nofeature-ha.rst index e5587505f..d8b3ace5f 100644 --- a/docs/results/os-onos-nofeature-ha.rst +++ b/docs/results/os-onos-nofeature-ha.rst @@ -240,7 +240,7 @@ The lost amount of packets normally differs a lot per test run. Detailed test results --------------------- -The scenario was run on Intel POD5_ with: +The scenario was run on Intel POD6_ with: Joid OpenStack Mitaka Onos Goldeneye diff --git a/docs/results/results.rst b/docs/results/results.rst index d7572e463..04c6b9f87 100644 --- a/docs/results/results.rst +++ b/docs/results/results.rst @@ -29,7 +29,7 @@ OPNFV labs, triggered by OPNFV CI pipeline, documented per scenario. os-odl_l2-bgpvpn-ha.rst os-odl_l2-sfc-ha.rst os-nosdn-kvm-ha.rst - os-onos-nofeature-h.rst + os-onos-nofeature-ha.rst os-onos-sfc-ha.rst Test results of executed tests are avilable in Dashboard_ and logs in Jenkins_. diff --git a/docs/results/yardstick-opnfv-ha.rst b/docs/results/yardstick-opnfv-ha.rst index 4ee9de847..ef1617342 100644 --- a/docs/results/yardstick-opnfv-ha.rst +++ b/docs/results/yardstick-opnfv-ha.rst @@ -114,5 +114,5 @@ There are several improvement points for HA test: a) Running test cases in different enveriment deployed by different installers, such as compass4nfv, apex and joid, with different versiones. b) The period of each request is a little long, it needs more accurate test - method. +method. c) More test cases with different faults and different monitors are needed. diff --git a/docs/userguide/02-methodology.rst b/docs/userguide/02-methodology.rst index 1849ffd0c..34d271095 100644 --- a/docs/userguide/02-methodology.rst +++ b/docs/userguide/02-methodology.rst @@ -170,17 +170,19 @@ options). +---------+-------------------+----------------+------------------------------+ | Compute | TC003 [1]_ | TC003 [1]_ | TC013 [1]_ | | | TC004 | TC004 | TC015 [1]_ | -| | TC014 | TC010 | | -| | TC024 | TC012 | | -| | TC069 | TC055 | | +| | TC010 | TC024 | | +| | TC012 | TC055 | | +| | TC014 | | | +| | TC069 | | | +---------+-------------------+----------------+------------------------------+ -| Network | TC001 | TC001 | TC016 [1]_ | -| | TC002 | TC008 | TC018 [1]_ | -| | TC011 | TC009 | | -| | TC073 | TC075 | | +| Network | TC001 | TC044 | TC016 [1]_ | +| | TC002 | TC073 | TC018 [1]_ | +| | TC009 | TC075 | | +| | TC011 | | | +| | TC042 | | | +| | TC043 | | | +---------+-------------------+----------------+------------------------------+ -| Storage | TC005 | TC005 | TC017 [1]_ | -| | | TC063 | | +| Storage | TC005 | TC063 | TC017 [1]_ | +---------+-------------------+----------------+------------------------------+ .. note:: The description in this OPNFV document is intended as a reference for diff --git a/docs/userguide/07-installation.rst b/docs/userguide/07-installation.rst index aa45b61af..d3d7bc1ce 100644 --- a/docs/userguide/07-installation.rst +++ b/docs/userguide/07-installation.rst @@ -9,22 +9,52 @@ Yardstick Installation Abstract -------- -Yardstick supports installation on Ubuntu 14.04 or by using a Docker image. -The installation procedure on Ubuntu 14.04 or via the docker image are -detailed in the section below. +Yardstick supports installation on Ubuntu 14.04 or via a Docker image. The +installation procedure on Ubuntu 14.04 or via the docker image are detailed in +the section below. -To use Yardstick you should have access to an OpenStack environment, -with at least Nova, Neutron, Glance, Keystone and Heat installed. +To use Yardstick you should have access to an OpenStack environment, with at +least Nova, Neutron, Glance, Keystone and Heat installed. The steps needed to run Yardstick are: 1. Install Yardstick. -2. Create the test configuration .yaml file. -3. Build a guest image。 -4. Load the image into the OpenStack environment. -5. Create a Neutron external network. -6. Load OpenStack environment variables. -6. Run the test case. +2. Load OpenStack environment variables. +3. Create a Neutron external network. +4. Build Yardstick flavor and a guest image. +5. Load the guest image into the OpenStack environment. +6. Create the test configuration .yaml file. +7. Run the test case. + + +Prerequisites +------------- + +The OPNFV deployment is out of the scope of this document but it can be +found in http://artifacts.opnfv.org/opnfvdocs/colorado/docs/configguide/index.html. +The OPNFV platform is considered as the System Under Test (SUT) in this +document. + +Several prerequisites are needed for Yardstick: + + #. A Jumphost to run Yardstick on + #. A Docker daemon shall be installed on the Jumphost + #. A public/external network created on the SUT + #. Connectivity from the Jumphost to the SUT public/external network + +WARNING: Connectivity from Jumphost is essential and it is of paramount +importance to make sure it is working before even considering to install +and run Yardstick. Make also sure you understand how your networking is +designed to work. + +NOTE: **Jumphost** refers to any server which meets the previous +requirements. Normally it is the same server from where the OPNFV +deployment has been triggered previously. + +NOTE: If your Jumphost is operating behind a company http proxy and/or +Firewall, please consult first the section `Proxy Support`_, towards +the end of this document. The section details some tips/tricks which +*may* be of help in a proxified environment. Installing Yardstick on Ubuntu 14.04 @@ -33,9 +63,9 @@ Installing Yardstick on Ubuntu 14.04 .. _install-framework: You can install Yardstick framework directly on Ubuntu 14.04 or in an Ubuntu -14.04 Docker image. -No matter which way you choose to install Yardstick framework, the following -installation steps are identical. +14.04 Docker image. No matter which way you choose to install Yardstick +framework, the following installation steps are identical. + If you choose to use the Ubuntu 14.04 Docker image, You can pull the Ubuntu 14.04 Docker image from Docker hub: @@ -91,47 +121,42 @@ at: http://www.youtube.com/watch?v=4S4izNolmR0 Installing Yardstick using Docker --------------------------------- -Yardstick iteself has a Docker image, this Docker image (**Yardstick-stable**) +Yardstick has a Docker image, this Docker image (**Yardstick-stable**) serves as a replacement for installing the Yardstick framework in a virtual environment (for example as done in :ref:`install-framework`). It is recommended to use this Docker image to run Yardstick test. -Yardstick-stable image -^^^^^^^^^^^^^^^^^^^^^^ -Pull the Yardstick-stable Docker image from Docker hub: +Pulling the Yardstick Docker image +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -:: +.. _dockerhub: https://hub.docker.com/r/opnfv/yardstick/ + +Pull the Yardstick Docker image ('opnfv/yardstick') from the public dockerhub +registry under the OPNFV account: [dockerhub_], with the following docker +command:: docker pull opnfv/yardstick:stable +After pulling the Docker image, check that it is available with the +following docker command:: + + [yardsticker@jumphost ~]$ docker images + REPOSITORY TAG IMAGE ID CREATED SIZE + opnfv/yardstick stable a4501714757a 1 day ago 915.4 MB + Run the Docker image: :: - docker run --privileged=true -it openfv/yardstick /bin/bash + docker run --privileged=true -it opnfv/yardstick /bin/bash -In the container run yardstick task command to execute a test case. -Before executing Yardstick test case, make sure that yardstick-trusty-server -image and yardstick flavor is available in OpenStack. -Detailed steps about creating yardstick flavor and building yardstick-trusty-server -image can be found below. +In the container the Yardstick repository is located in the /home/opnfv/repos +directory. OpenStack parameters and credentials ------------------------------------ -Yardstick-flavor -^^^^^^^^^^^^^^^^ -Most of the sample test cases in Yardstick are using an OpenStack flavor called -*yardstick-flavor* which deviates from the OpenStack standard m1.tiny flavor by the -disk size - instead of 1GB it has 3GB. Other parameters are the same as in m1.tiny. - -Create yardstick-flavor: - -:: - - nova flavor-create yardstick-flavor 100 512 3 1 - Environment variables ^^^^^^^^^^^^^^^^^^^^^ Before running Yardstick it is necessary to export OpenStack environment variables @@ -146,14 +171,46 @@ Credential environment variables in the *openrc* file have to include at least: * OS_PASSWORD * OS_TENANT_NAME +A sample openrc file may look like this: + +* export OS_PASSWORD=console +* export OS_TENANT_NAME=admin +* export OS_AUTH_URL=http://172.16.1.222:35357/v2.0 +* export OS_USERNAME=admin +* export OS_VOLUME_API_VERSION=2 +* export EXTERNAL_NETWORK=net04_ext + + +Yardstick falvor and guest images +--------------------------------- + +Before executing Yardstick test cases, make sure that yardstick guest image and +yardstick flavor are available in OpenStack. +Detailed steps about creating yardstick flavor and building yardstick-trusty-server +image can be found below. + +Yardstick-flavor +^^^^^^^^^^^^^^^^ +Most of the sample test cases in Yardstick are using an OpenStack flavor called +*yardstick-flavor* which deviates from the OpenStack standard m1.tiny flavor by the +disk size - instead of 1GB it has 3GB. Other parameters are the same as in m1.tiny. + +Create yardstick-flavor: + +:: + + nova flavor-create yardstick-flavor 100 512 3 1 + .. _guest-image: Building a guest image ^^^^^^^^^^^^^^^^^^^^^^ -Yardstick has a tool for building an Ubuntu Cloud Server image containing all -the required tools to run test cases supported by Yardstick. It is necessary to -have sudo rights to use this tool. +Most of the sample test cases in Yardstick are using a guest image called +*yardstick-trusty-server* which deviates from an Ubuntu Cloud Server image +containing all the required tools to run test cases supported by Yardstick. +Yardstick has a tool for building this custom image. It is necessary to have +sudo rights to use this tool. Also you may need install several additional packages to use this tool, by follwing the commands below: @@ -176,8 +233,10 @@ by following the commands above): **Warning:** the script will create files by default in: ``/tmp/workspace/yardstick`` and the files will be owned by root! + If you are building this guest image in inside a docker container make sure the container is granted with privilege. + The created image can be added to OpenStack using the ``glance image-create`` or via the OpenStack Dashboard. @@ -190,6 +249,24 @@ Example command: --disk-format qcow2 --container-format bare \ --file /tmp/workspace/yardstick/yardstick-trusty-server.img +Some Yardstick test cases use a Cirros image, you can find one at +http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img + + +Automatic flavor and image creation +----------------------------------- +Yardstick has a script for automatic creating yardstick flavor and building +guest images. This script is mainly used in CI, but you can still use it in +your local environment. + +Example command: + +:: + + export YARD_IMG_ARCH="amd64" + sudo echo "Defaults env_keep += \"YARD_IMG_ARCH\"" >> /etc/sudoers + source $YARDSTICK_REPO_DIR/tests/ci/load_images.sh + Yardstick default key pair ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/userguide/10-grafana.rst b/docs/userguide/10-grafana.rst new file mode 100644 index 000000000..e871a18da --- /dev/null +++ b/docs/userguide/10-grafana.rst @@ -0,0 +1,86 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International +.. License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) 2016 Huawei Technologies Co.,Ltd and others + +================= +Grafana dashboard +================= + +Abstract +======== + +This chapter describes the Yardstick grafana dashboard. The Yardstick grafana +dashboard can be found here: http://testresults.opnfv.org/grafana/ + + +.. image:: images/login.png + :width: 800px + :alt: Yardstick grafana dashboard + +Public access +============= + +Yardstick provids a public account for accessing to the dashboard. The username +and password are both set to ‘opnfv’. + +Testcase dashboard +================== + +For each test case, there is a dedicated dashboard. Shown here is the dashboard +of TC002. + + +.. image:: images/TC002.png + :width: 800px + :alt:TC002 dashboard + +For each test case dashboard. On the top left, we have a dashboard selection, +you can switch to different test cases using this pull-down menu. + +Underneath, we have a pod and scenario selection. +All the pods and scenarios that have ever published test data to the Influx DB +will be shown here. + +You can check multiple pods or scenarios. + +For each test case, we have a short description and a link to detailed test case information in Yardstick user guide. + +Underneath, it is the result presentation section. +You can use the time period selection on the top right corner to zoom in or zoom out the chart. + +Add a dashboard into yardstick grafana +====================================== + +Due to security concern, users that using the public opnfv account are not able +to edit the yardstick grafana directly.It takes a few more steps for a +non-yardstick user to add a custom dashboard into yardstick grafana. + +There are 6 steps to go. + + +.. image:: images/add.png + :width: 800px + :alt: Add a dashboard into yardstick grafana + + +First, You need to build a local influxdb and grafana, so you can do the work +locally. You can refer to How to deploy InfluxDB and Grafana locally wiki page +about how to do this. + +Once step one is done, you can fetch the existing grafana dashboard +configuration file from the yardstick repository and import it to your local +grafana. After import is done, you grafana dashboard will be ready to use just +like the community’s dashboard. + +The third step is running some test cases to generate test results and +publishing it to your local influxdb. + +Now you have some data to visualize in your dashboard. In the fourth step, it +is time to create your own dashboard. You can either modify an existing +dashboard or try to create a new one from scratch. + +Either way, once you finish the dashboard, the next step is exporting the +configuration file and propose a patch into Yardstick. Yardstick team will +review and merge it into Yardstick repository. + diff --git a/docs/userguide/10-list-of-tcs.rst b/docs/userguide/11-list-of-tcs.rst index 8798a8f51..8798a8f51 100644 --- a/docs/userguide/10-list-of-tcs.rst +++ b/docs/userguide/11-list-of-tcs.rst diff --git a/docs/userguide/images/TC002.png b/docs/userguide/images/TC002.png Binary files differnew file mode 100644 index 000000000..89154efcc --- /dev/null +++ b/docs/userguide/images/TC002.png diff --git a/docs/userguide/images/add.png b/docs/userguide/images/add.png Binary files differnew file mode 100644 index 000000000..a88a1b146 --- /dev/null +++ b/docs/userguide/images/add.png diff --git a/docs/userguide/images/login.png b/docs/userguide/images/login.png Binary files differnew file mode 100644 index 000000000..045e010e4 --- /dev/null +++ b/docs/userguide/images/login.png diff --git a/docs/userguide/index.rst b/docs/userguide/index.rst index 0aa112a45..60e1340ac 100644 --- a/docs/userguide/index.rst +++ b/docs/userguide/index.rst @@ -19,6 +19,7 @@ Yardstick Overview 07-installation 08-yardstick_plugin 09-result-store-InfluxDB - 10-list-of-tcs + 10-grafana + 11-list-of-tcs glossary references diff --git a/docs/userguide/opnfv_yardstick_tc043.rst b/docs/userguide/opnfv_yardstick_tc043.rst index b6e557d86..59d7c6993 100644 --- a/docs/userguide/opnfv_yardstick_tc043.rst +++ b/docs/userguide/opnfv_yardstick_tc043.rst @@ -13,7 +13,7 @@ Yardstick Test Case Description TC043 |Network Latency Between NFVI Nodes | | | +--------------+--------------------------------------------------------------+ -|test case id | OPNFV_YARDSTICK_TC043_Latency_between_NFVI_nodes_ | +|test case id | OPNFV_YARDSTICK_TC043_Latency_between_NFVI_nodes | | | measurements | | | | +--------------+--------------------------------------------------------------+ diff --git a/docs/userguide/opnfv_yardstick_tc073.rst b/docs/userguide/opnfv_yardstick_tc073.rst index a6499eabb..ad4526405 100644 --- a/docs/userguide/opnfv_yardstick_tc073.rst +++ b/docs/userguide/opnfv_yardstick_tc073.rst @@ -37,7 +37,7 @@ Yardstick Test Case Description TC073 | | For SLA max_mean_latency is set to 100. | | | | +--------------+--------------------------------------------------------------+ -|test tool | netperf | +|test tool | netperf_ | | | Netperf is a software application that provides network | | | bandwidth testing between two hosts on a network. It | | | supports Unix domain sockets, TCP, SCTP, DLPI and UDP via | diff --git a/docs/userguide/references.rst b/docs/userguide/references.rst index 7f6a0f0f0..05729ba75 100644 --- a/docs/userguide/references.rst +++ b/docs/userguide/references.rst @@ -15,8 +15,8 @@ OPNFV * Pharos wiki: https://wiki.opnfv.org/pharos * VTC: https://wiki.opnfv.org/vtc * Yardstick CI: https://build.opnfv.org/ci/view/yardstick/ -* Yardstick and ETSI TST001 presentation: https://wiki.opnfv.org/_media/opnfv_summit_-_bridging_opnfv_and_etsi.pdf -* Yardstick Project presentation: https://wiki.opnfv.org/_media/opnfv_summit_-_yardstick_project.pdf +* Yardstick and ETSI TST001 presentation: https://wiki.opnfv.org/display/yardstick/Yardstick?preview=%2F2925202%2F2925205%2Fopnfv_summit_-_bridging_opnfv_and_etsi.pdf +* Yardstick Project presentation: https://wiki.opnfv.org/display/yardstick/Yardstick?preview=%2F2925202%2F2925208%2Fopnfv_summit_-_yardstick_project.pdf * Yardstick wiki: https://wiki.opnfv.org/yardstick References used in Test Cases @@ -55,6 +55,6 @@ Standards ========= * ETSI NFV: http://www.etsi.org/technologies-clusters/technologies/nfv -* ETSI GS-NFV TST 001: https://docbox.etsi.org/ISG/NFV/Open/Drafts/TST001_-_Pre-deployment_Validation/ +* ETSI GS-NFV TST 001: http://www.etsi.org/deliver/etsi_gs/NFV-TST/001_099/001/01.01.01_60/gs_NFV-TST001v010101p.pdf * RFC2544: https://www.ietf.org/rfc/rfc2544.txt diff --git a/etc/__init__.py b/etc/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/etc/__init__.py @@ -23,6 +23,12 @@ setup( 'resources/files/*', 'resources/scripts/install/*.bash', 'resources/scripts/remove/*.bash' + ], + 'etc': [ + 'yardstick/nodes/*/*.yaml' + ], + 'tests': [ + 'opnfv/*/*.yaml' ] }, url="https://www.opnfv.org", @@ -57,5 +63,8 @@ setup( 'yardstick-plot=yardstick.plot.plotter:main [plot]' ], }, - scripts=['tools/yardstick-img-modify'] + scripts=['tools/yardstick-img-modify', + 'tools/yardstick-img-lxd-modify', + 'tools/yardstick-img-dpdk-modify' + ] ) diff --git a/tests/ci/load_images.sh b/tests/ci/load_images.sh index fd14ab631..49b972777 100755 --- a/tests/ci/load_images.sh +++ b/tests/ci/load_images.sh @@ -25,14 +25,26 @@ build_yardstick_image() echo echo "========== Build yardstick cloud image ==========" - local cmd="sudo $(which yardstick-img-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" + if [[ "$DEPLOY_SCENARIO" == *"-lxd-"* ]]; then + local cmd="sudo $(which yardstick-img-lxd-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" - # Build the image. Retry once if the build fails. - $cmd || $cmd + # Build the image. Retry once if the build fails + $cmd || $cmd - if [ ! -f $QCOW_IMAGE ]; then - echo "Failed building QCOW image" - exit 1 + if [ ! -f $RAW_IMAGE ]; then + echo "Failed building RAW image" + exit 1 + fi + else + local cmd="sudo $(which yardstick-img-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh" + + # Build the image. Retry once if the build fails + $cmd || $cmd + + if [ ! -f $QCOW_IMAGE ]; then + echo "Failed building QCOW image" + exit 1 + fi fi } @@ -76,12 +88,21 @@ load_yardstick_image() EXTRA_PARAMS=$EXTRA_PARAMS" --property hw_mem_page_size=large" fi - output=$(eval glance --os-image-api-version 1 image-create \ - --name yardstick-trusty-server \ - --is-public true --disk-format $DISK_FORMAT \ - --container-format bare \ - $EXTRA_PARAMS \ - --file $QCOW_IMAGE) + if [[ "$DEPLOY_SCENARIO" == *"-lxd-"* ]]; then + output=$(eval glance --os-image-api-version 1 image-create \ + --name yardstick-trusty-server \ + --is-public true --disk-format root-tar \ + --container-format bare \ + $EXTRA_PARAMS \ + --file $RAW_IMAGE) + else + output=$(eval glance --os-image-api-version 1 image-create \ + --name yardstick-trusty-server \ + --is-public true --disk-format qcow2 \ + --container-format bare \ + $EXTRA_PARAMS \ + --file $QCOW_IMAGE) + fi echo "$output" @@ -92,7 +113,11 @@ load_yardstick_image() exit 1 fi - sudo rm -f $QCOW_IMAGE + if [ "$DEPLOY_SCENARIO" == *"-lxd-"* ]; then + sudo rm -f $RAW_IMAGE + else + sudo rm -f $QCOW_IMAGE + fi echo "Glance image id: $GLANCE_IMAGE_ID" } @@ -112,7 +137,7 @@ load_cirros_image() output=$(glance image-create \ --name cirros-0.3.3 \ - --disk-format $DISK_FORMAT \ + --disk-format qcow2 \ --container-format bare \ $EXTRA_PARAMS \ --file $image_file) @@ -179,12 +204,7 @@ create_nova_flavor() main() { QCOW_IMAGE="/tmp/workspace/yardstick/yardstick-trusty-server.img" - - if [ "$DEPLOY_SCENARIO" == "os-nosdn-lxd-ha" -o "$DEPLOY_SCENARIO" == "os-nosdn-lxd-noha" ]; then - DISK_FORMAT="raw" - else - DISK_FORMAT="qcow2" - fi + RAW_IMAGE="/tmp/workspace/yardstick/yardstick-trusty-server.tar.gz" build_yardstick_image load_yardstick_image diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml index 93d6ac018..3c7b988c0 100644 --- a/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml @@ -2,6 +2,7 @@ # measure network latency using ping schema: "yardstick:task:0.1" +{% set image = image or "cirros-0.3.3" %} scenarios: {% for i in range(2) %} - @@ -23,7 +24,7 @@ scenarios: context: name: demo - image: cirros-0.3.3 + image: {{image}} flavor: yardstick-flavor user: cirros diff --git a/tests/opnfv/test_cases/ping_lxd_test.yaml b/tests/opnfv/test_cases/ping_lxd_test.yaml deleted file mode 100644 index d20035690..000000000 --- a/tests/opnfv/test_cases/ping_lxd_test.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -# measure network latency using ping -# this tc is dedicated for os-nosdn-lxd scenario - -schema: "yardstick:task:0.1" -scenarios: -{% for i in range(2) %} -- - type: Ping - options: - packetsize: 100 - host: athena.demo - target: ares.demo - - runner: - type: Duration - duration: 60 - interval: 10 - - sla: - max_rtt: 10 - action: monitor -{% endfor %} - -context: - name: demo - image: Cirros LXC 0.3 - flavor: yardstick-flavor - user: cirros - - placement_groups: - pgrp1: - policy: "availability" - - servers: - athena: - floating_ip: true - placement: "pgrp1" - ares: - placement: "pgrp1" - - networks: - test: - cidr: '10.0.1.0/24' diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-ha_daily.yaml index 730284b9f..01591b9d2 100644 --- a/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-ha_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-ha_daily.yaml @@ -7,12 +7,13 @@ name: "os-nosdn-lxd-ha" test_cases_dir: "tests/opnfv/test_cases/" test_cases: - - file_name: ping_lxd_test.yaml + file_name: opnfv_yardstick_tc002.yaml constraint: installer: joid - pod: intel-pod5 -- - file_name: opnfv_yardstick_tc002.yaml + pod: intel-pod5,intel-pod6 + task_args: + intel-pod5: '{"image": "Cirros LXC 0.3"}' + intel-pod6: '{"image": "Cirros LXC 0.3"}' - file_name: opnfv_yardstick_tc005.yaml - diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-noha_daily.yaml index ac8535e81..e1f945b9c 100644 --- a/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-noha_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_os-nosdn-lxd-noha_daily.yaml @@ -8,6 +8,12 @@ test_cases_dir: "tests/opnfv/test_cases/" test_cases: - file_name: opnfv_yardstick_tc002.yaml + constraint: + installer: joid + pod: intel-pod5,intel-pod6 + task_args: + intel-pod5: '{"image": "Cirros LXC 0.3"}' + intel-pod6: '{"image": "Cirros LXC 0.3"}' - file_name: opnfv_yardstick_tc005.yaml - diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-nofeature-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-nofeature-ha_daily.yaml index 67445f051..d6a0533f4 100644 --- a/tests/opnfv/test_suites/opnfv_os-nosdn-nofeature-ha_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_os-nosdn-nofeature-ha_daily.yaml @@ -22,10 +22,12 @@ test_cases: file_name: opnfv_yardstick_tc027.yaml constraint: installer: compass,fuel - pod: huawei-pod1,lf-pod2 + pod: huawei-pod1,lf-pod2,ericsson-pod3,ericsson-pod4 task_args: huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml"}' lf-pod2: '{"pod_info": "etc/yardstick/nodes/fuel_baremetal/pod.yaml", "openrc":"/root/openrc", "external_network":"admin_floating_net"}' + ericsson-pod3: '{"pod_info": "etc/yardstick/nodes/fuel_baremetal/pod.yaml", "openrc":"/root/openrc", "external_network":"admin_floating_net"}' + ericsson-pod4: '{"pod_info": "etc/yardstick/nodes/fuel_baremetal/pod.yaml", "openrc":"/root/openrc", "external_network":"admin_floating_net"}' - file_name: opnfv_yardstick_tc037.yaml - diff --git a/tests/unit/dispatcher/test_influxdb_line_protocol.py b/tests/unit/dispatcher/test_influxdb_line_protocol.py index cb05bf4d2..42553c498 100644 --- a/tests/unit/dispatcher/test_influxdb_line_protocol.py +++ b/tests/unit/dispatcher/test_influxdb_line_protocol.py @@ -4,7 +4,7 @@ # influxdb-python/influxdb/tests/test_line_protocol.py import unittest -from yardstick.dispatcher.influxdb_line_protocol import make_lines +from third_party.influxdb.influxdb_line_protocol import make_lines class TestLineProtocol(unittest.TestCase): diff --git a/third_party/__init__.py b/third_party/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/third_party/__init__.py diff --git a/third_party/influxdb/__init__.py b/third_party/influxdb/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/third_party/influxdb/__init__.py diff --git a/yardstick/dispatcher/influxdb_line_protocol.py b/third_party/influxdb/influxdb_line_protocol.py index eee982163..eee982163 100644 --- a/yardstick/dispatcher/influxdb_line_protocol.py +++ b/third_party/influxdb/influxdb_line_protocol.py diff --git a/tools/ubuntu-server-cloudimg-modify.sh b/tools/ubuntu-server-cloudimg-modify.sh index 3ef060847..49c842c97 100755 --- a/tools/ubuntu-server-cloudimg-modify.sh +++ b/tools/ubuntu-server-cloudimg-modify.sh @@ -24,7 +24,7 @@ if [ $# -eq 1 ]; then fi # iperf3 only available for trusty in backports -if [grep -q trusty /etc/apt/sources.list ]; then +if [ grep -q trusty /etc/apt/sources.list ]; then if [ $YARD_IMG_ARCH = "arm64" ]; then echo "deb [arch=arm64] http://ports.ubuntu.com/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list else diff --git a/tools/yardstick-img-lxd-modify b/tools/yardstick-img-lxd-modify new file mode 100755 index 000000000..31194554c --- /dev/null +++ b/tools/yardstick-img-lxd-modify @@ -0,0 +1,135 @@ +#!/bin/bash + +############################################################################## +# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# yardstick-img-lxd-modify - download and modify a Ubuntu cloud image +# +# The actual customization is done by a script passed with an absolute path as +# the only single argument. The command needs to be invoked as sudo +# +# Example invocation: +# yardstick-img-lxd-modify /home/yardstick/tools/ubuntu-server-cloudimg-modify.sh +# +# Warning: the script will create files by default in: +# /tmp/workspace/yardstick +# the files will be owned by root! +# +# TODO: image resize is needed if the base image is too small +# + +set -e +set -x + +die() { + echo "error: $1" >&2 + exit 1 +} + +test $# -eq 1 || die "no image specific script as argument" +test $(id -u) -eq 0 || die "should invoke using sudo" + +cmd=$1 +test -x $cmd +mountdir="/mnt/yardstick" +workspace=${WORKSPACE:-"/tmp/workspace/yardstick"} +host=${HOST:-"cloud-images.ubuntu.com"} +release=${RELEASE:-"trusty"} +image_path="${release}/current/${release}-server-cloudimg-amd64-root.tar.gz" +image_url=${IMAGE_URL:-"https://${host}/${image_path}"} +md5sums_path="${release}/current/MD5SUMS" +md5sums_url=${MD5SUMS_URL:-"https://${host}/${md5sums_path}"} + +imgfile="${workspace}/yardstick-${release}-server.tar.gz" +filename=$(basename $image_url) + +# download and checksum base image, conditionally if local copy is outdated +download() { + test -d $workspace || mkdir -p $workspace + cd $workspace + rm -f MD5SUMS # always download the checksum file to a detect stale image + wget $md5sums_url + test -e $filename || wget -nc --progress=dot:giga $image_url + grep $filename MD5SUMS | md5sum -c || + if [ $? -ne 0 ]; then + rm $filename + wget -nc --progress=dot:giga $image_url + grep $filename MD5SUMS | md5sum -c + fi + cd - +} + +# extract files +setup() { + mkdir -p $mountdir + + cp $cmd $mountdir/$(basename $cmd) + + cd $workspace + tar zxvf $filename -C $mountdir +} + +# modify image running a script using in a chrooted environment +modify() { + # resolv.conf does not exist in base image, pass nameserver value from host + nameserver_ip=$(grep -m 1 '^nameserver' \ + /etc/resolv.conf | awk '{ print $2 '}) + + # prevent init scripts from running during install + echo $'#!/bin/sh\nexit 101' >$mountdir/usr/sbin/policy-rc.d + chmod a+x $mountdir/usr/sbin/policy-rc.d + + chroot $mountdir /$(basename $cmd) $nameserver_ip + + rm -rf $mountdir/usr/sbin/policy-rc.d + + tar zcvf $(basename $imgfile) $mountdir/ +} + +# cleanup the image +cleanup() { + rm -rf $mountdir +} + +exitcode="" +error_trap() +{ + local rc=$? + + set +e + + if [ -z "$exitcode" ]; then + exitcode=$rc + fi + + dmesg -T | tail -50 + + cleanup + + echo "Image build failed with $exitcode" + + exit $exitcode +} + +main() { + cleanup + + trap "error_trap" EXIT SIGTERM + + download + setup + modify + + trap - EXIT SIGTERM + cleanup + + echo "the modified image is found here: $imgfile" +} + +main diff --git a/yardstick/benchmark/contexts/node.py b/yardstick/benchmark/contexts/node.py index c3d652119..c4e603a46 100644 --- a/yardstick/benchmark/contexts/node.py +++ b/yardstick/benchmark/contexts/node.py @@ -8,10 +8,12 @@ ############################################################################## import sys +import os import yaml import logging from yardstick.benchmark.contexts.base import Context +from yardstick.definitions import YARDSTICK_ROOT_PATH LOG = logging.getLogger(__name__) @@ -33,7 +35,9 @@ class NodeContext(Context): def init(self, attrs): '''initializes itself from the supplied arguments''' self.name = attrs["name"] - self.file_path = attrs.get("file", "/etc/yardstick/nodes/pod.yaml") + self.file_path = attrs.get("file", "") + if not os.path.exists(self.file_path): + self.file_path = YARDSTICK_ROOT_PATH + self.file_path LOG.info("Parsing pod file: %s", self.file_path) diff --git a/yardstick/benchmark/scenarios/networking/ping6_pre_setup.bash b/yardstick/benchmark/scenarios/networking/ping6_pre_setup.bash index d50a800d7..7fa60592d 100644 --- a/yardstick/benchmark/scenarios/networking/ping6_pre_setup.bash +++ b/yardstick/benchmark/scenarios/networking/ping6_pre_setup.bash @@ -18,8 +18,8 @@ cp $ML2_CONF_FILE ${ML2_CONF_FILE}_bkp agent_line_num=$(grep -n '\[agent\]' $ML2_CONF_FILE | awk -F [:] '{print $1}') if [ -z "$agent_line_num" ] then - echo "[agent]" >> ml2_conf.ini - agent_line_num=$(wc -l ml2_conf.ini | awk '{print $1}') + echo "[agent]" >> $ML2_CONF_FILE + agent_line_num=$(wc -l $ML2_CONF_FILE | awk '{print $1}') fi sed -i "${agent_line_num}a prevent_arp_spoofing = False" $ML2_CONF_FILE @@ -28,12 +28,12 @@ sed -i 's/firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptab #check parameters echo "check if parameters ok" echo $ML2_CONF_FILE -grep 'enable_security_group = True' $ML2_CONF_FILE -grep 'extension_drivers = port_security' $ML2_CONF_FILE -grep 'prevent_arp_spoofing = False' $ML2_CONF_FILE +grep -n 'enable_security_group = True' $ML2_CONF_FILE +grep -n 'extension_drivers = port_security' $ML2_CONF_FILE +grep -n 'prevent_arp_spoofing = False' $ML2_CONF_FILE echo $NOVA_CONF_FILE -grep 'security_group_api = neutron' $NOVA_CONF_FILE -grep 'firewall_driver = nova.virt.firewall.NoopFirewallDriver' $NOVA_CONF_FILE +grep -n 'security_group_api = neutron' $NOVA_CONF_FILE +grep -n 'firewall_driver = nova.virt.firewall.NoopFirewallDriver' $NOVA_CONF_FILE echo "check parameters end" # restart nova and neutron service diff --git a/yardstick/cmd/commands/testcase.py b/yardstick/cmd/commands/testcase.py index 5205eb93e..cb76c7ae3 100644 --- a/yardstick/cmd/commands/testcase.py +++ b/yardstick/cmd/commands/testcase.py @@ -8,13 +8,15 @@ ############################################################################## """ Handler for yardstick command 'testcase' """ -from yardstick.cmd import print_hbar -from yardstick.common.task_template import TaskTemplate -from yardstick.common.utils import cliargs import os import yaml import sys +from yardstick.cmd import print_hbar +from yardstick.common.task_template import TaskTemplate +from yardstick.common.utils import cliargs +from yardstick.definitions import YARDSTICK_ROOT_PATH + class TestcaseCommands(object): '''Testcase commands. @@ -22,7 +24,7 @@ class TestcaseCommands(object): Set of commands to discover and display test cases. ''' def __init__(self): - self.test_case_path = 'tests/opnfv/test_cases/' + self.test_case_path = YARDSTICK_ROOT_PATH + 'tests/opnfv/test_cases/' self.testcase_list = [] def do_list(self, args): diff --git a/yardstick/definitions.py b/yardstick/definitions.py new file mode 100644 index 000000000..300a78e58 --- /dev/null +++ b/yardstick/definitions.py @@ -0,0 +1,5 @@ +import os + +dirname = os.path.dirname +YARDSTICK_ROOT_PATH = dirname(dirname(os.path.abspath(__file__))) +YARDSTICK_ROOT_PATH += os.path.sep diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py index e431f2c1e..8673253b4 100644 --- a/yardstick/dispatcher/influxdb.py +++ b/yardstick/dispatcher/influxdb.py @@ -16,7 +16,7 @@ import time from oslo_config import cfg from yardstick.dispatcher.base import Base as DispatchBase -from yardstick.dispatcher.influxdb_line_protocol import make_lines +from third_party.influxdb.influxdb_line_protocol import make_lines LOG = logging.getLogger(__name__) |