summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/Dockerfile2
-rw-r--r--docs/release/release-notes/functest-release.rst377
-rw-r--r--docs/results/danube/1.0/apex.html919
-rw-r--r--docs/results/danube/1.0/compass.html490
-rw-r--r--docs/results/danube/1.0/fuel.html1444
-rw-r--r--docs/results/danube/1.0/joid.html418
-rw-r--r--docs/results/danube/1.0/scenario_history.txt622
-rw-r--r--docs/results/danube/1.0/validated_scenario_history.txt60
-rw-r--r--docs/results/img/weather-clear.pngbin0 -> 1560 bytes
-rw-r--r--docs/results/img/weather-few-clouds.pngbin0 -> 1927 bytes
-rw-r--r--docs/results/img/weather-overcast.pngbin0 -> 1588 bytes
-rw-r--r--docs/results/img/weather-storm.pngbin0 -> 2137 bytes
-rw-r--r--docs/results/js/default.css194
-rw-r--r--docs/results/js/gauge.js165
-rw-r--r--docs/results/js/trend.js75
-rw-r--r--docs/testing/user/userguide/index.rst2
-rw-r--r--docs/testing/user/userguide/runfunctest.rst549
-rwxr-xr-xfunctest/ci/testcases.yaml80
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt32
-rw-r--r--functest/opnfv_tests/vnf/ims/clearwater_ims_base.py3
-rw-r--r--functest/tests/unit/ci/test_prepare_env.py111
-rw-r--r--functest/tests/unit/ci/test_run_tests.py84
-rw-r--r--functest/tests/unit/ci/test_tier_handler.py9
-rw-r--r--functest/tests/unit/opnfv_tests/openstack/tempest/test_conf_utils.py222
-rw-r--r--functest/tests/unit/opnfv_tests/openstack/tempest/test_tempest.py51
-rw-r--r--functest/tests/unit/opnfv_tests/vnf/ims/test_clearwater.py34
-rw-r--r--functest/tests/unit/opnfv_tests/vnf/ims/test_orchestrator_cloudify.py55
-rw-r--r--functest/tests/unit/utils/test_functest_logger.py48
-rw-r--r--functest/tests/unit/utils/test_openstack_tacker.py92
-rw-r--r--functest/tests/unit/utils/test_openstack_utils.py55
-rw-r--r--functest/utils/openstack_utils.py34
31 files changed, 5769 insertions, 458 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index a2033a49a..6137cc949 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -18,7 +18,7 @@ ARG TEMPEST_TAG=15.0.0
ARG REFSTACK_TAG=15.0.0
ARG ODL_TAG=release/beryllium-sr4
ARG OPENSTACK_TAG=stable/mitaka
-ARG KINGBIRD_TAG=0.2.2
+ARG KINGBIRD_TAG=1.1.0
ARG VIMS_TAG=stable
ARG VROUTER_TAG=stable
ARG REPOS_DIR=/home/opnfv/repos
diff --git a/docs/release/release-notes/functest-release.rst b/docs/release/release-notes/functest-release.rst
index 423b9f9b8..22393c3a7 100644
--- a/docs/release/release-notes/functest-release.rst
+++ b/docs/release/release-notes/functest-release.rst
@@ -33,10 +33,11 @@ Version history
| 2016-08-17 | 1.0.0 | Morgan Richomme | Functest for Colorado |
| | | (Orange) | release |
+------------+----------+------------------+------------------------+
-| 2017-03-27 | 4.0.0 | Jose Lausuch | Functest for Danube |
+| 2017-03-29 | 4.0.0 | Jose Lausuch | Functest for Danube |
| | | (Ericsson) | release |
+------------+----------+------------------+------------------------+
+
OPNFV Danube Release
======================
@@ -72,10 +73,10 @@ The OPNFV projects integrated into Functest framework for automation are:
* onos
* odl-sfc
* odl-netvirt
- * orchestra_ims
* parser
* promise
* security scan
+ * orchestra_ims
* vyos_vrouter
The validation of a scenario requires a subset of these tests depending
@@ -98,7 +99,7 @@ Release Data
| **Release designation** | Danube base release |
| | |
+--------------------------------------+--------------------------------------+
-| **Release date** | April 3rd 2017 |
+| **Release date** | March 31st 2017 |
| | |
+--------------------------------------+--------------------------------------+
| **Purpose of the delivery** | Danube base release |
@@ -133,7 +134,7 @@ Feature evolution
-----------------
- Adoption of SNAPS as middleware in 4 new test cases (connection_check, api_check,
-snaps_health_check and snaps_smoke)
+ snaps_health_check and snaps_smoke)
- Introduction of refstack suite
@@ -150,10 +151,10 @@ Framework
- Harmonization of the naming, better adoption of OpenStack coding conventions
- - Pythonization, rewritting of bash scripts
+ - Enhanced code to be more Object Oriented, removed bash scripts
- Introduction of abstraction classes to ease and harmonize the integration of
- test cases (internal or from feature projects)
+ test cases (internal or from feature projects)
- New management of logger, env variables and configuration files
@@ -165,13 +166,27 @@ Framework
Test API
---------
-- automatic documentation (html & pdf)
+- Automatic documentation (html & pdf)
+
+- Full dockerization and automation of the deployment on testresults.opnfv.org
+
+- Automation of test database backup on artifact
+
+
+New internal tests cases
+------------------------
+
+- connection_check
-- full dockerization and automation of the deployment on testresults.opnfv.org
+- api_check
-- automation of test database backup on artifact
+- snaps_health_check (replacing shell script healtcheck)
+- refstack_defcore
+- snaps_smoke
+
+- vyos_vrouter
Scenario Matrix
@@ -260,18 +275,18 @@ Colorado deprecated scenarios:
For the scenario validation, we consider only the healthcheck, smoke and
features categories. These tests are run systematically in the CI daily loops.
-Success criteria have been defined for these test cases, they can be
-PASS/FAIL or a success rate may be declared (100%, > 90%)
+Success criterias have been defined for these test cases, they can be
+PASS/FAIL or a success rate may be declared (100%, > 90%).
All the criteria, as well as the test dependencies are declared in the
-ci/testcases.yaml file.
+testcases.yaml file located in the ci directory of the repository.
The scoring for the Danube release per installer can be described as
follows.
The scoring is an indicator showing how many feature project test suites
-have been integrated on the scenario.
+have been integrated in the scenario.
-The scoring equals the number of tests * succesful iteration of each
+The scoring equals the number of tests * successful iteration of each
test [0-3]. The scoring method is described in https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617
e.g.
@@ -292,47 +307,48 @@ See the release notes of the installers for more details.
Apex
----
-+------------------+---------+---------+-------------------+
-| Scenario | Scoring | Success | Results |
-| | | rate | |
-+==================+=========+=========+===================+
-************* TODO *****************************************
-| nosdn | 17/18 | 95% | `apex-res-174`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2 | 21/21 | 100% | `apex-res-175`_ |
-+------------------+---------+---------+-------------------+
-| odl_l3 | 15/18 | 83% | `apex-res-176`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2-bgpvpn | 14/18 | 78% | `apex-res-235`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2-fdio-noha | 12/15 | 80% | `apex-res-6`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2-sfc-noha | 18/24 | 75% | `apex-res-217`_ |
-+------------------+---------+---------+-------------------+
-| onos-nofeature-ha| 20/21 | 95% | `apex-res-423`_ |
-+------------------+---------+---------+-------------------+
-
++------------------+---------+---------+-----------------+
+| Scenario | Scoring | Success | Results |
+| | | rate | |
++==================+=========+=========+=================+
+| nosdn | 33/33 | 100% | `apex-res-1`_ |
++------------------+---------+---------+-----------------+
+| odl_l3 | 27/33 | 82% | `apex-res-2`_ |
++------------------+---------+---------+-----------------+
+| odl-bgpvpn | 26/30 | 87% | `apex-res-3`_ |
++------------------+---------+---------+-----------------+
+| odl-gluon | 30/36 | 83% | `apex-res-4`_ |
++------------------+---------+---------+-----------------+
+| kvm | 32/33 | 97% | `apex-res-5`_ |
++------------------+---------+---------+-----------------+
+| odl_l2-fdio | 28/36 | 78% | `apex-res-6`_ |
++------------------+---------+---------+-----------------+
+| odl_l2-fdio-noha | 30/36 | 83% | `apex-res-7`_ |
++------------------+---------+---------+-----------------+
+| odl_l3-fdio-noha | 26/30 | 87% | `apex-res-8`_ |
++------------------+---------+---------+-----------------+
+| fdio | 6/30 | 20% | `apex-res-9`_ |
++------------------+---------+---------+-----------------+
Compass
-------
-+------------------+---------+---------+-------------------+
-| Scenario | Scoring | Success | Results |
-| | | rate | |
-+==================+=========+=========+===================+
-************* TODO *****************************************
-| nosdn | 12/12 | 100% | `compass-res-55`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2 | 15/15 | 100% | `compass-res-59`_ |
-+------------------+---------+---------+-------------------+
-| odl_l3 | 9/12 | 75% | `compass-res-73`_ |
-+------------------+---------+---------+-------------------+
-| odl_l2-moon | 15/18 | 83% | `compass-res-567`_|
-+------------------+---------+---------+-------------------+
-| onos-ha | 15/15 | 100% | `compass-res-285`_|
-+------------------+---------+---------+-------------------+
-| onos-sfc-ha | 17/18 | 95% | `compass-res-76`_ |
-+------------------+---------+---------+-------------------+
++------------------+---------+---------+------------------+
+| Scenario | Scoring | Success | Results |
+| | | rate | |
++==================+=========+=========+==================+
+| nosdn | 29/30 | 97% | `compass-res-1`_ |
++------------------+---------+---------+------------------+
+| odl_l2 | 28/33 | 84% | `compass-res-2`_ |
++------------------+---------+---------+------------------+
+| odl_l3 | 21/30 | 70% | `compass-res-3`_ |
++------------------+---------+---------+------------------+
+| onos | 28/33 | 84% | `compass-res-4`_ |
++------------------+---------+---------+------------------+
+| openo | 28/30 | 93% | `compass-res-5`_ |
++------------------+---------+---------+------------------+
+| ocl | 4/30 | 13% | `compass-res-6`_ |
++------------------+---------+---------+------------------+
Note: all the Compass tests for Danube have been executed on virtual
environment. Bare metal resources were used for Master branch.
@@ -341,91 +357,63 @@ environment. Bare metal resources were used for Master branch.
Fuel
----
-+---------------------+---------+---------+-------------------+
-| Scenario | Scoring | Success | Results |
-| | | rate | |
-+=====================+=========+=========+===================+
-************* TODO *****************************************
-| nosdn | 18/18 | 100% | `fuel-res-129`_ |
-+---------------------+---------+---------+-------------------+
-| nosdn-noha | 15/15 | 100% | `fuel-res-154`_ |
-+---------------------+---------+---------+-------------------+
-| nosdn-kvm | 18/18 | 100% | `fuel-res-128`_ |
-+---------------------+---------+---------+-------------------+
-| nosdn-kvm-noha | 15/15 | 100% | `fuel-res-161`_ |
-+---------------------+---------+---------+-------------------+
-| nosdn-ovs | 12/18 | 67%* | `fuel-res-213`_ |
-+---------------------+---------+---------+-------------------+
-| nosdn-ovs-noha | 15/15 | 100% | `fuel-res-162`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2 | 21/21 | 100% | `fuel-res-123`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2-noha | 17/18 | 94% | `fuel-res-155`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2-bgpvpn | 14/18 | 78% | `fuel-res-119`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2-bgpvpn-noha | 14/15 | 93% | `fuel-res-160`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2-sfc-noha | 6/21 | 29% | `fuel-res-219`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l2-sfc-ha | 16/21 | 76% | `fuel-res-376`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l3 | 15/18 | 83% | `fuel-res-115`_ |
-+---------------------+---------+---------+-------------------+
-| odl_l3-noha | 12/15 | 80% | `fuel-res-164`_ |
-+---------------------+---------+---------+-------------------+
-| onos | 20/21 | 95% | `fuel-res-492`_ |
-+---------------------+---------+---------+-------------------+
-| onos-noha | 18/18 | 100% | `fuel-res-166`_ |
-+---------------------+---------+---------+-------------------+
-| onos-sfc | 24/24 | 100% | `fuel-res-124`_ |
-+---------------------+---------+---------+-------------------+
-| onos-sfc-noha | 21/21 | 100% | `fuel-res-129`_ |
-+---------------------+---------+---------+-------------------+
-| multisite | N.R | 100% | `fuel-res-8`_ |
-+---------------------+---------+---------+-------------------+
-
-*: all results passed, lacking iterations to reach the full score
-
-Results of Functest on AArch64 Danube 3.0
-
-+---------------------+---------+---------+----------------------+
-| Scenario | Scoring | Success | Results |
-| | | rate | |
-+=====================+=========+=========+======================+
-************* TODO *****************************************
-| nosdn | 18/18 | 100% | `fuel-arm-res-128`_ |
-+---------------------+---------+---------+----------------------+
-| odl_l2 | 21/21 | 100% | `fuel-arm-res-122`_ |
-+---------------------+---------+---------+----------------------+
-| odl_l2-noha | 18/18 | 100% | `fuel-arm-res-129`_ |
-+---------------------+---------+---------+----------------------+
-| odl_l3 | 17/18 | 95% | `fuel-arm-res-135`_ |
-+---------------------+---------+---------+----------------------+
++----------------------+---------+---------+----------------+
+| Scenario | Scoring | Success | Results |
+| | | rate | |
++======================+=========+=========+================+
+| nosdn | 37/39 | 95% | `fuel-res-1`_ |
++----------------------+---------+---------+----------------+
+| nosdn-noha | 36/36 | 100% | `fuel-res-2`_ |
++----------------------+---------+---------+----------------+
+| nosdn-kvm | 37/39 | 95% | `fuel-res-3`_ |
++----------------------+---------+---------+----------------+
+| nosdn-kvm-noha | 36/36 | 100% | `fuel-res-4`_ |
++----------------------+---------+---------+----------------+
+| nosdn-ovs | 38/39 | 97% | `fuel-res-5`_ |
++----------------------+---------+---------+----------------+
+| nosdn-ovs-noha | 36/36 | 100% | `fuel-res-6`_ |
++----------------------+---------+---------+----------------+
+| odl_l2 | 42/42 | 100% | `fuel-res-7`_ |
++----------------------+---------+---------+----------------+
+| odl_l2-noha | 36/39 | 92% | `fuel-res-8`_ |
++----------------------+---------+---------+----------------+
+| odl_l2-sfc | 40/45 | 89% | `fuel-res-11`_ |
++----------------------+---------+---------+----------------+
+| odl_l2-sfc-noha | 36/42 | 86% | `fuel-res-12`_ |
++----------------------+---------+---------+----------------+
+| odl_l3 | 34/39 | 87% | `fuel-res-13`_ |
++----------------------+---------+---------+----------------+
+| odl_l3-noha | 34/36 | 94% | `fuel-res-14`_ |
++----------------------+---------+---------+----------------+
+| kvm_ovs_dpdk | 6/39 | 15% | `fuel-res-15`_ |
++----------------------+---------+---------+----------------+
+| kvm_ovs_dpdk_noha | 36/36 | 100% | `fuel-res-16`_ |
++----------------------+---------+---------+----------------+
+| kvm_ovs_dpdk_bar | 6/42 | 14% | `fuel-res-17`_ |
++----------------------+---------+---------+----------------+
+| kvm_ovs_dpdk_bar_noha| 38/39 | 97% | `fuel-res-18`_ |
++----------------------+---------+---------+----------------+
+
+
Joid
----
-+---------------------+---------+---------+-----------------+
-| Scenario | Scoring | Success | Results |
-| | | rate | |
-+=====================+=========+=========+=================+
-************* TODO *****************************************
-| nosdn | 18/18 | 100% | `joid-res-102`_ |
-+---------------------+---------+---------+-----------------+
-| nosdn-noha | 17/18 | 95% | `joid-res-93`_ |
-+---------------------+---------+---------+-----------------+
-| nosdn-lxd | 12/12 | 100% | `joid-res-104`_ |
-+---------------------+---------+---------+-----------------+
-| nosdn-lxd-noha | 12/12 | 100% | `joid-res-91`_ |
-+---------------------+---------+---------+-----------------+
-| odl_l2 | 21/21 | 100% | `joid-res-103`_ |
-+---------------------+---------+---------+-----------------+
-| onos | 21/21 | 100% | `joid-res-345`_ |
-+---------------------+---------+---------+-----------------+
-| onos-sfc | 24/24 | 100% | `joid-res-97`_ |
-+---------------------+---------+---------+-----------------+
++---------------------+---------+---------+---------------+
+| Scenario | Scoring | Success | Results |
+| | | rate | |
++=====================+=========+=========+===============+
+| nosdn | 32/33 | 97% | `joid-res-1`_ |
++---------------------+---------+---------+---------------+
+| nosdn-noha | 31/33 | 94% | `joid-res-2`_ |
++---------------------+---------+---------+---------------+
+| nosdn-lxd | 18/24 | 75% | `joid-res-3`_ |
++---------------------+---------+---------+---------------+
+| nosdn-lxd-noha | 17/24 | 71% | `joid-res-4`_ |
++---------------------+---------+---------+---------------+
+| odl_l2 | 9/36 | 25% | `joid-res-5`_ |
++---------------------+---------+---------+---------------+
It is highly recommended to install a json viewer in your browser
(e.g. https://addons.mozilla.org/fr/firefox/addon/jsonview/)
@@ -451,36 +439,27 @@ Danube known restrictions/issues
+-----------+-----------+----------------------------------------------+
| Installer | Scenario | Issue |
+===========+===========+==============================================+
-| any | odl_l3-* | Tempest cases related to using floating IP |
-| | | addresses fail because of a known ODL bug. |
-| | | vPing_ssh test case is excluded for the same |
-| | | reason. |
-| | | https://jira.opnfv.org/browse/APEX-112 |
-| | | https://jira.opnfv.org/browse/FUNCTEST-445 |
+| fuel | odl_-* | Tempest test case "TestServerBasicOps" |
+| | | disabled due to bug `tempest-bug`_ |
+-----------+-----------+----------------------------------------------+
-| apex/fuel | *-bgpvpn | vPing_ssh (floating ips not supported) and |
-| | | vIMS excluded. Some Tempest cases related to |
-| | | floating ips also excluded. Some performance |
-| | | issues have been detected in this scenario |
-| | | (i.e. BGPVPN extension enabled) when running |
-| | | commands against the OpenStack APIs, thus |
-| | | Rally sanity test case has been disabled. |
-| | | Performance issues seem to be connected to |
-| | | the ODL version. It is planned to reintroduce|
-| | | Rally sanity in Danube 2.0 with the |
-| | | adoption of ODL Boron release. |
+| apex/fuel | *-bgpvpn | Due to some instabilities in the bgpvpn |
+| | | test case, the scenario has been postponed |
+| | | to Danube 2.0 |
+-----------+-----------+----------------------------------------------+
-| fuel | odl | TestServerBasicOps test case skipped |
-| | | Tempest ssh client is hanging on opendaylight|
-| | | enabled envs (getting deadlock in paramiko |
-| | | recv_exit_status method) while trying to |
-| | | execute a command on a vm. |
+| apex | *-gluon | vPing_ssh disabled due to floating ips |
+| | | not working 100% of the times. |
+| | | Tempest test "test_reboot_server_hard" |
+| | | disabled due to bug `gluon-bug`_ |
+-----------+-----------+----------------------------------------------+
| joid | any | Tempest cases related to object storage |
| | | excluded |
-| | | https://gerrit.opnfv.org/gerrit/#/c/17871/ |
+-----------+-----------+----------------------------------------------+
-
+| any | any | The VNF tier has not been fully tested |
+| | | since it has not been run in daily loops |
+| | | in CI. Weekly jobs have been activated |
+| | | a bit late in the process and have not been |
+| | | used to validate the scenarios. |
++-----------+-----------+----------------------------------------------+
Test and installer/scenario dependencies
========================================
@@ -509,11 +488,17 @@ Open JIRA tickets
+------------------+-----------------------------------------------+
| JIRA | Description |
+==================+===============================================+
-************* TODO *****************************************
| | |
| | |
+------------------+-----------------------------------------------+
+All the tickets that are not blocking have been fixed or postponed
+the next release.
+
+Functest Danube 1.0 is released without known bugs.
+
+
+
Useful links
============
@@ -532,3 +517,83 @@ Useful links
- Reporting page: http://testresults.opnfv.org/reporting/danube.html
- Functest test configuration: https://git.opnfv.org/cgit/functest/tree/functest/ci/testcases.yaml
+
+.. _`tempest-bug`: https://bugs.launchpad.net/tempest/+bug/1577632
+
+.. _`gluon-bug`: https://bugs.opendaylight.org/show_bug.cgi?id=5586
+
+.. _`apex-res-1`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-68
+
+.. _`apex-res-2`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-69
+
+.. _`apex-res-3`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-70
+
+.. _`apex-res-4`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-66
+
+.. _`apex-res-5`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-60
+
+.. _`apex-res-6`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-73
+
+.. _`apex-res-7`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-72
+
+.. _`apex-res-8`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-69
+
+.. _`apex-res-9`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-apex-apex-daily-danube-daily-danube-62
+
+.. _`compass-res-1`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-virtual-daily-danube-60
+
+.. _`compass-res-2`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-virtual-daily-danube-59
+
+.. _`compass-res-3`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-baremetal-daily-danube-69
+
+.. _`compass-res-4`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-virtual-daily-danube-57
+
+.. _`compass-res-5`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-baremetal-daily-danube-67
+
+.. _`compass-res-6`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-compass-baremetal-daily-danube-65
+
+.. _`fuel-res-1`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-54
+
+.. _`fuel-res-2`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-46
+
+.. _`fuel-res-3`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-53
+
+.. _`fuel-res-4`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-44
+
+.. _`fuel-res-5`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-55
+
+.. _`fuel-res-6`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-45
+
+.. _`fuel-res-7`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-zte-pod1-daily-danube-4
+
+.. _`fuel-res-8`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-48
+
+.. _`fuel-res-9`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-52
+
+.. _`fuel-res-10`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-43
+
+.. _`fuel-res-11`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-50
+
+.. _`fuel-res-12`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-42
+
+.. _`fuel-res-13`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-48
+
+.. _`fuel-res-14`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-50
+
+.. _`fuel-res-15`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-51
+
+.. _`fuel-res-16`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-virtual-daily-danube-49
+
+.. _`fuel-res-17`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-fuel-baremetal-daily-danube-49
+
+.. _`fuel-res-18`: http://testresults.opnfv.org/test/api/v1/results?build_tag= jenkins-functest-fuel-virtual-daily-danube-51
+
+.. _`joid-res-1`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-joid-baremetal-daily-danube-54
+
+.. _`joid-res-2`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-joid-baremetal-daily-danube-55
+
+.. _`joid-res-3`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-joid-baremetal-daily-danube-56
+
+.. _`joid-res-4`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-joid-baremetal-daily-danube-57
+
+.. _`joid-res-5`: http://testresults.opnfv.org/test/api/v1/results?build_tag=jenkins-functest-joid-baremetal-daily-danube-46
diff --git a/docs/results/danube/1.0/apex.html b/docs/results/danube/1.0/apex.html
new file mode 100644
index 000000000..2ef0a197f
--- /dev/null
+++ b/docs/results/danube/1.0/apex.html
@@ -0,0 +1,919 @@
+ <html>
+ <head>
+ <meta charset="utf-8">
+ <!-- Bootstrap core CSS -->
+ <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+ <link href="../../js/default.css" rel="stylesheet">
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+ <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
+ <script type="text/javascript" src="../../js/gauge.js"></script>
+ <script type="text/javascript" src="../../js/trend.js"></script>
+ <script>
+ function onDocumentReady() {
+ // Gauge management
+ var gaugeScenario1 = gauge('#gaugeScenario1');var gaugeScenario2 = gauge('#gaugeScenario2');var gaugeScenario3 = gauge('#gaugeScenario3');var gaugeScenario4 = gauge('#gaugeScenario4');var gaugeScenario5 = gauge('#gaugeScenario5');var gaugeScenario6 = gauge('#gaugeScenario6');var gaugeScenario7 = gauge('#gaugeScenario7');var gaugeScenario8 = gauge('#gaugeScenario8');var gaugeScenario9 = gauge('#gaugeScenario9');var gaugeScenario10 = gauge('#gaugeScenario10');var gaugeScenario11 = gauge('#gaugeScenario11');var gaugeScenario12 = gauge('#gaugeScenario12');
+
+ // assign success rate to the gauge
+ function updateReadings() {
+ gaugeScenario1.update(50.0);gaugeScenario2.update(83.3333333333);gaugeScenario3.update(83.3333333333);gaugeScenario4.update(66.6666666667);gaugeScenario5.update(58.3333333333);gaugeScenario6.update(96.9696969697);gaugeScenario7.update(20.0);gaugeScenario8.update(81.8181818182);gaugeScenario9.update(6.06060606061);gaugeScenario10.update(6.06060606061);gaugeScenario11.update(80.5555555556);gaugeScenario12.update(100.0);
+ }
+ updateReadings();
+ }
+
+ // trend line management
+ d3.csv("./scenario_history.txt", function(data) {
+ // ***************************************
+ // Create the trend line
+ // for scenario os-nosdn-fdio-noha
+ // Filter results
+ var trend1 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-fdio-noha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend1.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg1",trend1)
+ // ****************************************// for scenario os-odl-gluon-noha
+ // Filter results
+ var trend2 = data.filter(function(row) {
+ return row["scenario"]=="os-odl-gluon-noha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend2.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg2",trend2)
+ // ****************************************// for scenario os-odl_l2-fdio-noha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-fdio-noha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend3.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg3",trend3)
+ // ****************************************// for scenario os-odl_l3-fdio-noha
+ // Filter results
+ var trend4 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-fdio-noha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend4.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg4",trend4)
+ // ****************************************// for scenario os-odl-bgpvpn-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-odl-bgpvpn-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend5.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg5",trend5)
+ // ****************************************// for scenario os-nosdn-kvm-ha
+ // Filter results
+ var trend6 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend6.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg6",trend6)
+ // ****************************************// for scenario os-nosdn-fdio-ha
+ // Filter results
+ var trend7 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-fdio-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend7.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg7",trend7)
+ // ****************************************// for scenario os-odl_l3-nofeature-ha
+ // Filter results
+ var trend8 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-nofeature-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend8.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg8",trend8)
+ // ****************************************// for scenario os-odl_l3-ovs-ha
+ // Filter results
+ var trend9 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-ovs-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend9.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg9",trend9)
+ // ****************************************// for scenario os-nosdn-ovs-ha
+ // Filter results
+ var trend10 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-ovs-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend10.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg10",trend10)
+ // ****************************************// for scenario os-odl_l2-fdio-ha
+ // Filter results
+ var trend11 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-fdio-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend11.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg11",trend11)
+ // ****************************************// for scenario os-nosdn-nofeature-ha
+ // Filter results
+ var trend12 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-ha" && row["installer"]=="apex";
+ })
+ // Parse the date
+ trend12.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg12",trend12)
+ // ****************************************
+ });
+ if ( !window.isLoaded ) {
+ window.addEventListener("load", function() {
+ onDocumentReady();
+ }, false);
+ } else {
+ onDocumentReady();
+ }
+</script>
+<script type="text/javascript">
+$(document).ready(function (){
+ $(".btn-more").click(function() {
+ $(this).hide();
+ $(this).parent().find(".panel-default").show();
+ });
+})
+</script>
+
+ </head>
+ <body>
+ <div class="container">
+ <div class="masthead">
+ <h3 class="text-muted">Functest Danube 1.0 status page (2017-03-31 01:45)</h3>
+ <nav>
+ <ul class="nav nav-justified">
+ <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
+ <li><a href="./apex.html">Apex</a></li>
+ <li><a href="./compass.html">Compass</a></li>
+ <li><a href="./fuel.html">Fuel</a></li>
+ <li><a href="./joid.html">Joid</a></li>
+ </ul>
+ </nav>
+ </div>
+<div class="row">
+ <div class="col-md-1"></div>
+ <div class="col-md-10">
+ <div class="page-header">
+ <h2>apex</h2>
+ </div>
+
+ <div class="scenario-overview">
+ <div class="panel-heading"><h4><b>List of last scenarios (danube) run over the last 10 days </b></h4></div>
+ <table class="table">
+ <tr>
+ <th width="40%">Scenario</th>
+ <th width="20%">Status</th>
+ <th width="20%">Trend</th>
+ <th width="10%">Score</th>
+ <th width="10%">Iteration</th>
+ </tr>
+ <tr class="tr-ok">
+ <td><a href=http://testresultS.opnfv.org/reporting>os-nosdn-fdio-noha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>15/30</td>
+ <td>2</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/71/console>os-odl-gluon-noha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>30/36</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/72/console>os-odl_l2-fdio-noha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>30/36</td>
+ <td>14</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/75/console>os-odl_l3-fdio-noha</a></td>
+ <td><div id="gaugeScenario4"></div></td>
+ <td><div id="trend_svg4"></div></td>
+ <td>20/30</td>
+ <td>5</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/70/console>os-odl-bgpvpn-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>21/36</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/74/console>os-nosdn-kvm-ha</a></td>
+ <td><div id="gaugeScenario6"></div></td>
+ <td><div id="trend_svg6"></div></td>
+ <td>32/33</td>
+ <td>5</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/76/console>os-nosdn-fdio-ha</a></td>
+ <td><div id="gaugeScenario7"></div></td>
+ <td><div id="trend_svg7"></div></td>
+ <td>6/30</td>
+ <td>4</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/69/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario8"></div></td>
+ <td><div id="trend_svg8"></div></td>
+ <td>27/33</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/78/console>os-odl_l3-ovs-ha</a></td>
+ <td><div id="gaugeScenario9"></div></td>
+ <td><div id="trend_svg9"></div></td>
+ <td>2/33</td>
+ <td>1</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/77/console>os-nosdn-ovs-ha</a></td>
+ <td><div id="gaugeScenario10"></div></td>
+ <td><div id="trend_svg10"></div></td>
+ <td>2/33</td>
+ <td>1</td>
+ </tr><tr class="tr-ok">
+ <td><a href=http://testresultS.opnfv.org/reporting>os-odl_l2-fdio-ha</a></td>
+ <td><div id="gaugeScenario11"></div></td>
+ <td><div id="trend_svg11"></div></td>
+ <td>29/36</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/79/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario12"></div></td>
+ <td><div id="trend_svg12"></div></td>
+ <td>33/33</td>
+ <td>6</td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-fdio-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl-gluon-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th><th>
+ Netready
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-fdio-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ FDS
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-fdio-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl-bgpvpn-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ bgpvpn
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-fdio-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-ovs-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-ovs-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-fdio-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ FDS
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/1.0/compass.html b/docs/results/danube/1.0/compass.html
new file mode 100644
index 000000000..954793069
--- /dev/null
+++ b/docs/results/danube/1.0/compass.html
@@ -0,0 +1,490 @@
+ <html>
+ <head>
+ <meta charset="utf-8">
+ <!-- Bootstrap core CSS -->
+ <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+ <link href="../../js/default.css" rel="stylesheet">
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+ <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
+ <script type="text/javascript" src="../../js/gauge.js"></script>
+ <script type="text/javascript" src="../../js/trend.js"></script>
+ <script>
+ function onDocumentReady() {
+ // Gauge management
+ var gaugeScenario1 = gauge('#gaugeScenario1');var gaugeScenario2 = gauge('#gaugeScenario2');var gaugeScenario3 = gauge('#gaugeScenario3');var gaugeScenario4 = gauge('#gaugeScenario4');var gaugeScenario5 = gauge('#gaugeScenario5');var gaugeScenario6 = gauge('#gaugeScenario6');
+
+ // assign success rate to the gauge
+ function updateReadings() {
+ gaugeScenario1.update(76.6666666667);gaugeScenario2.update(10.0);gaugeScenario3.update(84.8484848485);gaugeScenario4.update(84.8484848485);gaugeScenario5.update(93.3333333333);gaugeScenario6.update(96.6666666667);
+ }
+ updateReadings();
+ }
+
+ // trend line management
+ d3.csv("./scenario_history.txt", function(data) {
+ // ***************************************
+ // Create the trend line
+ // for scenario os-odl_l3-nofeature-ha
+ // Filter results
+ var trend1 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-nofeature-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend1.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg1",trend1)
+ // ****************************************// for scenario os-ocl-nofeature-ha
+ // Filter results
+ var trend2 = data.filter(function(row) {
+ return row["scenario"]=="os-ocl-nofeature-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend2.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg2",trend2)
+ // ****************************************// for scenario os-onos-nofeature-ha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-onos-nofeature-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend3.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg3",trend3)
+ // ****************************************// for scenario os-odl_l2-nofeature-ha
+ // Filter results
+ var trend4 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-nofeature-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend4.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg4",trend4)
+ // ****************************************// for scenario os-nosdn-openo-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-openo-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend5.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg5",trend5)
+ // ****************************************// for scenario os-nosdn-nofeature-ha
+ // Filter results
+ var trend6 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-ha" && row["installer"]=="compass";
+ })
+ // Parse the date
+ trend6.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg6",trend6)
+ // ****************************************
+ });
+ if ( !window.isLoaded ) {
+ window.addEventListener("load", function() {
+ onDocumentReady();
+ }, false);
+ } else {
+ onDocumentReady();
+ }
+</script>
+<script type="text/javascript">
+$(document).ready(function (){
+ $(".btn-more").click(function() {
+ $(this).hide();
+ $(this).parent().find(".panel-default").show();
+ });
+})
+</script>
+
+ </head>
+ <body>
+ <div class="container">
+ <div class="masthead">
+ <h3 class="text-muted">Functest Danube 1.0 status page (2017-03-31 01:45)</h3>
+ <nav>
+ <ul class="nav nav-justified">
+ <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
+ <li><a href="./apex.html">Apex</a></li>
+ <li><a href="./compass.html">Compass</a></li>
+ <li><a href="./fuel.html">Fuel</a></li>
+ <li><a href="./joid.html">Joid</a></li>
+ </ul>
+ </nav>
+ </div>
+<div class="row">
+ <div class="col-md-1"></div>
+ <div class="col-md-10">
+ <div class="page-header">
+ <h2>compass</h2>
+ </div>
+
+ <div class="scenario-overview">
+ <div class="panel-heading"><h4><b>List of last scenarios (danube) run over the last 10 days </b></h4></div>
+ <table class="table">
+ <tr>
+ <th width="40%">Scenario</th>
+ <th width="20%">Status</th>
+ <th width="20%">Trend</th>
+ <th width="10%">Score</th>
+ <th width="10%">Iteration</th>
+ </tr>
+ <tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-baremetal-daily-danube/79/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>23/30</td>
+ <td>18</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-baremetal-daily-danube/71/console>os-ocl-nofeature-ha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>3/30</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/67/console>os-onos-nofeature-ha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>28/33</td>
+ <td>20</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/69/console>os-odl_l2-nofeature-ha</a></td>
+ <td><div id="gaugeScenario4"></div></td>
+ <td><div id="trend_svg4"></div></td>
+ <td>28/33</td>
+ <td>20</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-baremetal-daily-danube/77/console>os-nosdn-openo-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>28/30</td>
+ <td>19</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/70/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario6"></div></td>
+ <td><div id="trend_svg6"></div></td>
+ <td>29/30</td>
+ <td>19</td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-ocl-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-onos-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ONOS
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-openo-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/1.0/fuel.html b/docs/results/danube/1.0/fuel.html
new file mode 100644
index 000000000..3d08e7d01
--- /dev/null
+++ b/docs/results/danube/1.0/fuel.html
@@ -0,0 +1,1444 @@
+ <html>
+ <head>
+ <meta charset="utf-8">
+ <!-- Bootstrap core CSS -->
+ <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+ <link href="../../js/default.css" rel="stylesheet">
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+ <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
+ <script type="text/javascript" src="../../js/gauge.js"></script>
+ <script type="text/javascript" src="../../js/trend.js"></script>
+ <script>
+ function onDocumentReady() {
+ // Gauge management
+ var gaugeScenario1 = gauge('#gaugeScenario1');var gaugeScenario2 = gauge('#gaugeScenario2');var gaugeScenario3 = gauge('#gaugeScenario3');var gaugeScenario4 = gauge('#gaugeScenario4');var gaugeScenario5 = gauge('#gaugeScenario5');var gaugeScenario6 = gauge('#gaugeScenario6');var gaugeScenario7 = gauge('#gaugeScenario7');var gaugeScenario8 = gauge('#gaugeScenario8');var gaugeScenario9 = gauge('#gaugeScenario9');var gaugeScenario10 = gauge('#gaugeScenario10');var gaugeScenario11 = gauge('#gaugeScenario11');var gaugeScenario12 = gauge('#gaugeScenario12');var gaugeScenario13 = gauge('#gaugeScenario13');var gaugeScenario14 = gauge('#gaugeScenario14');var gaugeScenario15 = gauge('#gaugeScenario15');var gaugeScenario16 = gauge('#gaugeScenario16');var gaugeScenario17 = gauge('#gaugeScenario17');var gaugeScenario18 = gauge('#gaugeScenario18');
+
+ // assign success rate to the gauge
+ function updateReadings() {
+ gaugeScenario1.update(100.0);gaugeScenario2.update(14.2857142857);gaugeScenario3.update(97.4358974359);gaugeScenario4.update(100.0);gaugeScenario5.update(15.3846153846);gaugeScenario6.update(83.3333333333);gaugeScenario7.update(79.4871794872);gaugeScenario8.update(100.0);gaugeScenario9.update(100.0);gaugeScenario10.update(92.3076923077);gaugeScenario11.update(88.0952380952);gaugeScenario12.update(95.5555555556);gaugeScenario13.update(100.0);gaugeScenario14.update(88.0952380952);gaugeScenario15.update(100.0);gaugeScenario16.update(94.8717948718);gaugeScenario17.update(97.2222222222);gaugeScenario18.update(97.4358974359);
+ }
+ updateReadings();
+ }
+
+ // trend line management
+ d3.csv("./scenario_history.txt", function(data) {
+ // ***************************************
+ // Create the trend line
+ // for scenario os-nosdn-kvm_ovs_dpdk-noha
+ // Filter results
+ var trend1 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm_ovs_dpdk-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend1.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg1",trend1)
+ // ****************************************// for scenario os-nosdn-kvm_ovs_dpdk_bar-ha
+ // Filter results
+ var trend2 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm_ovs_dpdk_bar-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend2.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg2",trend2)
+ // ****************************************// for scenario os-nosdn-ovs-ha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-ovs-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend3.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg3",trend3)
+ // ****************************************// for scenario os-nosdn-ovs-noha
+ // Filter results
+ var trend4 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-ovs-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend4.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg4",trend4)
+ // ****************************************// for scenario os-nosdn-kvm_ovs_dpdk-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm_ovs_dpdk-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend5.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg5",trend5)
+ // ****************************************// for scenario os-odl_l2-sfc-noha
+ // Filter results
+ var trend6 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-sfc-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend6.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg6",trend6)
+ // ****************************************// for scenario os-odl_l3-nofeature-ha
+ // Filter results
+ var trend7 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-nofeature-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend7.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg7",trend7)
+ // ****************************************// for scenario os-nosdn-kvm-noha
+ // Filter results
+ var trend8 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend8.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg8",trend8)
+ // ****************************************// for scenario os-nosdn-nofeature-noha
+ // Filter results
+ var trend9 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend9.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg9",trend9)
+ // ****************************************// for scenario os-odl_l2-nofeature-noha
+ // Filter results
+ var trend10 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-nofeature-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend10.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg10",trend10)
+ // ****************************************// for scenario os-odl_l2-bgpvpn-ha
+ // Filter results
+ var trend11 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-bgpvpn-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend11.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg11",trend11)
+ // ****************************************// for scenario os-odl_l2-sfc-ha
+ // Filter results
+ var trend12 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-sfc-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend12.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg12",trend12)
+ // ****************************************// for scenario os-nosdn-kvm_ovs_dpdk_bar-noha
+ // Filter results
+ var trend13 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm_ovs_dpdk_bar-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend13.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg13",trend13)
+ // ****************************************// for scenario os-odl_l2-bgpvpn-noha
+ // Filter results
+ var trend14 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-bgpvpn-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend14.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg14",trend14)
+ // ****************************************// for scenario os-odl_l2-nofeature-ha
+ // Filter results
+ var trend15 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-nofeature-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend15.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg15",trend15)
+ // ****************************************// for scenario os-nosdn-kvm-ha
+ // Filter results
+ var trend16 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend16.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg16",trend16)
+ // ****************************************// for scenario os-odl_l3-nofeature-noha
+ // Filter results
+ var trend17 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-nofeature-noha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend17.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg17",trend17)
+ // ****************************************// for scenario os-nosdn-nofeature-ha
+ // Filter results
+ var trend18 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-ha" && row["installer"]=="fuel";
+ })
+ // Parse the date
+ trend18.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg18",trend18)
+ // ****************************************
+ });
+ if ( !window.isLoaded ) {
+ window.addEventListener("load", function() {
+ onDocumentReady();
+ }, false);
+ } else {
+ onDocumentReady();
+ }
+</script>
+<script type="text/javascript">
+$(document).ready(function (){
+ $(".btn-more").click(function() {
+ $(this).hide();
+ $(this).parent().find(".panel-default").show();
+ });
+})
+</script>
+
+ </head>
+ <body>
+ <div class="container">
+ <div class="masthead">
+ <h3 class="text-muted">Functest Danube 1.0 status page (2017-03-31 01:45)</h3>
+ <nav>
+ <ul class="nav nav-justified">
+ <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
+ <li><a href="./apex.html">Apex</a></li>
+ <li><a href="./compass.html">Compass</a></li>
+ <li><a href="./fuel.html">Fuel</a></li>
+ <li><a href="./joid.html">Joid</a></li>
+ </ul>
+ </nav>
+ </div>
+<div class="row">
+ <div class="col-md-1"></div>
+ <div class="col-md-10">
+ <div class="page-header">
+ <h2>fuel</h2>
+ </div>
+
+ <div class="scenario-overview">
+ <div class="panel-heading"><h4><b>List of last scenarios (danube) run over the last 10 days </b></h4></div>
+ <table class="table">
+ <tr>
+ <th width="40%">Scenario</th>
+ <th width="20%">Status</th>
+ <th width="20%">Trend</th>
+ <th width="10%">Score</th>
+ <th width="10%">Iteration</th>
+ </tr>
+ <tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/66/console>os-nosdn-kvm_ovs_dpdk-noha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>36/36</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/67/console>os-nosdn-kvm_ovs_dpdk_bar-ha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>6/42</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/73/console>os-nosdn-ovs-ha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>38/39</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/64/console>os-nosdn-ovs-noha</a></td>
+ <td><div id="gaugeScenario4"></div></td>
+ <td><div id="trend_svg4"></div></td>
+ <td>36/36</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/69/console>os-nosdn-kvm_ovs_dpdk-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>6/39</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/61/console>os-odl_l2-sfc-noha</a></td>
+ <td><div id="gaugeScenario6"></div></td>
+ <td><div id="trend_svg6"></div></td>
+ <td>35/42</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/66/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario7"></div></td>
+ <td><div id="trend_svg7"></div></td>
+ <td>31/39</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/63/console>os-nosdn-kvm-noha</a></td>
+ <td><div id="gaugeScenario8"></div></td>
+ <td><div id="trend_svg8"></div></td>
+ <td>36/36</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/65/console>os-nosdn-nofeature-noha</a></td>
+ <td><div id="gaugeScenario9"></div></td>
+ <td><div id="trend_svg9"></div></td>
+ <td>36/36</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/57/console>os-odl_l2-nofeature-noha</a></td>
+ <td><div id="gaugeScenario10"></div></td>
+ <td><div id="trend_svg10"></div></td>
+ <td>36/39</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/70/console>os-odl_l2-bgpvpn-ha</a></td>
+ <td><div id="gaugeScenario11"></div></td>
+ <td><div id="trend_svg11"></div></td>
+ <td>37/42</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/68/console>os-odl_l2-sfc-ha</a></td>
+ <td><div id="gaugeScenario12"></div></td>
+ <td><div id="trend_svg12"></div></td>
+ <td>43/45</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/68/console>os-nosdn-kvm_ovs_dpdk_bar-noha</a></td>
+ <td><div id="gaugeScenario13"></div></td>
+ <td><div id="trend_svg13"></div></td>
+ <td>39/39</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/62/console>os-odl_l2-bgpvpn-noha</a></td>
+ <td><div id="gaugeScenario14"></div></td>
+ <td><div id="trend_svg14"></div></td>
+ <td>37/42</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-zte-pod1-daily-danube/6/console>os-odl_l2-nofeature-ha</a></td>
+ <td><div id="gaugeScenario15"></div></td>
+ <td><div id="trend_svg15"></div></td>
+ <td>42/42</td>
+ <td>11</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/71/console>os-nosdn-kvm-ha</a></td>
+ <td><div id="gaugeScenario16"></div></td>
+ <td><div id="trend_svg16"></div></td>
+ <td>37/39</td>
+ <td>12</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/67/console>os-odl_l3-nofeature-noha</a></td>
+ <td><div id="gaugeScenario17"></div></td>
+ <td><div id="trend_svg17"></div></td>
+ <td>35/36</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/72/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario18"></div></td>
+ <td><div id="trend_svg18"></div></td>
+ <td>38/39</td>
+ <td>15</td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm_ovs_dpdk-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm_ovs_dpdk_bar-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th><th>
+ Barometer
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-ovs-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-ovs-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm_ovs_dpdk-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-sfc-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ SFC
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-nofeature-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-bgpvpn-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ bgpvpn
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-sfc-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ SFC
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm_ovs_dpdk_bar-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th><th>
+ Barometer
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-bgpvpn-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ bgpvpn
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-kvm-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l3-nofeature-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Doctor
+
+ </th><th>
+ Parser
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/1.0/joid.html b/docs/results/danube/1.0/joid.html
new file mode 100644
index 000000000..98c1e0ab9
--- /dev/null
+++ b/docs/results/danube/1.0/joid.html
@@ -0,0 +1,418 @@
+ <html>
+ <head>
+ <meta charset="utf-8">
+ <!-- Bootstrap core CSS -->
+ <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+ <link href="../../js/default.css" rel="stylesheet">
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+ <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
+ <script type="text/javascript" src="../../js/gauge.js"></script>
+ <script type="text/javascript" src="../../js/trend.js"></script>
+ <script>
+ function onDocumentReady() {
+ // Gauge management
+ var gaugeScenario1 = gauge('#gaugeScenario1');var gaugeScenario2 = gauge('#gaugeScenario2');var gaugeScenario3 = gauge('#gaugeScenario3');var gaugeScenario4 = gauge('#gaugeScenario4');var gaugeScenario5 = gauge('#gaugeScenario5');
+
+ // assign success rate to the gauge
+ function updateReadings() {
+ gaugeScenario1.update(70.8333333333);gaugeScenario2.update(93.9393939394);gaugeScenario3.update(75.0);gaugeScenario4.update(96.9696969697);gaugeScenario5.update(25.0);
+ }
+ updateReadings();
+ }
+
+ // trend line management
+ d3.csv("./scenario_history.txt", function(data) {
+ // ***************************************
+ // Create the trend line
+ // for scenario os-nosdn-lxd-noha
+ // Filter results
+ var trend1 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-lxd-noha" && row["installer"]=="joid";
+ })
+ // Parse the date
+ trend1.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg1",trend1)
+ // ****************************************// for scenario os-nosdn-nofeature-noha
+ // Filter results
+ var trend2 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-noha" && row["installer"]=="joid";
+ })
+ // Parse the date
+ trend2.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg2",trend2)
+ // ****************************************// for scenario os-nosdn-lxd-ha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-lxd-ha" && row["installer"]=="joid";
+ })
+ // Parse the date
+ trend3.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg3",trend3)
+ // ****************************************// for scenario os-nosdn-nofeature-ha
+ // Filter results
+ var trend4 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-ha" && row["installer"]=="joid";
+ })
+ // Parse the date
+ trend4.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg4",trend4)
+ // ****************************************// for scenario os-odl_l2-nofeature-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-nofeature-ha" && row["installer"]=="joid";
+ })
+ // Parse the date
+ trend5.forEach(function(d) {
+ d.date = parseDate(d.date);
+ d.score = +d.score
+ });
+ // Draw the trend line
+ var mytrend = trend("#trend_svg5",trend5)
+ // ****************************************
+ });
+ if ( !window.isLoaded ) {
+ window.addEventListener("load", function() {
+ onDocumentReady();
+ }, false);
+ } else {
+ onDocumentReady();
+ }
+</script>
+<script type="text/javascript">
+$(document).ready(function (){
+ $(".btn-more").click(function() {
+ $(this).hide();
+ $(this).parent().find(".panel-default").show();
+ });
+})
+</script>
+
+ </head>
+ <body>
+ <div class="container">
+ <div class="masthead">
+ <h3 class="text-muted">Functest Danube 1.0 status page (2017-03-31 01:45)</h3>
+ <nav>
+ <ul class="nav nav-justified">
+ <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
+ <li><a href="./apex.html">Apex</a></li>
+ <li><a href="./compass.html">Compass</a></li>
+ <li><a href="./fuel.html">Fuel</a></li>
+ <li><a href="./joid.html">Joid</a></li>
+ </ul>
+ </nav>
+ </div>
+<div class="row">
+ <div class="col-md-1"></div>
+ <div class="col-md-10">
+ <div class="page-header">
+ <h2>joid</h2>
+ </div>
+
+ <div class="scenario-overview">
+ <div class="panel-heading"><h4><b>List of last scenarios (danube) run over the last 10 days </b></h4></div>
+ <table class="table">
+ <tr>
+ <th width="40%">Scenario</th>
+ <th width="20%">Status</th>
+ <th width="20%">Trend</th>
+ <th width="10%">Score</th>
+ <th width="10%">Iteration</th>
+ </tr>
+ <tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/57/console>os-nosdn-lxd-noha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>17/24</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/55/console>os-nosdn-nofeature-noha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>31/33</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/56/console>os-nosdn-lxd-ha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>18/24</td>
+ <td>5</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/62/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario4"></div></td>
+ <td><div id="trend_svg4"></div></td>
+ <td>32/33</td>
+ <td>6</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/46/console>os-odl_l2-nofeature-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>9/36</td>
+ <td>4</td>
+ </tr>
+ </table>
+ </div>
+
+
+ <div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-lxd-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-noha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-lxd-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-nosdn-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-few-clouds.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div><div class="scenario-part">
+ <div class="page-header">
+ <h3><span class="glyphicon glyphicon-chevron-right"> <b>os-odl_l2-nofeature-ha</b></h3>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <span class="panel-header-item">
+ </span>
+ </div>
+ <table class="table">
+ <tr>
+ <th>
+ Health (connection)
+
+ </th><th>
+ Health (api)
+
+ </th><th>
+ Health (dhcp)
+
+ </th><th>
+ vPing (ssh)
+
+ </th><th>
+ vPing (userdata)
+
+ </th><th>
+ Tempest (smoke)
+
+ </th><th>
+ Rally (smoke)
+
+ </th><th>
+ Refstack
+
+ </th><th>
+ ODL
+
+ </th><th>
+ SNAPS
+
+ </th><th>
+ Promise
+
+ </th><th>
+ Domino
+
+ </th>
+ </tr>
+ <tr class="tr-weather-weather">
+ <td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-clear.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td><td><img src="../../img/weather-storm.png"></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/1.0/scenario_history.txt b/docs/results/danube/1.0/scenario_history.txt
new file mode 100644
index 000000000..078258e66
--- /dev/null
+++ b/docs/results/danube/1.0/scenario_history.txt
@@ -0,0 +1,622 @@
+date,scenario,installer,detail,score
+2017-03-13 10:00,os-odl_l2-fdio-noha,apex,5/33,15.0
+2017-03-13 10:00,os-odl_l2-fdio-ha,apex,1/33,3.0
+2017-03-14 01:45,os-odl_l2-fdio-noha,apex,12/33,36.0
+2017-03-14 01:45,os-odl_l2-fdio-ha,apex,1/33,3.0
+2017-03-15 01:45,os-odl_l2-fdio-noha,apex,29/33,88.0
+2017-03-15 01:45,os-odl_l2-fdio-ha,apex,4/33,12.0
+2017-03-16 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-03-16 01:45,os-odl_l2-fdio-ha,apex,13/36,36.0
+2017-03-16 10:23,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-16 10:23,os-odl_l2-fdio-ha,apex,13/36,36.0
+2017-03-17 01:45,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-17 01:45,os-odl_l2-fdio-ha,apex,20/36,56.0
+2017-03-17 07:33,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-17 07:33,os-odl_l2-fdio-ha,apex,20/36,56.0
+2017-03-17 08:49,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-17 08:49,os-nosdn-nofeature-ha,apex,9/33,27.0
+2017-03-17 08:49,os-odl_l2-fdio-ha,apex,20/36,56.0
+2017-03-18 01:45,os-odl-gluon-noha,apex,12/39,31.0
+2017-03-18 01:45,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-18 01:45,os-odl_l3-fdio-noha,apex,15/30,50.0
+2017-03-18 01:45,os-odl_l3-nofeature-ha,apex,8/33,24.0
+2017-03-18 01:45,os-odl_l2-fdio-ha,apex,19/36,53.0
+2017-03-18 01:45,os-odl-bgpvpn-ha,apex,11/39,28.0
+2017-03-18 01:45,os-nosdn-nofeature-ha,apex,11/33,33.0
+2017-03-19 01:45,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-19 01:45,os-odl_l3-fdio-noha,apex,21/30,70.0
+2017-03-19 01:45,os-odl_l3-nofeature-ha,apex,15/33,45.0
+2017-03-19 01:45,os-odl_l2-fdio-ha,apex,19/36,53.0
+2017-03-19 01:45,os-odl-bgpvpn-ha,apex,14/39,36.0
+2017-03-19 01:45,os-nosdn-kvm-ha,apex,11/33,33.0
+2017-03-19 01:45,os-nosdn-nofeature-ha,apex,22/33,67.0
+2017-03-19 01:45,os-odl-gluon-noha,apex,22/39,56.0
+2017-03-19 01:45,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-19 01:45,os-odl_l3-fdio-noha,apex,21/30,70.0
+2017-03-19 01:45,os-odl_l3-nofeature-ha,apex,15/33,45.0
+2017-03-19 01:45,os-odl_l2-fdio-ha,apex,19/36,53.0
+2017-03-19 01:45,os-odl-bgpvpn-ha,apex,14/39,36.0
+2017-03-19 01:45,os-nosdn-kvm-ha,apex,11/33,33.0
+2017-03-19 01:45,os-nosdn-nofeature-ha,apex,22/33,67.0
+2017-03-20 01:45,os-odl-gluon-noha,apex,23/39,59.0
+2017-03-20 01:45,os-odl_l2-fdio-noha,apex,33/36,92.0
+2017-03-20 01:45,os-odl_l3-fdio-noha,apex,21/30,70.0
+2017-03-20 01:45,os-odl_l3-nofeature-ha,apex,15/33,45.0
+2017-03-20 01:45,os-odl_l2-fdio-ha,apex,19/36,53.0
+2017-03-20 01:45,os-nosdn-fdio-ha,apex,2/30,7.0
+2017-03-20 01:45,os-odl-bgpvpn-ha,apex,14/39,36.0
+2017-03-20 01:45,os-nosdn-kvm-ha,apex,12/33,36.0
+2017-03-20 01:45,os-nosdn-nofeature-ha,apex,22/33,67.0
+2017-03-17 01:45,os-nosdn-nofeature-ha,compass,10/30,33.0
+2017-03-17 07:33,os-ocl-nofeature-ha,compass,1/30,3.0
+2017-03-17 07:33,os-nosdn-nofeature-ha,compass,10/30,33.0
+2017-03-17 08:49,os-ocl-nofeature-ha,compass,1/30,3.0
+2017-03-17 08:49,os-nosdn-nofeature-ha,compass,10/30,33.0
+2017-03-18 01:45,os-ocl-nofeature-ha,compass,1/30,3.0
+2017-03-18 01:45,os-odl_l2-nofeature-ha,compass,20/33,61.0
+2017-03-18 01:45,os-nosdn-openo-ha,compass,10/30,33.0
+2017-03-18 01:45,os-odl_l3-nofeature-ha,compass,16/30,53.0
+2017-03-18 01:45,os-nosdn-nofeature-ha,compass,20/30,67.0
+2017-03-19 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-03-19 01:45,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-19 01:45,os-onos-nofeature-ha,compass,11/33,33.0
+2017-03-19 01:45,os-odl_l2-nofeature-ha,compass,26/33,79.0
+2017-03-19 01:45,os-nosdn-openo-ha,compass,10/30,33.0
+2017-03-19 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-03-20 01:45,os-odl_l3-nofeature-ha,compass,27/30,90.0
+2017-03-20 01:45,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-20 01:45,os-onos-nofeature-ha,compass,22/33,67.0
+2017-03-20 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-20 01:45,os-nosdn-openo-ha,compass,10/30,33.0
+2017-03-20 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-03-19 01:45,os-odl_l2-nofeature-ha,fuel,13/42,31.0
+2017-03-19 01:45,os-odl_l2-nofeature-ha,fuel,13/42,31.0
+2017-03-20 01:45,os-odl_l2-nofeature-ha,fuel,13/42,31.0
+2017-03-20 01:45,os-odl_l2-bgpvpn-ha,fuel,3/42,7.0
+2017-03-16 10:23,os-nosdn-nofeature-ha,joid,10/33,30.0
+2017-03-17 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-17 01:45,os-odl_l2-nofeature-ha,joid,2/36,6.0
+2017-03-17 01:45,os-nosdn-nofeature-ha,joid,10/33,30.0
+2017-03-17 07:33,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-17 07:33,os-odl_l2-nofeature-ha,joid,2/36,6.0
+2017-03-17 07:33,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-17 07:33,os-nosdn-nofeature-noha,joid,11/33,33.0
+2017-03-17 08:49,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-17 08:49,os-odl_l2-nofeature-ha,joid,2/36,6.0
+2017-03-17 08:49,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-17 08:49,os-nosdn-nofeature-noha,joid,11/33,33.0
+2017-03-18 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-18 01:45,os-odl_l2-nofeature-ha,joid,2/36,6.0
+2017-03-18 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-18 01:45,os-nosdn-nofeature-noha,joid,11/33,33.0
+2017-03-19 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-19 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-03-19 01:45,os-nosdn-lxd-ha,joid,1/24,4.0
+2017-03-19 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-19 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-03-20 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-20 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-03-20 01:45,os-nosdn-lxd-ha,joid,1/24,4.0
+2017-03-20 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-20 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-03-21 01:45,os-odl-gluon-noha,apex,23/39,59.0
+2017-03-21 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-21 01:45,os-odl_l3-fdio-noha,apex,27/30,90.0
+2017-03-21 01:45,os-odl_l3-nofeature-ha,apex,15/33,45.0
+2017-03-21 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-21 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-03-21 01:45,os-odl-bgpvpn-ha,apex,22/39,56.0
+2017-03-21 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-03-21 01:45,os-nosdn-nofeature-ha,apex,27/33,82.0
+2017-03-21 01:45,os-odl_l3-nofeature-ha,compass,27/30,90.0
+2017-03-21 01:45,os-ocl-nofeature-ha,compass,7/30,23.0
+2017-03-21 01:45,os-onos-nofeature-ha,compass,31/33,94.0
+2017-03-21 01:45,os-odl_l2-nofeature-ha,compass,30/33,91.0
+2017-03-21 01:45,os-nosdn-openo-ha,compass,20/30,67.0
+2017-03-21 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-03-21 01:45,os-odl_l3-nofeature-noha,fuel,11/36,31.0
+2017-03-21 01:45,os-nosdn-nofeature-noha,fuel,12/36,33.0
+2017-03-21 01:45,os-odl_l2-nofeature-noha,fuel,12/39,31.0
+2017-03-21 01:45,os-odl_l2-bgpvpn-ha,fuel,15/42,36.0
+2017-03-21 01:45,os-nosdn-ovs-ha,fuel,26/39,67.0
+2017-03-21 01:45,os-odl_l2-nofeature-ha,fuel,13/42,31.0
+2017-03-21 01:45,os-nosdn-nofeature-ha,fuel,26/39,67.0
+2017-03-21 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-21 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-03-21 01:45,os-nosdn-lxd-ha,joid,1/24,4.0
+2017-03-21 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-21 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-03-22 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-22 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-22 01:45,os-odl_l3-fdio-noha,apex,27/30,90.0
+2017-03-22 01:45,os-odl_l3-nofeature-ha,apex,22/33,67.0
+2017-03-22 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-22 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-03-22 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-22 01:45,os-nosdn-kvm-ha,apex,23/33,70.0
+2017-03-22 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-03-22 01:45,os-odl_l3-nofeature-ha,compass,27/30,90.0
+2017-03-22 01:45,os-ocl-nofeature-ha,compass,7/30,23.0
+2017-03-22 01:45,os-onos-nofeature-ha,compass,31/33,94.0
+2017-03-22 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-03-22 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-22 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-22 01:45,os-nosdn-ovs-noha,fuel,12/36,33.0
+2017-03-22 01:45,os-odl_l3-nofeature-noha,fuel,11/36,31.0
+2017-03-22 01:45,os-odl_l2-bgpvpn-noha,fuel,12/42,29.0
+2017-03-22 01:45,os-odl_l2-sfc-noha,fuel,2/42,5.0
+2017-03-22 01:45,os-odl_l3-nofeature-ha,fuel,19/39,49.0
+2017-03-22 01:45,os-nosdn-nofeature-noha,fuel,24/36,67.0
+2017-03-22 01:45,os-odl_l2-nofeature-noha,fuel,14/39,36.0
+2017-03-22 01:45,os-odl_l2-bgpvpn-ha,fuel,22/42,52.0
+2017-03-22 01:45,os-odl_l2-sfc-ha,fuel,13/45,29.0
+2017-03-22 01:45,os-nosdn-ovs-ha,fuel,26/39,67.0
+2017-03-22 01:45,os-odl_l2-nofeature-ha,fuel,26/42,62.0
+2017-03-22 01:45,os-nosdn-nofeature-ha,fuel,26/39,67.0
+2017-03-22 01:45,os-nosdn-lxd-noha,joid,14/24,58.0
+2017-03-22 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-03-22 01:45,os-nosdn-lxd-ha,joid,2/24,8.0
+2017-03-22 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-22 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-03-23 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-23 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-23 01:45,os-odl_l3-fdio-noha,apex,27/30,90.0
+2017-03-23 01:45,os-odl_l3-nofeature-ha,apex,21/33,64.0
+2017-03-23 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-23 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-03-23 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-23 01:45,os-nosdn-kvm-ha,apex,23/33,70.0
+2017-03-23 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-23 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-03-23 01:45,os-ocl-nofeature-ha,compass,7/30,23.0
+2017-03-23 01:45,os-onos-nofeature-ha,compass,30/33,91.0
+2017-03-23 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-23 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-23 01:45,os-nosdn-nofeature-ha,compass,28/30,93.0
+2017-03-23 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,12/36,33.0
+2017-03-23 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,2/42,5.0
+2017-03-23 01:45,os-nosdn-kvm-noha,fuel,12/36,33.0
+2017-03-23 01:45,os-nosdn-ovs-noha,fuel,24/36,67.0
+2017-03-23 01:45,os-odl_l3-nofeature-noha,fuel,22/36,61.0
+2017-03-23 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,2/39,5.0
+2017-03-23 01:45,os-odl_l2-bgpvpn-noha,fuel,24/42,57.0
+2017-03-23 01:45,os-odl_l2-sfc-noha,fuel,2/42,5.0
+2017-03-23 01:45,os-odl_l3-nofeature-ha,fuel,19/39,49.0
+2017-03-23 01:45,os-nosdn-kvm-ha,fuel,25/39,64.0
+2017-03-23 01:45,os-nosdn-nofeature-noha,fuel,24/36,67.0
+2017-03-23 01:45,os-odl_l2-nofeature-noha,fuel,26/39,67.0
+2017-03-23 01:45,os-odl_l2-bgpvpn-ha,fuel,25/42,60.0
+2017-03-23 01:45,os-odl_l2-sfc-ha,fuel,13/45,29.0
+2017-03-23 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,24/39,62.0
+2017-03-23 01:45,os-nosdn-ovs-ha,fuel,26/39,67.0
+2017-03-23 01:45,os-odl_l2-nofeature-ha,fuel,26/42,62.0
+2017-03-23 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-03-23 01:45,os-nosdn-lxd-noha,joid,20/24,83.0
+2017-03-23 01:45,os-odl_l2-nofeature-ha,joid,7/36,19.0
+2017-03-23 01:45,os-nosdn-lxd-ha,joid,7/24,29.0
+2017-03-23 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-23 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-03-24 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-24 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-24 01:45,os-odl_l3-fdio-noha,apex,27/30,90.0
+2017-03-24 01:45,os-odl_l3-nofeature-ha,apex,21/33,64.0
+2017-03-24 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-24 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-03-24 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-24 01:45,os-nosdn-kvm-ha,apex,31/33,94.0
+2017-03-24 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-24 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-03-24 01:45,os-ocl-nofeature-ha,compass,6/30,20.0
+2017-03-24 01:45,os-onos-nofeature-ha,compass,31/33,94.0
+2017-03-24 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-24 01:45,os-nosdn-openo-ha,compass,25/30,83.0
+2017-03-24 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-24 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,24/36,67.0
+2017-03-24 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,4/42,10.0
+2017-03-24 01:45,os-nosdn-kvm-noha,fuel,24/36,67.0
+2017-03-24 01:45,os-nosdn-ovs-noha,fuel,24/36,67.0
+2017-03-24 01:45,os-odl_l3-nofeature-noha,fuel,23/36,64.0
+2017-03-24 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,4/39,10.0
+2017-03-24 01:45,os-odl_l2-bgpvpn-noha,fuel,24/42,57.0
+2017-03-24 01:45,os-odl_l2-sfc-noha,fuel,14/42,33.0
+2017-03-24 01:45,os-odl_l3-nofeature-ha,fuel,24/39,62.0
+2017-03-24 01:45,os-nosdn-kvm-ha,fuel,25/39,64.0
+2017-03-24 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-24 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-03-24 01:45,os-odl_l2-bgpvpn-ha,fuel,27/42,64.0
+2017-03-24 01:45,os-odl_l2-sfc-ha,fuel,24/45,53.0
+2017-03-24 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,24/39,62.0
+2017-03-24 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-03-24 01:45,os-odl_l2-nofeature-ha,fuel,26/42,62.0
+2017-03-24 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-24 01:45,os-nosdn-lxd-noha,joid,20/24,83.0
+2017-03-24 01:45,os-odl_l2-nofeature-ha,joid,7/36,19.0
+2017-03-24 01:45,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-24 01:45,os-nosdn-nofeature-ha,joid,11/33,33.0
+2017-03-24 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-25 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-25 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-25 01:45,os-odl_l3-fdio-noha,apex,27/30,90.0
+2017-03-25 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-03-25 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-25 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-03-25 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-25 01:45,os-nosdn-kvm-ha,apex,31/33,94.0
+2017-03-25 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-25 01:45,os-odl_l3-nofeature-ha,compass,27/30,90.0
+2017-03-25 01:45,os-ocl-nofeature-ha,compass,6/30,20.0
+2017-03-25 01:45,os-onos-nofeature-ha,compass,27/33,82.0
+2017-03-25 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-25 01:45,os-nosdn-openo-ha,compass,25/30,83.0
+2017-03-25 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-25 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,24/36,67.0
+2017-03-25 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,4/42,10.0
+2017-03-25 01:45,os-nosdn-kvm-noha,fuel,24/36,67.0
+2017-03-25 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-25 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-25 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,4/39,10.0
+2017-03-25 01:45,os-odl_l2-bgpvpn-noha,fuel,26/42,62.0
+2017-03-25 01:45,os-odl_l2-sfc-noha,fuel,24/42,57.0
+2017-03-25 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-25 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-25 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-25 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-03-25 01:45,os-odl_l2-bgpvpn-ha,fuel,35/42,83.0
+2017-03-25 01:45,os-odl_l2-sfc-ha,fuel,25/45,56.0
+2017-03-25 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,24/39,62.0
+2017-03-25 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-03-25 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-03-25 01:45,os-nosdn-nofeature-ha,fuel,35/39,90.0
+2017-03-25 01:45,os-nosdn-lxd-noha,joid,19/24,79.0
+2017-03-25 01:45,os-odl_l2-nofeature-ha,joid,7/36,19.0
+2017-03-25 01:45,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-25 01:45,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-03-25 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-26 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-26 01:45,os-odl_l2-fdio-noha,apex,32/36,89.0
+2017-03-26 01:45,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-26 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-03-26 01:45,os-odl_l2-fdio-ha,apex,22/36,61.0
+2017-03-26 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-26 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-26 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-26 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-26 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-03-26 01:45,os-ocl-nofeature-ha,compass,6/30,20.0
+2017-03-26 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-03-26 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-26 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-26 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-26 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,24/36,67.0
+2017-03-26 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,4/42,10.0
+2017-03-26 01:45,os-nosdn-kvm-noha,fuel,24/36,67.0
+2017-03-26 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-26 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-26 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,4/39,10.0
+2017-03-26 01:45,os-odl_l2-bgpvpn-noha,fuel,26/42,62.0
+2017-03-26 01:45,os-odl_l2-sfc-noha,fuel,24/42,57.0
+2017-03-26 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-26 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-26 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-26 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-03-26 01:45,os-odl_l2-bgpvpn-ha,fuel,35/42,83.0
+2017-03-26 01:45,os-odl_l2-sfc-ha,fuel,25/45,56.0
+2017-03-26 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,24/39,62.0
+2017-03-26 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-03-26 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-03-26 01:45,os-nosdn-nofeature-ha,fuel,35/39,90.0
+2017-03-26 01:45,os-nosdn-lxd-noha,joid,19/24,79.0
+2017-03-26 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-26 01:45,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-26 01:45,os-nosdn-nofeature-ha,joid,22/33,67.0
+2017-03-26 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-27 01:45,os-odl-gluon-noha,apex,34/39,87.0
+2017-03-27 01:45,os-odl_l2-fdio-noha,apex,18/36,50.0
+2017-03-27 01:45,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-27 01:45,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-03-27 01:45,os-odl_l2-fdio-ha,apex,21/36,58.0
+2017-03-27 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-27 01:45,os-odl-bgpvpn-ha,apex,25/39,64.0
+2017-03-27 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-27 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-27 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-03-27 01:45,os-ocl-nofeature-ha,compass,5/30,17.0
+2017-03-27 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-03-27 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-03-27 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-27 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-27 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,24/36,67.0
+2017-03-27 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,4/42,10.0
+2017-03-27 01:45,os-nosdn-kvm-noha,fuel,24/36,67.0
+2017-03-27 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-27 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-27 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,4/39,10.0
+2017-03-27 01:45,os-odl_l2-bgpvpn-noha,fuel,26/42,62.0
+2017-03-27 01:45,os-odl_l2-sfc-noha,fuel,24/42,57.0
+2017-03-27 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-27 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-27 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-27 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-03-27 01:45,os-odl_l2-bgpvpn-ha,fuel,35/42,83.0
+2017-03-27 01:45,os-odl_l2-sfc-ha,fuel,25/45,56.0
+2017-03-27 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,24/39,62.0
+2017-03-27 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-03-27 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-03-27 01:45,os-nosdn-nofeature-ha,fuel,35/39,90.0
+2017-03-27 01:45,os-nosdn-lxd-noha,joid,13/24,54.0
+2017-03-27 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-27 01:45,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-27 01:45,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-03-27 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-28 01:45,os-odl-gluon-noha,apex,33/39,85.0
+2017-03-28 01:45,os-odl_l2-fdio-noha,apex,28/36,78.0
+2017-03-28 01:45,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-28 01:45,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-03-28 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-28 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-28 01:45,os-odl-bgpvpn-ha,apex,24/39,62.0
+2017-03-28 01:45,os-odl_l2-fdio-ha,apex,20/36,56.0
+2017-03-28 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-28 01:45,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-28 01:45,os-ocl-nofeature-ha,compass,5/30,17.0
+2017-03-28 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-03-28 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-28 01:45,os-nosdn-openo-ha,compass,30/30,100.0
+2017-03-28 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-03-28 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-28 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-28 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-28 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-28 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-28 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-28 01:45,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-28 01:45,os-odl_l2-sfc-noha,fuel,27/42,64.0
+2017-03-28 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-28 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-28 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-28 01:45,os-odl_l2-nofeature-noha,fuel,37/39,95.0
+2017-03-28 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-28 01:45,os-odl_l2-sfc-ha,fuel,37/45,82.0
+2017-03-28 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,37/39,95.0
+2017-03-28 01:45,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-28 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-03-28 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-28 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-03-28 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-28 01:45,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-28 01:45,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-03-28 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-28 13:20,os-odl-gluon-noha,apex,30/36,83.0
+2017-03-28 13:20,os-odl_l2-fdio-noha,apex,28/36,78.0
+2017-03-28 13:20,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-28 13:20,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-03-28 13:20,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-28 13:20,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-28 13:20,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-03-28 13:20,os-odl_l2-fdio-ha,apex,25/36,69.0
+2017-03-28 13:20,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-28 13:20,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-28 13:20,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-28 13:20,os-onos-nofeature-ha,compass,27/33,82.0
+2017-03-28 13:20,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-28 13:20,os-nosdn-openo-ha,compass,30/30,100.0
+2017-03-28 13:20,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-28 13:20,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-28 13:20,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-28 13:20,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-28 13:20,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-28 13:20,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-28 13:20,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-28 13:20,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-28 13:20,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-03-28 13:20,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-28 13:20,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-28 13:20,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-28 13:20,os-odl_l2-nofeature-noha,fuel,37/39,95.0
+2017-03-28 13:20,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-28 13:20,os-odl_l2-sfc-ha,fuel,37/45,82.0
+2017-03-28 13:20,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,37/39,95.0
+2017-03-28 13:20,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-28 13:20,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-28 13:20,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-28 13:20,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-03-28 13:20,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-28 13:20,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-28 13:20,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-03-28 13:20,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-28 13:56,os-odl-gluon-noha,apex,30/36,83.0
+2017-03-28 13:56,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-03-28 13:56,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-28 13:56,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-03-28 13:56,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-28 13:56,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-28 13:56,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-03-28 13:56,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-28 13:56,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-03-28 13:56,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-28 13:56,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-28 13:56,os-onos-nofeature-ha,compass,27/33,82.0
+2017-03-28 13:56,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-28 13:56,os-nosdn-openo-ha,compass,30/30,100.0
+2017-03-28 13:56,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-28 13:56,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-28 13:56,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-28 13:56,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-28 13:56,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-28 13:56,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-28 13:56,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-28 13:56,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-28 13:56,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-03-28 13:56,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-28 13:56,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-28 13:56,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-28 13:56,os-odl_l2-nofeature-noha,fuel,37/39,95.0
+2017-03-28 13:56,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-28 13:56,os-odl_l2-sfc-ha,fuel,37/45,82.0
+2017-03-28 13:56,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,37/39,95.0
+2017-03-28 13:56,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-28 13:56,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-28 13:56,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-28 13:56,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-03-28 13:56,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-28 13:56,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-28 13:56,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-03-28 13:56,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-28 16:16,os-odl-gluon-noha,apex,30/36,83.0
+2017-03-28 16:16,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-03-28 16:16,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-28 16:16,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-03-28 16:16,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-28 16:16,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-28 16:16,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-03-28 16:16,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-28 16:16,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-03-28 16:16,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-28 16:16,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-28 16:16,os-onos-nofeature-ha,compass,27/33,82.0
+2017-03-28 16:16,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-28 16:16,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-28 16:16,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-28 16:16,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-28 16:16,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-28 16:16,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-28 16:16,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-28 16:16,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-03-28 16:16,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-28 16:16,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-28 16:16,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-03-28 16:16,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-03-28 16:16,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-28 16:16,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-28 16:16,os-odl_l2-nofeature-noha,fuel,37/39,95.0
+2017-03-28 16:16,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-28 16:16,os-odl_l2-sfc-ha,fuel,40/45,89.0
+2017-03-28 16:16,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,37/39,95.0
+2017-03-28 16:16,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-28 16:16,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-28 16:16,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-28 16:16,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-03-28 16:16,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-28 16:16,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-03-28 16:16,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-03-28 16:16,os-nosdn-lxd-ha,joid,13/24,54.0
+2017-03-29 01:45,os-odl-gluon-noha,apex,30/36,83.0
+2017-03-29 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-03-29 01:45,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-29 01:45,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-03-29 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-29 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-29 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-03-29 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-03-29 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-03-29 01:45,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-29 01:45,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-29 01:45,os-onos-nofeature-ha,compass,27/33,82.0
+2017-03-29 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-29 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-03-29 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-29 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-29 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-29 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-29 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-29 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-29 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-29 01:45,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-29 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-03-29 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-03-29 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-29 01:45,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-03-29 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-03-29 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-29 01:45,os-odl_l2-sfc-ha,fuel,40/45,89.0
+2017-03-29 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,38/39,97.0
+2017-03-29 01:45,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-29 01:45,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-29 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-03-29 01:45,os-nosdn-lxd-noha,joid,17/24,71.0
+2017-03-29 01:45,os-nosdn-nofeature-noha,joid,31/33,94.0
+2017-03-29 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-29 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-03-29 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-03-30 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-03-30 01:45,os-odl-gluon-noha,apex,31/36,86.0
+2017-03-30 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-03-30 01:45,os-odl_l3-fdio-noha,apex,26/30,87.0
+2017-03-30 01:45,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-03-30 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-30 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-30 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-03-30 01:45,os-nosdn-ovs-ha,apex,2/33,6.0
+2017-03-30 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-03-30 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-03-30 01:45,os-odl_l3-nofeature-ha,compass,21/30,70.0
+2017-03-30 01:45,os-ocl-nofeature-ha,compass,4/30,13.0
+2017-03-30 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-03-30 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-30 01:45,os-nosdn-openo-ha,compass,28/30,93.0
+2017-03-30 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-30 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-30 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-30 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-30 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-30 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-30 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-30 01:45,os-odl_l2-bgpvpn-noha,fuel,36/42,86.0
+2017-03-30 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-03-30 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-03-30 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-30 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-30 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-03-30 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-03-30 01:45,os-odl_l2-sfc-ha,fuel,42/45,93.0
+2017-03-30 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,38/39,97.0
+2017-03-30 01:45,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-30 01:45,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-30 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-03-30 01:45,os-nosdn-lxd-noha,joid,17/24,71.0
+2017-03-30 01:45,os-nosdn-nofeature-noha,joid,31/33,94.0
+2017-03-30 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-30 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-03-30 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-03-31 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-03-31 01:45,os-odl-gluon-noha,apex,30/36,83.0
+2017-03-31 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-03-31 01:45,os-odl_l3-fdio-noha,apex,20/30,67.0
+2017-03-31 01:45,os-odl-bgpvpn-ha,apex,21/36,58.0
+2017-03-31 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-03-31 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-03-31 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-03-31 01:45,os-odl_l3-ovs-ha,apex,2/33,6.0
+2017-03-31 01:45,os-nosdn-ovs-ha,apex,2/33,6.0
+2017-03-31 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-03-31 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-03-31 01:45,os-odl_l3-nofeature-ha,compass,23/30,77.0
+2017-03-31 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-03-31 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-03-31 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-03-31 01:45,os-nosdn-openo-ha,compass,28/30,93.0
+2017-03-31 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-03-31 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-03-31 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-03-31 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-03-31 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-03-31 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-03-31 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-03-31 01:45,os-odl_l3-nofeature-ha,fuel,31/39,79.0
+2017-03-31 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-03-31 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-03-31 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-03-31 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-03-31 01:45,os-odl_l2-sfc-ha,fuel,43/45,96.0
+2017-03-31 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-03-31 01:45,os-odl_l2-bgpvpn-noha,fuel,37/42,88.0
+2017-03-31 01:45,os-odl_l2-nofeature-ha,fuel,42/42,100.0
+2017-03-31 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-03-31 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-03-31 01:45,os-nosdn-ovs-ha,fuel,38/39,97.0
+2017-03-31 01:45,os-nosdn-lxd-noha,joid,17/24,71.0
+2017-03-31 01:45,os-nosdn-nofeature-noha,joid,31/33,94.0
+2017-03-31 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-03-31 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-03-31 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+
diff --git a/docs/results/danube/1.0/validated_scenario_history.txt b/docs/results/danube/1.0/validated_scenario_history.txt
new file mode 100644
index 000000000..e867e3726
--- /dev/null
+++ b/docs/results/danube/1.0/validated_scenario_history.txt
@@ -0,0 +1,60 @@
+2017-03-19 02:03;compass;os-nosdn-nofeature-ha
+2017-03-20 02:04;compass;os-nosdn-nofeature-ha
+2017-03-21 02:03;compass;os-nosdn-nofeature-ha
+2017-03-22 02:01;apex;os-nosdn-nofeature-ha
+2017-03-23 02:14;joid;os-nosdn-nofeature-noha
+2017-03-24 02:09;fuel;os-nosdn-nofeature-noha
+2017-03-24 02:11;fuel;os-nosdn-ovs-ha
+2017-03-25 02:06;fuel;os-nosdn-ovs-noha
+2017-03-25 02:09;fuel;os-nosdn-nofeature-noha
+2017-03-25 02:11;fuel;os-nosdn-ovs-ha
+2017-03-26 02:06;fuel;os-nosdn-ovs-noha
+2017-03-26 02:09;fuel;os-nosdn-nofeature-noha
+2017-03-26 02:11;fuel;os-nosdn-ovs-ha
+2017-03-27 02:06;fuel;os-nosdn-ovs-noha
+2017-03-27 02:09;fuel;os-nosdn-nofeature-noha
+2017-03-27 02:11;fuel;os-nosdn-ovs-ha
+2017-03-28 02:04;compass;os-nosdn-openo-ha
+2017-03-28 02:04;compass;os-nosdn-nofeature-ha
+2017-03-28 02:04;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-28 02:05;fuel;os-nosdn-kvm-noha
+2017-03-28 02:06;fuel;os-nosdn-ovs-noha
+2017-03-28 02:09;fuel;os-nosdn-nofeature-noha
+2017-03-28 13:40;compass;os-nosdn-openo-ha
+2017-03-28 13:41;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-28 13:42;fuel;os-nosdn-kvm-noha
+2017-03-28 13:42;fuel;os-nosdn-ovs-noha
+2017-03-28 13:45;fuel;os-nosdn-nofeature-noha
+2017-03-28 13:48;fuel;os-odl_l2-nofeature-ha
+2017-03-28 14:15;compass;os-nosdn-openo-ha
+2017-03-28 14:16;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-28 14:17;fuel;os-nosdn-kvm-noha
+2017-03-28 14:18;fuel;os-nosdn-ovs-noha
+2017-03-28 14:21;fuel;os-nosdn-nofeature-noha
+2017-03-28 14:23;fuel;os-odl_l2-nofeature-ha
+2017-03-28 16:33;apex;os-nosdn-nofeature-ha
+2017-03-28 16:36;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-28 16:37;fuel;os-nosdn-kvm-noha
+2017-03-28 16:38;fuel;os-nosdn-ovs-noha
+2017-03-28 16:41;fuel;os-nosdn-nofeature-noha
+2017-03-28 16:43;fuel;os-odl_l2-nofeature-ha
+2017-03-29 02:02;apex;os-nosdn-nofeature-ha
+2017-03-29 02:05;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-29 02:05;fuel;os-nosdn-kvm-noha
+2017-03-29 02:06;fuel;os-nosdn-ovs-noha
+2017-03-29 02:06;fuel;os-nosdn-nofeature-noha
+2017-03-29 02:11;fuel;os-odl_l2-nofeature-ha
+2017-03-30 02:02;apex;os-nosdn-nofeature-ha
+2017-03-30 02:05;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-30 02:06;fuel;os-nosdn-kvm-noha
+2017-03-30 02:06;fuel;os-nosdn-ovs-noha
+2017-03-30 02:07;fuel;os-nosdn-nofeature-noha
+2017-03-30 02:11;fuel;os-odl_l2-nofeature-ha
+2017-03-31 02:04;apex;os-nosdn-nofeature-ha
+2017-03-31 02:07;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-03-31 02:08;fuel;os-nosdn-kvm-noha
+2017-03-31 02:09;fuel;os-nosdn-ovs-noha
+2017-03-31 02:11;fuel;os-nosdn-nofeature-noha
+2017-03-31 02:13;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-03-31 02:14;fuel;os-odl_l2-nofeature-ha
+
diff --git a/docs/results/img/weather-clear.png b/docs/results/img/weather-clear.png
new file mode 100644
index 000000000..a0d967750
--- /dev/null
+++ b/docs/results/img/weather-clear.png
Binary files differ
diff --git a/docs/results/img/weather-few-clouds.png b/docs/results/img/weather-few-clouds.png
new file mode 100644
index 000000000..acfa78398
--- /dev/null
+++ b/docs/results/img/weather-few-clouds.png
Binary files differ
diff --git a/docs/results/img/weather-overcast.png b/docs/results/img/weather-overcast.png
new file mode 100644
index 000000000..4296246d0
--- /dev/null
+++ b/docs/results/img/weather-overcast.png
Binary files differ
diff --git a/docs/results/img/weather-storm.png b/docs/results/img/weather-storm.png
new file mode 100644
index 000000000..956f0e20f
--- /dev/null
+++ b/docs/results/img/weather-storm.png
Binary files differ
diff --git a/docs/results/js/default.css b/docs/results/js/default.css
new file mode 100644
index 000000000..e32fa5fba
--- /dev/null
+++ b/docs/results/js/default.css
@@ -0,0 +1,194 @@
+.panel-header-item {
+ position: relative;
+ display: inline-block;
+ padding-left: 17px;
+ padding-right: 17px;
+}
+
+.panel-pod-name {
+ margin-top: 10px;
+ margin-right: 27px;
+ float:right;
+ padding: 6px;
+}
+
+.panel-default > .panel-heading .badge {
+ background-color: #007e88;
+ position: relative;
+ display: inline-block;
+}
+
+.panel-default > .panel-heading .progress-bar {
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ background-color: #0095a2
+}
+.panel-default > .panel-heading h4 {
+ color: white;
+}
+
+.panel-default > .panel-heading {
+ background-color: #00ADBB;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+
+th{
+ text-align: center;
+}
+
+td{
+ text-align: center;
+}
+
+.tr-danger {
+ background-color: #177870;
+ color: white;
+}
+
+.btn-more {
+ color: white;
+ background-color: #0095a2;
+}
+
+h1 {
+ display: block;
+ font-size: 2em;
+ margin-top: 0.67em;
+ margin-bottom: 0.67em;
+ margin-left: 0;
+ margin-right: 0;
+ font-weight: bold;
+}
+
+h2 {
+ display: block;
+ font-size: 1.5em;
+ margin-top: 0.83em;
+ margin-bottom: 0.83em;
+ margin-left: 0;
+ margin-right: 0;
+ font-weight: bold;
+ color:rgb(128, 128, 128)
+}
+
+#power-gauge g.arc {
+ fill: steelblue;
+}
+
+#power-gauge g.pointer {
+ fill: #e85116;
+ stroke: #b64011;
+}
+
+#power-gauge g.label text {
+ text-anchor: middle;
+ font-size: 14px;
+ font-weight: bold;
+ fill: #666;
+}
+
+#power-gauge path {
+
+}
+
+.axis path,
+.axis line {
+ fill: none;
+ stroke: #000;
+ shape-rendering: crispEdges;
+}
+
+.dot {
+ fill: steelblue;
+ stroke: steelblue;
+ stroke-width: 1.5px;
+}
+
+.myButtonPdf {
+ -moz-box-shadow:inset 0px 1px 0px 0px #f29c93;
+ -webkit-box-shadow:inset 0px 1px 0px 0px #f29c93;
+ box-shadow:inset 0px 1px 0px 0px #f29c93;
+ background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #fe1a00), color-stop(1, #ce0100));
+ background:-moz-linear-gradient(top, #fe1a00 5%, #ce0100 100%);
+ background:-webkit-linear-gradient(top, #fe1a00 5%, #ce0100 100%);
+ background:-o-linear-gradient(top, #fe1a00 5%, #ce0100 100%);
+ background:-ms-linear-gradient(top, #fe1a00 5%, #ce0100 100%);
+ background:linear-gradient(to bottom, #fe1a00 5%, #ce0100 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fe1a00', endColorstr='#ce0100',GradientType=0);
+ background-color:#fe1a00;
+ -moz-border-radius:6px;
+ -webkit-border-radius:6px;
+ border-radius:6px;
+ border:1px solid #d83526;
+ display:inline-block;
+ cursor:pointer;
+ color:#ffffff;
+ font-family:Arial;
+ font-size:15px;
+ font-weight:bold;
+ padding:6px 24px;
+ text-decoration:none;
+ text-shadow:0px 1px 0px #b23e35;
+}
+.myButtonPdf:hover {
+ background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ce0100), color-stop(1, #fe1a00));
+ background:-moz-linear-gradient(top, #ce0100 5%, #fe1a00 100%);
+ background:-webkit-linear-gradient(top, #ce0100 5%, #fe1a00 100%);
+ background:-o-linear-gradient(top, #ce0100 5%, #fe1a00 100%);
+ background:-ms-linear-gradient(top, #ce0100 5%, #fe1a00 100%);
+ background:linear-gradient(to bottom, #ce0100 5%, #fe1a00 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ce0100', endColorstr='#fe1a00',GradientType=0);
+ background-color:#ce0100;
+}
+.myButtonPdf:active {
+ position:relative;
+ top:1px;
+}
+
+
+.myButtonCSV {
+ -moz-box-shadow:inset 0px 1px 0px 0px #bbdaf7;
+ -webkit-box-shadow:inset 0px 1px 0px 0px #bbdaf7;
+ box-shadow:inset 0px 1px 0px 0px #bbdaf7;
+ background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #79bbff), color-stop(1, #378de5));
+ background:-moz-linear-gradient(top, #79bbff 5%, #378de5 100%);
+ background:-webkit-linear-gradient(top, #79bbff 5%, #378de5 100%);
+ background:-o-linear-gradient(top, #79bbff 5%, #378de5 100%);
+ background:-ms-linear-gradient(top, #79bbff 5%, #378de5 100%);
+ background:linear-gradient(to bottom, #79bbff 5%, #378de5 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#378de5',GradientType=0);
+ background-color:#79bbff;
+ -moz-border-radius:6px;
+ -webkit-border-radius:6px;
+ border-radius:6px;
+ border:1px solid #84bbf3;
+ display:inline-block;
+ cursor:pointer;
+ color:#ffffff;
+ font-family:Arial;
+ font-size:15px;
+ font-weight:bold;
+ padding:6px 24px;
+ text-decoration:none;
+ text-shadow:0px 1px 0px #528ecc;
+}
+.myButtonCSV:hover {
+ background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #378de5), color-stop(1, #79bbff));
+ background:-moz-linear-gradient(top, #378de5 5%, #79bbff 100%);
+ background:-webkit-linear-gradient(top, #378de5 5%, #79bbff 100%);
+ background:-o-linear-gradient(top, #378de5 5%, #79bbff 100%);
+ background:-ms-linear-gradient(top, #378de5 5%, #79bbff 100%);
+ background:linear-gradient(to bottom, #378de5 5%, #79bbff 100%);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#378de5', endColorstr='#79bbff',GradientType=0);
+ background-color:#378de5;
+}
+.myButtonCSV:active {
+ position:relative;
+ top:1px;
+}
+
diff --git a/docs/results/js/gauge.js b/docs/results/js/gauge.js
new file mode 100644
index 000000000..4cad16c61
--- /dev/null
+++ b/docs/results/js/gauge.js
@@ -0,0 +1,165 @@
+// ******************************************
+// Gauge for reporting
+// Each scenario has a score
+// We use a gauge to indicate the trust level
+// ******************************************
+var gauge = function(container) {
+ var that = {};
+ var config = {
+ size : 150,
+ clipWidth : 250,
+ clipHeight : 100,
+ ringInset : 20,
+ ringWidth : 40,
+
+ pointerWidth : 7,
+ pointerTailLength : 5,
+ pointerHeadLengthPercent : 0.8,
+
+ minValue : 0,
+ maxValue : 100,
+
+ minAngle : -90,
+ maxAngle : 90,
+
+ transitionMs : 4000,
+
+ majorTicks : 7,
+ labelFormat : d3.format(',g'),
+ labelInset : 10,
+
+ arcColorFn : d3.interpolateHsl(d3.rgb('#ff0000'), d3.rgb('#00ff00'))
+ };
+
+
+var range = undefined;
+var r = undefined;
+var pointerHeadLength = undefined;
+var value = 0;
+
+var svg = undefined;
+var arc = undefined;
+var scale = undefined;
+var ticks = undefined;
+var tickData = undefined;
+var pointer = undefined;
+
+var donut = d3.layout.pie();
+
+function deg2rad(deg) {
+ return deg * Math.PI / 180;
+}
+
+function newAngle(d) {
+ var ratio = scale(d);
+ var newAngle = config.minAngle + (ratio * range);
+ return newAngle;
+}
+
+function configure() {
+ range = config.maxAngle - config.minAngle;
+ r = config.size / 2;
+ pointerHeadLength = Math.round(r * config.pointerHeadLengthPercent);
+
+ // a linear scale that maps domain values to a percent from 0..1
+ scale = d3.scale.linear()
+ .range([0,1])
+ .domain([config.minValue, config.maxValue]);
+
+ ticks = scale.ticks(config.majorTicks);
+ tickData = d3.range(config.majorTicks).map(function() {return 1/config.majorTicks;});
+
+ arc = d3.svg.arc()
+ .innerRadius(r - config.ringWidth - config.ringInset)
+ .outerRadius(r - config.ringInset)
+ .startAngle(function(d, i) {
+ var ratio = d * i;
+ return deg2rad(config.minAngle + (ratio * range));
+ })
+ .endAngle(function(d, i) {
+ var ratio = d * (i+1);
+ return deg2rad(config.minAngle + (ratio * range));
+ });
+}
+that.configure = configure;
+
+function centerTranslation() {
+ return 'translate('+r +','+ r +')';
+}
+
+function isRendered() {
+ return (svg !== undefined);
+}
+that.isRendered = isRendered;
+
+function render(newValue) {
+ svg = d3.select(container)
+ .append('svg:svg')
+ .attr('class', 'gauge')
+ .attr('width', config.clipWidth)
+ .attr('height', config.clipHeight);
+
+ var centerTx = centerTranslation();
+
+ var arcs = svg.append('g')
+ .attr('class', 'arc')
+ .attr('transform', centerTx);
+
+ arcs.selectAll('path')
+ .data(tickData)
+ .enter().append('path')
+ .attr('fill', function(d, i) {
+ return config.arcColorFn(d * i);
+ })
+ .attr('d', arc);
+
+ var lg = svg.append('g')
+ .attr('class', 'label')
+ .attr('transform', centerTx);
+ lg.selectAll('text')
+ .data(ticks)
+ .enter().append('text')
+ .attr('transform', function(d) {
+ var ratio = scale(d);
+ var newAngle = config.minAngle + (ratio * range);
+ return 'rotate(' +newAngle +') translate(0,' +(config.labelInset - r) +')';
+ })
+ .text(config.labelFormat);
+
+ var lineData = [ [config.pointerWidth / 2, 0],
+ [0, -pointerHeadLength],
+ [-(config.pointerWidth / 2), 0],
+ [0, config.pointerTailLength],
+ [config.pointerWidth / 2, 0] ];
+ var pointerLine = d3.svg.line().interpolate('monotone');
+ var pg = svg.append('g').data([lineData])
+ .attr('class', 'pointer')
+ .attr('transform', centerTx);
+
+ pointer = pg.append('path')
+ .attr('d', pointerLine/*function(d) { return pointerLine(d) +'Z';}*/ )
+ .attr('transform', 'rotate(' +config.minAngle +')');
+
+ update(newValue === undefined ? 0 : newValue);
+}
+that.render = render;
+
+function update(newValue, newConfiguration) {
+ if ( newConfiguration !== undefined) {
+ configure(newConfiguration);
+ }
+ var ratio = scale(newValue);
+ var newAngle = config.minAngle + (ratio * range);
+ pointer.transition()
+ .duration(config.transitionMs)
+ .ease('elastic')
+ .attr('transform', 'rotate(' +newAngle +')');
+}
+that.update = update;
+
+configure();
+
+render();
+
+return that;
+};
diff --git a/docs/results/js/trend.js b/docs/results/js/trend.js
new file mode 100644
index 000000000..f24213382
--- /dev/null
+++ b/docs/results/js/trend.js
@@ -0,0 +1,75 @@
+// ******************************************
+// Trend line for reporting
+// based on scenario_history.txt
+// where data looks like
+// date,scenario,installer,detail,score
+// 2016-09-22 13:12,os-nosdn-fdio-noha,apex,4/12,33.0
+// 2016-09-22 13:13,os-odl_l2-fdio-noha,apex,12/15,80.0
+// 2016-09-22 13:13,os-odl_l2-sfc-noha,apex,18/24,75.0
+// .....
+// ******************************************
+// Set the dimensions of the canvas / graph
+var trend_margin = {top: 20, right: 30, bottom: 50, left: 40},
+ trend_width = 300 - trend_margin.left - trend_margin.right,
+ trend_height = 130 - trend_margin.top - trend_margin.bottom;
+
+// Parse the date / time
+var parseDate = d3.time.format("%Y-%m-%d %H:%M").parse;
+
+// Set the ranges
+var trend_x = d3.time.scale().range([0, trend_width]);
+var trend_y = d3.scale.linear().range([trend_height, 0]);
+
+// Define the axes
+var trend_xAxis = d3.svg.axis().scale(trend_x)
+ .orient("bottom").ticks(2).tickFormat(d3.time.format("%m-%d"));
+
+var trend_yAxis = d3.svg.axis().scale(trend_y)
+ .orient("left").ticks(2);
+
+// Define the line
+var valueline = d3.svg.line()
+ .x(function(d) { return trend_x(d.date); })
+ .y(function(d) { return trend_y(d.score); });
+
+var trend = function(container, trend_data) {
+
+ var trend_svg = d3.select(container)
+ .append("svg")
+ .attr("width", trend_width + trend_margin.left + trend_margin.right)
+ .attr("height", trend_height + trend_margin.top + trend_margin.bottom)
+ .append("g")
+ .attr("transform",
+ "translate(" + trend_margin.left + "," + trend_margin.top + ")");
+
+ // Scale the range of the data
+ trend_x.domain(d3.extent(trend_data, function(d) { return d.date; }));
+ trend_y.domain([0, d3.max(trend_data, function(d) { return d.score; })]);
+
+ // Add the X Axis
+ trend_svg.append("g")
+ .attr("class", "x axis")
+ .attr("transform", "translate(0," + trend_height + ")")
+ .call(trend_xAxis);
+
+ // Add the Y Axis
+ trend_svg.append("g")
+ .attr("class", "y axis")
+ .call(trend_yAxis);
+
+ // Add the valueline path.
+ trend_svg.append("path")
+ .attr("class", "line")
+ .attr("d", valueline(trend_data))
+ .attr("stroke", "steelblue")
+ .attr("fill", "none");
+
+ trend_svg.selectAll(".dot")
+ .data(trend_data)
+ .enter().append("circle")
+ .attr("r", 2.5)
+ .attr("cx", function(d) { return trend_x(d.date); })
+ .attr("cy", function(d) { return trend_y(d.score); });
+
+ return trend;
+}
diff --git a/docs/testing/user/userguide/index.rst b/docs/testing/user/userguide/index.rst
index 0459ce5f1..6c9c2de83 100644
--- a/docs/testing/user/userguide/index.rst
+++ b/docs/testing/user/userguide/index.rst
@@ -1,3 +1,5 @@
+.. _functest-userguide:
+
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
diff --git a/docs/testing/user/userguide/runfunctest.rst b/docs/testing/user/userguide/runfunctest.rst
index 8a3ba8c73..07b5b8a60 100644
--- a/docs/testing/user/userguide/runfunctest.rst
+++ b/docs/testing/user/userguide/runfunctest.rst
@@ -118,14 +118,35 @@ More specific details on specific Tiers or Test Cases can be seen wih the
To execute a Test Tier or Test Case, the 'run' command is used::
root@22e436918db0:~/repos/functest/ci# functest tier run healthcheck
- 2017-03-21 13:34:21,400 - run_tests - INFO - ############################################
- 2017-03-21 13:34:21,400 - run_tests - INFO - Running tier 'healthcheck'
- 2017-03-21 13:34:21,400 - run_tests - INFO - ############################################
- 2017-03-21 13:34:21,401 - run_tests - INFO -
-
- 2017-03-21 13:34:21,401 - run_tests - INFO - ============================================
- 2017-03-21 13:34:21,401 - run_tests - INFO - Running test case 'connection_check'...
- 2017-03-21 13:34:21,401 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:19,752 - run_tests - INFO - ############################################
+ 2017-03-30 05:36:19,752 - run_tests - INFO - Running tier 'healthcheck'
+ 2017-03-30 05:36:19,753 - run_tests - INFO - ############################################
+ 2017-03-30 05:36:19,753 - run_tests - INFO -
+
+ 2017-03-30 05:36:19,753 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:19,753 - run_tests - INFO - Running test case 'connection_check'...
+ 2017-03-30 05:36:19,753 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:20,046 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,046 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,775 - functest - INFO - Using flavor metatdata '{'hw:mem_page_size': 'any'}'
+ 2017-03-30 05:36:20,777 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,777 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,777 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,778 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,778 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,779 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,779 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,779 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,780 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,780 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,781 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,781 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,781 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,782 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,782 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,783 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:20,783 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:20,784 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
test_glance_connect_fail (snaps.openstack.utils.tests.glance_utils_tests.GlanceSmokeTests) ... ok
test_glance_connect_success (snaps.openstack.utils.tests.glance_utils_tests.GlanceSmokeTests) ... ok
test_keystone_connect_fail (snaps.openstack.utils.tests.keystone_utils_tests.KeystoneSmokeTests) ... ok
@@ -137,241 +158,341 @@ To execute a Test Tier or Test Case, the 'run' command is used::
test_nova_connect_success (snaps.openstack.utils.tests.nova_utils_tests.NovaSmokeTests) ... ok
----------------------------------------------------------------------
- Ran 9 tests in 3.768s
+ Ran 9 tests in 1.332s
OK
- 2017-03-21 13:34:26,570 - functest.core.testcase_base - INFO - connection_check OK
- 2017-03-21 13:34:26,918 - functest.core.testcase_base - INFO - The results were successfully pushed to DB
- 2017-03-21 13:34:26,918 - run_tests - INFO - Test execution time: 00:05
- 2017-03-21 13:34:26,918 - run_tests - INFO -
-
- 2017-03-21 13:34:26,918 - run_tests - INFO - ============================================
- 2017-03-21 13:34:26,918 - run_tests - INFO - Running test case 'api_check'...
- 2017-03-21 13:34:26,919 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:22,116 - functest - INFO - connection_check OK
+ 2017-03-30 05:36:22,483 - functest - INFO - The results were successfully pushed to DB
+ 2017-03-30 05:36:22,483 - run_tests - INFO - Test execution time: 00:02
+ 2017-03-30 05:36:22,484 - run_tests - INFO -
+
+ 2017-03-30 05:36:22,484 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:22,484 - run_tests - INFO - Running test case 'api_check'...
+ 2017-03-30 05:36:22,484 - run_tests - INFO - ============================================
+ 2017-03-30 05:36:22,590 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:22,591 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,361 - functest - INFO - Using flavor metatdata '{'hw:mem_page_size': 'any'}'
+ 2017-03-30 05:36:23,362 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,362 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,363 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,364 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,364 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,365 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,365 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,365 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,366 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,366 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,367 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,367 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,368 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,368 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,368 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,369 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,370 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,370 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,370 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,371 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,372 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,372 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,372 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,373 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,373 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,374 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,374 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,374 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,375 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,376 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,376 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,376 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,376 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,377 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,377 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,377 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,377 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,377 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,378 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,378 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,378 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,378 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,379 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,379 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,379 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,380 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,380 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,380 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,380 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,380 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,381 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,381 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,381 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,381 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,381 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,382 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,382 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,382 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,382 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,382 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,383 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,383 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,383 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,384 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,384 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,384 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,384 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,384 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,385 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,385 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,385 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,385 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,386 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,386 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,386 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,386 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,387 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,387 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,387 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,388 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,388 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,388 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,388 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,388 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,420 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,420 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,420 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,420 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,421 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,421 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,421 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,421 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,422 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,422 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:36:23,422 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:36:23,422 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
test_create_project_minimal (snaps.openstack.utils.tests.keystone_utils_tests.KeystoneUtilsTests) ... ok
test_create_user_minimal (snaps.openstack.utils.tests.keystone_utils_tests.KeystoneUtilsTests) ... ok
test_create_delete_user (snaps.openstack.tests.create_user_tests.CreateUserSuccessTests) ... ok
test_create_user (snaps.openstack.tests.create_user_tests.CreateUserSuccessTests) ... ok
- test_create_user_2x (snaps.openstack.tests.create_user_tests.CreateUserSuccessTests) ...
- 2017-03-21 13:34:32,684 - create_user - INFO - Found user with name - CreateUserSuccessTests-7e741e11-c9fd-489-name ok
+ test_create_user_2x (snaps.openstack.tests.create_user_tests.CreateUserSuccessTests) ... 2017-03-30 05:36:27,257 - create_user - INFO - Found user with name - CreateUserSuccessTests-5ff765c1-56bd-4c4-name
+ ok
test_create_delete_project (snaps.openstack.tests.create_project_tests.CreateProjectSuccessTests) ... ok
test_create_project (snaps.openstack.tests.create_project_tests.CreateProjectSuccessTests) ... ok
- test_create_project_2x (snaps.openstack.tests.create_project_tests.CreateProjectSuccessTests) ...
- 2017-03-21 13:34:35,922 - create_image - INFO - Found project with name - CreateProjectSuccessTests-b38e08ce-2862-48a-name ok
- test_create_project_sec_grp_one_user (snaps.openstack.tests.create_project_tests.CreateProjectUserTests) ...
- 2017-03-21 13:34:37,907 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-ab8801f6-dad8-4f9-name...
- 2017-03-21 13:34:37,907 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-ab8801f6-dad8-4f9-name
- 2017-03-21 13:34:38,376 - neutron_utils - INFO - Creating security group with name - CreateProjectUserTests-ab8801f6-dad8-4f9-name
- 2017-03-21 13:34:38,716 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-ab8801f6-dad8-4f9-name
- 2017-03-21 13:34:38,762 - neutron_utils - INFO - Retrieving security group with ID - 821419cb-c54c-41b4-a61b-fb30e5dd2ec5
- 2017-03-21 13:34:38,886 - neutron_utils - INFO - Retrieving security group with ID - 821419cb-c54c-41b4-a61b-fb30e5dd2ec5
- 2017-03-21 13:34:39,000 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-ab8801f6-dad8-4f9-name
- 2017-03-21 13:34:39,307 - neutron_utils - INFO - Deleting security group rule with ID - d85fafc0-9649-45c9-a00e-452f3d5c09a6
- 2017-03-21 13:34:39,531 - neutron_utils - INFO - Deleting security group rule with ID - 69d79c09-bc3b-4975-9353-5f43aca51237
- 2017-03-21 13:34:39,762 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-ab8801f6-dad8-4f9-name ok
- test_create_project_sec_grp_two_users (snaps.openstack.tests.create_project_tests.CreateProjectUserTests) ...
- 2017-03-21 13:34:43,511 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-4d9261a6-e008-44b-name...
- 2017-03-21 13:34:43,511 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:44,090 - neutron_utils - INFO - Creating security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:44,784 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:44,864 - neutron_utils - INFO - Retrieving security group with ID - 780193e4-9bd2-4f2e-a14d-b01abf74c832
- 2017-03-21 13:34:45,233 - neutron_utils - INFO - Retrieving security group with ID - 780193e4-9bd2-4f2e-a14d-b01abf74c832
- 2017-03-21 13:34:45,332 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:45,779 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-4d9261a6-e008-44b-name...
- 2017-03-21 13:34:45,779 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:46,112 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:46,184 - neutron_utils - INFO - Retrieving security group with ID - 780193e4-9bd2-4f2e-a14d-b01abf74c832
- 2017-03-21 13:34:46,296 - neutron_utils - INFO - Retrieving security group with ID - 780193e4-9bd2-4f2e-a14d-b01abf74c832
- 2017-03-21 13:34:46,387 - neutron_utils - INFO - Deleting security group rule with ID - 2320a573-ec56-47c5-a1ba-ec514d30114b
- 2017-03-21 13:34:46,636 - neutron_utils - INFO - Deleting security group rule with ID - 6186282b-db37-4e47-becc-a3886079c069
- 2017-03-21 13:34:46,780 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:47,006 - neutron_utils - INFO - Deleting security group rule with ID - 2320a573-ec56-47c5-a1ba-ec514d30114b
- 2017-03-21 13:34:47,072 - OpenStackSecurityGroup - WARNING - Rule not found, cannot delete - Security group rule 2320a573-ec56-47c5-a1ba-ec514d30114b does not exist
- Neutron server returns request_ids: ['req-d74eb2e2-b26f-4236-87dc-7255866141d9']
- 2017-03-21 13:34:47,072 - neutron_utils - INFO - Deleting security group rule with ID - 6186282b-db37-4e47-becc-a3886079c069
- 2017-03-21 13:34:47,118 - OpenStackSecurityGroup - WARNING - Rule not found, cannot delete - Security group rule 6186282b-db37-4e47-becc-a3886079c069 does not exist
- Neutron server returns request_ids: ['req-8c0a5a24-be90-4844-a9ed-2a85cc6f59a5']
- 2017-03-21 13:34:47,118 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-4d9261a6-e008-44b-name
- 2017-03-21 13:34:47,172 - OpenStackSecurityGroup - WARNING - Security Group not found, cannot delete - Security group 780193e4-9bd2-4f2e-a14d-b01abf74c832 does not exist
- Neutron server returns request_ids: ['req-c6e1a6b5-43e0-4d46-bb68-c2e1672d4d21'] ok
+ test_create_project_2x (snaps.openstack.tests.create_project_tests.CreateProjectSuccessTests) ... 2017-03-30 05:36:29,798 - create_image - INFO - Found project with name - CreateProjectSuccessTests-1b2fce89-dd5e-471-name
+ ok
+ test_create_project_sec_grp_one_user (snaps.openstack.tests.create_project_tests.CreateProjectUserTests) ... 2017-03-30 05:36:31,327 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-34aa7d96-f19c-4db-name...
+ 2017-03-30 05:36:31,327 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-34aa7d96-f19c-4db-name
+ 2017-03-30 05:36:31,705 - neutron_utils - INFO - Creating security group with name - CreateProjectUserTests-34aa7d96-f19c-4db-name
+ 2017-03-30 05:36:31,878 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-34aa7d96-f19c-4db-name
+ 2017-03-30 05:36:31,915 - neutron_utils - INFO - Retrieving security group with ID - 4dc3e8e4-3dc8-4dda-9c7e-03d08171e17a
+ 2017-03-30 05:36:31,980 - neutron_utils - INFO - Retrieving security group with ID - 4dc3e8e4-3dc8-4dda-9c7e-03d08171e17a
+ 2017-03-30 05:36:32,048 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-34aa7d96-f19c-4db-name
+ 2017-03-30 05:36:32,108 - neutron_utils - INFO - Deleting security group rule with ID - 81cca252-45fe-4052-adb9-819191693618
+ 2017-03-30 05:36:32,257 - neutron_utils - INFO - Deleting security group rule with ID - 8900647f-1587-4068-bd2e-7b77677d12ed
+ 2017-03-30 05:36:32,367 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-34aa7d96-f19c-4db-name
+ ok
+ test_create_project_sec_grp_two_users (snaps.openstack.tests.create_project_tests.CreateProjectUserTests) ... 2017-03-30 05:36:34,950 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-6664b595-4657-4f9-name...
+ 2017-03-30 05:36:34,950 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:35,337 - neutron_utils - INFO - Creating security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:35,528 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:35,566 - neutron_utils - INFO - Retrieving security group with ID - ea8b1da3-0e3d-45aa-b63f-68d2e7b57e48
+ 2017-03-30 05:36:35,831 - neutron_utils - INFO - Retrieving security group with ID - ea8b1da3-0e3d-45aa-b63f-68d2e7b57e48
+ 2017-03-30 05:36:36,118 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:36,474 - OpenStackSecurityGroup - INFO - Creating security group CreateProjectUserTests-6664b595-4657-4f9-name...
+ 2017-03-30 05:36:36,475 - neutron_utils - INFO - Retrieving security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:36,717 - neutron_utils - INFO - Retrieving security group rules associate with the security group - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:36,768 - neutron_utils - INFO - Retrieving security group with ID - ea8b1da3-0e3d-45aa-b63f-68d2e7b57e48
+ 2017-03-30 05:36:36,831 - neutron_utils - INFO - Retrieving security group with ID - ea8b1da3-0e3d-45aa-b63f-68d2e7b57e48
+ 2017-03-30 05:36:36,902 - neutron_utils - INFO - Deleting security group rule with ID - f6e50aea-e6d2-4ba9-ab78-0674cdcd5415
+ 2017-03-30 05:36:37,054 - neutron_utils - INFO - Deleting security group rule with ID - a32d9c1d-7ae0-4fe9-b4c9-8b039008f836
+ 2017-03-30 05:36:37,204 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:37,350 - neutron_utils - INFO - Deleting security group rule with ID - f6e50aea-e6d2-4ba9-ab78-0674cdcd5415
+ 2017-03-30 05:36:37,387 - OpenStackSecurityGroup - WARNING - Rule not found, cannot delete - Security group rule f6e50aea-e6d2-4ba9-ab78-0674cdcd5415 does not exist
+ Neutron server returns request_ids: ['req-e740871d-34c4-4b95-a76c-6b84028954e6']
+ 2017-03-30 05:36:37,387 - neutron_utils - INFO - Deleting security group rule with ID - a32d9c1d-7ae0-4fe9-b4c9-8b039008f836
+ 2017-03-30 05:36:37,426 - OpenStackSecurityGroup - WARNING - Rule not found, cannot delete - Security group rule a32d9c1d-7ae0-4fe9-b4c9-8b039008f836 does not exist
+ Neutron server returns request_ids: ['req-8121308e-d7d3-4ccc-961f-5fa794fccc83']
+ 2017-03-30 05:36:37,427 - neutron_utils - INFO - Deleting security group with name - CreateProjectUserTests-6664b595-4657-4f9-name
+ 2017-03-30 05:36:37,470 - OpenStackSecurityGroup - WARNING - Security Group not found, cannot delete - Security group ea8b1da3-0e3d-45aa-b63f-68d2e7b57e48 does not exist
+ Neutron server returns request_ids: ['req-09424914-a32d-4bcb-9d90-0ad307ec4c56']
+ ok
test_create_image_minimal_file (snaps.openstack.utils.tests.glance_utils_tests.GlanceUtilsTests) ... ok
test_create_image_minimal_url (snaps.openstack.utils.tests.glance_utils_tests.GlanceUtilsTests) ... ok
- test_create_network (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsNetworkTests) ...
- 2017-03-21 13:35:22,275 - neutron_utils - INFO - Creating network with name NeutronUtilsNetworkTests-c06c20e0-d78f-4fa4-8401-099a7a6cab2e-pub-net
- 2017-03-21 13:35:23,965 - neutron_utils - INFO - Deleting network with name NeutronUtilsNetworkTests-c06c20e0-d78f-4fa4-8401-099a7a6cab2e-pub-net ok
+ test_create_network (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsNetworkTests) ... 2017-03-30 05:37:02,330 - neutron_utils - INFO - Creating network with name NeutronUtilsNetworkTests-9dc31d5e-be87-480d-af6e-d89f0608e459-pub-net
+ 2017-03-30 05:37:04,307 - neutron_utils - INFO - Deleting network with name NeutronUtilsNetworkTests-9dc31d5e-be87-480d-af6e-d89f0608e459-pub-net
+ ok
test_create_network_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsNetworkTests) ... ok
test_create_network_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsNetworkTests) ... ok
- test_create_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ...
- 2017-03-21 13:35:25,495 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-4f440a5f-54e3-4455-ab9b-39dfe06f6d21-pub-net
- 2017-03-21 13:35:26,841 - neutron_utils - INFO - Creating subnet with name NeutronUtilsSubnetTests-4f440a5f-54e3-4455-ab9b-39dfe06f6d21-pub-subnet
- 2017-03-21 13:35:28,311 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsSubnetTests-4f440a5f-54e3-4455-ab9b-39dfe06f6d21-pub-subnet
- 2017-03-21 13:35:29,585 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-4f440a5f-54e3-4455-ab9b-39dfe06f6d21-pub-net ok
- test_create_subnet_empty_cidr (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ...
- 2017-03-21 13:35:31,013 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-41fc0db4-71ee-47e6-bec9-316273e5bcc0-pub-net
- 2017-03-21 13:35:31,652 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-41fc0db4-71ee-47e6-bec9-316273e5bcc0-pub-net ok
- test_create_subnet_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ...
- 2017-03-21 13:35:32,379 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-1030e0cb-1714-4d18-8619-a03bac0d0257-pub-net
- 2017-03-21 13:35:33,516 - neutron_utils - INFO - Creating subnet with name NeutronUtilsSubnetTests-1030e0cb-1714-4d18-8619-a03bac0d0257-pub-subnet
- 2017-03-21 13:35:34,160 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-1030e0cb-1714-4d18-8619-a03bac0d0257-pub-net ok
- test_create_subnet_null_cidr (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ...
- 2017-03-21 13:35:35,784 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-1d7522fd-3fb5-4b1c-8741-97d7c47a5f7d-pub-net
- 2017-03-21 13:35:36,367 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-1d7522fd-3fb5-4b1c-8741-97d7c47a5f7d-pub-net ok
- test_create_subnet_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ...
- 2017-03-21 13:35:37,055 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-0a8ac1b2-e5d4-4522-a079-7e17945e482e-pub-net
- 2017-03-21 13:35:37,691 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-0a8ac1b2-e5d4-4522-a079-7e17945e482e-pub-net ok
- test_add_interface_router (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:35:38,994 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-net
- 2017-03-21 13:35:40,311 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-subnet
- 2017-03-21 13:35:41,713 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-router
- 2017-03-21 13:35:44,131 - neutron_utils - INFO - Adding interface to router with name NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-router
- 2017-03-21 13:35:45,725 - neutron_utils - INFO - Removing router interface from router named NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-router
- 2017-03-21 13:35:47,464 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-router
- 2017-03-21 13:35:48,670 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-subnet
- 2017-03-21 13:35:50,921 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-433818c9-4472-49a8-9241-791ad0a71d3f-pub-net ok
- test_add_interface_router_null_router (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:35:52,230 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-1fc2de16-2d3e-497b-b947-022b1bf9d90c-pub-net
- 2017-03-21 13:35:53,662 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-1fc2de16-2d3e-497b-b947-022b1bf9d90c-pub-subnet
- 2017-03-21 13:35:55,203 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-1fc2de16-2d3e-497b-b947-022b1bf9d90c-pub-subnet
- 2017-03-21 13:35:55,694 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-1fc2de16-2d3e-497b-b947-022b1bf9d90c-pub-net ok
- test_add_interface_router_null_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:35:57,392 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-2e4fb9f3-312b-4954-8015-435464fdc8b0-pub-net
- 2017-03-21 13:35:58,215 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-2e4fb9f3-312b-4954-8015-435464fdc8b0-pub-router
- 2017-03-21 13:36:00,369 - neutron_utils - INFO - Adding interface to router with name NeutronUtilsRouterTests-2e4fb9f3-312b-4954-8015-435464fdc8b0-pub-router
- 2017-03-21 13:36:00,369 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-2e4fb9f3-312b-4954-8015-435464fdc8b0-pub-router
- 2017-03-21 13:36:02,742 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-2e4fb9f3-312b-4954-8015-435464fdc8b0-pub-net ok
- test_create_port (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:05,010 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-pub-net
- 2017-03-21 13:36:05,996 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-pub-subnet
- 2017-03-21 13:36:09,103 - neutron_utils - INFO - Creating port for network with name - NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-pub-net
- 2017-03-21 13:36:10,312 - neutron_utils - INFO - Deleting port with name NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-port
- 2017-03-21 13:36:11,045 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-pub-subnet
- 2017-03-21 13:36:14,265 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-dde05ce1-a2f8-4c5e-a028-e1ca0e11a05b-pub-net ok
- test_create_port_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:16,250 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-pub-net
- 2017-03-21 13:36:16,950 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-pub-subnet
- 2017-03-21 13:36:17,798 - neutron_utils - INFO - Creating port for network with name - NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-pub-net
- 2017-03-21 13:36:18,544 - neutron_utils - INFO - Deleting port with name NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-port
- 2017-03-21 13:36:19,582 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-pub-subnet
- 2017-03-21 13:36:21,606 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-b986a259-e873-431c-bde4-b2771ace4549-pub-net ok
- test_create_port_invalid_ip (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:23,779 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-7ab3a329-9dd8-4e6f-9d52-aafb47ea5122-pub-net
- 2017-03-21 13:36:25,201 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-7ab3a329-9dd8-4e6f-9d52-aafb47ea5122-pub-subnet
- 2017-03-21 13:36:25,599 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-7ab3a329-9dd8-4e6f-9d52-aafb47ea5122-pub-subnet
- 2017-03-21 13:36:26,220 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-7ab3a329-9dd8-4e6f-9d52-aafb47ea5122-pub-net ok
- test_create_port_invalid_ip_to_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:27,112 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-c016821d-cd4f-4e0f-8f8c-d5cef3392e64-pub-net
- 2017-03-21 13:36:28,720 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-c016821d-cd4f-4e0f-8f8c-d5cef3392e64-pub-subnet
- 2017-03-21 13:36:29,457 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-c016821d-cd4f-4e0f-8f8c-d5cef3392e64-pub-subnet
- 2017-03-21 13:36:29,909 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-c016821d-cd4f-4e0f-8f8c-d5cef3392e64-pub-net ok
- test_create_port_null_ip (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:31,037 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-9a86227f-6041-4b04-86a7-1701fb86baa3-pub-net
- 2017-03-21 13:36:31,695 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-9a86227f-6041-4b04-86a7-1701fb86baa3-pub-subnet
- 2017-03-21 13:36:32,305 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-9a86227f-6041-4b04-86a7-1701fb86baa3-pub-subnet
- 2017-03-21 13:36:33,553 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-9a86227f-6041-4b04-86a7-1701fb86baa3-pub-net ok
- test_create_port_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:34,593 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-42efa897-4f65-4d9b-b19d-fbc61f97c966-pub-net
- 2017-03-21 13:36:35,217 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-42efa897-4f65-4d9b-b19d-fbc61f97c966-pub-subnet
- 2017-03-21 13:36:36,648 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-42efa897-4f65-4d9b-b19d-fbc61f97c966-pub-subnet
- 2017-03-21 13:36:37,251 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-42efa897-4f65-4d9b-b19d-fbc61f97c966-pub-net ok
- test_create_port_null_network_object (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:37,885 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-617f4110-45c1-4900-bad1-a6204f34dd64-pub-net
- 2017-03-21 13:36:38,468 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-617f4110-45c1-4900-bad1-a6204f34dd64-pub-subnet
- 2017-03-21 13:36:40,005 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-617f4110-45c1-4900-bad1-a6204f34dd64-pub-subnet
- 2017-03-21 13:36:41,637 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-617f4110-45c1-4900-bad1-a6204f34dd64-pub-net ok
+ test_create_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ... 2017-03-30 05:37:04,953 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-127e135b-f050-4e85-8c9f-b4f72fb1b028-pub-net
+ 2017-03-30 05:37:06,108 - neutron_utils - INFO - Creating subnet with name NeutronUtilsSubnetTests-127e135b-f050-4e85-8c9f-b4f72fb1b028-pub-subnet
+ 2017-03-30 05:37:07,544 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsSubnetTests-127e135b-f050-4e85-8c9f-b4f72fb1b028-pub-subnet
+ 2017-03-30 05:37:07,944 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-127e135b-f050-4e85-8c9f-b4f72fb1b028-pub-net
+ ok
+ test_create_subnet_empty_cidr (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ... 2017-03-30 05:37:08,594 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-4edb48fe-2532-409b-8dc7-dcb344068a20-pub-net
+ 2017-03-30 05:37:09,862 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-4edb48fe-2532-409b-8dc7-dcb344068a20-pub-net
+ ok
+ test_create_subnet_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ... 2017-03-30 05:37:10,962 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-bb15908a-a475-45e9-9777-8b5d3faaaea8-pub-net
+ 2017-03-30 05:37:11,973 - neutron_utils - INFO - Creating subnet with name NeutronUtilsSubnetTests-bb15908a-a475-45e9-9777-8b5d3faaaea8-pub-subnet
+ 2017-03-30 05:37:13,088 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-bb15908a-a475-45e9-9777-8b5d3faaaea8-pub-net
+ ok
+ test_create_subnet_null_cidr (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ... 2017-03-30 05:37:14,032 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-701278ff-f4b6-478f-b16f-1d3fdfb43ed7-pub-net
+ 2017-03-30 05:37:15,100 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-701278ff-f4b6-478f-b16f-1d3fdfb43ed7-pub-net
+ ok
+ test_create_subnet_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSubnetTests) ... 2017-03-30 05:37:15,658 - neutron_utils - INFO - Creating network with name NeutronUtilsSubnetTests-2dad9c37-c892-494b-a8dc-51963ce11cd8-pub-net
+ 2017-03-30 05:37:16,184 - neutron_utils - INFO - Deleting network with name NeutronUtilsSubnetTests-2dad9c37-c892-494b-a8dc-51963ce11cd8-pub-net
+ ok
+ test_add_interface_router (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:17,438 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-net
+ 2017-03-30 05:37:18,624 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-subnet
+ 2017-03-30 05:37:20,041 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-router
+ 2017-03-30 05:37:22,518 - neutron_utils - INFO - Adding interface to router with name NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-router
+ 2017-03-30 05:37:23,883 - neutron_utils - INFO - Removing router interface from router named NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-router
+ 2017-03-30 05:37:25,345 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-router
+ 2017-03-30 05:37:27,019 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-subnet
+ 2017-03-30 05:37:28,570 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-5f1f0b29-1148-4628-8626-f2aa63b17914-pub-net
+ ok
+ test_add_interface_router_null_router (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:29,583 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-021a41c7-e2b2-45df-bb6d-630ddba2b776-pub-net
+ 2017-03-30 05:37:30,234 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-021a41c7-e2b2-45df-bb6d-630ddba2b776-pub-subnet
+ 2017-03-30 05:37:30,724 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-021a41c7-e2b2-45df-bb6d-630ddba2b776-pub-subnet
+ 2017-03-30 05:37:31,128 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-021a41c7-e2b2-45df-bb6d-630ddba2b776-pub-net
+ ok
+ test_add_interface_router_null_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:32,229 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-e52f96b6-92c9-49a3-ac7f-6a4a61a82c7e-pub-net
+ 2017-03-30 05:37:32,833 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-e52f96b6-92c9-49a3-ac7f-6a4a61a82c7e-pub-router
+ 2017-03-30 05:37:34,002 - neutron_utils - INFO - Adding interface to router with name NeutronUtilsRouterTests-e52f96b6-92c9-49a3-ac7f-6a4a61a82c7e-pub-router
+ 2017-03-30 05:37:34,003 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-e52f96b6-92c9-49a3-ac7f-6a4a61a82c7e-pub-router
+ 2017-03-30 05:37:35,238 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-e52f96b6-92c9-49a3-ac7f-6a4a61a82c7e-pub-net
+ ok
+ test_create_port (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:35,898 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-pub-net
+ 2017-03-30 05:37:36,426 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-pub-subnet
+ 2017-03-30 05:37:37,725 - neutron_utils - INFO - Creating port for network with name - NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-pub-net
+ 2017-03-30 05:37:38,511 - neutron_utils - INFO - Deleting port with name NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-port
+ 2017-03-30 05:37:39,036 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-pub-subnet
+ 2017-03-30 05:37:41,326 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-842cf533-4886-4539-86e4-15bcd8c77b63-pub-net
+ ok
+ test_create_port_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:42,725 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-pub-net
+ 2017-03-30 05:37:43,246 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-pub-subnet
+ 2017-03-30 05:37:43,945 - neutron_utils - INFO - Creating port for network with name - NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-pub-net
+ 2017-03-30 05:37:45,674 - neutron_utils - INFO - Deleting port with name NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-port
+ 2017-03-30 05:37:46,197 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-pub-subnet
+ 2017-03-30 05:37:48,252 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-303b5eae-374a-4da9-a905-aa39a7d5f026-pub-net
+ ok
+ test_create_port_invalid_ip (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:49,864 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-bd7a4489-79e8-4328-8519-5ad1951c0b5d-pub-net
+ 2017-03-30 05:37:50,322 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-bd7a4489-79e8-4328-8519-5ad1951c0b5d-pub-subnet
+ 2017-03-30 05:37:50,803 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-bd7a4489-79e8-4328-8519-5ad1951c0b5d-pub-subnet
+ 2017-03-30 05:37:51,240 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-bd7a4489-79e8-4328-8519-5ad1951c0b5d-pub-net
+ ok
+ test_create_port_invalid_ip_to_subnet (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:51,767 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-ef2c3474-7b51-483b-b269-05fc4532f294-pub-net
+ 2017-03-30 05:37:52,246 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-ef2c3474-7b51-483b-b269-05fc4532f294-pub-subnet
+ 2017-03-30 05:37:52,795 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-ef2c3474-7b51-483b-b269-05fc4532f294-pub-subnet
+ 2017-03-30 05:37:53,199 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-ef2c3474-7b51-483b-b269-05fc4532f294-pub-net
+ ok
+ test_create_port_null_ip (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:53,806 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-f5829764-e1ff-4a43-b24e-52c0107f12b2-pub-net
+ 2017-03-30 05:37:54,326 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-f5829764-e1ff-4a43-b24e-52c0107f12b2-pub-subnet
+ 2017-03-30 05:37:55,475 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-f5829764-e1ff-4a43-b24e-52c0107f12b2-pub-subnet
+ 2017-03-30 05:37:55,932 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-f5829764-e1ff-4a43-b24e-52c0107f12b2-pub-net
+ ok
+ test_create_port_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:37:57,121 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-194aff34-e0e6-4218-8c17-33a9d9b34816-pub-net
+ 2017-03-30 05:37:57,611 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-194aff34-e0e6-4218-8c17-33a9d9b34816-pub-subnet
+ 2017-03-30 05:37:58,880 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-194aff34-e0e6-4218-8c17-33a9d9b34816-pub-subnet
+ 2017-03-30 05:37:59,638 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-194aff34-e0e6-4218-8c17-33a9d9b34816-pub-net
+ ok
+ test_create_port_null_network_object (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:38:01,037 - neutron_utils - INFO - Creating network with name NeutronUtilsRouterTests-3a49f710-5292-411b-83df-42bb176a5020-pub-net
+ 2017-03-30 05:38:01,609 - neutron_utils - INFO - Creating subnet with name NeutronUtilsRouterTests-3a49f710-5292-411b-83df-42bb176a5020-pub-subnet
+ 2017-03-30 05:38:02,095 - neutron_utils - INFO - Deleting subnet with name NeutronUtilsRouterTests-3a49f710-5292-411b-83df-42bb176a5020-pub-subnet
+ 2017-03-30 05:38:03,034 - neutron_utils - INFO - Deleting network with name NeutronUtilsRouterTests-3a49f710-5292-411b-83df-42bb176a5020-pub-net
+ ok
test_create_router_empty_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... ok
test_create_router_null_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... ok
- test_create_router_simple (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:43,424 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-b6a2dafc-38d4-4c46-bb41-2ba9e1c0084e-pub-router
- 2017-03-21 13:36:45,013 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-b6a2dafc-38d4-4c46-bb41-2ba9e1c0084e-pub-router ok
- test_create_router_with_public_interface (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ...
- 2017-03-21 13:36:47,829 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-d268dda2-7a30-4d3d-a008-e5aa4592637d-pub-router
- 2017-03-21 13:36:49,448 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-d268dda2-7a30-4d3d-a008-e5aa4592637d-pub-router ok
- test_create_delete_simple_sec_grp (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ...
- 2017-03-21 13:36:51,067 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-1543e861-ea38-4fbe-9723-c27552e3eb7aname
- 2017-03-21 13:36:51,493 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-1543e861-ea38-4fbe-9723-c27552e3eb7aname
- 2017-03-21 13:36:51,568 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-1543e861-ea38-4fbe-9723-c27552e3eb7aname
- 2017-03-21 13:36:51,772 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-1543e861-ea38-4fbe-9723-c27552e3eb7aname ok
+ test_create_router_simple (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:38:03,973 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-54c3eaf0-00c8-4726-a248-b57f98a37999-pub-router
+ 2017-03-30 05:38:05,749 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-54c3eaf0-00c8-4726-a248-b57f98a37999-pub-router
+ ok
+ test_create_router_with_public_interface (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsRouterTests) ... 2017-03-30 05:38:07,392 - neutron_utils - INFO - Creating router with name - NeutronUtilsRouterTests-a4e93ee5-781e-4e9d-9b55-b4d8fb3f0e7b-pub-router
+ 2017-03-30 05:38:09,164 - neutron_utils - INFO - Deleting router with name - NeutronUtilsRouterTests-a4e93ee5-781e-4e9d-9b55-b4d8fb3f0e7b-pub-router
+ ok
+ test_create_delete_simple_sec_grp (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ... 2017-03-30 05:38:10,643 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-0b62acfe-fc43-4c9f-bd30-2ce350c73c57name
+ 2017-03-30 05:38:11,020 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-0b62acfe-fc43-4c9f-bd30-2ce350c73c57name
+ 2017-03-30 05:38:11,084 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-0b62acfe-fc43-4c9f-bd30-2ce350c73c57name
+ 2017-03-30 05:38:11,230 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-0b62acfe-fc43-4c9f-bd30-2ce350c73c57name
+ ok
test_create_sec_grp_no_name (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ... ok
- test_create_sec_grp_no_rules (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ...
- 2017-03-21 13:36:52,253 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-57c60864-f46c-4391-ba99-6acc4dd123ddname
- 2017-03-21 13:36:52,634 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-57c60864-f46c-4391-ba99-6acc4dd123ddname
- 2017-03-21 13:36:52,718 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-57c60864-f46c-4391-ba99-6acc4dd123ddname ok
- test_create_sec_grp_one_rule (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ...
- 2017-03-21 13:36:53,082 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,483 - neutron_utils - INFO - Retrieving security group rules associate with the security group - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,548 - neutron_utils - INFO - Creating security group to security group - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,548 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,871 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,944 - neutron_utils - INFO - Retrieving security group rules associate with the security group - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:53,991 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name
- 2017-03-21 13:36:54,069 - neutron_utils - INFO - Deleting security group rule with ID - 7f76046c-d043-46e0-9d12-4b983525810b
- 2017-03-21 13:36:54,185 - neutron_utils - INFO - Deleting security group rule with ID - f18a9ed1-466f-4373-a6b2-82bd317bc838
- 2017-03-21 13:36:54,338 - neutron_utils - INFO - Deleting security group rule with ID - fe34a3d0-948e-47c1-abad-c3ec8d33b2fb
- 2017-03-21 13:36:54,444 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-a3ac62bb-a7e8-4fc2-ba4c-e656f1f3c9a1name ok
- test_create_delete_keypair (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ...
- 2017-03-21 13:36:54,637 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-5ce69b6f-d8d0-4b66-bd25-30a22cf3bda0 ok
- test_create_key_from_file (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ...
- 2017-03-21 13:36:58,989 - nova_utils - INFO - Saved public key to - tmp/NovaUtilsKeypairTests-df3e848d-a467-4cc4-99d5-022eb67eee94.pub
- 2017-03-21 13:36:58,990 - nova_utils - INFO - Saved private key to - tmp/NovaUtilsKeypairTests-df3e848d-a467-4cc4-99d5-022eb67eee94
- 2017-03-21 13:36:58,990 - nova_utils - INFO - Saving keypair to - tmp/NovaUtilsKeypairTests-df3e848d-a467-4cc4-99d5-022eb67eee94.pub
- 2017-03-21 13:36:58,990 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-df3e848d-a467-4cc4-99d5-022eb67eee94 ok
- test_create_keypair (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ...
- 2017-03-21 13:36:59,807 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-fc7f7ffd-80f6-43df-bd41-a3c014ba8c3d ok
- test_floating_ips (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ...
- 2017-03-21 13:37:02,765 - nova_utils - INFO - Creating floating ip to external network - admin_floating_net ok
+ test_create_sec_grp_no_rules (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ... 2017-03-30 05:38:11,653 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-19dc66ba-630d-4ef5-87e1-b0461971ef8ename
+ 2017-03-30 05:38:11,960 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-19dc66ba-630d-4ef5-87e1-b0461971ef8ename
+ 2017-03-30 05:38:12,047 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-19dc66ba-630d-4ef5-87e1-b0461971ef8ename
+ ok
+ test_create_sec_grp_one_rule (snaps.openstack.utils.tests.neutron_utils_tests.NeutronUtilsSecurityGroupTests) ... 2017-03-30 05:38:12,321 - neutron_utils - INFO - Creating security group with name - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:12,676 - neutron_utils - INFO - Retrieving security group rules associate with the security group - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:12,735 - neutron_utils - INFO - Creating security group to security group - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:12,736 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:12,948 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:13,024 - neutron_utils - INFO - Retrieving security group rules associate with the security group - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:13,054 - neutron_utils - INFO - Retrieving security group with name - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ 2017-03-30 05:38:13,121 - neutron_utils - INFO - Deleting security group rule with ID - 07b4bfbe-c632-496b-95f7-b42de9293519
+ 2017-03-30 05:38:13,238 - neutron_utils - INFO - Deleting security group rule with ID - c5e58c9f-6cc8-4543-ae39-aa1960b9a3e1
+ 2017-03-30 05:38:13,387 - neutron_utils - INFO - Deleting security group rule with ID - 184d29e8-b460-4f80-858f-7915b9bafe9b
+ 2017-03-30 05:38:13,492 - neutron_utils - INFO - Deleting security group with name - NeutronUtilsSecurityGroupTests-cf3022e5-dc6e-4cc1-8fe0-41c8c1c56defname
+ ok
+ test_create_delete_keypair (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ... 2017-03-30 05:38:13,664 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-cb36f8f9-ceca-4802-8735-a1dc846ad2a8
+ ok
+ test_create_key_from_file (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ... 2017-03-30 05:38:18,337 - nova_utils - INFO - Saved public key to - tmp/NovaUtilsKeypairTests-a7eba01b-9615-4271-b5f9-8fe915972f16.pub
+ 2017-03-30 05:38:18,338 - nova_utils - INFO - Saved private key to - tmp/NovaUtilsKeypairTests-a7eba01b-9615-4271-b5f9-8fe915972f16
+ 2017-03-30 05:38:18,338 - nova_utils - INFO - Saving keypair to - tmp/NovaUtilsKeypairTests-a7eba01b-9615-4271-b5f9-8fe915972f16.pub
+ 2017-03-30 05:38:18,338 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-a7eba01b-9615-4271-b5f9-8fe915972f16
+ ok
+ test_create_keypair (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ... 2017-03-30 05:38:21,492 - nova_utils - INFO - Creating keypair with name - NovaUtilsKeypairTests-74535dab-d450-47b1-8814-c0b3f48b7643
+ ok
+ test_floating_ips (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsKeypairTests) ... 2017-03-30 05:38:23,509 - nova_utils - INFO - Creating floating ip to external network - admin_floating_net
+ ok
test_create_delete_flavor (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsFlavorTests) ... ok
test_create_flavor (snaps.openstack.utils.tests.nova_utils_tests.NovaUtilsFlavorTests) ... ok
test_create_clean_flavor (snaps.openstack.tests.create_flavor_tests.CreateFlavorTests) ... ok
test_create_delete_flavor (snaps.openstack.tests.create_flavor_tests.CreateFlavorTests) ... ok
test_create_flavor (snaps.openstack.tests.create_flavor_tests.CreateFlavorTests) ... ok
- test_create_flavor_existing (snaps.openstack.tests.create_flavor_tests.CreateFlavorTests) ...
- 2017-03-21 13:37:18,545 - create_image - INFO - Found flavor with name - CreateFlavorTests-3befc152-4319-4f9c-82d4-75f8941d9533name ok
+ test_create_flavor_existing (snaps.openstack.tests.create_flavor_tests.CreateFlavorTests) ... 2017-03-30 05:38:34,855 - create_image - INFO - Found flavor with name - CreateFlavorTests-3e389b6c-ee95-4f2d-bf74-78d324722ef2name
+ ok
----------------------------------------------------------------------
- Ran 48 tests in 171.000s
+ Ran 48 tests in 131.483s
OK
- 2017-03-21 13:37:18,620 - functest.core.testcase_base - INFO - api_check OK
- 2017-03-21 13:37:18,977 - functest.core.testcase_base - INFO - The results were successfully pushed to DB
- 2017-03-21 13:37:18,977 - run_tests - INFO - Test execution time: 02:52
- 2017-03-21 13:37:18,981 - run_tests - INFO -
-
- 2017-03-21 13:37:18,981 - run_tests - INFO - ============================================
- 2017-03-21 13:37:18,981 - run_tests - INFO - Running test case 'snaps_health_check'...
- 2017-03-21 13:37:18,981 - run_tests - INFO - ============================================
- 2017-03-21 13:37:19,098 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
- 2017-03-21 13:37:19,099 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.7:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
- 2017-03-21 13:37:19,434 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
- 2017-03-21 13:37:19,435 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.7:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
- test_check_vm_ip_dhcp (snaps.openstack.tests.create_instance_tests.SimpleHealthCheck) ...
- 2017-03-21 13:37:26,082 - create_image - INFO - Creating image
- 2017-03-21 13:37:28,793 - create_image - INFO - Image is active with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-image
- 2017-03-21 13:37:28,793 - create_image - INFO - Image is now active with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-image
- 2017-03-21 13:37:28,794 - OpenStackNetwork - INFO - Creating neutron network SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-priv-net...
- 2017-03-21 13:37:29,308 - neutron_utils - INFO - Creating network with name SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-priv-net
- 2017-03-21 13:37:30,771 - neutron_utils - INFO - Creating subnet with name SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-priv-subnet
- 2017-03-21 13:37:36,974 - neutron_utils - INFO - Creating port for network with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-priv-net
- 2017-03-21 13:37:38,188 - create_instance - INFO - Creating VM with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-inst
- 2017-03-21 13:37:41,538 - create_instance - INFO - Created instance with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-inst
- 2017-03-21 13:37:59,577 - create_instance - INFO - VM is - ACTIVE
- 2017-03-21 13:37:59,577 - create_instance_tests - INFO - Looking for expression Lease of.*obtained in the console log
- 2017-03-21 13:37:59,830 - create_instance_tests - INFO - DHCP lease obtained logged in console
- 2017-03-21 13:37:59,830 - create_instance_tests - INFO - With correct IP address
- 2017-03-21 13:37:59,830 - create_instance - INFO - Deleting Port - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5dport-1
- 2017-03-21 13:37:59,830 - neutron_utils - INFO - Deleting port with name SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5dport-1
- 2017-03-21 13:38:00,705 - create_instance - INFO - Deleting VM instance - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-inst
- 2017-03-21 13:38:01,412 - create_instance - INFO - Checking deletion status
- 2017-03-21 13:38:04,938 - create_instance - INFO - VM has been properly deleted VM with name - SimpleHealthCheck-23244728-5a5a-4545-9b16-50257a595e5d-inst
+ 2017-03-30 05:38:34,905 - functest - INFO - api_check OK
+ 2017-03-30 05:38:35,259 - functest - INFO - The results were successfully pushed to DB
+ 2017-03-30 05:38:35,259 - run_tests - INFO - Test execution time: 02:12
+ 2017-03-30 05:38:35,267 - run_tests - INFO -
+
+ 2017-03-30 05:38:35,268 - run_tests - INFO - ============================================
+ 2017-03-30 05:38:35,268 - run_tests - INFO - Running test case 'snaps_health_check'...
+ 2017-03-30 05:38:35,268 - run_tests - INFO - ============================================
+ 2017-03-30 05:38:35,383 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:38:35,384 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ 2017-03-30 05:38:35,855 - functest - INFO - Using flavor metatdata '{'hw:mem_page_size': 'any'}'
+ 2017-03-30 05:38:35,856 - file_utils - INFO - Attempting to read OS environment file - /home/opnfv/functest/conf/openstack.creds
+ 2017-03-30 05:38:35,856 - openstack_tests - INFO - OS Credentials = OSCreds - username=admin, password=admin, auth_url=http://192.168.10.2:5000/v3, project_name=admin, identity_api_version=3, image_api_version=1, network_api_version=2, compute_api_version=2, user_domain_id=default, proxy_settings=None
+ test_check_vm_ip_dhcp (snaps.openstack.tests.create_instance_tests.SimpleHealthCheck) ... 2017-03-30 05:38:39,896 - create_image - INFO - Creating image
+ 2017-03-30 05:38:41,843 - create_image - INFO - Image is active with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-image
+ 2017-03-30 05:38:41,843 - create_image - INFO - Image is now active with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-image
+ 2017-03-30 05:38:41,845 - OpenStackNetwork - INFO - Creating neutron network SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-priv-net...
+ 2017-03-30 05:38:42,140 - neutron_utils - INFO - Creating network with name SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-priv-net
+ 2017-03-30 05:38:42,480 - neutron_utils - INFO - Creating subnet with name SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-priv-subnet
+ 2017-03-30 05:38:44,166 - neutron_utils - INFO - Creating port for network with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-priv-net
+ 2017-03-30 05:38:45,173 - create_instance - INFO - Creating VM with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-inst
+ 2017-03-30 05:38:48,419 - create_instance - INFO - Created instance with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-inst
+ 2017-03-30 05:39:05,164 - create_instance - INFO - VM is - ACTIVE
+ 2017-03-30 05:39:05,164 - create_instance_tests - INFO - Looking for expression Lease of.*obtained in the console log
+ 2017-03-30 05:39:06,547 - create_instance_tests - INFO - DHCP lease obtained logged in console
+ 2017-03-30 05:39:06,548 - create_instance_tests - INFO - With correct IP address
+ 2017-03-30 05:39:06,548 - create_instance - INFO - Deleting Port - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181port-1
+ 2017-03-30 05:39:06,548 - neutron_utils - INFO - Deleting port with name SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181port-1
+ 2017-03-30 05:39:07,178 - create_instance - INFO - Deleting VM instance - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-inst
+ 2017-03-30 05:39:07,693 - create_instance - INFO - Checking deletion status
+ 2017-03-30 05:39:11,088 - create_instance - INFO - VM has been properly deleted VM with name - SimpleHealthCheck-85a41a34-a9b3-463d-a12c-4bd057d70181-inst
ok
----------------------------------------------------------------------
- Ran 1 test in 46.982s
+ Ran 1 test in 36.376s
OK
- 2017-03-21 13:38:06,417 - functest.core.testcase_base - INFO - snaps_health_check OK
- 2017-03-21 13:38:06,778 - functest.core.testcase_base - INFO - The results were successfully pushed to DB
- 2017-03-21 13:38:06,779 - run_tests - INFO - Test execution time: 00:47
- 2017-03-21 13:38:06,779 - run_tests - INFO -
+ 2017-03-30 05:39:12,233 - functest - INFO - snaps_health_check OK
+ 2017-03-30 05:39:12,598 - functest - INFO - The results were successfully pushed to DB
+ 2017-03-30 05:39:12,598 - run_tests - INFO - Test execution time: 00:37
+ 2017-03-30 05:39:12,599 - run_tests - INFO -
+
and
root@22e436918db0:~/repos/functest/ci# functest testcase run vping_ssh
diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml
index 1c33b9962..23b214bb7 100755
--- a/functest/ci/testcases.yaml
+++ b/functest/ci/testcases.yaml
@@ -102,7 +102,7 @@ tiers:
name: tempest_smoke_serial
criteria: 'success_rate == 100%'
blocking: false
- clean_flag: false
+ clean_flag: true
description: >-
This test case runs the smoke subset of the OpenStack
Tempest suite. The list of test cases is generated by
@@ -134,7 +134,7 @@ tiers:
name: refstack_defcore
criteria: 'success_rate == 100%'
blocking: false
- clean_flag: false
+ clean_flag: true
description: >-
This test case runs a sub group of tests of the OpenStack
Defcore testcases by using refstack client.
@@ -306,19 +306,7 @@ tiers:
run:
module: 'functest.opnfv_tests.features.security_scan'
class: 'SecurityScan'
-# -
-# name: copper
-# criteria: 'status == "PASS"'
-# blocking: false
-# clean_flag: true
-# description: >-
-# Test suite for policy management based on OpenStack Congress
-# dependencies:
-# installer: '(apex)|(joid)'
-# scenario: '^((?!fdio|lxd).)*$'
-# run:
-# module: 'functest.opnfv_tests.features.copper'
-# class: 'Copper'
+
-
name: multisite
criteria: 'success_rate == 100%'
@@ -416,30 +404,30 @@ tiers:
-
name: components
order: 3
- ci_loop: 'daily'
+ ci_loop: 'weekly'
description : >-
Extensive testing of OpenStack API.
testcases:
-# -
-# name: tempest_full_parallel
-# criteria: 'success_rate >= 80%'
-# blocking: false
-# clean_flag: false
-# description: >-
-# The list of test cases is generated by
-# Tempest automatically and depends on the parameters of
-# the OpenStack deplopyment.
-# dependencies:
-# installer: '^((?!netvirt).)*$'
-# scenario: ''
-# run:
-# module: 'functest.opnfv_tests.openstack.tempest.tempest'
-# class: 'TempestFullParallel'
+ -
+ name: tempest_full_parallel
+ criteria: 'success_rate >= 80%'
+ blocking: false
+ clean_flag: true
+ description: >-
+ The list of test cases is generated by
+ Tempest automatically and depends on the parameters of
+ the OpenStack deplopyment.
+ dependencies:
+ installer: '^((?!netvirt).)*$'
+ scenario: ''
+ run:
+ module: 'functest.opnfv_tests.openstack.tempest.tempest'
+ class: 'TempestFullParallel'
-
name: tempest_custom
criteria: 'success_rate == 100%'
blocking: false
- clean_flag: false
+ clean_flag: true
description: >-
The test case allows running a customized list of tempest
test cases defined in a file under
@@ -452,20 +440,20 @@ tiers:
run:
module: 'functest.opnfv_tests.openstack.tempest.tempest'
class: 'TempestCustom'
-# -
-# name: rally_full
-# criteria: 'success_rate >= 90%'
-# blocking: false
-# clean_flag: false
-# description: >-
-# This test case runs the full suite of scenarios of the OpenStack
-# Rally suite using several threads and iterations.
-# dependencies:
-# installer: '^((?!netvirt).)*$'
-# scenario: ''
-# run:
-# module: 'functest.opnfv_tests.openstack.rally.rally'
-# class: 'RallyFull'
+ -
+ name: rally_full
+ criteria: 'success_rate >= 90%'
+ blocking: false
+ clean_flag: false
+ description: >-
+ This test case runs the full suite of scenarios of the OpenStack
+ Rally suite using several threads and iterations.
+ dependencies:
+ installer: '^((?!netvirt).)*$'
+ scenario: ''
+ run:
+ module: 'functest.opnfv_tests.openstack.rally.rally'
+ class: 'RallyFull'
-
name: vnf
diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt b/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt
index 43edabc10..0da92cd8a 100644
--- a/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt
+++ b/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt
@@ -27,11 +27,7 @@
scenarios:
- os-onos-nofeature-ha
- os-onos-nofeature-noha
- - os-onos-sfc-ha
- - os-onos-sfc-noha
installers:
- - fuel
- - apex
- compass
tests:
- tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
@@ -41,22 +37,6 @@
- tempest.scenario.test_volume_boot_pattern.TestVolumeBootPatternV2.test_volume_boot_pattern
-
- scenarios:
- - os-onos-nofeature-ha
- - os-onos-nofeature-noha
- - os-onos-sfc-ha
- - os-onos-sfc-noha
- installers:
- - joid
- tests:
- - tempest.api.object_storage
- - tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
- - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
- - tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
- - tempest.scenario.test_volume_boot_pattern.TestVolumeBootPattern.test_volume_boot_pattern
- - tempest.scenario.test_volume_boot_pattern.TestVolumeBootPatternV2.test_volume_boot_pattern
-
--
# https://bugs.launchpad.net/tempest/+bug/1577632
scenarios:
- os-odl_l2-nofeature-ha
@@ -71,3 +51,15 @@
- fuel
tests:
- tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
+
+
+ # https://bugs.opendaylight.org/show_bug.cgi?id=5586
+ scenarios:
+ - os-odl-bgpvpn-ha
+ - os-odl-gluon-noha
+ - os-odl_l2-bgpvpn-ha
+ installers:
+ - apex
+ - fuel
+ tests:
+ - tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
diff --git a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
index f21ce3f9a..2fc5449cf 100644
--- a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
+++ b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
@@ -46,8 +46,7 @@ class ClearwaterOnBoardingBase(vnf_base.VnfOnBoardingBase):
rq = requests.post(account_url, data=params)
output_dict['login'] = params
if rq.status_code != 201 and rq.status_code != 409:
- raise Exception("Unable to create an account for number"
- " provision: %s" % rq.json()['reason'])
+ raise Exception("Unable to create an account for number provision")
self.logger.info('Account is created on Ellis: %s', params)
session_url = 'http://{0}/session'.format(ellis_ip)
diff --git a/functest/tests/unit/ci/test_prepare_env.py b/functest/tests/unit/ci/test_prepare_env.py
index 540501ff0..714dd13c3 100644
--- a/functest/tests/unit/ci/test_prepare_env.py
+++ b/functest/tests/unit/ci/test_prepare_env.py
@@ -20,6 +20,9 @@ class PrepareEnvTesting(unittest.TestCase):
logging.disable(logging.CRITICAL)
+ def setUp(self):
+ self.prepare_envparser = prepare_env.PrepareEnvParser()
+
@mock.patch('functest.ci.prepare_env.logger.info')
def test_print_separator(self, mock_logger_info):
str = "=============================================="
@@ -81,7 +84,7 @@ class PrepareEnvTesting(unittest.TestCase):
@mock.patch('functest.ci.prepare_env.logger.warning')
def test_check_env_variables_with_scenario(self, mock_logger_warn,
mock_logger_info):
- CONST.DEPLOY_SCENARIO = mock.Mock()
+ CONST.DEPLOY_SCENARIO = 'test_scenario'
prepare_env.check_env_variables()
mock_logger_info.assert_any_call("Checking environment variables"
"...")
@@ -134,6 +137,47 @@ class PrepareEnvTesting(unittest.TestCase):
mock_logger_info.assert_any_call(test_utils.
SubstrMatch(" IS_CI_RUN="))
+ def test_get_deployment_handler_missing_const_vars(self):
+ with mock.patch('functest.ci.prepare_env.'
+ 'factory.Factory.get_handler') as m:
+ CONST.INSTALLER_IP = None
+ prepare_env.get_deployment_handler()
+ self.assertFalse(m.called)
+
+ CONST.INSTALLER_TYPE = None
+ prepare_env.get_deployment_handler()
+ self.assertFalse(m.called)
+
+ @mock.patch('functest.ci.prepare_env.logger.debug')
+ def test_get_deployment_handler_missing_print_deploy_info(self,
+ mock_debug):
+ with mock.patch('functest.ci.prepare_env.'
+ 'factory.Factory.get_handler') as m, \
+ mock.patch('functest.ci.prepare_env.'
+ 'ft_utils.get_parameter_from_yaml',
+ side_effect=ValueError):
+ CONST.INSTALLER_IP = 'test_ip'
+ CONST.INSTALLER_TYPE = 'test_inst_type'
+ opnfv_constants.INSTALLERS = ['test_inst_type']
+ prepare_env.get_deployment_handler()
+ msg = ('Printing deployment info is not supported for '
+ 'test_inst_type')
+ mock_debug.assert_any_call(msg)
+ self.assertFalse(m.called)
+
+ @mock.patch('functest.ci.prepare_env.logger.debug')
+ def test_get_deployment_handler_exception(self, mock_debug):
+ with mock.patch('functest.ci.prepare_env.'
+ 'factory.Factory.get_handler',
+ side_effect=Exception), \
+ mock.patch('functest.ci.prepare_env.'
+ 'ft_utils.get_parameter_from_yaml'):
+ CONST.INSTALLER_IP = 'test_ip'
+ CONST.INSTALLER_TYPE = 'test_inst_type'
+ opnfv_constants.INSTALLERS = ['test_inst_type']
+ prepare_env.get_deployment_handler()
+ self.assertTrue(mock_debug.called)
+
@mock.patch('functest.ci.prepare_env.logger.info')
@mock.patch('functest.ci.prepare_env.logger.debug')
def test_create_directories_missing_dir(self, mock_logger_debug,
@@ -228,6 +272,36 @@ class PrepareEnvTesting(unittest.TestCase):
prepare_env.source_rc_file()
+ @mock.patch('functest.ci.prepare_env.logger.debug')
+ def test_patch_file(self, mock_logger_debug):
+ with mock.patch("__builtin__.open", mock.mock_open()), \
+ mock.patch('functest.ci.prepare_env.yaml.safe_load',
+ return_value={'test_scenario': {'tkey': 'tvalue'}}), \
+ mock.patch('functest.ci.prepare_env.ft_utils.get_functest_yaml',
+ return_value={'tkey1': 'tvalue1'}), \
+ mock.patch('functest.ci.prepare_env.os.remove') as m, \
+ mock.patch('functest.ci.prepare_env.yaml.dump'):
+ CONST.DEPLOY_SCENARIO = 'test_scenario'
+ prepare_env.patch_file('test_file')
+ self.assertTrue(m.called)
+
+ @mock.patch('functest.ci.prepare_env.logger.info')
+ def test_verify_deployment_error(self, mock_logger_error):
+ mock_popen = mock.Mock()
+ attrs = {'poll.return_value': None,
+ 'stdout.readline.return_value': 'ERROR'}
+ mock_popen.configure_mock(**attrs)
+
+ with mock.patch('functest.ci.prepare_env.print_separator') as m, \
+ mock.patch('functest.ci.prepare_env.subprocess.Popen',
+ return_value=mock_popen), \
+ self.assertRaises(Exception) as context:
+ prepare_env.verify_deployment()
+ self.assertTrue(m.called)
+ msg = "Problem while running 'check_os.sh'."
+ mock_logger_error.assert_called_once_with('ERROR')
+ self.assertTrue(msg in context)
+
def _get_rally_creds(self):
return {"type": "ExistingCloud",
"admin": {"username": 'test_user_name',
@@ -271,6 +345,33 @@ class PrepareEnvTesting(unittest.TestCase):
"Rally plugins.")
mock_exec.assert_any_call(cmd, error_msg=error_msg)
+ @mock.patch('functest.ci.prepare_env.logger.debug')
+ def test_install_tempest(self, mock_logger_debug):
+ mock_popen = mock.Mock()
+ attrs = {'poll.return_value': None,
+ 'stdout.readline.return_value': '0'}
+ mock_popen.configure_mock(**attrs)
+
+ CONST.tempest_deployment_name = 'test_dep_name'
+ with mock.patch('functest.ci.prepare_env.'
+ 'ft_utils.execute_command_raise',
+ side_effect=Exception), \
+ mock.patch('functest.ci.prepare_env.subprocess.Popen',
+ return_value=mock_popen), \
+ self.assertRaises(Exception):
+ prepare_env.install_tempest()
+ mock_logger_debug.assert_any_call("Tempest test_dep_name"
+ " does not exist")
+
+ def test_create_flavor(self):
+ with mock.patch('functest.ci.prepare_env.'
+ 'os_utils.get_or_create_flavor',
+ return_value=('test_', None)), \
+ self.assertRaises(Exception) as context:
+ prepare_env.create_flavor()
+ msg = 'Failed to create flavor'
+ self.assertTrue(msg in context)
+
@mock.patch('functest.ci.prepare_env.sys.exit')
@mock.patch('functest.ci.prepare_env.logger.error')
def test_check_environment_missing_file(self, mock_logger_error,
@@ -299,6 +400,7 @@ class PrepareEnvTesting(unittest.TestCase):
mock_logger_info.assert_any_call("Functest environment"
" is installed.")
+ @mock.patch('functest.ci.prepare_env.print_deployment_info')
@mock.patch('functest.ci.prepare_env.check_environment')
@mock.patch('functest.ci.prepare_env.create_flavor')
@mock.patch('functest.ci.prepare_env.install_tempest')
@@ -307,19 +409,21 @@ class PrepareEnvTesting(unittest.TestCase):
@mock.patch('functest.ci.prepare_env.patch_config_file')
@mock.patch('functest.ci.prepare_env.source_rc_file')
@mock.patch('functest.ci.prepare_env.create_directories')
+ @mock.patch('functest.ci.prepare_env.get_deployment_handler')
@mock.patch('functest.ci.prepare_env.check_env_variables')
@mock.patch('functest.ci.prepare_env.logger.info')
- def test_main_start(self, mock_logger_info, mock_env_var,
+ def test_main_start(self, mock_logger_info, mock_env_var, mock_dep_handler,
mock_create_dir, mock_source_rc, mock_patch_config,
mock_verify_depl, mock_install_rally,
mock_install_temp, mock_create_flavor,
- mock_check_env):
+ mock_check_env, mock_print_info):
with mock.patch("__builtin__.open", mock.mock_open()) as m:
args = {'action': 'start'}
self.assertEqual(prepare_env.main(**args), 0)
mock_logger_info.assert_any_call("######### Preparing Functest "
"environment #########\n")
self.assertTrue(mock_env_var.called)
+ self.assertTrue(mock_dep_handler.called)
self.assertTrue(mock_create_dir.called)
self.assertTrue(mock_source_rc.called)
self.assertTrue(mock_patch_config.called)
@@ -329,6 +433,7 @@ class PrepareEnvTesting(unittest.TestCase):
self.assertTrue(mock_create_flavor.called)
m.assert_called_once_with(CONST.env_active, "w")
self.assertTrue(mock_check_env.called)
+ self.assertTrue(mock_print_info.called)
@mock.patch('functest.ci.prepare_env.check_environment')
def test_main_check(self, mock_check_env):
diff --git a/functest/tests/unit/ci/test_run_tests.py b/functest/tests/unit/ci/test_run_tests.py
index 021406109..7d02b1af1 100644
--- a/functest/tests/unit/ci/test_run_tests.py
+++ b/functest/tests/unit/ci/test_run_tests.py
@@ -37,6 +37,9 @@ class RunTestsTesting(unittest.TestCase):
attrs = {'get_tiers.return_value': [self.tier]}
self.tiers.configure_mock(**attrs)
+ self.run_tests_parser = run_tests.RunTestsParser()
+ self.global_variables = run_tests.GlobalVariables()
+
@mock.patch('functest.ci.run_tests.logger.info')
def test_print_separator(self, mock_logger_info):
run_tests.print_separator(self.sep)
@@ -121,8 +124,8 @@ class RunTestsTesting(unittest.TestCase):
def test_run_tests_import_test_class_exception(self):
mock_test = mock.Mock()
- args = {'get_name': 'test_name',
- 'needs_clean': False}
+ args = {'get_name.return_value': 'test_name',
+ 'needs_clean.return_value': False}
mock_test.configure_mock(**args)
with mock.patch('functest.ci.run_tests.print_separator'),\
mock.patch('functest.ci.run_tests.source_rc_file'), \
@@ -133,6 +136,28 @@ class RunTestsTesting(unittest.TestCase):
msg = "Cannot import the class for the test case."
self.assertTrue(msg in context)
+ def test_run_tests_default(self):
+ mock_test = mock.Mock()
+ args = {'get_name.return_value': 'test_name',
+ 'needs_clean.return_value': True}
+ mock_test.configure_mock(**args)
+ test_run_dict = {'module': 'test_module',
+ 'class': mock.Mock,
+ 'args': 'test_args'}
+ with mock.patch('functest.ci.run_tests.print_separator'),\
+ mock.patch('functest.ci.run_tests.source_rc_file'), \
+ mock.patch('functest.ci.run_tests.generate_os_snapshot'), \
+ mock.patch('functest.ci.run_tests.cleanup'), \
+ mock.patch('functest.ci.run_tests.update_test_info'), \
+ mock.patch('functest.ci.run_tests.get_run_dict',
+ return_value=test_run_dict), \
+ mock.patch('functest.ci.run_tests.generate_report.main'), \
+ self.assertRaises(run_tests.BlockingTestFailed) as context:
+ run_tests.GlobalVariables.CLEAN_FLAG = True
+ run_tests.run_test(mock_test, 'tier_name')
+ msg = 'The test case test_name failed and is blocking'
+ self.assertTrue(msg in context)
+
@mock.patch('functest.ci.run_tests.logger.info')
def test_run_tier_default(self, mock_logger_info):
with mock.patch('functest.ci.run_tests.print_separator'), \
@@ -187,6 +212,61 @@ class RunTestsTesting(unittest.TestCase):
self.assertEqual(run_tests.main(**kwargs),
run_tests.Result.EX_ERROR)
+ def test_main_default(self):
+ kwargs = {'test': 'test_name', 'noclean': True, 'report': True}
+ mock_obj = mock.Mock()
+ args = {'get_tier.return_value': True,
+ 'get_test.return_value': False}
+ mock_obj.configure_mock(**args)
+ with mock.patch('functest.ci.run_tests.tb.TierBuilder',
+ return_value=mock_obj), \
+ mock.patch('functest.ci.run_tests.source_rc_file'), \
+ mock.patch('functest.ci.run_tests.generate_report.init'), \
+ mock.patch('functest.ci.run_tests.run_tier') as m:
+ self.assertEqual(run_tests.main(**kwargs),
+ run_tests.Result.EX_OK)
+ self.assertTrue(m.called)
+
+ mock_obj = mock.Mock()
+ args = {'get_tier.return_value': False,
+ 'get_test.return_value': True}
+ mock_obj.configure_mock(**args)
+ with mock.patch('functest.ci.run_tests.tb.TierBuilder',
+ return_value=mock_obj), \
+ mock.patch('functest.ci.run_tests.source_rc_file'), \
+ mock.patch('functest.ci.run_tests.generate_report.init'), \
+ mock.patch('functest.ci.run_tests.run_test') as m:
+ self.assertEqual(run_tests.main(**kwargs),
+ run_tests.Result.EX_OK)
+ self.assertTrue(m.called)
+
+ kwargs = {'test': 'all', 'noclean': True, 'report': True}
+ mock_obj = mock.Mock()
+ args = {'get_tier.return_value': False,
+ 'get_test.return_value': False}
+ mock_obj.configure_mock(**args)
+ with mock.patch('functest.ci.run_tests.tb.TierBuilder',
+ return_value=mock_obj), \
+ mock.patch('functest.ci.run_tests.source_rc_file'), \
+ mock.patch('functest.ci.run_tests.generate_report.init'), \
+ mock.patch('functest.ci.run_tests.run_all') as m:
+ self.assertEqual(run_tests.main(**kwargs),
+ run_tests.Result.EX_OK)
+ self.assertTrue(m.called)
+
+ kwargs = {'test': 'any', 'noclean': True, 'report': True}
+ mock_obj = mock.Mock()
+ args = {'get_tier.return_value': False,
+ 'get_test.return_value': False}
+ mock_obj.configure_mock(**args)
+ with mock.patch('functest.ci.run_tests.tb.TierBuilder',
+ return_value=mock_obj), \
+ mock.patch('functest.ci.run_tests.source_rc_file'), \
+ mock.patch('functest.ci.run_tests.generate_report.init'), \
+ mock.patch('functest.ci.run_tests.logger.debug') as m:
+ self.assertEqual(run_tests.main(**kwargs),
+ run_tests.Result.EX_ERROR)
+ self.assertTrue(m.called)
if __name__ == "__main__":
unittest.main(verbosity=2)
diff --git a/functest/tests/unit/ci/test_tier_handler.py b/functest/tests/unit/ci/test_tier_handler.py
index 01d99d7e7..21df4098b 100644
--- a/functest/tests/unit/ci/test_tier_handler.py
+++ b/functest/tests/unit/ci/test_tier_handler.py
@@ -41,6 +41,15 @@ class TierHandlerTesting(unittest.TestCase):
self.dependency = tier_handler.Dependency('test_installer',
'test_scenario')
+ self.testcase.str = self.testcase.__str__()
+ self.dependency.str = self.dependency.__str__()
+ self.tier.str = self.tier.__str__()
+
+ def test_split_text(self):
+ test_str = 'this is for testing'
+ self.assertEqual(tier_handler.split_text(test_str, 10),
+ ['this is ', 'for ', 'testing '])
+
def test_add_test(self):
self.tier.add_test(self.test)
self.assertEqual(self.tier.tests_array,
diff --git a/functest/tests/unit/opnfv_tests/openstack/tempest/test_conf_utils.py b/functest/tests/unit/opnfv_tests/openstack/tempest/test_conf_utils.py
index caf21925a..8ca5cc5b6 100644
--- a/functest/tests/unit/opnfv_tests/openstack/tempest/test_conf_utils.py
+++ b/functest/tests/unit/opnfv_tests/openstack/tempest/test_conf_utils.py
@@ -37,7 +37,6 @@ class OSTempestConfUtilsTesting(unittest.TestCase):
self.assertTrue(msg in context)
def test_create_tempest_resources_missing_image(self):
- CONST.tempest_use_custom_images = 'test_image'
with mock.patch('functest.opnfv_tests.openstack.tempest.conf_utils.'
'os_utils.get_keystone_client',
return_value=mock.Mock()), \
@@ -54,13 +53,18 @@ class OSTempestConfUtilsTesting(unittest.TestCase):
'os_utils.get_or_create_image',
return_value=(mock.Mock(), None)), \
self.assertRaises(Exception) as context:
+
+ CONST.tempest_use_custom_images = True
conf_utils.create_tempest_resources()
msg = 'Failed to create image'
self.assertTrue(msg in context)
+ CONST.tempest_use_custom_images = False
+ conf_utils.create_tempest_resources(use_custom_images=True)
+ msg = 'Failed to create image'
+ self.assertTrue(msg in context)
+
def test_create_tempest_resources_missing_flavor(self):
- CONST.tempest_use_custom_images = 'test_image'
- CONST.tempest_use_custom_flavors = 'test_flavour'
with mock.patch('functest.opnfv_tests.openstack.tempest.conf_utils.'
'os_utils.get_keystone_client',
return_value=mock.Mock()), \
@@ -80,10 +84,18 @@ class OSTempestConfUtilsTesting(unittest.TestCase):
'os_utils.get_or_create_flavor',
return_value=(mock.Mock(), None)), \
self.assertRaises(Exception) as context:
+ CONST.tempest_use_custom_images = True
+ CONST.tempest_use_custom_flavors = True
conf_utils.create_tempest_resources()
msg = 'Failed to create flavor'
self.assertTrue(msg in context)
+ CONST.tempest_use_custom_images = True
+ CONST.tempest_use_custom_flavors = False
+ conf_utils.create_tempest_resources(use_custom_flavors=False)
+ msg = 'Failed to create flavor'
+ self.assertTrue(msg in context)
+
def test_get_verifier_id_missing_verifier(self):
CONST.tempest_deployment_name = 'test_deploy_name'
with mock.patch('functest.opnfv_tests.openstack.tempest.'
@@ -153,6 +165,210 @@ class OSTempestConfUtilsTesting(unittest.TestCase):
self.assertTrue(m1.called)
self.assertTrue(m2.called)
+ def test_get_repo_tag_default(self):
+ mock_popen = mock.Mock()
+ attrs = {'stdout.readline.return_value': 'test_tag'}
+ mock_popen.configure_mock(**attrs)
+
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.subprocess.Popen',
+ return_value=mock_popen):
+ self.assertEqual(conf_utils.get_repo_tag('test_repo'),
+ 'test_tag')
+
+ def test_backup_tempest_config_default(self):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os.path.exists',
+ return_value=False), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os.makedirs') as m1, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.shutil.copyfile') as m2:
+ conf_utils.backup_tempest_config('test_conf_file')
+ self.assertTrue(m1.called)
+ self.assertTrue(m2.called)
+
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os.path.exists',
+ return_value=True), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.shutil.copyfile') as m2:
+ conf_utils.backup_tempest_config('test_conf_file')
+ self.assertTrue(m2.called)
+
+ def test_configure_tempest_default(self):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_verifier',
+ return_value='test_conf_file'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_tempest_update_params') as m1, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_tempest_multisite_params') as m2:
+ conf_utils.configure_tempest('test_dep_dir',
+ MODE='feature_multisite')
+ self.assertTrue(m1.called)
+ self.assertTrue(m2.called)
+
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_verifier',
+ return_value='test_conf_file'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_tempest_update_params') as m1:
+ conf_utils.configure_tempest('test_dep_dir')
+ self.assertTrue(m1.called)
+ self.assertTrue(m2.called)
+
+ def test_configure_tempest_defcore_default(self):
+ img_flavor_dict = {'image_id': 'test_image_id',
+ 'flavor_id': 'test_flavor_id',
+ 'image_id_alt': 'test_image_alt_id',
+ 'flavor_id_alt': 'test_flavor_alt_id'}
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_verifier',
+ return_value='test_conf_file'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.configure_tempest_update_params'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'set') as mset, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'read') as mread, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'write') as mwrite, \
+ mock.patch('__builtin__.open', mock.mock_open()), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.shutil.copyfile'):
+ CONST.dir_functest_test = 'test_dir'
+ CONST.refstack_tempest_conf_path = 'test_path'
+ conf_utils.configure_tempest_defcore('test_dep_dir',
+ img_flavor_dict)
+ mset.assert_any_call('compute', 'image_ref', 'test_image_id')
+ mset.assert_any_call('compute', 'image_ref_alt',
+ 'test_image_alt_id')
+ mset.assert_any_call('compute', 'flavor_ref', 'test_flavor_id')
+ mset.assert_any_call('compute', 'flavor_ref_alt',
+ 'test_flavor_alt_id')
+ self.assertTrue(mread.called)
+ self.assertTrue(mwrite.called)
+
+ def _test_missing_param(self, params, image_id, flavor_id):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'set') as mset, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'read') as mread, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'write') as mwrite, \
+ mock.patch('__builtin__.open', mock.mock_open()), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.backup_tempest_config'):
+ CONST.dir_functest_test = 'test_dir'
+ CONST.OS_ENDPOINT_TYPE = None
+ conf_utils.\
+ configure_tempest_update_params('test_conf_file',
+ IMAGE_ID=image_id,
+ FLAVOR_ID=flavor_id)
+ mset.assert_any_call(params[0], params[1], params[2])
+ self.assertTrue(mread.called)
+ self.assertTrue(mwrite.called)
+
+ def test_configure_tempest_update_params_missing_image_id(self):
+ CONST.tempest_use_custom_images = True
+ self._test_missing_param(('compute', 'image_ref',
+ 'test_image_id'), 'test_image_id',
+ None)
+
+ def test_configure_tempest_update_params_missing_image_id_alt(self):
+ CONST.tempest_use_custom_images = True
+ conf_utils.IMAGE_ID_ALT = 'test_image_id_alt'
+ self._test_missing_param(('compute', 'image_ref_alt',
+ 'test_image_id_alt'), None, None)
+
+ def test_configure_tempest_update_params_missing_flavor_id(self):
+ CONST.tempest_use_custom_flavors = True
+ self._test_missing_param(('compute', 'flavor_ref',
+ 'test_flavor_id'), None,
+ 'test_flavor_id')
+
+ def test_configure_tempest_update_params_missing_flavor_id_alt(self):
+ CONST.tempest_use_custom_flavors = True
+ conf_utils.FLAVOR_ID_ALT = 'test_flavor_id_alt'
+ self._test_missing_param(('compute', 'flavor_ref_alt',
+ 'test_flavor_id_alt'), None,
+ None)
+
+ def test_configure_verifier_missing_temp_conf_file(self):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os.path.isfile',
+ return_value=False), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ft_utils.execute_command') as mexe, \
+ self.assertRaises(Exception) as context:
+ conf_utils.configure_verifier('test_dep_dir')
+ mexe.assert_any_call("rally verify configure-verifier")
+ msg = ("Tempest configuration file 'test_dep_dir/tempest.conf'"
+ " NOT found.")
+ self.assertTrue(msg in context)
+
+ def test_configure_verifier_default(self):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os.path.isfile',
+ return_value=True), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ft_utils.execute_command') as mexe:
+ self.assertEqual(conf_utils.configure_verifier('test_dep_dir'),
+ 'test_dep_dir/tempest.conf')
+ mexe.assert_any_call("rally verify configure-verifier "
+ "--reconfigure")
+
+ def test_configure_tempest_multisite_params_without_fuel(self):
+ conf_utils.CI_INSTALLER_TYPE = 'not_fuel'
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.os_utils.get_endpoint',
+ return_value='kingbird_endpoint_url'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'set') as mset, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'read') as mread, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'add_section') as msection, \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ConfigParser.RawConfigParser.'
+ 'write') as mwrite, \
+ mock.patch('__builtin__.open', mock.mock_open()), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.backup_tempest_config'):
+
+ conf_utils.configure_tempest_multisite_params('test_conf_file')
+ msection.assert_any_call("kingbird")
+ mset.assert_any_call('service_available', 'kingbird', 'true')
+ mset.assert_any_call('kingbird', 'endpoint_type', 'publicURL')
+ mset.assert_any_call('kingbird', 'TIME_TO_SYNC', '120')
+ mset.assert_any_call('kingbird', 'endpoint_url',
+ 'kingbird_endpoint_url')
+ self.assertTrue(mread.called)
+ self.assertTrue(mwrite.called)
+
+ def test_install_verifier_ext_default(self):
+ with mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.get_repo_tag',
+ return_value='test_tag'), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.'
+ 'conf_utils.ft_utils.'
+ 'execute_command_raise') as mexe:
+ conf_utils.install_verifier_ext('test_path')
+ cmd = ("rally verify add-verifier-ext --source test_path "
+ "--version test_tag")
+ error_msg = ("Problem while adding verifier extension from"
+ " test_path")
+ mexe.assert_called_once_with(cmd, error_msg=error_msg)
if __name__ == "__main__":
unittest.main(verbosity=2)
diff --git a/functest/tests/unit/opnfv_tests/openstack/tempest/test_tempest.py b/functest/tests/unit/opnfv_tests/openstack/tempest/test_tempest.py
index 398c53bf3..34031b404 100644
--- a/functest/tests/unit/opnfv_tests/openstack/tempest/test_tempest.py
+++ b/functest/tests/unit/opnfv_tests/openstack/tempest/test_tempest.py
@@ -13,6 +13,7 @@ import mock
from functest.core import testcase
from functest.opnfv_tests.openstack.tempest import tempest
from functest.opnfv_tests.openstack.tempest import conf_utils
+from functest.utils.constants import CONST
class OSTempestTesting(unittest.TestCase):
@@ -33,6 +34,14 @@ class OSTempestTesting(unittest.TestCase):
'conf_utils.get_verifier_deployment_dir',
return_value='test_verifier_deploy_dir'):
self.tempestcommon = tempest.TempestCommon()
+ self.tempestsmoke_serial = tempest.TempestSmokeSerial()
+ self.tempestsmoke_parallel = tempest.TempestSmokeParallel()
+ self.tempestfull_parallel = tempest.TempestFullParallel()
+ with mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+ 'conf_utils.install_verifier_ext'):
+ self.tempestmultisite = tempest.TempestMultisite()
+ self.tempestcustom = tempest.TempestCustom()
+ self.tempestdefcore = tempest.TempestDefcore()
@mock.patch('functest.opnfv_tests.openstack.tempest.tempest.logger.debug')
def test_generate_test_list_defcore_mode(self, mock_logger_debug):
@@ -100,6 +109,48 @@ class OSTempestTesting(unittest.TestCase):
with self.assertRaises(Exception):
self.tempestcommon.parse_verifier_result()
+ def test_apply_tempest_blacklist_no_blacklist(self):
+ with mock.patch('__builtin__.open', mock.mock_open()) as m, \
+ mock.patch.object(self.tempestcommon, 'read_file',
+ return_value=['test1', 'test2']):
+ conf_utils.TEMPEST_BLACKLIST = Exception
+ CONST.INSTALLER_TYPE = 'installer_type'
+ CONST.DEPLOY_SCENARIO = 'deploy_scenario'
+ self.tempestcommon.apply_tempest_blacklist()
+ obj = m()
+ obj.write.assert_any_call('test1\n')
+ obj.write.assert_any_call('test2\n')
+
+ def test_apply_tempest_blacklist_default(self):
+ item_dict = {'scenarios': ['deploy_scenario'],
+ 'installers': ['installer_type'],
+ 'tests': ['test2']}
+ with mock.patch('__builtin__.open', mock.mock_open()) as m, \
+ mock.patch.object(self.tempestcommon, 'read_file',
+ return_value=['test1', 'test2']), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+ 'yaml.safe_load', return_value=item_dict):
+ CONST.INSTALLER_TYPE = 'installer_type'
+ CONST.DEPLOY_SCENARIO = 'deploy_scenario'
+ self.tempestcommon.apply_tempest_blacklist()
+ obj = m()
+ obj.write.assert_any_call('test1\n')
+ self.assertFalse(obj.write.assert_any_call('test2\n'))
+
+ @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.logger.info')
+ def test_run_verifier_tests_default(self, mock_logger_info):
+ with mock.patch('__builtin__.open', mock.mock_open()), \
+ mock.patch('__builtin__.iter', return_value=['\} tempest\.']), \
+ mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+ 'subprocess.Popen'):
+ conf_utils.TEMPEST_LIST = 'test_tempest_list'
+ cmd_line = ("rally verify start --load-list "
+ "test_tempest_list --detailed")
+ self.tempestcommon.run_verifier_tests()
+ mock_logger_info. \
+ assert_any_call("Starting Tempest test suite: '%s'."
+ % cmd_line)
+
@mock.patch('functest.opnfv_tests.openstack.tempest.tempest.logger.info')
def test_parse_verifier_result_default(self, mock_logger_info):
self.tempestcommon.VERIFICATION_ID = 'test_uuid'
diff --git a/functest/tests/unit/opnfv_tests/vnf/ims/test_clearwater.py b/functest/tests/unit/opnfv_tests/vnf/ims/test_clearwater.py
index 527f12e59..18bebfdff 100644
--- a/functest/tests/unit/opnfv_tests/vnf/ims/test_clearwater.py
+++ b/functest/tests/unit/opnfv_tests/vnf/ims/test_clearwater.py
@@ -39,16 +39,48 @@ class ClearwaterTesting(unittest.TestCase):
with mock.patch.object(self.clearwater.orchestrator,
'download_upload_and_deploy_blueprint',
return_value=''):
- self.clearwater.deploy_vnf(self.bp),
+ self.clearwater.deploy_vnf(self.bp)
self.assertEqual(self.clearwater.deploy, True)
def test_undeploy_vnf_deployment_passed(self):
with mock.patch.object(self.clearwater.orchestrator,
'undeploy_deployment'):
self.clearwater.deploy = True
+ self.clearwater.undeploy_vnf()
+ self.assertEqual(self.clearwater.deploy, False)
+
+ def test_undeploy_vnf_deployment_with_undeploy(self):
+ with mock.patch.object(self.clearwater.orchestrator,
+ 'undeploy_deployment') as m:
+ self.clearwater.deploy = False
+ self.clearwater.undeploy_vnf(),
+ self.assertEqual(self.clearwater.deploy, False)
+ self.assertFalse(m.called)
+
+ self.clearwater.orchestrator = None
+ self.clearwater.deploy = True
+ self.clearwater.undeploy_vnf(),
+ self.assertEqual(self.clearwater.deploy, True)
+
+ self.clearwater.deploy = False
self.clearwater.undeploy_vnf(),
self.assertEqual(self.clearwater.deploy, False)
+ def test_set_methods(self):
+ self.clearwater.set_orchestrator(self.orchestrator)
+ self.assertTrue(self.clearwater.orchestrator, self.orchestrator)
+ self.clearwater.set_flavor_id('test_flavor_id')
+ self.assertTrue(self.clearwater.config['flavor_id'], 'test_flavor_id')
+ self.clearwater.set_image_id('test_image_id')
+ self.assertTrue(self.clearwater.config['image_id'], 'test_image_id')
+ self.clearwater.set_agent_user('test_user')
+ self.assertTrue(self.clearwater.config['agent_user'], 'test_user')
+ self.clearwater.set_external_network_name('test_network')
+ self.assertTrue(self.clearwater.config['external_network_name'],
+ 'test_network')
+ self.clearwater.set_public_domain('test_domain')
+ self.assertTrue(self.clearwater.config['public_domain'],
+ 'test_domain')
if __name__ == "__main__":
unittest.main(verbosity=2)
diff --git a/functest/tests/unit/opnfv_tests/vnf/ims/test_orchestrator_cloudify.py b/functest/tests/unit/opnfv_tests/vnf/ims/test_orchestrator_cloudify.py
index 620b0216f..bf6d483f7 100644
--- a/functest/tests/unit/opnfv_tests/vnf/ims/test_orchestrator_cloudify.py
+++ b/functest/tests/unit/opnfv_tests/vnf/ims/test_orchestrator_cloudify.py
@@ -6,6 +6,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
import logging
+import subprocess32 as subprocess
import unittest
import mock
@@ -117,6 +118,60 @@ class ImsVnfTesting(unittest.TestCase):
'dest'),
True)
+ def test_execute_command_failed(self):
+ with mock.patch('__builtin__.open',
+ mock.mock_open(read_data='test_data\n')):
+ subprocess.call = mock.create_autospec(subprocess.call,
+ return_value=0)
+ mock_log = mock.Mock()
+ cmd = 'test_cmd -e test_env bash_script'
+ ret = orchestrator_cloudify.execute_command(cmd, mock_log,
+ timeout=100)
+ self.assertEqual(ret, False)
+
+ def test_execute_command_default(self):
+ with mock.patch('__builtin__.open',
+ mock.mock_open(read_data='test_data\n')):
+ subprocess.call = mock. \
+ create_autospec(subprocess.call,
+ return_value=subprocess.TimeoutExpired)
+ mock_log = mock.Mock()
+ cmd = 'test_cmd -e test_env bash_script'
+ ret = orchestrator_cloudify.execute_command(cmd, mock_log,
+ timeout=100)
+ self.assertEqual(ret, ['test_data\n'])
+
+ def test_set_methods(self):
+ self.orchestrator.set_credentials('test_username', 'test_password',
+ 'test_tenant_name', 'test_auth_url')
+ self.assertTrue(self.orchestrator.config['keystone_username'],
+ 'test_username')
+ self.assertTrue(self.orchestrator.config['keystone_password'],
+ 'test_password')
+ self.assertTrue(self.orchestrator.config['keystone_url'],
+ 'test_auth_url')
+ self.assertTrue(self.orchestrator.config['keystone_tenant_name'],
+ 'test_tenant_name')
+ self.orchestrator.set_flavor_id('test_flavor_id')
+ self.assertTrue(self.orchestrator.config['flavor_id'],
+ 'test_flavor_id')
+ self.orchestrator.set_image_id('test_image_id')
+ self.assertTrue(self.orchestrator.config['image_id'], 'test_image_id')
+ self.orchestrator.set_external_network_name('test_network')
+ self.assertTrue(self.orchestrator.config['external_network_name'],
+ 'test_network')
+ self.orchestrator.set_ssh_user('test_user')
+ self.assertTrue(self.orchestrator.config['ssh_user'],
+ 'test_user')
+ self.orchestrator.set_nova_url('test_nova_url')
+ self.assertTrue(self.orchestrator.config['nova_url'],
+ 'test_nova_url')
+ self.orchestrator.set_neutron_url('test_neutron_url')
+ self.assertTrue(self.orchestrator.config['neutron_url'],
+ 'test_neutron_url')
+ self.orchestrator.set_nameservers(['test_subnet'])
+ self.assertTrue(self.orchestrator.config['dns_subnet_1'],
+ 'test_subnet')
if __name__ == "__main__":
unittest.main(verbosity=2)
diff --git a/functest/tests/unit/utils/test_functest_logger.py b/functest/tests/unit/utils/test_functest_logger.py
new file mode 100644
index 000000000..42e41a141
--- /dev/null
+++ b/functest/tests/unit/utils/test_functest_logger.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+import logging
+import unittest
+
+import mock
+
+from functest.utils import functest_logger
+from functest.utils.constants import CONST
+
+
+class OSUtilsLogger(unittest.TestCase):
+
+ logging.disable(logging.CRITICAL)
+
+ def setUp(self):
+ with mock.patch('__builtin__.open', mock.mock_open()):
+ with mock.patch('functest.utils.functest_logger.os.path.exists',
+ return_value=True), \
+ mock.patch('functest.utils.functest_logger.'
+ 'json.load'), \
+ mock.patch('functest.utils.functest_logger.'
+ 'logging.config.dictConfig') as m:
+ self.logger = functest_logger.Logger('os_utils')
+ self.assertTrue(m.called)
+ with mock.patch('functest.utils.functest_logger.os.path.exists',
+ return_value=False), \
+ mock.patch('functest.utils.functest_logger.'
+ 'logging.basicConfig') as m:
+ self.logger = functest_logger.Logger('os_utils')
+ self.assertTrue(m.called)
+
+ def test_is_debug_false(self):
+ CONST.CI_DEBUG = False
+ self.assertFalse(self.logger.is_debug())
+
+ def test_is_debug_true(self):
+ CONST.CI_DEBUG = "True"
+ self.assertTrue(self.logger.is_debug())
+
+
+if __name__ == "__main__":
+ unittest.main(verbosity=2)
diff --git a/functest/tests/unit/utils/test_openstack_tacker.py b/functest/tests/unit/utils/test_openstack_tacker.py
index dc7172580..37d77a18f 100644
--- a/functest/tests/unit/utils/test_openstack_tacker.py
+++ b/functest/tests/unit/utils/test_openstack_tacker.py
@@ -6,9 +6,11 @@
# http://www.apache.org/licenses/LICENSE-2.0
import logging
-import mock
import unittest
+import mock
+from tackerclient.v1_0 import client as tackerclient
+
from functest.utils import openstack_tacker
from functest.tests.unit import test_utils
@@ -56,6 +58,13 @@ class OSTackerTesting(unittest.TestCase):
}
return cred_dict
+ def test_get_tacker_client(self):
+ with mock.patch('functest.utils.openstack_tacker.'
+ 'os_utils.get_session'):
+ tackerclient.Client = mock.Mock
+ ret = openstack_tacker.get_tacker_client()
+ self.assertTrue(isinstance(ret, mock.Mock))
+
def test_get_id_from_name(self):
with mock.patch.object(self.tacker_client, 'get',
return_value=self.getresponse):
@@ -183,8 +192,16 @@ class OSTackerTesting(unittest.TestCase):
vnfd_name=self.vnfd)
self.assertEqual(resp, self.vnfd)
- # TODO: Exception('You need to provide an VNFD'
- # 'id or name') AssertionError
+ def test_delete_vnfd_missing_vnfd_name(self):
+ with mock.patch('functest.utils.openstack_tacker.get_vnfd_id',
+ return_value=self.vnfd), \
+ self.assertRaises(Exception) as context:
+ resp = openstack_tacker.delete_vnfd(self.tacker_client,
+ vnfd_id=None,
+ vnfd_name=None)
+ self.assertIsNone(resp)
+ msg = 'You need to provide VNFD id or VNFD name'
+ self.assertTrue(msg in context)
@mock.patch('functest.utils.openstack_tacker.logger.error')
def test_delete_vnfd_exception(self, mock_logger_error):
@@ -253,7 +270,47 @@ class OSTackerTesting(unittest.TestCase):
"client"))
self.assertIsNone(resp)
- # TODO: wait_for_vnf
+ def test_wait_for_vnf_vnf_retrieval_failed(self):
+ with mock.patch('functest.utils.openstack_tacker.get_vnf',
+ return_value=None), \
+ self.assertRaises(Exception) as context:
+ openstack_tacker.wait_for_vnf(self.tacker_client,
+ vnf_id='vnf_id',
+ vnf_name='vnf_name')
+ msg = ("Could not retrieve VNF - id='vnf_id', "
+ "name='vnf_name'")
+ self.assertTrue(msg in context)
+ with mock.patch('functest.utils.openstack_tacker.get_vnf',
+ side_effect=Exception):
+ ret = openstack_tacker.wait_for_vnf(self.tacker_client,
+ vnf_id='vnf_id',
+ vnf_name='vnf_name')
+ self.assertEqual(ret, None)
+
+ def test_wait_for_vnf_vnf_status_error(self):
+ vnf = {'id': 'vnf_id',
+ 'status': 'ERROR'}
+ with mock.patch('functest.utils.openstack_tacker.get_vnf',
+ return_value=vnf), \
+ self.assertRaises(Exception) as context:
+ openstack_tacker.wait_for_vnf(self.tacker_client,
+ vnf_id='vnf_id',
+ vnf_name='vnf_name')
+ msg = ('Error when booting vnf vnf_id')
+ self.assertTrue(msg in context)
+
+ def test_wait_for_vnf_vnf_timeout(self):
+ vnf = {'id': 'vnf_id',
+ 'status': 'PENDING_CREATE'}
+ with mock.patch('functest.utils.openstack_tacker.get_vnf',
+ return_value=vnf), \
+ self.assertRaises(Exception) as context:
+ openstack_tacker.wait_for_vnf(self.tacker_client,
+ vnf_id='vnf_id',
+ vnf_name='vnf_name',
+ timeout=2)
+ msg = ('Timeout when booting vnf vnf_id')
+ self.assertTrue(msg in context)
def test_delete_vnf(self):
with mock.patch('functest.utils.openstack_tacker.get_vnf_id',
@@ -265,8 +322,13 @@ class OSTackerTesting(unittest.TestCase):
vnf_name=self.vnf)
self.assertEqual(resp, self.vnf)
- # TODO: Exception('You need to provide an VNF'
- # 'classifier id or name') AssertionError
+ def test_delete_vnf_missing_vnf_name(self):
+ with self.assertRaises(Exception) as context:
+ openstack_tacker.delete_vnf(self.tacker_client,
+ vnf_id=None,
+ vnf_name=None)
+ msg = 'You need to provide a VNF id or name'
+ self.assertTrue(msg in context)
@mock.patch('functest.utils.openstack_tacker.logger.error')
def test_delete_vnf_exception(self, mock_logger_error):
@@ -345,8 +407,13 @@ class OSTackerTesting(unittest.TestCase):
sfc_name=self.sfc)
self.assertEqual(resp, self.sfc)
- # TODO: Exception('You need to provide an SFC'
- # 'id or name') AssertionError
+ def test_delete_sfc_missing_sfc_name(self):
+ with self.assertRaises(Exception) as context:
+ openstack_tacker.delete_sfc(self.tacker_client,
+ sfc_id=None,
+ sfc_name=None)
+ msg = 'You need to provide an SFC id or name'
+ self.assertTrue(msg in context)
@mock.patch('functest.utils.openstack_tacker.logger.error')
def test_delete_sfc_exception(self, mock_logger_error):
@@ -431,8 +498,13 @@ class OSTackerTesting(unittest.TestCase):
sfc_clf_name=cl)
self.assertEqual(resp, cl)
- # TODO: Exception('You need to provide an SFC'
- # 'classifier id or name') AssertionError
+ def test_delete_sfc_classifier_missing_sfc_name(self):
+ with self.assertRaises(Exception) as context:
+ openstack_tacker.delete_vnf(self.tacker_client,
+ sfc_clf_id=None,
+ sfc_clf_name=None)
+ msg = 'You need to provide an SFCclassifier id or name'
+ self.assertTrue(msg in context)
@mock.patch('functest.utils.openstack_tacker.logger.error')
def test_delete_sfc_classifier_exception(self, mock_logger_error):
diff --git a/functest/tests/unit/utils/test_openstack_utils.py b/functest/tests/unit/utils/test_openstack_utils.py
index 673ad5e20..7f3995d03 100644
--- a/functest/tests/unit/utils/test_openstack_utils.py
+++ b/functest/tests/unit/utils/test_openstack_utils.py
@@ -229,6 +229,12 @@ class OSUtilsTesting(unittest.TestCase):
self.sec_group = {'id': 'sec_group_id',
'name': 'test_sec_group'}
+ self.sec_group_rule = {'id': 'sec_group_rule_id',
+ 'direction': 'direction',
+ 'protocol': 'protocol',
+ 'port_range_max': 'port_max',
+ 'security_group_id': self.sec_group['id'],
+ 'port_range_min': 'port_min'}
self.neutron_floatingip = {'id': 'fip_id',
'floating_ip_address': 'test_ip'}
self.neutron_client = mock.Mock()
@@ -260,6 +266,9 @@ class OSUtilsTesting(unittest.TestCase):
'show_bgpvpn.return_value': self.mock_return,
'list_security_groups.return_value': {'security_groups':
[self.sec_group]},
+ 'list_security_group_rules.'
+ 'return_value': {'security_group_rules':
+ [self.sec_group_rule]},
'create_security_group_rule.return_value': mock.Mock(),
'create_security_group.return_value': {'security_group':
self.sec_group},
@@ -1247,6 +1256,52 @@ class OSUtilsTesting(unittest.TestCase):
'test_sec_group'),
'sec_group_id')
+ def test_get_security_group_rules_default(self):
+ self.assertEqual(openstack_utils.
+ get_security_group_rules(self.neutron_client,
+ self.sec_group['id']),
+ [self.sec_group_rule])
+
+ @mock.patch('functest.utils.openstack_utils.logger.error')
+ def test_get_security_group_rules_exception(self, mock_logger_error):
+ self.assertEqual(openstack_utils.
+ get_security_group_rules(Exception,
+ 'sec_group_id'),
+ None)
+ self.assertTrue(mock_logger_error.called)
+
+ def test_check_security_group_rules_not_exists(self):
+ self.assertEqual(openstack_utils.
+ check_security_group_rules(self.neutron_client,
+ 'sec_group_id_2',
+ 'direction',
+ 'protocol',
+ 'port_min',
+ 'port_max'),
+ True)
+
+ def test_check_security_group_rules_exists(self):
+ self.assertEqual(openstack_utils.
+ check_security_group_rules(self.neutron_client,
+ self.sec_group['id'],
+ 'direction',
+ 'protocol',
+ 'port_min',
+ 'port_max'),
+ False)
+
+ @mock.patch('functest.utils.openstack_utils.logger.error')
+ def test_check_security_group_rules_exception(self, mock_logger_error):
+ self.assertEqual(openstack_utils.
+ check_security_group_rules(Exception,
+ 'sec_group_id',
+ 'direction',
+ 'protocol',
+ 'port_max',
+ 'port_min'),
+ None)
+ self.assertTrue(mock_logger_error.called)
+
def test_create_security_group_default(self):
self.assertEqual(openstack_utils.
create_security_group(self.neutron_client,
diff --git a/functest/utils/openstack_utils.py b/functest/utils/openstack_utils.py
index ffc870f62..4663f7ba6 100644
--- a/functest/utils/openstack_utils.py
+++ b/functest/utils/openstack_utils.py
@@ -1054,6 +1054,40 @@ def create_secgroup_rule(neutron_client, sg_id, direction, protocol,
return False
+def get_security_group_rules(neutron_client, sg_id):
+ try:
+ security_rules = neutron_client.list_security_group_rules()[
+ 'security_group_rules']
+ security_rules = [rule for rule in security_rules
+ if rule["security_group_id"] == sg_id]
+ return security_rules
+ except Exception, e:
+ logger.error("Error [get_security_group_rules(neutron_client, sg_id)]:"
+ " %s" % e)
+ return None
+
+
+def check_security_group_rules(neutron_client, sg_id, direction, protocol,
+ port_min=None, port_max=None):
+ try:
+ security_rules = get_security_group_rules(neutron_client, sg_id)
+ security_rules = [rule for rule in security_rules
+ if (rule["direction"].lower() == direction
+ and rule["protocol"].lower() == protocol
+ and rule["port_range_min"] == port_min
+ and rule["port_range_max"] == port_max)]
+ if len(security_rules) == 0:
+ return True
+ else:
+ return False
+ except Exception, e:
+ logger.error("Error [check_security_group_rules("
+ " neutron_client, sg_id, direction,"
+ " protocol, port_min=None, port_max=None)]: "
+ "%s" % e)
+ return None
+
+
def create_security_group_full(neutron_client,
sg_name, sg_description):
sg_id = get_security_group_id(neutron_client, sg_name)