aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/com/pres/framework/framework.html52
-rw-r--r--docs/com/pres/framework/framework.md266
-rw-r--r--docs/results/danube/2.0/apex.html1057
-rw-r--r--docs/results/danube/2.0/compass.html493
-rw-r--r--docs/results/danube/2.0/fuel.html1447
-rw-r--r--docs/results/danube/2.0/joid.html421
-rw-r--r--docs/results/danube/2.0/scenario_history.txt1454
-rw-r--r--docs/results/danube/2.0/validated_scenario_history.txt212
-rw-r--r--docs/testing/user/configguide/configguide.rst1
-rw-r--r--docs/testing/user/userguide/index.rst120
-rwxr-xr-xfunctest/ci/check_os.sh24
-rw-r--r--functest/ci/config_functest.yaml2
-rw-r--r--[-rwxr-xr-x]functest/ci/generate_report.py9
-rw-r--r--functest/ci/logging.ini70
-rw-r--r--functest/ci/logging.json29
-rwxr-xr-xfunctest/ci/prepare_env.py7
-rwxr-xr-xfunctest/ci/run_tests.py10
-rw-r--r--functest/cli/cli_base.py6
-rw-r--r--functest/core/feature.py19
-rw-r--r--functest/core/testcase.py17
-rw-r--r--functest/core/vnf_base.py41
-rw-r--r--functest/opnfv_tests/features/barometer.py6
-rwxr-xr-xfunctest/opnfv_tests/openstack/examples/create_instance_and_ip.py128
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py4
-rw-r--r--functest/opnfv_tests/openstack/refstack_client/defcore.txt9
-rwxr-xr-xfunctest/opnfv_tests/openstack/refstack_client/refstack_client.py5
-rwxr-xr-xfunctest/opnfv_tests/openstack/refstack_client/tempest_conf.py5
-rw-r--r--functest/opnfv_tests/openstack/tempest/conf_utils.py13
-rw-r--r--functest/opnfv_tests/openstack/tempest/tempest.py4
-rwxr-xr-xfunctest/opnfv_tests/openstack/vping/vping_ssh.py5
-rwxr-xr-xfunctest/opnfv_tests/openstack/vping/vping_userdata.py5
-rwxr-xr-xfunctest/opnfv_tests/sdn/odl/odl.py33
-rw-r--r--functest/opnfv_tests/sdn/onos/onos.py4
-rwxr-xr-xfunctest/opnfv_tests/sdn/onos/sfc/sfc.py7
-rw-r--r--functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py5
-rw-r--r--functest/opnfv_tests/sdn/onos/teston/adapters/client.py4
-rw-r--r--functest/opnfv_tests/sdn/onos/teston/adapters/connection.py4
-rw-r--r--functest/opnfv_tests/sdn/onos/teston/adapters/environment.py4
-rwxr-xr-xfunctest/opnfv_tests/vnf/aaa/aaa.py5
-rw-r--r--functest/opnfv_tests/vnf/ims/clearwater_ims_base.py4
-rw-r--r--functest/opnfv_tests/vnf/ims/cloudify_ims.py4
-rw-r--r--functest/opnfv_tests/vnf/ims/opera_ims.py4
-rwxr-xr-xfunctest/opnfv_tests/vnf/ims/orchestra_ims.py5
-rw-r--r--functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py5
-rw-r--r--functest/tests/unit/core/test_feature.py2
-rw-r--r--functest/tests/unit/odl/test_odl.py12
-rw-r--r--functest/tests/unit/utils/test_functest_logger.py48
-rw-r--r--functest/tests/unit/utils/test_openstack_utils.py50
-rw-r--r--functest/utils/functest_logger.py83
-rw-r--r--functest/utils/functest_utils.py4
-rw-r--r--functest/utils/openstack/cinder.py7
-rw-r--r--functest/utils/openstack/glance.py7
-rw-r--r--functest/utils/openstack/keystone.py7
-rw-r--r--functest/utils/openstack/neutron.py7
-rw-r--r--functest/utils/openstack/nova.py7
-rwxr-xr-xfunctest/utils/openstack_clean.py5
-rwxr-xr-xfunctest/utils/openstack_snapshot.py5
-rw-r--r--functest/utils/openstack_tacker.py4
-rw-r--r--functest/utils/openstack_utils.py21
-rw-r--r--requirements.txt1
60 files changed, 5808 insertions, 491 deletions
diff --git a/docs/com/pres/framework/framework.html b/docs/com/pres/framework/framework.html
new file mode 100644
index 00000000..950c2beb
--- /dev/null
+++ b/docs/com/pres/framework/framework.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+<title>OPNFV Functest Framework</title>
+<meta name="author" content="Cédric Ollivier">
+<meta name="viewport"
+ content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<link rel="stylesheet" href="../reveal.js/css/reveal.css">
+<link rel="stylesheet" href="../reveal.js/css/theme/white.css">
+<link rel="stylesheet" href="../reveal.js/lib/css/zenburn.css">
+<script>
+var link = document.createElement( 'link' );
+link.rel = 'stylesheet';
+link.type = 'text/css';
+link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js/css/print/pdf.css' : '../reveal.js/css/print/paper.css';
+document.getElementsByTagName( 'head' )[0].appendChild( link );
+</script>
+</head>
+<body>
+ <div class="reveal">
+ <div class="slides">
+ <section data-markdown="framework.md" data-separator="^\n\n\n"
+ data-separator-vertical="^\n\n" data-separator-notes="^Note:"></section>
+ </div>
+ </div>
+ <script src="../reveal.js/lib/js/head.min.js"></script>
+ <script src="../reveal.js/js/reveal.js"></script>
+ <script>
+ Reveal.initialize({
+ dependencies : [ {
+ src : '../reveal.js/plugin/markdown/marked.js',
+ condition : function() {
+ return !!document.querySelector('[data-markdown]');
+ }
+ }, {
+ src : '../reveal.js/plugin/markdown/markdown.js',
+ condition : function() {
+ return !!document.querySelector('[data-markdown]');
+ }
+ }, {
+ src: '../reveal.js/plugin/highlight/highlight.js',
+ async: true,
+ callback: function() {
+ hljs.initHighlightingOnLoad();
+ }
+ }, {
+ src: '../reveal.js/plugin/notes/notes.js',
+ async: true
+ } ]
+ });
+ </script>
+</body>
+</html>
diff --git a/docs/com/pres/framework/framework.md b/docs/com/pres/framework/framework.md
new file mode 100644
index 00000000..b80ad3dd
--- /dev/null
+++ b/docs/com/pres/framework/framework.md
@@ -0,0 +1,266 @@
+# Functest Framework
+
+created by [Cédric Ollivier](mailto:cedric.ollivier@orange.com)
+
+2017/04/24
+
+Note:
+
+- Functest integrates lots of heteregeounous testcases:
+ - python vs bash
+ - internal vs external
+- it aims to benefit from object programming
+ - to define common operations
+ - to avoid conditional instructions regarding the testcases
+ - to avoid duplicating code
+ - to ease the integration of third-party testcases (written in Bash or Python)
+
+
+
+## Quick overview
+
+
+### Functest function calls
+
+- **CI** calls *run_tests.py* (please see [jenkins jobs](https://gerrit.opnfv.org/gerrit/gitweb?p=releng.git;a=tree;f=jjb/functest))
+- *run_tests.py* parses *functest/ci/testcases.yaml* to:
+ - check which testcase(s) must be run
+ - execute the common operations on every testcase (run, push its results to db...)
+<!-- .element: class="fragment highlight-red"-->
+ - return the right status code to **CI**
+
+
+### Our target
+
+- limit run_tests.py instructions by defining:
+ - the basic testcase attritutes
+ - all common operations
+ - the status codes expected
+- avoid duplicating codes between testcases
+- ease the developpement of third-party testcases (aka features)
+
+
+
+## class TestCase
+
+base model for single test case
+
+
+### instance attributes
+
+- project_name (default: 'functest')
+- case_name
+- criteria
+- start_time
+- stop_time
+- details
+
+
+### methods
+
+| Method | Purpose |
+|-------------------|--------------------------------------------|
+| run(**kwargs) | run the test case |
+| check_criteria() | interpret the results of the test case |
+| push_to_db() | push the results of the test case to the DB|
+
+
+### run(**kwargs)
+
+- the subclasses must override the default implementation which is false on purpose
+- the new implementation must set the following attributes to push the results to DB:
+ - criteria
+ - start_time
+ - stop_time
+
+
+### class attributes
+
+| Status code | Returned when |
+|--------------------|---------------------|
+| EX_OK | everything is OK |
+| EX_RUN_ERROR | run() failed |
+| EX_TESTCASE_FAILED | results are false |
+| EX_PUSH_TO_DB_ERROR| push_to_db() failed |
+
+
+### run_tests.py
+
+```python
+module = importlib.import_module(run_dict['module'])
+cls = getattr(module, run_dict['class'])
+test_dict = ft_utils.get_dict_by_test(test_name)
+test_case = cls(**test_dict)
+try:
+ kwargs = run_dict['args']
+ result = test_case.run(**kwargs)
+except KeyError:
+ result = test_case.run()
+if result == testcase.TestCase.EX_OK:
+ if GlobalVariables.REPORT_FLAG:
+ test_case.push_to_db()
+ result = test_case.check_criteria()
+```
+
+
+
+## Your first test case
+
+
+### first.py
+
+```python
+#!/usr/bin/env python
+
+import time
+
+from functest.core import testcase
+
+class Test(testcase.TestCase):
+
+ def run(self, **kwargs):
+ self.start_time = time.time()
+ print "Hello World"
+ self.criteria = 'PASS'
+ self.stop_time = time.time()
+ return testcase.TestCase.EX_OK
+```
+
+
+### functest/ci/testcases.yaml
+
+```yaml
+case_name: first
+project_name: functest
+criteria: 'status == "PASS"'
+blocking: true
+clean_flag: false
+description: ''
+dependencies:
+ installer: ''
+ scenario: ''
+run:
+ module: 'first'
+ class: 'Test'
+```
+
+
+
+## class Feature
+bases: TestCase
+
+base model for single feature
+
+
+### methods
+
+| Method | Purpose |
+|-------------------|---------------------------|
+| run(**kwargs) | run the feature |
+| execute(**kwargs) | execute the Python method |
+
+
+### run(**kwargs)
+
+- allows executing any Python method by calling execute()
+- sets the following attributes required to push the results to DB:
+ - criteria
+ - start_time
+ - stop_time
+- doesn't fulfill details when pushing the results to the DB.
+
+
+### execute(**kwargs)
+
+- the subclasses must override the default implementation which is false on purpose
+- the new implementation must return 0 if success or anything else if failure.
+
+
+
+## Your second test case
+
+
+### second.py
+
+```python
+#!/usr/bin/env python
+
+from functest.core import feature
+
+class Test(feature.Feature):
+
+ def execute(self, **kwargs):
+ print "Hello World"
+ return 0
+```
+
+
+### functest/ci/testcases.yaml
+
+```yaml
+case_name: second
+project_name: functest
+criteria: 'status == "PASS"'
+blocking: true
+clean_flag: false
+description: ''
+dependencies:
+ installer: ''
+ scenario: ''
+run:
+ module: 'second'
+ class: 'Test'
+```
+
+
+
+## class BashFeature
+bases: Feature
+
+class designed to run any bash command
+
+
+### execute(**kwargs)
+
+execute the cmd passed as arg.
+
+
+
+## Your third test case
+
+
+### functest/ci/testcases.yaml
+
+```
+case_name: third
+project_name: functest
+criteria: 'status == "PASS"'
+blocking: true
+clean_flag: false
+description: ''
+dependencies:
+ installer: ''
+ scenario: ''
+run:
+ module: 'functest.core.feature'
+ class: 'BashFeature'
+ args:
+ cmd: 'echo Hello World; exit 0'
+```
+
+
+
+## Euphrates
+
+
+### Next actions
+
+- __to finish VNF abstraction (coverage + pylint)__
+- to publish doc API
+- to manage criteria as written in testcases.yaml
+
+Please see [Functest Euphrates page](https://wiki.opnfv.org/display/functest/Functest+Euphrates+page) for more details
+
+
+
+## Thank You!
diff --git a/docs/results/danube/2.0/apex.html b/docs/results/danube/2.0/apex.html
new file mode 100644
index 00000000..4460087e
--- /dev/null
+++ b/docs/results/danube/2.0/apex.html
@@ -0,0 +1,1057 @@
+ <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');
+
+ // assign success rate to the gauge
+ function updateReadings() {
+ gaugeScenario1.update(93.3333333333);gaugeScenario2.update(50.0);gaugeScenario3.update(27.2727272727);gaugeScenario4.update(77.7777777778);gaugeScenario5.update(18.1818181818);gaugeScenario6.update(44.4444444444);gaugeScenario7.update(90.9090909091);gaugeScenario8.update(76.6666666667);gaugeScenario9.update(20.0);gaugeScenario10.update(69.696969697);gaugeScenario11.update(18.1818181818);gaugeScenario12.update(80.5555555556);gaugeScenario13.update(90.9090909091);gaugeScenario14.update(76.6666666667);
+ }
+ 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-ovn-nofeature-noha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-ovn-nofeature-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_l2-fdio-noha
+ // Filter results
+ var trend4 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-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_l3-ovs-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-ovs-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-odl-bgpvpn-ha
+ // Filter results
+ var trend6 = data.filter(function(row) {
+ return row["scenario"]=="os-odl-bgpvpn-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-kvm-ha
+ // Filter results
+ var trend7 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm-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-fdio-noha
+ // Filter results
+ var trend8 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-fdio-noha" && 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-nosdn-fdio-ha
+ // Filter results
+ var trend9 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-fdio-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-odl_l3-nofeature-ha
+ // Filter results
+ var trend10 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-nofeature-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-nosdn-ovs-ha
+ // Filter results
+ var trend11 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-ovs-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-odl_l2-fdio-ha
+ // Filter results
+ var trend12 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-fdio-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)
+ // ****************************************// for scenario os-nosdn-nofeature-ha
+ // Filter results
+ var trend13 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-ha" && row["installer"]=="apex";
+ })
+ // 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_l3-fdio-ha
+ // Filter results
+ var trend14 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-fdio-ha" && row["installer"]=="apex";
+ })
+ // 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)
+ // ****************************************
+ });
+ 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 status page (danube, 2017-05-05 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>28/30</td>
+ <td>10</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/225/console>os-odl-gluon-noha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>18/36</td>
+ <td>3</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/221/console>os-ovn-nofeature-noha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>9/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/226/console>os-odl_l2-fdio-noha</a></td>
+ <td><div id="gaugeScenario4"></div></td>
+ <td><div id="trend_svg4"></div></td>
+ <td>28/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/220/console>os-odl_l3-ovs-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>6/33</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/224/console>os-odl-bgpvpn-ha</a></td>
+ <td><div id="gaugeScenario6"></div></td>
+ <td><div id="trend_svg6"></div></td>
+ <td>16/36</td>
+ <td>3</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/228/console>os-nosdn-kvm-ha</a></td>
+ <td><div id="gaugeScenario7"></div></td>
+ <td><div id="trend_svg7"></div></td>
+ <td>30/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/217/console>os-odl_l3-fdio-noha</a></td>
+ <td><div id="gaugeScenario8"></div></td>
+ <td><div id="trend_svg8"></div></td>
+ <td>23/30</td>
+ <td>13</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/230/console>os-nosdn-fdio-ha</a></td>
+ <td><div id="gaugeScenario9"></div></td>
+ <td><div id="trend_svg9"></div></td>
+ <td>6/30</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/211/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario10"></div></td>
+ <td><div id="trend_svg10"></div></td>
+ <td>23/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/231/console>os-nosdn-ovs-ha</a></td>
+ <td><div id="gaugeScenario11"></div></td>
+ <td><div id="trend_svg11"></div></td>
+ <td>6/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/227/console>os-odl_l2-fdio-ha</a></td>
+ <td><div id="gaugeScenario12"></div></td>
+ <td><div id="trend_svg12"></div></td>
+ <td>29/36</td>
+ <td>20</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-apex-apex-daily-danube-daily-danube/222/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario13"></div></td>
+ <td><div id="trend_svg13"></div></td>
+ <td>30/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/229/console>os-odl_l3-fdio-ha</a></td>
+ <td><div id="gaugeScenario14"></div></td>
+ <td><div id="trend_svg14"></div></td>
+ <td>23/30</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-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-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-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-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-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-ovn-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>
+ 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-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-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-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-storm.png"></td><td><img src="../../img/weather-few-clouds.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-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-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><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-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-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-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-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-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>
+ </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-clear.png"></td><td><img src="../../img/weather-storm.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-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-storm.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>
+ </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-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><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-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-overcast.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>
+ </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-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-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 (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-clear.png"></td><td><img src="../../img/weather-storm.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-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> <br>
+ <a href="./status-apex.pdf" class="myButtonPdf">Export to PDF</a> <a href="./scenario_history_apex.txt" class="myButtonCSV">Export to CSV</a>
+ </div>
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/2.0/compass.html b/docs/results/danube/2.0/compass.html
new file mode 100644
index 00000000..cde66359
--- /dev/null
+++ b/docs/results/danube/2.0/compass.html
@@ -0,0 +1,493 @@
+ <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(83.3333333333);gaugeScenario2.update(10.0);gaugeScenario3.update(84.8484848485);gaugeScenario4.update(84.8484848485);gaugeScenario5.update(96.6666666667);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 status page (danube, 2017-05-05 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-virtual-daily-danube/217/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>25/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/222/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>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/213/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>16</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/218/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>18</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-virtual-daily-danube/212/console>os-nosdn-openo-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>29/30</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-compass-baremetal-daily-danube/224/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>18</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-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-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>
+ </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-overcast.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>
+ </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-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><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-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>
+ </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> <br>
+ <a href="./status-compass.pdf" class="myButtonPdf">Export to PDF</a> <a href="./scenario_history_compass.txt" class="myButtonCSV">Export to CSV</a>
+ </div>
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/2.0/fuel.html b/docs/results/danube/2.0/fuel.html
new file mode 100644
index 00000000..0ee69d3b
--- /dev/null
+++ b/docs/results/danube/2.0/fuel.html
@@ -0,0 +1,1447 @@
+ <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(28.5714285714);gaugeScenario3.update(100.0);gaugeScenario4.update(100.0);gaugeScenario5.update(15.3846153846);gaugeScenario6.update(95.2380952381);gaugeScenario7.update(94.8717948718);gaugeScenario8.update(100.0);gaugeScenario9.update(100.0);gaugeScenario10.update(97.4358974359);gaugeScenario11.update(92.8571428571);gaugeScenario12.update(100.0);gaugeScenario13.update(97.4358974359);gaugeScenario14.update(100.0);gaugeScenario15.update(95.2380952381);gaugeScenario16.update(100.0);gaugeScenario17.update(100.0);gaugeScenario18.update(100.0);
+ }
+ 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-odl_l3-nofeature-noha
+ // Filter results
+ var trend9 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l3-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-nofeature-noha
+ // Filter results
+ var trend16 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-nofeature-noha" && 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-nosdn-kvm-ha
+ // Filter results
+ var trend17 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-kvm-ha" && 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 status page (danube, 2017-05-05 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/368/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>10</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/348/console>os-nosdn-kvm_ovs_dpdk_bar-ha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></div></td>
+ <td>12/42</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/345/console>os-nosdn-ovs-ha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></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/365/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>10</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/341/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>4</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/362/console>os-odl_l2-sfc-noha</a></td>
+ <td><div id="gaugeScenario6"></div></td>
+ <td><div id="trend_svg6"></div></td>
+ <td>40/42</td>
+ <td>10</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/347/console>os-odl_l3-nofeature-ha</a></td>
+ <td><div id="gaugeScenario7"></div></td>
+ <td><div id="trend_svg7"></div></td>
+ <td>37/39</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/364/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>9</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/369/console>os-odl_l3-nofeature-noha</a></td>
+ <td><div id="gaugeScenario9"></div></td>
+ <td><div id="trend_svg9"></div></td>
+ <td>36/36</td>
+ <td>9</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/367/console>os-odl_l2-nofeature-noha</a></td>
+ <td><div id="gaugeScenario10"></div></td>
+ <td><div id="trend_svg10"></div></td>
+ <td>38/39</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/342/console>os-odl_l2-bgpvpn-ha</a></td>
+ <td><div id="gaugeScenario11"></div></td>
+ <td><div id="trend_svg11"></div></td>
+ <td>39/42</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/340/console>os-odl_l2-sfc-ha</a></td>
+ <td><div id="gaugeScenario12"></div></td>
+ <td><div id="trend_svg12"></div></td>
+ <td>45/45</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/370/console>os-nosdn-kvm_ovs_dpdk_bar-noha</a></td>
+ <td><div id="gaugeScenario13"></div></td>
+ <td><div id="trend_svg13"></div></td>
+ <td>38/39</td>
+ <td>11</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/363/console>os-odl_l2-bgpvpn-noha</a></td>
+ <td><div id="gaugeScenario14"></div></td>
+ <td><div id="trend_svg14"></div></td>
+ <td>42/42</td>
+ <td>10</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/346/console>os-odl_l2-nofeature-ha</a></td>
+ <td><div id="gaugeScenario15"></div></td>
+ <td><div id="trend_svg15"></div></td>
+ <td>40/42</td>
+ <td>9</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-virtual-daily-danube/366/console>os-nosdn-nofeature-noha</a></td>
+ <td><div id="gaugeScenario16"></div></td>
+ <td><div id="trend_svg16"></div></td>
+ <td>36/36</td>
+ <td>11</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-zte-pod3-daily-danube/55/console>os-nosdn-kvm-ha</a></td>
+ <td><div id="gaugeScenario17"></div></td>
+ <td><div id="trend_svg17"></div></td>
+ <td>39/39</td>
+ <td>16</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-fuel-baremetal-daily-danube/344/console>os-nosdn-nofeature-ha</a></td>
+ <td><div id="gaugeScenario18"></div></td>
+ <td><div id="trend_svg18"></div></td>
+ <td>39/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-overcast.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-overcast.png"></td><td><img src="../../img/weather-overcast.png"></td><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>
+ </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-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-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-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-overcast.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-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><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-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-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-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-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-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><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-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-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-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-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-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-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-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-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>
+ </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-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-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-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> <br>
+ <a href="./status-fuel.pdf" class="myButtonPdf">Export to PDF</a> <a href="./scenario_history_fuel.txt" class="myButtonCSV">Export to CSV</a>
+ </div>
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/2.0/joid.html b/docs/results/danube/2.0/joid.html
new file mode 100644
index 00000000..e2231747
--- /dev/null
+++ b/docs/results/danube/2.0/joid.html
@@ -0,0 +1,421 @@
+ <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(75.0);gaugeScenario2.update(96.9696969697);gaugeScenario3.update(25.0);gaugeScenario4.update(96.9696969697);gaugeScenario5.update(70.8333333333);
+ }
+ 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-odl_l2-nofeature-ha
+ // Filter results
+ var trend3 = data.filter(function(row) {
+ return row["scenario"]=="os-odl_l2-nofeature-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-nosdn-lxd-ha
+ // Filter results
+ var trend5 = data.filter(function(row) {
+ return row["scenario"]=="os-nosdn-lxd-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 status page (danube, 2017-05-05 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/167/console>os-nosdn-lxd-noha</a></td>
+ <td><div id="gaugeScenario1"></div></td>
+ <td><div id="trend_svg1"></div></td>
+ <td>18/24</td>
+ <td>7</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/171/console>os-nosdn-nofeature-noha</a></td>
+ <td><div id="gaugeScenario2"></div></td>
+ <td><div id="trend_svg2"></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-joid-baremetal-daily-danube/170/console>os-odl_l2-nofeature-ha</a></td>
+ <td><div id="gaugeScenario3"></div></td>
+ <td><div id="trend_svg3"></div></td>
+ <td>9/36</td>
+ <td>8</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/169/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>5</td>
+ </tr><tr class="tr-ok">
+ <td><a href=https://build.opnfv.org/ci/view/functest/job/functest-joid-baremetal-daily-danube/172/console>os-nosdn-lxd-ha</a></td>
+ <td><div id="gaugeScenario5"></div></td>
+ <td><div id="trend_svg5"></div></td>
+ <td>17/24</td>
+ <td>8</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-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-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-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><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-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-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-storm.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> <br>
+ <a href="./status-joid.pdf" class="myButtonPdf">Export to PDF</a> <a href="./scenario_history_joid.txt" class="myButtonCSV">Export to CSV</a>
+ </div>
+ </div>
+ <div class="col-md-1"></div>
+</div>
diff --git a/docs/results/danube/2.0/scenario_history.txt b/docs/results/danube/2.0/scenario_history.txt
new file mode 100644
index 00000000..c4ca6aad
--- /dev/null
+++ b/docs/results/danube/2.0/scenario_history.txt
@@ -0,0 +1,1454 @@
+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
+2017-04-01 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-01 01:45,os-odl-gluon-noha,apex,24/36,67.0
+2017-04-01 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-04-01 01:45,os-odl_l3-fdio-noha,apex,20/30,67.0
+2017-04-01 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-04-01 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-04-01 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-01 01:45,os-odl-bgpvpn-ha,apex,21/36,58.0
+2017-04-01 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-01 01:45,os-nosdn-ovs-ha,apex,2/33,6.0
+2017-04-01 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-04-01 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-04-01 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-01 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-01 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-01 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-04-01 01:45,os-nosdn-openo-ha,compass,28/30,93.0
+2017-04-01 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-01 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-01 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-01 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-01 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-01 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-01 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-01 01:45,os-odl_l3-nofeature-ha,fuel,32/39,82.0
+2017-04-01 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-01 01:45,os-odl_l2-nofeature-ha,fuel,39/42,93.0
+2017-04-01 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-01 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-04-01 01:45,os-odl_l2-bgpvpn-ha,fuel,34/42,81.0
+2017-04-01 01:45,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-04-01 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-01 01:45,os-odl_l2-bgpvpn-noha,fuel,38/42,90.0
+2017-04-01 01:45,os-odl_l2-sfc-ha,fuel,44/45,98.0
+2017-04-01 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-01 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-04-01 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-01 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-01 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-04-01 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-01 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-04-02 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-02 01:45,os-odl-gluon-noha,apex,24/36,67.0
+2017-04-02 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-04-02 01:45,os-odl_l3-fdio-noha,apex,13/30,43.0
+2017-04-02 01:45,os-odl-bgpvpn-ha,apex,21/36,58.0
+2017-04-02 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-04-02 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-02 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-04-02 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-02 01:45,os-nosdn-ovs-ha,apex,2/33,6.0
+2017-04-02 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-04-02 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-04-02 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-02 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-02 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-02 01:45,os-odl_l2-nofeature-ha,compass,27/33,82.0
+2017-04-02 01:45,os-nosdn-openo-ha,compass,28/30,93.0
+2017-04-02 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-02 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-02 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-02 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-02 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-02 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-02 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-02 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-02 01:45,os-odl_l3-nofeature-ha,fuel,32/39,82.0
+2017-04-02 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-02 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-02 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-02 01:45,os-odl_l2-bgpvpn-ha,fuel,34/42,81.0
+2017-04-02 01:45,os-odl_l2-sfc-ha,fuel,40/45,89.0
+2017-04-02 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-02 01:45,os-odl_l2-bgpvpn-noha,fuel,38/42,90.0
+2017-04-02 01:45,os-odl_l2-nofeature-ha,fuel,37/42,88.0
+2017-04-02 01:45,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-04-02 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-04-02 01:45,os-odl_l2-nofeature-ha,joid,6/36,17.0
+2017-04-02 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-02 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-02 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-02 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-04-03 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-03 01:45,os-odl-gluon-noha,apex,29/36,81.0
+2017-04-03 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-04-03 01:45,os-odl_l3-fdio-noha,apex,13/30,43.0
+2017-04-03 01:45,os-odl_l3-nofeature-ha,apex,27/33,82.0
+2017-04-03 01:45,os-odl_l2-fdio-ha,apex,26/36,72.0
+2017-04-03 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-03 01:45,os-odl-bgpvpn-ha,apex,21/36,58.0
+2017-04-03 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-03 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-03 01:45,os-nosdn-kvm-ha,apex,33/33,100.0
+2017-04-03 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-04-03 01:45,os-odl_l3-nofeature-ha,compass,23/30,77.0
+2017-04-03 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-03 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-03 01:45,os-odl_l2-nofeature-ha,compass,27/33,82.0
+2017-04-03 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-03 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-03 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-03 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-03 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-03 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-03 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-03 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-03 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-03 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-03 01:45,os-odl_l3-nofeature-ha,fuel,32/39,82.0
+2017-04-03 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-03 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-03 01:45,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-04-03 01:45,os-odl_l2-bgpvpn-ha,fuel,35/42,83.0
+2017-04-03 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-03 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-03 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-03 01:45,os-odl_l2-nofeature-ha,fuel,38/42,90.0
+2017-04-03 01:45,os-nosdn-nofeature-ha,fuel,36/39,92.0
+2017-04-03 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-03 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-03 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-03 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-03 01:45,os-odl_l2-nofeature-ha,joid,6/36,17.0
+2017-04-04 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-04 01:45,os-odl-gluon-noha,apex,30/36,83.0
+2017-04-04 01:45,os-ovn-nofeature-noha,apex,3/33,9.0
+2017-04-04 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-04-04 01:45,os-odl_l3-fdio-noha,apex,6/30,20.0
+2017-04-04 01:45,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-04-04 01:45,os-nosdn-kvm-ha,apex,33/33,100.0
+2017-04-04 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-04 01:45,os-odl-bgpvpn-ha,apex,22/36,61.0
+2017-04-04 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-04 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-04 01:45,os-odl_l2-fdio-ha,apex,26/36,72.0
+2017-04-04 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-04-04 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-04 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-04 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-04 01:45,os-odl_l2-nofeature-ha,compass,27/33,82.0
+2017-04-04 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-04 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-04 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-04 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-04 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-04 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-04 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-04 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-04 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-04 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-04 01:45,os-nosdn-kvm-ha,fuel,36/39,92.0
+2017-04-04 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-04 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-04 01:45,os-odl_l2-bgpvpn-ha,fuel,36/42,86.0
+2017-04-04 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-04-04 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-04 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-04 01:45,os-odl_l2-nofeature-ha,fuel,38/42,90.0
+2017-04-04 01:45,os-odl_l3-nofeature-noha,fuel,34/36,94.0
+2017-04-04 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-04-04 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-04 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-04 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-04 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-04 01:45,os-odl_l2-nofeature-ha,joid,6/36,17.0
+2017-04-05 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-05 01:45,os-odl-gluon-noha,apex,29/36,81.0
+2017-04-05 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-05 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-04-05 01:45,os-odl_l3-fdio-noha,apex,6/30,20.0
+2017-04-05 01:45,os-odl-bgpvpn-ha,apex,21/36,58.0
+2017-04-05 01:45,os-nosdn-kvm-ha,apex,33/33,100.0
+2017-04-05 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-05 01:45,os-odl_l3-nofeature-ha,apex,26/33,79.0
+2017-04-05 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-05 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-05 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-04-05 01:45,os-nosdn-nofeature-ha,apex,33/33,100.0
+2017-04-05 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-05 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-05 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-05 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-04-05 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-05 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-05 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-05 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-05 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-05 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-05 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-05 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-05 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-04-05 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-05 01:45,os-nosdn-kvm-ha,fuel,36/39,92.0
+2017-04-05 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-05 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-05 01:45,os-odl_l2-bgpvpn-ha,fuel,36/42,86.0
+2017-04-05 01:45,os-odl_l3-nofeature-ha,fuel,35/39,90.0
+2017-04-05 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-05 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-05 01:45,os-odl_l2-nofeature-ha,fuel,37/42,88.0
+2017-04-05 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-05 01:45,os-nosdn-nofeature-ha,fuel,36/39,92.0
+2017-04-05 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-05 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-05 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-05 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-05 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-06 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-06 01:45,os-odl-gluon-noha,apex,29/36,81.0
+2017-04-06 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-06 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-04-06 01:45,os-odl_l3-fdio-noha,apex,4/30,13.0
+2017-04-06 01:45,os-odl-bgpvpn-ha,apex,27/36,75.0
+2017-04-06 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-04-06 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-06 01:45,os-odl_l3-nofeature-ha,apex,25/33,76.0
+2017-04-06 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-06 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-06 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-04-06 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-04-06 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-06 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-06 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-06 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-06 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-06 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-06 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-06 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-06 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-06 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-06 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-06 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-06 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-04-06 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-06 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-06 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-06 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-06 01:45,os-odl_l2-bgpvpn-ha,fuel,36/42,86.0
+2017-04-06 01:45,os-odl_l3-nofeature-ha,fuel,35/39,90.0
+2017-04-06 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-06 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-06 01:45,os-odl_l2-nofeature-ha,fuel,38/42,90.0
+2017-04-06 01:45,os-odl_l3-nofeature-noha,fuel,32/36,89.0
+2017-04-06 01:45,os-nosdn-nofeature-ha,fuel,35/39,90.0
+2017-04-06 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-06 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-06 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-06 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-06 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-07 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-07 01:45,os-odl-gluon-noha,apex,27/36,75.0
+2017-04-07 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-07 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-04-07 01:45,os-odl_l3-fdio-noha,apex,6/30,20.0
+2017-04-07 01:45,os-odl-bgpvpn-ha,apex,27/36,75.0
+2017-04-07 01:45,os-odl_l2-fdio-ha,apex,28/36,78.0
+2017-04-07 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-07 01:45,os-odl_l3-nofeature-ha,apex,25/33,76.0
+2017-04-07 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-07 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-04-07 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-04-07 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-04-07 01:45,os-odl_l3-nofeature-ha,compass,23/30,77.0
+2017-04-07 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-07 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-07 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-07 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-07 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-07 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-07 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-07 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-07 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-07 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-07 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-07 01:45,os-odl_l2-nofeature-noha,fuel,33/39,85.0
+2017-04-07 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-04-07 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-04-07 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-07 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-07 01:45,os-odl_l3-nofeature-noha,fuel,32/36,89.0
+2017-04-07 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-04-07 01:45,os-odl_l2-sfc-ha,fuel,42/45,93.0
+2017-04-07 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-07 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-07 01:45,os-odl_l2-nofeature-ha,fuel,37/42,88.0
+2017-04-07 01:45,os-nosdn-nofeature-ha,fuel,36/39,92.0
+2017-04-07 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-04-07 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-04-07 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-07 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-07 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-08 01:45,os-nosdn-fdio-noha,apex,15/30,50.0
+2017-04-08 01:45,os-odl-gluon-noha,apex,27/36,75.0
+2017-04-08 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-08 01:45,os-odl_l2-fdio-noha,apex,30/36,83.0
+2017-04-08 01:45,os-odl_l3-fdio-noha,apex,6/30,20.0
+2017-04-08 01:45,os-odl_l3-nofeature-ha,apex,18/33,55.0
+2017-04-08 01:45,os-nosdn-kvm-ha,apex,32/33,97.0
+2017-04-08 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-08 01:45,os-odl-bgpvpn-ha,apex,19/36,53.0
+2017-04-08 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-08 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-04-08 01:45,os-odl_l2-fdio-ha,apex,27/36,75.0
+2017-04-08 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-04-08 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-04-08 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-08 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-08 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-08 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-08 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-08 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-08 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-08 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-08 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-08 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-08 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-08 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-08 01:45,os-odl_l3-nofeature-ha,fuel,35/39,90.0
+2017-04-08 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-08 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-08 01:45,os-odl_l2-nofeature-noha,fuel,33/39,85.0
+2017-04-08 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-08 01:45,os-odl_l2-sfc-ha,fuel,42/45,93.0
+2017-04-08 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-08 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-08 01:45,os-odl_l2-nofeature-ha,fuel,37/42,88.0
+2017-04-08 01:45,os-odl_l3-nofeature-noha,fuel,32/36,89.0
+2017-04-08 01:45,os-nosdn-nofeature-ha,fuel,35/39,90.0
+2017-04-08 01:45,os-nosdn-lxd-noha,joid,12/24,50.0
+2017-04-08 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-08 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-08 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-04-08 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-09 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-04-09 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-09 01:45,os-odl_l2-fdio-noha,apex,22/36,61.0
+2017-04-09 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-09 01:45,os-odl-bgpvpn-ha,apex,19/36,53.0
+2017-04-09 01:45,os-odl_l2-fdio-ha,apex,27/36,75.0
+2017-04-09 01:45,os-odl_l3-fdio-noha,apex,4/30,13.0
+2017-04-09 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-09 01:45,os-odl_l3-nofeature-ha,apex,18/33,55.0
+2017-04-09 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-09 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-04-09 01:45,os-nosdn-nofeature-ha,apex,32/33,97.0
+2017-04-09 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-09 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-09 01:45,os-onos-nofeature-ha,compass,27/33,82.0
+2017-04-09 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-09 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-09 01:45,os-nosdn-nofeature-ha,compass,28/30,93.0
+2017-04-09 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-09 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-09 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-09 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-09 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-09 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-09 01:45,os-odl_l2-nofeature-noha,fuel,33/39,85.0
+2017-04-09 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-09 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-04-09 01:45,os-nosdn-kvm-ha,fuel,38/39,97.0
+2017-04-09 01:45,os-nosdn-nofeature-noha,fuel,35/36,97.0
+2017-04-09 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-09 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-09 01:45,os-odl_l2-sfc-ha,fuel,40/45,89.0
+2017-04-09 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-09 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-09 01:45,os-odl_l2-nofeature-ha,fuel,39/42,93.0
+2017-04-09 01:45,os-nosdn-nofeature-ha,fuel,36/39,92.0
+2017-04-09 01:45,os-nosdn-lxd-noha,joid,12/24,50.0
+2017-04-09 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-09 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-09 01:45,os-nosdn-nofeature-ha,joid,22/33,67.0
+2017-04-09 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-10 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-04-10 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-10 01:45,os-odl_l2-fdio-noha,apex,22/36,61.0
+2017-04-10 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-04-10 01:45,os-odl-bgpvpn-ha,apex,19/36,53.0
+2017-04-10 01:45,os-odl_l2-fdio-ha,apex,21/36,58.0
+2017-04-10 01:45,os-odl_l3-fdio-noha,apex,4/30,13.0
+2017-04-10 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-04-10 01:45,os-odl_l3-nofeature-ha,apex,18/33,55.0
+2017-04-10 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-10 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-04-10 01:45,os-nosdn-nofeature-ha,apex,22/33,67.0
+2017-04-10 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-10 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-10 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-10 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-04-10 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-10 01:45,os-nosdn-nofeature-ha,compass,28/30,93.0
+2017-04-10 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-10 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-10 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-10 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-10 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-10 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-10 01:45,os-odl_l2-sfc-noha,fuel,32/42,76.0
+2017-04-10 01:45,os-odl_l3-nofeature-ha,fuel,35/39,90.0
+2017-04-10 01:45,os-nosdn-kvm-ha,fuel,38/39,97.0
+2017-04-10 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-10 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-10 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-10 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-10 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-10 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-10 01:45,os-odl_l2-nofeature-ha,fuel,39/42,93.0
+2017-04-10 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-10 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-04-10 01:45,os-nosdn-lxd-noha,joid,12/24,50.0
+2017-04-10 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-10 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-10 01:45,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-04-10 01:45,os-nosdn-lxd-ha,joid,12/24,50.0
+2017-04-11 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-04-11 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-11 01:45,os-odl_l2-fdio-noha,apex,22/36,61.0
+2017-04-11 01:45,os-odl_l3-fdio-noha,apex,4/30,13.0
+2017-04-11 01:45,os-odl-bgpvpn-ha,apex,19/36,53.0
+2017-04-11 01:45,os-odl_l2-fdio-ha,apex,21/36,58.0
+2017-04-11 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-04-11 01:45,os-odl_l3-nofeature-ha,apex,18/33,55.0
+2017-04-11 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-11 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-11 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-04-11 01:45,os-nosdn-nofeature-ha,apex,22/33,67.0
+2017-04-11 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-04-11 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-11 01:45,os-onos-nofeature-ha,compass,29/33,88.0
+2017-04-11 01:45,os-odl_l2-nofeature-ha,compass,30/33,91.0
+2017-04-11 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-11 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-04-11 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-11 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-11 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-11 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-11 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-11 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-11 01:45,os-odl_l2-sfc-noha,fuel,32/42,76.0
+2017-04-11 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-04-11 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-11 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-11 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-11 01:45,os-odl_l2-bgpvpn-ha,fuel,36/42,86.0
+2017-04-11 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-11 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-11 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-11 01:45,os-odl_l2-nofeature-ha,fuel,38/42,90.0
+2017-04-11 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-11 01:45,os-nosdn-nofeature-ha,fuel,39/39,100.0
+2017-04-11 01:45,os-nosdn-lxd-noha,joid,6/24,25.0
+2017-04-11 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-11 01:45,os-nosdn-lxd-ha,joid,6/24,25.0
+2017-04-11 01:45,os-nosdn-nofeature-ha,joid,22/33,67.0
+2017-04-11 01:45,os-odl_l2-nofeature-ha,joid,3/36,8.0
+2017-04-12 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-04-12 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-12 01:45,os-odl_l2-fdio-noha,apex,22/36,61.0
+2017-04-12 01:45,os-odl_l3-fdio-noha,apex,4/30,13.0
+2017-04-12 01:45,os-odl_l3-nofeature-ha,apex,17/33,52.0
+2017-04-12 01:45,os-nosdn-kvm-ha,apex,22/33,67.0
+2017-04-12 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-04-12 01:45,os-odl-bgpvpn-ha,apex,19/36,53.0
+2017-04-12 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-12 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-12 01:45,os-odl_l2-fdio-ha,apex,21/36,58.0
+2017-04-12 01:45,os-nosdn-nofeature-ha,apex,21/33,64.0
+2017-04-12 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-04-12 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-12 01:45,os-onos-nofeature-ha,compass,29/33,88.0
+2017-04-12 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-12 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-04-12 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-12 01:45,os-nosdn-kvm-noha,fuel,35/36,97.0
+2017-04-12 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-12 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-12 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-12 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-12 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-12 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-12 01:45,os-odl_l2-sfc-noha,fuel,34/42,81.0
+2017-04-12 01:45,os-odl_l3-nofeature-ha,fuel,34/39,87.0
+2017-04-12 01:45,os-nosdn-kvm-ha,fuel,37/39,95.0
+2017-04-12 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-12 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-12 01:45,os-odl_l2-bgpvpn-ha,fuel,36/42,86.0
+2017-04-12 01:45,os-odl_l2-sfc-ha,fuel,39/45,87.0
+2017-04-12 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-12 01:45,os-odl_l2-bgpvpn-noha,fuel,39/42,93.0
+2017-04-12 01:45,os-odl_l2-nofeature-ha,fuel,38/42,90.0
+2017-04-12 01:45,os-nosdn-nofeature-ha,fuel,39/39,100.0
+2017-04-12 01:45,os-nosdn-lxd-noha,joid,12/24,50.0
+2017-04-12 01:45,os-nosdn-nofeature-noha,joid,11/33,33.0
+2017-04-12 01:45,os-odl_l2-nofeature-ha,joid,1/36,3.0
+2017-04-12 01:45,os-nosdn-nofeature-ha,joid,12/33,36.0
+2017-04-12 01:45,os-nosdn-lxd-ha,joid,6/24,25.0
+2017-04-28 20:23,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-04-28 20:23,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-28 20:23,os-odl_l2-fdio-noha,apex,19/36,53.0
+2017-04-28 20:23,os-odl_l3-fdio-noha,apex,24/30,80.0
+2017-04-28 20:23,os-odl_l3-nofeature-ha,apex,16/33,48.0
+2017-04-28 20:23,os-nosdn-kvm-ha,apex,20/33,61.0
+2017-04-28 20:23,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-04-28 20:23,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-28 20:23,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-28 20:23,os-odl_l2-fdio-ha,apex,26/36,72.0
+2017-04-28 20:23,os-nosdn-nofeature-ha,apex,20/33,61.0
+2017-04-28 20:23,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-04-28 20:23,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-28 20:23,os-onos-nofeature-ha,compass,29/33,88.0
+2017-04-28 20:23,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-28 20:23,os-nosdn-openo-ha,compass,30/30,100.0
+2017-04-28 20:23,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-28 20:23,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-28 20:23,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-28 20:23,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-28 20:23,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-28 20:23,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-28 20:23,os-odl_l2-bgpvpn-noha,fuel,40/42,95.0
+2017-04-28 20:23,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-04-28 20:23,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-04-28 20:23,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-04-28 20:23,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-28 20:23,os-odl_l2-nofeature-noha,fuel,34/39,87.0
+2017-04-28 20:23,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-28 20:23,os-odl_l2-sfc-ha,fuel,41/45,91.0
+2017-04-28 20:23,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-28 20:23,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-28 20:23,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-04-28 20:23,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-28 20:23,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-04-28 20:23,os-nosdn-lxd-noha,joid,11/24,46.0
+2017-04-28 20:23,os-odl_l2-nofeature-ha,joid,8/36,22.0
+2017-04-28 20:23,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-04-28 20:23,os-nosdn-nofeature-ha,joid,29/33,88.0
+2017-04-28 20:23,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-29 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-04-29 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-29 01:45,os-odl_l2-fdio-noha,apex,19/36,53.0
+2017-04-29 01:45,os-odl_l3-fdio-noha,apex,24/30,80.0
+2017-04-29 01:45,os-odl_l3-nofeature-ha,apex,16/33,48.0
+2017-04-29 01:45,os-nosdn-kvm-ha,apex,20/33,61.0
+2017-04-29 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-04-29 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-29 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-29 01:45,os-odl_l2-fdio-ha,apex,30/36,83.0
+2017-04-29 01:45,os-nosdn-nofeature-ha,apex,20/33,61.0
+2017-04-29 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-04-29 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-29 01:45,os-onos-nofeature-ha,compass,29/33,88.0
+2017-04-29 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-29 01:45,os-nosdn-openo-ha,compass,30/30,100.0
+2017-04-29 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-29 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-29 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-29 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-29 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-29 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-29 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-29 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-04-29 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-04-29 01:45,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-04-29 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-29 01:45,os-odl_l2-nofeature-noha,fuel,34/39,87.0
+2017-04-29 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-29 01:45,os-odl_l2-sfc-ha,fuel,41/45,91.0
+2017-04-29 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-29 01:45,os-odl_l2-bgpvpn-noha,fuel,40/42,95.0
+2017-04-29 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-04-29 01:45,os-odl_l3-nofeature-noha,fuel,33/36,92.0
+2017-04-29 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-04-29 01:45,os-nosdn-lxd-noha,joid,11/24,46.0
+2017-04-29 01:45,os-odl_l2-nofeature-ha,joid,8/36,22.0
+2017-04-29 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-04-29 01:45,os-nosdn-nofeature-ha,joid,29/33,88.0
+2017-04-29 01:45,os-nosdn-nofeature-noha,joid,22/33,67.0
+2017-04-30 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-04-30 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-04-30 01:45,os-odl_l2-fdio-noha,apex,19/36,53.0
+2017-04-30 01:45,os-odl_l3-fdio-noha,apex,24/30,80.0
+2017-04-30 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-04-30 01:45,os-nosdn-kvm-ha,apex,20/33,61.0
+2017-04-30 01:45,os-nosdn-fdio-ha,apex,4/30,13.0
+2017-04-30 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-04-30 01:45,os-nosdn-ovs-ha,apex,4/33,12.0
+2017-04-30 01:45,os-odl_l2-fdio-ha,apex,30/36,83.0
+2017-04-30 01:45,os-nosdn-nofeature-ha,apex,20/33,61.0
+2017-04-30 01:45,os-odl_l3-nofeature-ha,compass,24/30,80.0
+2017-04-30 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-04-30 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-04-30 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-04-30 01:45,os-nosdn-openo-ha,compass,30/30,100.0
+2017-04-30 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-04-30 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-04-30 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-04-30 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-04-30 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-04-30 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-04-30 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-04-30 01:45,os-odl_l2-sfc-noha,fuel,35/42,83.0
+2017-04-30 01:45,os-odl_l3-nofeature-ha,fuel,36/39,92.0
+2017-04-30 01:45,os-nosdn-kvm-ha,fuel,38/39,97.0
+2017-04-30 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-04-30 01:45,os-odl_l2-nofeature-noha,fuel,35/39,90.0
+2017-04-30 01:45,os-odl_l2-bgpvpn-ha,fuel,37/42,88.0
+2017-04-30 01:45,os-odl_l2-sfc-ha,fuel,42/45,93.0
+2017-04-30 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-04-30 01:45,os-odl_l2-bgpvpn-noha,fuel,41/42,98.0
+2017-04-30 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-04-30 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-04-30 01:45,os-nosdn-nofeature-ha,fuel,39/39,100.0
+2017-04-30 01:45,os-nosdn-lxd-noha,joid,12/24,50.0
+2017-04-30 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-04-30 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-04-30 01:45,os-nosdn-nofeature-ha,joid,21/33,64.0
+2017-04-30 01:45,os-odl_l2-nofeature-ha,joid,8/36,22.0
+2017-05-01 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-05-01 01:45,os-odl-gluon-noha,apex,9/36,25.0
+2017-05-01 01:45,os-ovn-nofeature-noha,apex,6/33,18.0
+2017-05-01 01:45,os-odl-bgpvpn-ha,apex,8/36,22.0
+2017-05-01 01:45,os-odl_l2-fdio-noha,apex,28/36,78.0
+2017-05-01 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-05-01 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-05-01 01:45,os-nosdn-kvm-ha,apex,30/33,91.0
+2017-05-01 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-05-01 01:45,os-odl_l3-fdio-noha,apex,23/30,77.0
+2017-05-01 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-05-01 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-05-01 01:45,os-nosdn-nofeature-ha,apex,20/33,61.0
+2017-05-01 01:45,os-odl_l3-fdio-ha,apex,24/30,80.0
+2017-05-01 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-05-01 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-05-01 01:45,os-onos-nofeature-ha,compass,27/33,82.0
+2017-05-01 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-05-01 01:45,os-nosdn-openo-ha,compass,30/30,100.0
+2017-05-01 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-05-01 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-05-01 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-05-01 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-05-01 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-05-01 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-05-01 01:45,os-odl_l2-sfc-noha,fuel,36/42,86.0
+2017-05-01 01:45,os-odl_l3-nofeature-ha,fuel,37/39,95.0
+2017-05-01 01:45,os-nosdn-kvm-ha,fuel,38/39,97.0
+2017-05-01 01:45,os-odl_l3-nofeature-noha,fuel,35/36,97.0
+2017-05-01 01:45,os-odl_l2-nofeature-noha,fuel,36/39,92.0
+2017-05-01 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-05-01 01:45,os-odl_l2-sfc-ha,fuel,44/45,98.0
+2017-05-01 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-05-01 01:45,os-odl_l2-bgpvpn-noha,fuel,41/42,98.0
+2017-05-01 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-05-01 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-05-01 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-05-01 01:45,os-nosdn-nofeature-ha,fuel,39/39,100.0
+2017-05-01 01:45,os-nosdn-lxd-noha,joid,17/24,71.0
+2017-05-01 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-05-01 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-05-01 01:45,os-nosdn-nofeature-ha,joid,17/33,52.0
+2017-05-01 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-05-02 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-05-02 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-05-02 01:45,os-ovn-nofeature-noha,apex,9/33,27.0
+2017-05-02 01:45,os-odl-bgpvpn-ha,apex,16/36,44.0
+2017-05-02 01:45,os-odl_l2-fdio-noha,apex,28/36,78.0
+2017-05-02 01:45,os-odl_l3-ovs-ha,apex,4/33,12.0
+2017-05-02 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-05-02 01:45,os-nosdn-kvm-ha,apex,30/33,91.0
+2017-05-02 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-05-02 01:45,os-odl_l3-fdio-noha,apex,23/30,77.0
+2017-05-02 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-05-02 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-05-02 01:45,os-nosdn-nofeature-ha,apex,30/33,91.0
+2017-05-02 01:45,os-odl_l3-fdio-ha,apex,24/30,80.0
+2017-05-02 01:45,os-odl_l3-nofeature-ha,compass,26/30,87.0
+2017-05-02 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-05-02 01:45,os-onos-nofeature-ha,compass,27/33,82.0
+2017-05-02 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-05-02 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-05-02 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-05-02 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-05-02 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-05-02 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-05-02 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-05-02 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-05-02 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-05-02 01:45,os-odl_l2-sfc-noha,fuel,38/42,90.0
+2017-05-02 01:45,os-odl_l3-nofeature-ha,fuel,37/39,95.0
+2017-05-02 01:45,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-05-02 01:45,os-odl_l3-nofeature-noha,fuel,36/36,100.0
+2017-05-02 01:45,os-odl_l2-nofeature-noha,fuel,38/39,97.0
+2017-05-02 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-05-02 01:45,os-odl_l2-sfc-ha,fuel,44/45,98.0
+2017-05-02 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-05-02 01:45,os-odl_l2-bgpvpn-noha,fuel,42/42,100.0
+2017-05-02 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-05-02 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-05-02 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-05-02 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-05-02 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-05-02 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-05-02 01:45,os-nosdn-nofeature-ha,joid,18/33,55.0
+2017-05-02 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-05-03 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-05-03 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-05-03 01:45,os-ovn-nofeature-noha,apex,9/33,27.0
+2017-05-03 01:45,os-odl-bgpvpn-ha,apex,16/36,44.0
+2017-05-03 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-05-03 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-05-03 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-05-03 01:45,os-nosdn-kvm-ha,apex,30/33,91.0
+2017-05-03 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-05-03 01:45,os-odl_l3-fdio-noha,apex,23/30,77.0
+2017-05-03 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-05-03 01:45,os-odl_l2-fdio-ha,apex,30/36,83.0
+2017-05-03 01:45,os-nosdn-nofeature-ha,apex,30/33,91.0
+2017-05-03 01:45,os-odl_l3-fdio-ha,apex,24/30,80.0
+2017-05-03 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-05-03 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-05-03 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-05-03 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-05-03 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-05-03 01:45,os-nosdn-nofeature-ha,compass,30/30,100.0
+2017-05-03 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-05-03 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-05-03 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-05-03 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-05-03 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-05-03 01:45,os-odl_l2-sfc-noha,fuel,39/42,93.0
+2017-05-03 01:45,os-odl_l3-nofeature-ha,fuel,37/39,95.0
+2017-05-03 01:45,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-05-03 01:45,os-odl_l3-nofeature-noha,fuel,36/36,100.0
+2017-05-03 01:45,os-odl_l2-nofeature-noha,fuel,38/39,97.0
+2017-05-03 01:45,os-odl_l2-bgpvpn-ha,fuel,38/42,90.0
+2017-05-03 01:45,os-odl_l2-sfc-ha,fuel,45/45,100.0
+2017-05-03 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,39/39,100.0
+2017-05-03 01:45,os-odl_l2-bgpvpn-noha,fuel,42/42,100.0
+2017-05-03 01:45,os-odl_l2-nofeature-ha,fuel,41/42,98.0
+2017-05-03 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-05-03 01:45,os-nosdn-nofeature-ha,fuel,37/39,95.0
+2017-05-03 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-05-03 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-05-03 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-05-03 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-05-03 01:45,os-nosdn-nofeature-ha,joid,22/33,67.0
+2017-05-03 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-05-04 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-05-04 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-05-04 01:45,os-ovn-nofeature-noha,apex,9/33,27.0
+2017-05-04 01:45,os-odl-bgpvpn-ha,apex,16/36,44.0
+2017-05-04 01:45,os-odl_l2-fdio-noha,apex,29/36,81.0
+2017-05-04 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-05-04 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-05-04 01:45,os-nosdn-kvm-ha,apex,30/33,91.0
+2017-05-04 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-05-04 01:45,os-odl_l3-fdio-noha,apex,23/30,77.0
+2017-05-04 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-05-04 01:45,os-odl_l2-fdio-ha,apex,30/36,83.0
+2017-05-04 01:45,os-nosdn-nofeature-ha,apex,30/33,91.0
+2017-05-04 01:45,os-odl_l3-fdio-ha,apex,24/30,80.0
+2017-05-04 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-05-04 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-05-04 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-05-04 01:45,os-odl_l2-nofeature-ha,compass,29/33,88.0
+2017-05-04 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-05-04 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-05-04 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-05-04 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,6/42,14.0
+2017-05-04 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-05-04 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-05-04 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-05-04 01:45,os-odl_l2-sfc-noha,fuel,39/42,93.0
+2017-05-04 01:45,os-odl_l3-nofeature-ha,fuel,38/39,97.0
+2017-05-04 01:45,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-05-04 01:45,os-odl_l3-nofeature-noha,fuel,36/36,100.0
+2017-05-04 01:45,os-odl_l2-nofeature-noha,fuel,37/39,95.0
+2017-05-04 01:45,os-odl_l2-bgpvpn-ha,fuel,40/42,95.0
+2017-05-04 01:45,os-odl_l2-sfc-ha,fuel,45/45,100.0
+2017-05-04 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,38/39,97.0
+2017-05-04 01:45,os-odl_l2-bgpvpn-noha,fuel,42/42,100.0
+2017-05-04 01:45,os-odl_l2-nofeature-ha,fuel,40/42,95.0
+2017-05-04 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-05-04 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-05-04 01:45,os-nosdn-nofeature-ha,fuel,38/39,97.0
+2017-05-04 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-05-04 01:45,os-nosdn-nofeature-noha,joid,33/33,100.0
+2017-05-04 01:45,os-nosdn-lxd-ha,joid,18/24,75.0
+2017-05-04 01:45,os-nosdn-nofeature-ha,joid,29/33,88.0
+2017-05-04 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
+2017-05-05 01:45,os-nosdn-fdio-noha,apex,28/30,93.0
+2017-05-05 01:45,os-odl-gluon-noha,apex,18/36,50.0
+2017-05-05 01:45,os-ovn-nofeature-noha,apex,9/33,27.0
+2017-05-05 01:45,os-odl-bgpvpn-ha,apex,16/36,44.0
+2017-05-05 01:45,os-odl_l2-fdio-noha,apex,28/36,78.0
+2017-05-05 01:45,os-odl_l3-ovs-ha,apex,6/33,18.0
+2017-05-05 01:45,os-odl_l3-nofeature-ha,apex,23/33,70.0
+2017-05-05 01:45,os-nosdn-kvm-ha,apex,30/33,91.0
+2017-05-05 01:45,os-nosdn-fdio-ha,apex,6/30,20.0
+2017-05-05 01:45,os-odl_l3-fdio-noha,apex,23/30,77.0
+2017-05-05 01:45,os-nosdn-ovs-ha,apex,6/33,18.0
+2017-05-05 01:45,os-odl_l2-fdio-ha,apex,29/36,81.0
+2017-05-05 01:45,os-nosdn-nofeature-ha,apex,30/33,91.0
+2017-05-05 01:45,os-odl_l3-fdio-ha,apex,23/30,77.0
+2017-05-05 01:45,os-odl_l3-nofeature-ha,compass,25/30,83.0
+2017-05-05 01:45,os-ocl-nofeature-ha,compass,3/30,10.0
+2017-05-05 01:45,os-onos-nofeature-ha,compass,28/33,85.0
+2017-05-05 01:45,os-odl_l2-nofeature-ha,compass,28/33,85.0
+2017-05-05 01:45,os-nosdn-openo-ha,compass,29/30,97.0
+2017-05-05 01:45,os-nosdn-nofeature-ha,compass,29/30,97.0
+2017-05-05 01:45,os-nosdn-kvm_ovs_dpdk-noha,fuel,36/36,100.0
+2017-05-05 01:45,os-nosdn-kvm_ovs_dpdk_bar-ha,fuel,12/42,29.0
+2017-05-05 01:45,os-nosdn-kvm-noha,fuel,36/36,100.0
+2017-05-05 01:45,os-nosdn-ovs-noha,fuel,36/36,100.0
+2017-05-05 01:45,os-odl_l3-nofeature-noha,fuel,36/36,100.0
+2017-05-05 01:45,os-nosdn-kvm_ovs_dpdk-ha,fuel,6/39,15.0
+2017-05-05 01:45,os-odl_l2-sfc-noha,fuel,40/42,95.0
+2017-05-05 01:45,os-odl_l3-nofeature-ha,fuel,37/39,95.0
+2017-05-05 01:45,os-nosdn-kvm-ha,fuel,39/39,100.0
+2017-05-05 01:45,os-nosdn-nofeature-noha,fuel,36/36,100.0
+2017-05-05 01:45,os-odl_l2-nofeature-noha,fuel,38/39,97.0
+2017-05-05 01:45,os-odl_l2-bgpvpn-ha,fuel,39/42,93.0
+2017-05-05 01:45,os-odl_l2-sfc-ha,fuel,45/45,100.0
+2017-05-05 01:45,os-nosdn-kvm_ovs_dpdk_bar-noha,fuel,38/39,97.0
+2017-05-05 01:45,os-odl_l2-bgpvpn-noha,fuel,42/42,100.0
+2017-05-05 01:45,os-odl_l2-nofeature-ha,fuel,40/42,95.0
+2017-05-05 01:45,os-nosdn-nofeature-ha,fuel,39/39,100.0
+2017-05-05 01:45,os-nosdn-ovs-ha,fuel,39/39,100.0
+2017-05-05 01:45,os-nosdn-lxd-noha,joid,18/24,75.0
+2017-05-05 01:45,os-nosdn-nofeature-noha,joid,32/33,97.0
+2017-05-05 01:45,os-nosdn-lxd-ha,joid,17/24,71.0
+2017-05-05 01:45,os-nosdn-nofeature-ha,joid,32/33,97.0
+2017-05-05 01:45,os-odl_l2-nofeature-ha,joid,9/36,25.0
diff --git a/docs/results/danube/2.0/validated_scenario_history.txt b/docs/results/danube/2.0/validated_scenario_history.txt
new file mode 100644
index 00000000..15ec001e
--- /dev/null
+++ b/docs/results/danube/2.0/validated_scenario_history.txt
@@ -0,0 +1,212 @@
+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
+2017-04-01 02:04;apex;os-nosdn-nofeature-ha
+2017-04-01 02:07;compass;os-nosdn-nofeature-ha
+2017-04-01 02:07;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-01 02:08;fuel;os-nosdn-kvm-noha
+2017-04-01 02:09;fuel;os-nosdn-ovs-noha
+2017-04-01 02:11;fuel;os-nosdn-nofeature-noha
+2017-04-01 02:13;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-01 02:15;fuel;os-nosdn-ovs-ha
+2017-04-02 02:04;apex;os-nosdn-nofeature-ha
+2017-04-02 02:07;compass;os-nosdn-nofeature-ha
+2017-04-02 02:07;fuel;os-nosdn-kvm-noha
+2017-04-02 02:08;fuel;os-nosdn-ovs-ha
+2017-04-02 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-02 02:09;fuel;os-nosdn-ovs-noha
+2017-04-02 02:11;fuel;os-nosdn-nofeature-noha
+2017-04-02 02:13;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-03 02:04;apex;os-nosdn-kvm-ha
+2017-04-03 02:04;apex;os-nosdn-nofeature-ha
+2017-04-03 02:07;compass;os-nosdn-nofeature-ha
+2017-04-03 02:07;fuel;os-nosdn-kvm-noha
+2017-04-03 02:08;fuel;os-nosdn-ovs-ha
+2017-04-03 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-03 02:09;fuel;os-nosdn-ovs-noha
+2017-04-03 02:12;fuel;os-nosdn-nofeature-noha
+2017-04-03 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-04 02:02;apex;os-nosdn-kvm-ha
+2017-04-04 02:05;apex;os-nosdn-nofeature-ha
+2017-04-04 02:07;compass;os-nosdn-nofeature-ha
+2017-04-04 02:09;fuel;os-nosdn-ovs-ha
+2017-04-04 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-04 02:10;fuel;os-nosdn-ovs-noha
+2017-04-04 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-05 02:00;apex;os-nosdn-kvm-ha
+2017-04-05 02:03;apex;os-nosdn-nofeature-ha
+2017-04-05 02:06;compass;os-nosdn-nofeature-ha
+2017-04-05 02:07;fuel;os-nosdn-ovs-ha
+2017-04-05 02:08;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-05 02:08;fuel;os-nosdn-ovs-noha
+2017-04-05 02:13;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-06 02:07;compass;os-nosdn-nofeature-ha
+2017-04-06 02:08;fuel;os-nosdn-ovs-ha
+2017-04-06 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-06 02:09;fuel;os-nosdn-ovs-noha
+2017-04-06 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-07 02:08;fuel;os-nosdn-ovs-ha
+2017-04-07 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-07 02:09;fuel;os-nosdn-ovs-noha
+2017-04-07 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-08 02:08;fuel;os-nosdn-ovs-ha
+2017-04-08 02:09;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-08 02:09;fuel;os-nosdn-ovs-noha
+2017-04-08 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-09 02:07;fuel;os-nosdn-kvm-noha
+2017-04-09 02:08;fuel;os-nosdn-ovs-ha
+2017-04-09 02:08;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-09 02:09;fuel;os-nosdn-ovs-noha
+2017-04-09 02:14;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-10 02:07;fuel;os-nosdn-kvm-noha
+2017-04-10 02:08;fuel;os-nosdn-ovs-ha
+2017-04-10 02:08;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-10 02:09;fuel;os-nosdn-ovs-noha
+2017-04-10 02:11;fuel;os-nosdn-nofeature-noha
+2017-04-10 02:13;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-11 02:06;compass;os-nosdn-nofeature-ha
+2017-04-11 02:06;fuel;os-nosdn-kvm-noha
+2017-04-11 02:07;fuel;os-nosdn-ovs-ha
+2017-04-11 02:08;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-11 02:08;fuel;os-nosdn-ovs-noha
+2017-04-11 02:11;fuel;os-nosdn-nofeature-noha
+2017-04-11 02:13;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-11 02:15;fuel;os-nosdn-nofeature-ha
+2017-04-12 02:07;fuel;os-nosdn-ovs-ha
+2017-04-12 02:07;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-12 02:08;fuel;os-nosdn-ovs-noha
+2017-04-12 02:11;fuel;os-nosdn-nofeature-noha
+2017-04-12 02:13;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-12 02:14;fuel;os-nosdn-nofeature-ha
+2017-04-28 20:46;compass;os-nosdn-openo-ha
+2017-04-28 20:48;fuel;os-nosdn-kvm-noha
+2017-04-28 20:49;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-28 20:49;fuel;os-nosdn-ovs-noha
+2017-04-28 20:52;fuel;os-nosdn-kvm-ha
+2017-04-28 20:54;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-28 20:55;fuel;os-nosdn-ovs-ha
+2017-04-28 20:56;fuel;os-nosdn-nofeature-noha
+2017-04-29 02:07;compass;os-nosdn-openo-ha
+2017-04-29 02:08;fuel;os-nosdn-kvm-noha
+2017-04-29 02:09;fuel;os-nosdn-ovs-ha
+2017-04-29 02:10;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-29 02:10;fuel;os-nosdn-ovs-noha
+2017-04-29 02:12;fuel;os-nosdn-kvm-ha
+2017-04-29 02:13;fuel;os-nosdn-nofeature-noha
+2017-04-29 02:15;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-30 02:07;compass;os-nosdn-openo-ha
+2017-04-30 02:08;fuel;os-nosdn-kvm-noha
+2017-04-30 02:09;fuel;os-nosdn-ovs-ha
+2017-04-30 02:10;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-04-30 02:10;fuel;os-nosdn-ovs-noha
+2017-04-30 02:13;fuel;os-nosdn-nofeature-noha
+2017-04-30 02:15;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-04-30 02:17;fuel;os-nosdn-nofeature-ha
+2017-04-30 02:18;joid;os-nosdn-nofeature-noha
+2017-05-01 02:09;compass;os-nosdn-openo-ha
+2017-05-01 02:10;fuel;os-nosdn-kvm-noha
+2017-05-01 02:10;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-05-01 02:11;fuel;os-nosdn-ovs-ha
+2017-05-01 02:11;fuel;os-nosdn-ovs-noha
+2017-05-01 02:16;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-05-01 02:18;fuel;os-nosdn-nofeature-noha
+2017-05-01 02:18;fuel;os-nosdn-nofeature-ha
+2017-05-01 02:21;joid;os-nosdn-nofeature-noha
+2017-05-02 02:10;fuel;os-nosdn-kvm-noha
+2017-05-02 02:11;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-05-02 02:11;fuel;os-nosdn-ovs-ha
+2017-05-02 02:12;fuel;os-nosdn-ovs-noha
+2017-05-02 02:14;fuel;os-nosdn-kvm-ha
+2017-05-02 02:14;fuel;os-odl_l3-nofeature-noha
+2017-05-02 02:16;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-05-02 02:17;fuel;os-odl_l2-bgpvpn-noha
+2017-05-02 02:18;fuel;os-nosdn-nofeature-noha
+2017-05-02 02:19;joid;os-nosdn-nofeature-noha
+2017-05-03 02:09;compass;os-nosdn-nofeature-ha
+2017-05-03 02:10;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-05-03 02:11;fuel;os-nosdn-kvm-noha
+2017-05-03 02:11;fuel;os-nosdn-ovs-noha
+2017-05-03 02:13;fuel;os-nosdn-kvm-ha
+2017-05-03 02:14;fuel;os-odl_l3-nofeature-noha
+2017-05-03 02:15;fuel;os-odl_l2-sfc-ha
+2017-05-03 02:16;fuel;os-nosdn-kvm_ovs_dpdk_bar-noha
+2017-05-03 02:16;fuel;os-odl_l2-bgpvpn-noha
+2017-05-03 02:17;fuel;os-nosdn-nofeature-noha
+2017-05-03 02:18;fuel;os-nosdn-ovs-ha
+2017-05-03 02:19;joid;os-nosdn-nofeature-noha
+2017-05-04 02:10;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-05-04 02:11;fuel;os-nosdn-ovs-ha
+2017-05-04 02:11;fuel;os-nosdn-ovs-noha
+2017-05-04 02:13;fuel;os-nosdn-kvm-ha
+2017-05-04 02:14;fuel;os-odl_l3-nofeature-noha
+2017-05-04 02:15;fuel;os-odl_l2-sfc-ha
+2017-05-04 02:16;fuel;os-odl_l2-bgpvpn-noha
+2017-05-04 02:17;fuel;os-nosdn-nofeature-noha
+2017-05-04 02:18;fuel;os-nosdn-kvm-noha
+2017-05-04 02:19;joid;os-nosdn-nofeature-noha
+2017-05-05 02:10;fuel;os-nosdn-kvm_ovs_dpdk-noha
+2017-05-05 02:11;fuel;os-nosdn-kvm-noha
+2017-05-05 02:11;fuel;os-nosdn-ovs-noha
+2017-05-05 02:12;fuel;os-odl_l3-nofeature-noha
+2017-05-05 02:14;fuel;os-nosdn-kvm-ha
+2017-05-05 02:14;fuel;os-nosdn-nofeature-noha
+2017-05-05 02:16;fuel;os-odl_l2-sfc-ha
+2017-05-05 02:17;fuel;os-odl_l2-bgpvpn-noha
+2017-05-05 02:18;fuel;os-nosdn-nofeature-ha
+2017-05-05 02:18;fuel;os-nosdn-ovs-ha
diff --git a/docs/testing/user/configguide/configguide.rst b/docs/testing/user/configguide/configguide.rst
index e3485be4..9a174978 100644
--- a/docs/testing/user/configguide/configguide.rst
+++ b/docs/testing/user/configguide/configguide.rst
@@ -336,6 +336,7 @@ should now be in place::
|-- parser
|-- promise
|-- rally
+ |-- refstack-client
|-- releng
|-- sdnvpn
|-- securityscanning
diff --git a/docs/testing/user/userguide/index.rst b/docs/testing/user/userguide/index.rst
index e050cf14..c1faecda 100644
--- a/docs/testing/user/userguide/index.rst
+++ b/docs/testing/user/userguide/index.rst
@@ -247,13 +247,125 @@ The Rally testcases are distributed accross two Tiers:
NOTE: Test case 'rally_sanity' executes a limited number of Rally smoke test
cases. Test case 'rally_full' executes the full defined set of Rally tests.
+
+Refstack-client to run Defcore testcases
+-----------------------------------------
+
+Refstack-client `[8]`_ is a command line utility that allows you to
+execute Tempest test runs based on configurations you specify.
+It is the official tool to run Defcore `[9]`_ testcases,
+which focuses on testing interoperability between OpenStack clouds.
+
+Refstack-client is integrated in Functest, consumed by Dovetail, which
+intends to define and provide a set of OPNFV related validation criteria
+that will provide input for the evaluation of the use of OPNFV trademarks.
+This progress is under the guideline of Compliance Verification Program(CVP).
+
+Defcore testcases
+^^^^^^^^^^^^^^^^^^
+
+*Danube Release*
+
+Set of DefCore tempest test cases not flagged and required.
+According to `[10]`_, some tests are still flagged due to outstanding bugs
+in the Tempest library, particularly tests that require SSH. Refstack developers
+are working on correcting these bugs upstream. Please note that although some tests
+are flagged because of bugs, there is still an expectation that the capabilities
+covered by the tests are available. It only contains Openstack core compute
+(no object storage). The approved guidelines (2016.08) are valid for Kilo,
+Liberty, Mitaka and Newton releases of OpenStack.
+The list can be generated using the Rest API from RefStack project:
+https://refstack.openstack.org/api/v1/guidelines/2016.08/tests?target=compute&type=required&alias=true&flag=false
+
+Running methods
+^^^^^^^^^^^^^^^
+
+Two running methods are provided after refstack-client integrated into
+Functest, Functest command line and manually, respectively.
+
+By default, for Defcore test cases run by Functest command line,
+are run followed with automatically generated
+configuration file, i.e., refstack_tempest.conf. In some circumstances,
+the automatic configuration file may not quite satisfied with the SUT,
+Functest also inherits the refstack-client command line and provides a way
+for users to set its configuration file according to its own SUT manually.
+
+*command line*
+
+Inside the Functest container, first to prepare Functest environment:
+
+::
+
+ cd /home/opnfv/repos/functest
+ pip install -e .
+ functest env prepare
+
+then to run default defcore testcases by using refstack-client:
+
+::
+
+ functest testcase run refstack_defcore
+
+In OPNFV Continuous Integration(CI) system, the command line method is used.
+
+*manually*
+
+Inside the Functest container, first to prepare the refstack virtualenv:
+
+::
+
+ cd /home/opnfv/repos/refstack-client
+ source .venv/bin/activate
+
+then prepare the tempest configuration file and the testcases want to run with the SUT,
+run the testcases with:
+
+::
+
+ ./refstack-client test -c <Path of the tempest configuration file to use> -v --test-list <Path or URL of test list>
+
+using help for more information:
+
+::
+
+ ./refstack-client --help
+ ./refstack-client test --help
+
+Reference tempest configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*command line method*
+
+When command line method is used, the default tempest configuration file
+is generated by Rally.
+
+*manually*
+
+When running manually is used, recommended way to generate tempest configuration
+file is:
+
+::
+
+ cd /home/opnfv/repos/functest/functest/opnfv_tests/openstack/refstack_client
+ python tempest_conf.py
+
+a file called tempest.conf is stored in the current path by default, users can do
+some adjustment according to the SUT:
+
+::
+
+ vim refstack_tempest.conf
+
+a reference article can be used `[15]`_.
+
+
snaps_smoke
------------
This test case contains tests that setup and destroy environments with VMs with
and without Floating IPs with a newly created user and project. Set the config
value snaps.use_floating_ips (True|False) to toggle this functionality. When
-the config value of snaps.use_keystone is True, functest must have access
+the config value of snaps.use_keystone is True, Functest must have access
the cloud's private network.
This suite consists in 38 tests (test duration < 10 minutes)
@@ -362,7 +474,7 @@ The test cases are described as follows:
Features
--------
-In Danube, functest supports the integration of:
+In Danube, Functest supports the integration of:
* barometer
* bgpvpn
@@ -520,10 +632,14 @@ References
.. _`[5]`: https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater/blob/master/openstack-blueprint.yaml
.. _`[6]`: https://scap.nist.gov/
.. _`[7]`: https://github.com/OpenSCAP/openscap
+.. _`[8]`: https://github.com/openstack/refstack-client
+.. _`[9]`: https://github.com/openstack/defcore
+.. _`[10]`: https://github.com/openstack/interop/blob/master/2016.08/procedure.rst
.. _`[11]`: http://robotframework.org/
.. _`[12]`: http://artifacts.opnfv.org/parser/colorado/docs/userguide/index.html
.. _`[13]`: https://wiki.opnfv.org/display/PROJ/SNAPS-OO
.. _`[14]`: https://github.com/oolorg/opnfv-functest-vrouter
+.. _`[15]`: https://aptira.com/testing-openstack-tempest-part-1/
`OPNFV main site`_
diff --git a/functest/ci/check_os.sh b/functest/ci/check_os.sh
index 83f9f476..ce0bc20c 100755
--- a/functest/ci/check_os.sh
+++ b/functest/ci/check_os.sh
@@ -86,30 +86,6 @@ if [ $RETVAL -ne 0 ]; then
fi
echo " ...OK"
-adminURL=$(openstack catalog show identity |awk '/admin/ {print $4}')
-if [ -z ${adminURL} ]; then
- echo "ERROR: Cannot determine the admin URL."
- openstack catalog show identity
- exit 1
-fi
-adminIP=$(echo $adminURL|sed 's/^.*http.*\:\/\///'|sed 's/.[^:]*$//')
-adminPort=$(echo $adminURL|grep -Po '(?<=:)\d+')
-https_enabled=$(echo $adminURL | grep 'https')
-if [[ -n $https_enabled ]]; then
- echo ">>Verifying SSL connectivity to the admin endpoint $adminIP:$adminPort..."
- verify_SSL_connectivity $adminIP $adminPort
-else
- echo ">>Verifying connectivity to the admin endpoint $adminIP:$adminPort..."
- verify_connectivity $adminIP $adminPort
-fi
-RETVAL=$?
-if [ $RETVAL -ne 0 ]; then
- echo "ERROR: Cannot talk to the admin endpoint $adminIP:$adminPort ."
- echo "$adminURL"
- exit 1
-fi
-echo " ...OK"
-
echo "Checking Required OpenStack services:"
for service in $MANDATORY_SERVICES; do
diff --git a/functest/ci/config_functest.yaml b/functest/ci/config_functest.yaml
index f291cf1f..fd663abc 100644
--- a/functest/ci/config_functest.yaml
+++ b/functest/ci/config_functest.yaml
@@ -34,7 +34,7 @@ general:
functest: /home/opnfv/functest
functest_test: /home/opnfv/repos/functest/functest/opnfv_tests
results: /home/opnfv/functest/results
- functest_logging_cfg: /home/opnfv/repos/functest/functest/ci/logging.json
+ functest_logging_cfg: /home/opnfv/repos/functest/functest/ci/logging.ini
functest_conf: /home/opnfv/functest/conf
functest_data: /home/opnfv/functest/data
ims_data: /home/opnfv/functest/data/ims/
diff --git a/functest/ci/generate_report.py b/functest/ci/generate_report.py
index 3872a07e..7a25fd95 100755..100644
--- a/functest/ci/generate_report.py
+++ b/functest/ci/generate_report.py
@@ -6,10 +6,10 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
import json
+import logging
import re
import urllib2
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
from functest.utils.constants import CONST
@@ -23,7 +23,7 @@ COL_5_LEN = 75
# and then we can print the url to the specific test result
-logger = ft_logger.Logger("generate_report").getLogger()
+logger = logging.getLogger(__name__)
def init(tiers_to_run=[]):
@@ -146,8 +146,3 @@ def main(args=[]):
str += print_separator('-')
logger.info("\n\n\n%s" % str)
-
-
-if __name__ == '__main__':
- import sys
- main(sys.argv[1:])
diff --git a/functest/ci/logging.ini b/functest/ci/logging.ini
new file mode 100644
index 00000000..8036ed29
--- /dev/null
+++ b/functest/ci/logging.ini
@@ -0,0 +1,70 @@
+[loggers]
+keys=root,functest,ci,cli,core,opnfv_tests,utils
+
+[handlers]
+keys=console,wconsole,file,null
+
+[formatters]
+keys=standard
+
+[logger_root]
+level=NOTSET
+handlers=null
+
+[logger_functest]
+level=NOTSET
+handlers=file
+qualname=functest
+
+[logger_ci]
+level=NOTSET
+handlers=console
+qualname=functest.ci
+
+[logger_cli]
+level=NOTSET
+handlers=wconsole
+qualname=functest.cli
+
+[logger_core]
+level=NOTSET
+handlers=console
+qualname=functest.core
+
+[logger_opnfv_tests]
+level=NOTSET
+handlers=wconsole
+qualname=functest.opnfv_tests
+
+[logger_utils]
+level=NOTSET
+handlers=wconsole
+qualname=functest.utils
+
+[handler_null]
+class=NullHandler
+level=NOTSET
+formatter=standard
+args=()
+
+[handler_console]
+class=StreamHandler
+level=INFO
+formatter=standard
+args=(sys.stdout,)
+
+[handler_wconsole]
+class=StreamHandler
+level=WARN
+formatter=standard
+args=(sys.stdout,)
+
+[handler_file]
+class=FileHandler
+level=DEBUG
+formatter=standard
+args=("/home/opnfv/functest/results/functest.log",)
+
+[formatter_standard]
+format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
+datefmt=
diff --git a/functest/ci/logging.json b/functest/ci/logging.json
deleted file mode 100644
index 2a2399d3..00000000
--- a/functest/ci/logging.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "version": 1,
- "disable_existing_loggers": false,
- "formatters": {
- "standard": {
- "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
- }
- },
- "handlers": {
- "console": {
- "level": "INFO",
- "class": "logging.StreamHandler",
- "formatter": "standard"
- },
- "file": {
- "level": "DEBUG",
- "class": "logging.FileHandler",
- "formatter": "standard",
- "filename": "/home/opnfv/functest/results/functest.log"
- }
- },
- "loggers": {
- "": {
- "handlers": ["console", "file"],
- "level": "DEBUG",
- "propagate": "yes"
- }
- }
-}
diff --git a/functest/ci/prepare_env.py b/functest/ci/prepare_env.py
index e9a470f9..08badf17 100755
--- a/functest/ci/prepare_env.py
+++ b/functest/ci/prepare_env.py
@@ -8,6 +8,8 @@
import argparse
import json
+import logging
+import logging.config
import os
import re
import subprocess
@@ -16,7 +18,6 @@ import fileinput
import yaml
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
from functest.utils.constants import CONST
@@ -27,7 +28,7 @@ from opnfv.deployment import factory
actions = ['start', 'check']
""" logging configuration """
-logger = ft_logger.Logger("prepare_env").getLogger()
+logger = logging.getLogger('functest.ci.prepare_env')
handler = None
# set the architecture to default
pod_arch = None
@@ -377,6 +378,8 @@ def main(**kwargs):
if __name__ == '__main__':
+ logging.config.fileConfig(
+ CONST.__getattribute__('dir_functest_logging_cfg'))
parser = PrepareEnvParser()
args = parser.parse_args(sys.argv[1:])
sys.exit(main(**args))
diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py
index e68901b8..d1361260 100755
--- a/functest/ci/run_tests.py
+++ b/functest/ci/run_tests.py
@@ -12,6 +12,8 @@ import argparse
import datetime
import enum
import importlib
+import logging
+import logging.config
import os
import re
import sys
@@ -19,16 +21,14 @@ import sys
import functest.ci.generate_report as generate_report
import functest.ci.tier_builder as tb
import functest.core.testcase as testcase
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_clean as os_clean
import functest.utils.openstack_snapshot as os_snapshot
import functest.utils.openstack_utils as os_utils
from functest.utils.constants import CONST
-
-""" logging configuration """
-logger = ft_logger.Logger("run_tests").getLogger()
+# __name__ cannot be used here
+logger = logging.getLogger('functest.ci.run_tests')
class Result(enum.Enum):
@@ -270,6 +270,8 @@ def main(**kwargs):
if __name__ == '__main__':
+ logging.config.fileConfig(
+ CONST.__getattribute__('dir_functest_logging_cfg'))
parser = RunTestsParser()
args = parser.parse_args(sys.argv[1:])
sys.exit(main(**args).value)
diff --git a/functest/cli/cli_base.py b/functest/cli/cli_base.py
index cc697ed7..2104e125 100644
--- a/functest/cli/cli_base.py
+++ b/functest/cli/cli_base.py
@@ -8,11 +8,14 @@
#
import click
+import logging.config
from functest.cli.commands.cli_env import CliEnv
from functest.cli.commands.cli_os import CliOpenStack
from functest.cli.commands.cli_testcase import CliTestcase
from functest.cli.commands.cli_tier import CliTier
+from functest.utils.constants import CONST
+
CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
@@ -20,7 +23,8 @@ CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
@click.group(context_settings=CONTEXT_SETTINGS)
@click.version_option(version='opnfv colorado.0.1 ')
def cli():
- pass
+ logging.config.fileConfig(
+ CONST.__getattribute__('dir_functest_logging_cfg'))
_env = CliEnv()
diff --git a/functest/core/feature.py b/functest/core/feature.py
index d65f5a3c..8563c925 100644
--- a/functest/core/feature.py
+++ b/functest/core/feature.py
@@ -13,11 +13,11 @@ Feature is considered as TestCase offered by Third-party. It offers
helpers to run any python method or any bash command.
"""
+import logging
import time
import functest.core.testcase as base
import functest.utils.functest_utils as ft_utils
-import functest.utils.functest_logger as ft_logger
from functest.utils.constants import CONST
__author__ = ("Serena Feng <feng.xiaowei@zte.com.cn>, "
@@ -27,11 +27,12 @@ __author__ = ("Serena Feng <feng.xiaowei@zte.com.cn>, "
class Feature(base.TestCase):
"""Base model for single feature."""
+ __logger = logging.getLogger(__name__)
+
def __init__(self, **kwargs):
super(Feature, self).__init__(**kwargs)
self.result_file = "{}/{}.log".format(
- CONST.__getattribute__('dir_results'), self.project_name)
- self.logger = ft_logger.Logger(self.project_name).getLogger()
+ CONST.__getattribute__('dir_results'), self.case_name)
def execute(self, **kwargs):
"""Execute the Python method.
@@ -82,10 +83,10 @@ class Feature(base.TestCase):
ft_utils.logger_test_results(
self.project_name, self.case_name,
self.result, self.details)
- self.logger.info("%s %s", self.project_name, self.result)
+ self.__logger.info("%s %s", self.project_name, self.result)
except Exception: # pylint: disable=broad-except
- self.logger.exception("%s FAILED", self.project_name)
- self.logger.info("Test result is stored in '%s'", self.result_file)
+ self.__logger.exception("%s FAILED", self.project_name)
+ self.__logger.info("Test result is stored in '%s'", self.result_file)
self.stop_time = time.time()
return exit_code
@@ -93,6 +94,8 @@ class Feature(base.TestCase):
class BashFeature(Feature):
"""Class designed to run any bash command."""
+ __logger = logging.getLogger(__name__)
+
def execute(self, **kwargs):
"""Execute the cmd passed as arg
@@ -108,7 +111,7 @@ class BashFeature(Feature):
cmd = kwargs["cmd"]
ret = ft_utils.execute_command(cmd, output_file=self.result_file)
except KeyError:
- self.logger.error("Please give cmd as arg. kwargs: %s", kwargs)
+ self.__logger.error("Please give cmd as arg. kwargs: %s", kwargs)
except Exception: # pylint: disable=broad-except
- self.logger.exception("Execute cmd: %s failed", cmd)
+ self.__logger.exception("Execute cmd: %s failed", cmd)
return ret
diff --git a/functest/core/testcase.py b/functest/core/testcase.py
index 3f191b40..217f07e5 100644
--- a/functest/core/testcase.py
+++ b/functest/core/testcase.py
@@ -9,9 +9,9 @@
"""Define the parent class of all Functest TestCases."""
+import logging
import os
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
__author__ = "Cedric Ollivier <cedric.ollivier@orange.com>"
@@ -32,7 +32,7 @@ class TestCase(object):
EX_TESTCASE_FAILED = os.EX_SOFTWARE - 2
"""results are false"""
- logger = ft_logger.Logger(__name__).getLogger()
+ __logger = logging.getLogger(__name__)
def __init__(self, **kwargs):
self.details = {}
@@ -65,12 +65,12 @@ class TestCase(object):
# It must be removed as soon as TestCase subclasses
# stop setting result = 'PASS' or 'FAIL'.
# In this case criteria is unread.
- self.logger.warning(
+ self.__logger.warning(
"Please update result which must be an int!")
if self.result == 'PASS':
return TestCase.EX_OK
except AssertionError:
- self.logger.error("Please run test before checking the results")
+ self.__logger.error("Please run test before checking the results")
return TestCase.EX_TESTCASE_FAILED
def run(self, **kwargs):
@@ -96,7 +96,7 @@ class TestCase(object):
TestCase.EX_RUN_ERROR.
"""
# pylint: disable=unused-argument
- self.logger.error("Run must be implemented")
+ self.__logger.error("Run must be implemented")
return TestCase.EX_RUN_ERROR
def push_to_db(self):
@@ -128,11 +128,12 @@ class TestCase(object):
if ft_utils.push_results_to_db(
self.project_name, self.case_name, self.start_time,
self.stop_time, pub_result, self.details):
- self.logger.info("The results were successfully pushed to DB")
+ self.__logger.info(
+ "The results were successfully pushed to DB")
return TestCase.EX_OK
else:
- self.logger.error("The results cannot be pushed to DB")
+ self.__logger.error("The results cannot be pushed to DB")
return TestCase.EX_PUSH_TO_DB_ERROR
except Exception: # pylint: disable=broad-except
- self.logger.exception("The results cannot be pushed to DB")
+ self.__logger.exception("The results cannot be pushed to DB")
return TestCase.EX_PUSH_TO_DB_ERROR
diff --git a/functest/core/vnf_base.py b/functest/core/vnf_base.py
index fe4e427f..90bc80b3 100644
--- a/functest/core/vnf_base.py
+++ b/functest/core/vnf_base.py
@@ -8,18 +8,18 @@
# http://www.apache.org/licenses/LICENSE-2.0
import inspect
+import logging
import time
import functest.core.testcase as base
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
class VnfOnBoardingBase(base.TestCase):
- logger = ft_logger.Logger(__name__).getLogger()
+ __logger = logging.getLogger(__name__)
def __init__(self, **kwargs):
super(VnfOnBoardingBase, self).__init__(**kwargs)
@@ -44,28 +44,28 @@ class VnfOnBoardingBase(base.TestCase):
'vnf_{}_tenant_description'.format(self.case_name))
except Exception:
# raise Exception("Unknown VNF case=" + self.case_name)
- self.logger.error("Unknown VNF case={}".format(self.case_name))
+ self.__logger.error("Unknown VNF case={}".format(self.case_name))
try:
self.images = CONST.__getattribute__(
'vnf_{}_tenant_images'.format(self.case_name))
except Exception:
- self.logger.warn("No tenant image defined for this VNF")
+ self.__logger.warn("No tenant image defined for this VNF")
def execute(self):
self.start_time = time.time()
# Prepare the test (Create Tenant, User, ...)
try:
- self.logger.info("Create VNF Onboarding environment")
+ self.__logger.info("Create VNF Onboarding environment")
self.prepare()
except Exception:
- self.logger.error("Error during VNF Onboarding environment" +
- "creation", exc_info=True)
+ self.__logger.error("Error during VNF Onboarding environment"
+ "creation", exc_info=True)
return base.TestCase.EX_TESTCASE_FAILED
# Deploy orchestrator
try:
- self.logger.info("Deploy orchestrator (if necessary)")
+ self.__logger.info("Deploy orchestrator (if necessary)")
orchestrator_ready_time = time.time()
res_orchestrator = self.deploy_orchestrator()
# orchestrator is not mandatory
@@ -77,11 +77,11 @@ class VnfOnBoardingBase(base.TestCase):
self.details['orchestrator']['duration'] = round(
orchestrator_ready_time - self.start_time, 1)
except Exception:
- self.logger.warn("Problem with the Orchestrator", exc_info=True)
+ self.__logger.warn("Problem with the Orchestrator", exc_info=True)
# Deploy VNF
try:
- self.logger.info("Deploy VNF " + self.case_name)
+ self.__logger.info("Deploy VNF " + self.case_name)
res_deploy_vnf = self.deploy_vnf()
vnf_ready_time = time.time()
self.details['vnf']['status'] = res_deploy_vnf['status']
@@ -89,12 +89,12 @@ class VnfOnBoardingBase(base.TestCase):
self.details['vnf']['duration'] = round(
vnf_ready_time - orchestrator_ready_time, 1)
except Exception:
- self.logger.error("Error during VNF deployment", exc_info=True)
+ self.__logger.error("Error during VNF deployment", exc_info=True)
return base.TestCase.EX_TESTCASE_FAILED
# Test VNF
try:
- self.logger.info("Test VNF")
+ self.__logger.info("Test VNF")
res_test_vnf = self.test_vnf()
test_vnf_done_time = time.time()
self.details['test_vnf']['status'] = res_test_vnf['status']
@@ -102,7 +102,7 @@ class VnfOnBoardingBase(base.TestCase):
self.details['test_vnf']['duration'] = round(
test_vnf_done_time - vnf_ready_time, 1)
except Exception:
- self.logger.error("Error when running VNF tests", exc_info=True)
+ self.__logger.error("Error when running VNF tests", exc_info=True)
return base.TestCase.EX_TESTCASE_FAILED
# Clean the system
@@ -121,7 +121,8 @@ class VnfOnBoardingBase(base.TestCase):
self.creds = os_utils.get_credentials()
self.keystone_client = os_utils.get_keystone_client()
- self.logger.info("Prepare OpenStack plateform(create tenant and user)")
+ self.__logger.info(
+ "Prepare OpenStack plateform(create tenant and user)")
admin_user_id = os_utils.get_user_id(self.keystone_client,
self.creds['username'])
if not admin_user_id:
@@ -164,7 +165,7 @@ class VnfOnBoardingBase(base.TestCase):
os_utils.add_role_user(self.keystone_client, user_id,
role_id, tenant_id)
- self.logger.info("Update OpenStack creds informations")
+ self.__logger.info("Update OpenStack creds informations")
self.admin_creds = self.creds.copy()
self.admin_creds.update({
"tenant": self.tenant_name
@@ -183,21 +184,21 @@ class VnfOnBoardingBase(base.TestCase):
# TODO see how to use built-in exception from releng module
def deploy_vnf(self):
- self.logger.error("VNF must be deployed")
+ self.__logger.error("VNF must be deployed")
raise Exception("VNF not deployed")
def test_vnf(self):
- self.logger.error("VNF must be tested")
+ self.__logger.error("VNF must be tested")
raise Exception("VNF not tested")
# clean before openstack clean run
def clean(self):
- self.logger.info("test cleaning")
+ self.__logger.info("test cleaning")
def parse_results(self):
exit_code = self.EX_OK
self.result = "PASS"
- self.logger.info(self.details)
+ self.__logger.info(self.details)
# The 2 VNF steps must be OK to get a PASS result
if (self.details['vnf']['status'] is not "PASS" or
self.details['test_vnf']['status'] is not "PASS"):
@@ -213,7 +214,7 @@ class VnfOnBoardingBase(base.TestCase):
def step_failure(self, error_msg):
part = inspect.stack()[1][3]
- self.logger.error("Step {0} failed: {1}".format(part, error_msg))
+ self.__logger.error("Step {0} failed: {1}".format(part, error_msg))
try:
step_name = self.details_step_mapping[part]
part_info = self.details[step_name]
diff --git a/functest/opnfv_tests/features/barometer.py b/functest/opnfv_tests/features/barometer.py
index 8a409406..cbfe7d9a 100644
--- a/functest/opnfv_tests/features/barometer.py
+++ b/functest/opnfv_tests/features/barometer.py
@@ -6,6 +6,8 @@
#
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
+
from baro_tests import collectd
import functest.core.feature as base
@@ -16,5 +18,7 @@ class BarometerCollectd(base.Feature):
Class for executing barometercollectd testcase.
'''
+ __logger = logging.getLogger(__name__)
+
def execute(self):
- return collectd.main(self.logger)
+ return collectd.main(self.__logger)
diff --git a/functest/opnfv_tests/openstack/examples/create_instance_and_ip.py b/functest/opnfv_tests/openstack/examples/create_instance_and_ip.py
deleted file mode 100755
index b4400864..00000000
--- a/functest/opnfv_tests/openstack/examples/create_instance_and_ip.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (c) 2015 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
-#
-# This script boots an instance and assigns a floating ip
-#
-
-import argparse
-import os
-import sys
-
-from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
-import functest.utils.openstack_utils as os_utils
-
-parser = argparse.ArgumentParser()
-
-parser.add_argument("-r", "--report",
- help="Create json result file",
- action="store_true")
-
-args = parser.parse_args()
-
-""" logging configuration """
-logger = ft_logger.Logger("create_instance_and_ip").getLogger()
-
-HOME = CONST.dir_home + "/"
-
-VM_BOOT_TIMEOUT = 180
-
-EXAMPLE_INSTANCE_NAME = CONST.example_vm_name
-EXAMPLE_FLAVOR = CONST.example_flavor
-EXAMPLE_IMAGE_NAME = CONST.example_image_name
-IMAGE_FILENAME = CONST.openstack_image_file_name
-IMAGE_FORMAT = CONST.openstack_image_disk_format
-IMAGE_PATH = os.path.join(CONST.dir_functest_data, IMAGE_FILENAME)
-
-# NEUTRON Private Network parameters
-
-EXAMPLE_PRIVATE_NET_NAME = CONST.example_private_net_name
-EXAMPLE_PRIVATE_SUBNET_NAME = CONST.example_private_subnet_name
-EXAMPLE_PRIVATE_SUBNET_CIDR = CONST.example_private_subnet_cidr
-EXAMPLE_ROUTER_NAME = CONST.example_router_name
-
-EXAMPLE_SECGROUP_NAME = CONST.example_sg_name
-EXAMPLE_SECGROUP_DESCR = CONST.example_sg_desc
-
-
-def main():
-
- nova_client = os_utils.get_nova_client()
- neutron_client = os_utils.get_neutron_client()
- glance_client = os_utils.get_glance_client()
-
- image_id = os_utils.create_glance_image(glance_client,
- EXAMPLE_IMAGE_NAME,
- IMAGE_PATH,
- disk=IMAGE_FORMAT,
- container="bare",
- public=True)
-
- network_dic = os_utils.create_network_full(
- neutron_client,
- EXAMPLE_PRIVATE_NET_NAME,
- EXAMPLE_PRIVATE_SUBNET_NAME,
- EXAMPLE_ROUTER_NAME,
- EXAMPLE_PRIVATE_SUBNET_CIDR)
- if not network_dic:
- logger.error(
- "There has been a problem when creating the neutron network")
- sys.exit(-1)
-
- network_id = network_dic["net_id"]
-
- sg_id = os_utils.create_security_group_full(neutron_client,
- EXAMPLE_SECGROUP_NAME,
- EXAMPLE_SECGROUP_DESCR)
-
- # boot INTANCE
- logger.info("Creating instance '%s'..." % EXAMPLE_INSTANCE_NAME)
- logger.debug(
- "Configuration:\n name=%s \n flavor=%s \n image=%s \n "
- "network=%s \n"
- % (EXAMPLE_INSTANCE_NAME, EXAMPLE_FLAVOR, image_id, network_id))
- instance = os_utils.create_instance_and_wait_for_active(
- EXAMPLE_FLAVOR,
- image_id,
- network_id,
- EXAMPLE_INSTANCE_NAME)
-
- if instance is None:
- logger.error("Error while booting instance.")
- sys.exit(-1)
- # Retrieve IP of INSTANCE
- instance_ip = instance.networks.get(EXAMPLE_PRIVATE_NET_NAME)[0]
- logger.debug("Instance '%s' got private ip '%s'." %
- (EXAMPLE_INSTANCE_NAME, instance_ip))
-
- logger.info("Adding '%s' to security group '%s'..."
- % (EXAMPLE_INSTANCE_NAME, EXAMPLE_SECGROUP_NAME))
- os_utils.add_secgroup_to_instance(nova_client, instance.id, sg_id)
-
- logger.info("Creating floating IP for VM '%s'..." % EXAMPLE_INSTANCE_NAME)
- floatip_dic = os_utils.create_floating_ip(neutron_client)
- floatip = floatip_dic['fip_addr']
- # floatip_id = floatip_dic['fip_id']
-
- if floatip is None:
- logger.error("Cannot create floating IP.")
- sys.exit(-1)
- logger.info("Floating IP created: '%s'" % floatip)
-
- logger.info("Associating floating ip: '%s' to VM '%s' "
- % (floatip, EXAMPLE_INSTANCE_NAME))
- if not os_utils.add_floating_ip(nova_client, instance.id, floatip):
- logger.error("Cannot associate floating IP to VM.")
- sys.exit(-1)
-
- sys.exit(0)
-
-
-if __name__ == '__main__':
- main()
diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py
index e07e2a8d..f762383a 100644
--- a/functest/opnfv_tests/openstack/rally/rally.py
+++ b/functest/opnfv_tests/openstack/rally/rally.py
@@ -9,6 +9,7 @@
#
import json
+import logging
import os
import re
import subprocess
@@ -19,11 +20,10 @@ import yaml
from functest.core import testcase
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
-logger = ft_logger.Logger('Rally').getLogger()
+logger = logging.getLogger(__name__)
class RallyBase(testcase.TestCase):
diff --git a/functest/opnfv_tests/openstack/refstack_client/defcore.txt b/functest/opnfv_tests/openstack/refstack_client/defcore.txt
index be8fd899..0a1787ef 100644
--- a/functest/opnfv_tests/openstack/refstack_client/defcore.txt
+++ b/functest/opnfv_tests/openstack/refstack_client/defcore.txt
@@ -1,4 +1,11 @@
-# Set of DefCore tempest test cases not flagged and required. It only contains OpenStack core (no object storage)
+# Set of DefCore tempest test cases not flagged and required.
+# According to https://github.com/openstack/interop/blob/master/2016.08/procedure.rst,
+# some tests are still flagged due to outstanding bugs in the Tempest library,
+# particularly tests that require SSH. Refstack developers
+# are working on correcting these bugs upstream. Please note that although some tests
+# are flagged because of bugs, there is still an expectation that the capabilities
+# covered by the tests are available.
+# It only contains Openstack core compute (no object storage)
# The approved guidelines (2016.08) are valid for Kilo, Liberty, Mitaka and Newton releases of OpenStack
# The list can be generated using the Rest API from RefStack project:
# https://refstack.openstack.org/api/v1/guidelines/2016.08/tests?target=compute&type=required&alias=true&flag=false
diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
index 2f2fc00f..ebae4b86 100755
--- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
+++ b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
@@ -6,6 +6,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
import argparse
+import logging
import os
import re
import sys
@@ -15,12 +16,11 @@ import time
from functest.core import testcase
from functest.opnfv_tests.openstack.tempest import conf_utils
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
from tempest_conf import TempestConf
""" logging configuration """
-logger = ft_logger.Logger("refstack_defcore").getLogger()
+logger = logging.getLogger(__name__)
class RefstackClient(testcase.TestCase):
@@ -220,6 +220,7 @@ class RefstackClientParser(object):
if __name__ == '__main__':
+ logging.basicConfig()
refstackclient = RefstackClient()
parser = RefstackClientParser()
args = parser.parse_args(sys.argv[1:])
diff --git a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
index d01f0872..5c04253c 100755
--- a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
+++ b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py
@@ -5,15 +5,15 @@
# 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 os
from functest.opnfv_tests.openstack.tempest import conf_utils
from functest.utils import openstack_utils
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
""" logging configuration """
-logger = ft_logger.Logger("refstack_defcore").getLogger()
+logger = logging.getLogger(__name__)
class TempestConf(object):
@@ -48,5 +48,6 @@ class TempestConf(object):
if __name__ == '__main__':
+ logging.basicConfig()
tempestconf = TempestConf()
tempestconf.main()
diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py
index f4a94f65..54f7428c 100644
--- a/functest/opnfv_tests/openstack/tempest/conf_utils.py
+++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py
@@ -8,13 +8,13 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
import ConfigParser
+import logging
import os
import re
import shutil
import subprocess
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
@@ -42,7 +42,7 @@ CI_INSTALLER_TYPE = CONST.INSTALLER_TYPE
CI_INSTALLER_IP = CONST.INSTALLER_IP
""" logging configuration """
-logger = ft_logger.Logger("Tempest").getLogger()
+logger = logging.getLogger(__name__)
def create_tempest_resources(use_custom_images=False,
@@ -279,12 +279,20 @@ def configure_tempest_update_params(tempest_conf_file,
config.set('identity', 'tenant_name', CONST.tempest_identity_tenant_name)
config.set('identity', 'username', CONST.tempest_identity_user_name)
config.set('identity', 'password', CONST.tempest_identity_user_password)
+ config.set('identity', 'region', 'RegionOne')
config.set(
'validation', 'ssh_timeout', CONST.tempest_validation_ssh_timeout)
config.set('object-storage', 'operator_role',
CONST.tempest_object_storage_operator_role)
if CONST.OS_ENDPOINT_TYPE is not None:
+ sections = config.sections()
+ if os_utils.is_keystone_v3():
+ config.set('identity', 'v3_endpoint_type', CONST.OS_ENDPOINT_TYPE)
+ if 'identity-feature-enabled' not in sections:
+ config.add_section('identity-feature-enabled')
+ config.set('identity-feature-enabled', 'api_v2', False)
+ config.set('identity-feature-enabled', 'api_v2_admin', False)
services_list = ['compute',
'volume',
'image',
@@ -292,7 +300,6 @@ def configure_tempest_update_params(tempest_conf_file,
'data-processing',
'object-storage',
'orchestration']
- sections = config.sections()
for service in services_list:
if service not in sections:
config.add_section(service)
diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py
index e6c6b44f..984e2a1b 100644
--- a/functest/opnfv_tests/openstack/tempest/tempest.py
+++ b/functest/opnfv_tests/openstack/tempest/tempest.py
@@ -8,6 +8,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
+import logging
import os
import re
import shutil
@@ -19,11 +20,10 @@ import yaml
from functest.core import testcase
from functest.opnfv_tests.openstack.tempest import conf_utils
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
""" logging configuration """
-logger = ft_logger.Logger("Tempest").getLogger()
+logger = logging.getLogger(__name__)
class TempestCommon(testcase.TestCase):
diff --git a/functest/opnfv_tests/openstack/vping/vping_ssh.py b/functest/opnfv_tests/openstack/vping/vping_ssh.py
index c26c4e0c..e87da363 100755
--- a/functest/opnfv_tests/openstack/vping/vping_ssh.py
+++ b/functest/opnfv_tests/openstack/vping/vping_ssh.py
@@ -7,6 +7,7 @@
#
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
import os
import re
import sys
@@ -16,7 +17,6 @@ import argparse
import paramiko
from scp import SCPClient
-import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
import vping_base
import functest.core.testcase as testcase
@@ -28,7 +28,7 @@ class VPingSSH(vping_base.VPingBase):
if "case_name" not in kwargs:
kwargs["case_name"] = "vping_ssh"
super(VPingSSH, self).__init__(**kwargs)
- self.logger = ft_logger.Logger(self.case_name).getLogger()
+ self.logger = logging.getLogger(__name__)
def do_vping(self, vm, test_ip):
floatip = self.add_float_ip(vm)
@@ -166,6 +166,7 @@ class VPingSSH(vping_base.VPingBase):
if __name__ == '__main__':
+ logging.basicConfig()
args_parser = argparse.ArgumentParser()
args_parser.add_argument("-r", "--report",
help="Create json result file",
diff --git a/functest/opnfv_tests/openstack/vping/vping_userdata.py b/functest/opnfv_tests/openstack/vping/vping_userdata.py
index 1b00ca23..05dda9de 100755
--- a/functest/opnfv_tests/openstack/vping/vping_userdata.py
+++ b/functest/opnfv_tests/openstack/vping/vping_userdata.py
@@ -7,12 +7,12 @@
#
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
import sys
import time
import argparse
-import functest.utils.functest_logger as ft_logger
import vping_base
@@ -22,7 +22,7 @@ class VPingUserdata(vping_base.VPingBase):
if "case_name" not in kwargs:
kwargs["case_name"] = "vping_userdata"
super(VPingUserdata, self).__init__(**kwargs)
- self.logger = ft_logger.Logger(self.case_name).getLogger()
+ self.logger = logging.getLogger(__name__)
def boot_vm_preparation(self, config, vmname, test_ip):
config['config_drive'] = True
@@ -74,6 +74,7 @@ class VPingUserdata(vping_base.VPingBase):
if __name__ == '__main__':
+ logging.basicConfig()
args_parser = argparse.ArgumentParser()
args_parser.add_argument("-r", "--report",
help="Create json result file",
diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py
index 6f4acf6d..f92cb95d 100755
--- a/functest/opnfv_tests/sdn/odl/odl.py
+++ b/functest/opnfv_tests/sdn/odl/odl.py
@@ -19,6 +19,7 @@ Example:
import argparse
import errno
import fileinput
+import logging
import os
import re
import sys
@@ -30,7 +31,6 @@ import robot.run
from robot.utils.robottime import timestamp_to_secs
from functest.core import testcase
-import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as op_utils
__author__ = "Cedric Ollivier <cedric.ollivier@orange.com>"
@@ -70,7 +70,7 @@ class ODLTests(testcase.TestCase):
"csit/suites/integration/basic")
default_suites = [basic_suite_dir, neutron_suite_dir]
res_dir = '/home/opnfv/functest/results/odl/'
- logger = ft_logger.Logger("opendaylight").getLogger()
+ __logger = logging.getLogger(__name__)
@classmethod
def set_robotframework_vars(cls, odlusername="admin", odlpassword="admin"):
@@ -91,7 +91,7 @@ class ODLTests(testcase.TestCase):
line.rstrip())
return True
except Exception as ex: # pylint: disable=broad-except
- cls.logger.error("Cannot set ODL creds: %s", str(ex))
+ cls.__logger.error("Cannot set ODL creds: %s", str(ex))
return False
def parse_results(self):
@@ -154,15 +154,15 @@ class ODLTests(testcase.TestCase):
'PORT:' + kwargs['odlwebport'],
'RESTCONFPORT:' + kwargs['odlrestconfport']]
except KeyError as ex:
- self.logger.error("Cannot run ODL testcases. Please check "
- "%s", str(ex))
+ self.__logger.error("Cannot run ODL testcases. Please check "
+ "%s", str(ex))
return self.EX_RUN_ERROR
if self.set_robotframework_vars(odlusername, odlpassword):
try:
os.makedirs(self.res_dir)
except OSError as ex:
if ex.errno != errno.EEXIST:
- self.logger.exception(
+ self.__logger.exception(
"Cannot create %s", self.res_dir)
return self.EX_RUN_ERROR
stdout_file = os.path.join(self.res_dir, 'stdout.txt')
@@ -174,19 +174,19 @@ class ODLTests(testcase.TestCase):
report='NONE',
stdout=stdout)
stdout.seek(0, 0)
- self.logger.info("\n" + stdout.read())
- self.logger.info("ODL results were successfully generated")
+ self.__logger.info("\n" + stdout.read())
+ self.__logger.info("ODL results were successfully generated")
try:
self.parse_results()
- self.logger.info("ODL results were successfully parsed")
+ self.__logger.info("ODL results were successfully parsed")
except RobotError as ex:
- self.logger.error("Run tests before publishing: %s",
- ex.message)
+ self.__logger.error("Run tests before publishing: %s",
+ ex.message)
return self.EX_RUN_ERROR
try:
os.remove(stdout_file)
except OSError:
- self.logger.warning("Cannot remove %s", stdout_file)
+ self.__logger.warning("Cannot remove %s", stdout_file)
return self.EX_OK
else:
return self.EX_RUN_ERROR
@@ -237,12 +237,12 @@ class ODLTests(testcase.TestCase):
else:
kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
except KeyError as ex:
- self.logger.error("Cannot run ODL testcases. "
- "Please check env var: "
- "%s", str(ex))
+ self.__logger.error("Cannot run ODL testcases. "
+ "Please check env var: "
+ "%s", str(ex))
return self.EX_RUN_ERROR
except Exception: # pylint: disable=broad-except
- self.logger.exception("Cannot run ODL testcases.")
+ self.__logger.exception("Cannot run ODL testcases.")
return self.EX_RUN_ERROR
return self.main(suites, **kwargs)
@@ -301,6 +301,7 @@ class ODLParser(object): # pylint: disable=too-few-public-methods
if __name__ == '__main__':
+ logging.basicConfig()
ODL = ODLTests()
PARSER = ODLParser()
ARGS = PARSER.parse_args(sys.argv[1:])
diff --git a/functest/opnfv_tests/sdn/onos/onos.py b/functest/opnfv_tests/sdn/onos/onos.py
index 4d489d67..d7a2d38e 100644
--- a/functest/opnfv_tests/sdn/onos/onos.py
+++ b/functest/opnfv_tests/sdn/onos/onos.py
@@ -7,6 +7,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
import os
import re
import subprocess
@@ -16,7 +17,6 @@ import urlparse
from functest.core import testcase
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as openstack_utils
@@ -30,7 +30,7 @@ class OnosBase(testcase.TestCase):
onos_sfc_path = os.path.join(CONST.__getattribute__('dir_repo_functest'),
CONST.__getattribute__('dir_onos_sfc'))
installer_type = CONST.__getattribute__('INSTALLER_TYPE')
- logger = ft_logger.Logger(__name__).getLogger()
+ logger = logging.getLogger(__name__)
def __init__(self, **kwargs):
if "case_name" not in kwargs:
diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc.py b/functest/opnfv_tests/sdn/onos/sfc/sfc.py
index 22412270..0155d24d 100755
--- a/functest/opnfv_tests/sdn/onos/sfc/sfc.py
+++ b/functest/opnfv_tests/sdn/onos/sfc/sfc.py
@@ -1,4 +1,3 @@
-"""Script to Test the SFC scenarios in ONOS."""
# !/usr/bin/python
#
# Copyright (c) CREATED5 All rights reserved
@@ -22,13 +21,14 @@
# Testcase 7 : Cleanup
# ###########################################################################
#
+"""Script to Test the SFC scenarios in ONOS."""
+import logging
import time
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
from sfc_onos import SfcOnos
-logger = ft_logger.Logger("sfc").getLogger()
+logger = logging.getLogger(__name__)
Sfc_obj = SfcOnos()
OK = 200
@@ -174,4 +174,5 @@ def main():
if __name__ == '__main__':
+ logging.basicConfig()
main()
diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
index c2198690..1101f239 100644
--- a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
+++ b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py
@@ -1,3 +1,4 @@
+import logging
import os
import re
import time
@@ -8,8 +9,6 @@ from multiprocessing import Process
from multiprocessing import Queue
from pexpect import pxssh
-import functest.utils.functest_logger as ft_logger
-
from functest.utils.constants import CONST
OK = 200
@@ -23,7 +22,7 @@ class SfcOnos(object):
def __init__(self):
"""Initialization of variables."""
- self.logger = ft_logger.Logger("sfc_fun").getLogger()
+ self.logger = logging.getLogger(__name__)
self.osver = "v2.0"
self.token_id = 0
self.net_id = 0
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/client.py b/functest/opnfv_tests/sdn/onos/teston/adapters/client.py
index 81d5f7d7..a88d2f06 100644
--- a/functest/opnfv_tests/sdn/onos/teston/adapters/client.py
+++ b/functest/opnfv_tests/sdn/onos/teston/adapters/client.py
@@ -11,17 +11,17 @@ Description:
#
"""
import json
+import logging
import pexpect
import requests
import time
from environment import Environment
-import functest.utils.functest_logger as ft_logger
class Client(Environment):
- logger = ft_logger.Logger("client").getLogger()
+ logger = logging.getLogger(__name__)
def __init__(self):
Environment.__init__(self)
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py b/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py
index 3786945d..dfaa5cc1 100644
--- a/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py
+++ b/functest/opnfv_tests/sdn/onos/teston/adapters/connection.py
@@ -13,17 +13,17 @@ Description:
# http://www.apache.org/licenses/LICENSE-2.0
#
"""
+import logging
import os
import pexpect
import re
from foundation import Foundation
-import functest.utils.functest_logger as ft_logger
class Connection(Foundation):
- logger = ft_logger.Logger("connection").getLogger()
+ logger = logging.getLogger(__name__)
def __init__(self):
Foundation.__init__(self)
diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py b/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py
index 046a821d..cb75b5c3 100644
--- a/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py
+++ b/functest/opnfv_tests/sdn/onos/teston/adapters/environment.py
@@ -15,6 +15,7 @@ Description:
#
"""
+import logging
import pexpect
import pxssh
import re
@@ -23,12 +24,11 @@ import sys
import time
from connection import Connection
-import functest.utils.functest_logger as ft_logger
class Environment(Connection):
- logger = ft_logger.Logger("environment").getLogger()
+ logger = logging.getLogger(__name__)
def __init__(self):
Connection.__init__(self)
diff --git a/functest/opnfv_tests/vnf/aaa/aaa.py b/functest/opnfv_tests/vnf/aaa/aaa.py
index 9c94cfb1..1a484ddf 100755
--- a/functest/opnfv_tests/vnf/aaa/aaa.py
+++ b/functest/opnfv_tests/vnf/aaa/aaa.py
@@ -7,18 +7,18 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
import sys
import argparse
import functest.core.testcase as testcase
import functest.core.vnf_base as vnf_base
-import functest.utils.functest_logger as ft_logger
class AaaVnf(vnf_base.VnfOnBoardingBase):
- logger = ft_logger.Logger("VNF AAA").getLogger()
+ logger = logging.getLogger(__name__)
def __init__(self, **kwargs):
if "case_name" not in kwargs:
@@ -60,6 +60,7 @@ class AaaVnf(vnf_base.VnfOnBoardingBase):
if __name__ == '__main__':
+ logging.basicConfig()
parser = argparse.ArgumentParser()
args = vars(parser.parse_args())
aaa_vnf = AaaVnf()
diff --git a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
index 494633f4..f3bb3012 100644
--- a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
+++ b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py
@@ -7,6 +7,7 @@
#
# http://www.apache.org/licenses/LICENSE-2.0
import json
+import logging
import os
import shutil
@@ -14,14 +15,13 @@ import requests
import functest.core.vnf_base as vnf_base
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
class ClearwaterOnBoardingBase(vnf_base.VnfOnBoardingBase):
def __init__(self, **kwargs):
- self.logger = ft_logger.Logger(__name__).getLogger()
+ self.logger = logging.getLogger(__name__)
super(ClearwaterOnBoardingBase, self).__init__(**kwargs)
self.case_dir = os.path.join(CONST.dir_functest_test, 'vnf', 'ims')
self.data_dir = CONST.dir_ims_data
diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.py b/functest/opnfv_tests/vnf/ims/cloudify_ims.py
index 0e6d4797..ba4c5790 100644
--- a/functest/opnfv_tests/vnf/ims/cloudify_ims.py
+++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.py
@@ -7,6 +7,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
+import logging
import os
import sys
import time
@@ -18,7 +19,6 @@ from functest.opnfv_tests.vnf.ims.clearwater import Clearwater
import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base
from functest.opnfv_tests.vnf.ims.orchestrator_cloudify import Orchestrator
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
@@ -29,7 +29,7 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase):
if "case_name" not in kwargs:
kwargs["case_name"] = "cloudify_ims"
super(CloudifyIms, self).__init__(**kwargs)
- self.logger = ft_logger.Logger(__name__).getLogger()
+ self.logger = logging.getLogger(__name__)
# Retrieve the configuration
try:
diff --git a/functest/opnfv_tests/vnf/ims/opera_ims.py b/functest/opnfv_tests/vnf/ims/opera_ims.py
index 64f2ace0..8defdee6 100644
--- a/functest/opnfv_tests/vnf/ims/opera_ims.py
+++ b/functest/opnfv_tests/vnf/ims/opera_ims.py
@@ -8,6 +8,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
import json
+import logging
import os
import time
@@ -16,7 +17,6 @@ import requests
import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base
from functest.utils.constants import CONST
-import functest.utils.functest_logger as ft_logger
class OperaIms(clearwater_ims_base.ClearwaterOnBoardingBase):
@@ -24,7 +24,7 @@ class OperaIms(clearwater_ims_base.ClearwaterOnBoardingBase):
def __init__(self, project='functest', case_name='opera_ims',
repo=CONST.dir_repo_opera, cmd=''):
super(OperaIms, self).__init__(project, case_name, repo, cmd)
- self.logger = ft_logger.Logger(__name__).getLogger()
+ self.logger = logging.getLogger(__name__)
self.ellis_file = os.path.join(self.result_dir, 'ellis.info')
self.live_test_file = os.path.join(self.result_dir,
'live_test_report.json')
diff --git a/functest/opnfv_tests/vnf/ims/orchestra_ims.py b/functest/opnfv_tests/vnf/ims/orchestra_ims.py
index 351c5fbe..95751d47 100755
--- a/functest/opnfv_tests/vnf/ims/orchestra_ims.py
+++ b/functest/opnfv_tests/vnf/ims/orchestra_ims.py
@@ -8,13 +8,13 @@
# http://www.apache.org/licenses/LICENSE-2.0
import json
+import logging
import socket
import sys
import time
import yaml
import functest.core.vnf_base as vnf_base
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
import os
@@ -87,7 +87,7 @@ class ImsVnf(vnf_base.VnfOnBoardingBase):
self.ob_port = "8080"
self.ob_ip = "localhost"
self.ob_instance_id = ""
- self.logger = ft_logger.Logger("orchestra_ims").getLogger()
+ self.logger = logging.getLogger(__name__)
self.case_dir = os.path.join(CONST.dir_functest_test, 'vnf/ims/')
self.data_dir = CONST.dir_ims_data
self.test_dir = CONST.dir_repo_vims_test
@@ -495,6 +495,7 @@ class ImsVnf(vnf_base.VnfOnBoardingBase):
if __name__ == '__main__':
+ logging.basicConfig()
test = ImsVnf()
test.deploy_orchestrator()
test.deploy_vnf()
diff --git a/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py b/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py
index 82a9dca0..4ceeb25f 100644
--- a/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py
+++ b/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py
@@ -11,6 +11,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
########################################################################
+import logging
import os
import shutil
import subprocess32 as subprocess
@@ -18,8 +19,6 @@ import yaml
from git import Repo
-import functest.utils.functest_logger as ft_logger
-
class Orchestrator(object):
@@ -29,7 +28,7 @@ class Orchestrator(object):
self.input_file = 'inputs.yaml'
self.manager_blueprint = False
self.config = inputs
- self.logger = ft_logger.Logger("Orchestrator").getLogger()
+ self.logger = logging.getLogger(__name__)
self.manager_up = False
def set_credentials(self, username, password, tenant_name, auth_url):
diff --git a/functest/tests/unit/core/test_feature.py b/functest/tests/unit/core/test_feature.py
index 993da5a0..8de42ec5 100644
--- a/functest/tests/unit/core/test_feature.py
+++ b/functest/tests/unit/core/test_feature.py
@@ -28,7 +28,7 @@ class FeatureTestingBase(unittest.TestCase):
_project_name = "bar"
_repo = "dir_repo_copper"
_cmd = "cd /home/opnfv/repos/foo/tests && bash run.sh && cd -"
- _output_file = '/home/opnfv/functest/results/bar.log'
+ _output_file = '/home/opnfv/functest/results/foo.log'
feature = None
@mock.patch('time.time', side_effect=[1, 2])
diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py
index 54d6da72..f3d37c65 100644
--- a/functest/tests/unit/odl/test_odl.py
+++ b/functest/tests/unit/odl/test_odl.py
@@ -337,9 +337,11 @@ class ODLMainTesting(ODLTesting):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
mock.patch.object(odl, 'open', mock.mock_open(),
- create=True), \
+ create=True) as mock_open, \
mock.patch.object(self.test, 'parse_results'):
self._test_main(testcase.TestCase.EX_OK, *args)
+ mock_open.assert_called_once_with(
+ os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+')
@mock.patch('os.remove')
@mock.patch('robot.run', return_value=1)
@@ -348,9 +350,11 @@ class ODLMainTesting(ODLTesting):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
mock.patch.object(odl, 'open', mock.mock_open(),
- create=True), \
+ create=True) as mock_open, \
mock.patch.object(self.test, 'parse_results'):
self._test_main(testcase.TestCase.EX_OK, *args)
+ mock_open.assert_called_once_with(
+ os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+')
@mock.patch('os.remove', side_effect=OSError)
@mock.patch('robot.run')
@@ -359,9 +363,11 @@ class ODLMainTesting(ODLTesting):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
mock.patch.object(odl, 'open', mock.mock_open(),
- create=True), \
+ create=True) as mock_open, \
mock.patch.object(self.test, 'parse_results'):
self._test_main(testcase.TestCase.EX_OK, *args)
+ mock_open.assert_called_once_with(
+ os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+')
class ODLRunTesting(ODLTesting):
diff --git a/functest/tests/unit/utils/test_functest_logger.py b/functest/tests/unit/utils/test_functest_logger.py
deleted file mode 100644
index 42e41a14..00000000
--- a/functest/tests/unit/utils/test_functest_logger.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/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_utils.py b/functest/tests/unit/utils/test_openstack_utils.py
index 7f3995d0..a7df264c 100644
--- a/functest/tests/unit/utils/test_openstack_utils.py
+++ b/functest/tests/unit/utils/test_openstack_utils.py
@@ -418,21 +418,45 @@ class OSUtilsTesting(unittest.TestCase):
mock_logger_info.assert_called_once_with("OS_IDENTITY_API_VERSION is "
"set in env as '%s'", '3')
- def test_get_keystone_client(self):
+ @mock.patch('functest.utils.openstack_utils.get_session')
+ @mock.patch('functest.utils.openstack_utils.keystoneclient.Client')
+ @mock.patch('functest.utils.openstack_utils.get_keystone_client_version',
+ return_value='3')
+ @mock.patch('functest.utils.openstack_utils.os.getenv',
+ return_value='public')
+ def test_get_keystone_client_with_interface(self, mock_os_getenv,
+ mock_keystoneclient_version,
+ mock_key_client,
+ mock_get_session):
mock_keystone_obj = mock.Mock()
mock_session_obj = mock.Mock()
- with mock.patch('functest.utils.openstack_utils'
- '.get_keystone_client_version', return_value='3'), \
- mock.patch('functest.utils.openstack_utils'
- '.keystoneclient.Client',
- return_value=mock_keystone_obj) \
- as mock_key_client, \
- mock.patch('functest.utils.openstack_utils.get_session',
- return_value=mock_session_obj):
- self.assertEqual(openstack_utils.get_keystone_client(),
- mock_keystone_obj)
- mock_key_client.assert_called_once_with('3',
- session=mock_session_obj)
+ mock_key_client.return_value = mock_keystone_obj
+ mock_get_session.return_value = mock_session_obj
+ self.assertEqual(openstack_utils.get_keystone_client(),
+ mock_keystone_obj)
+ mock_key_client.assert_called_once_with('3',
+ session=mock_session_obj,
+ interface='public')
+
+ @mock.patch('functest.utils.openstack_utils.get_session')
+ @mock.patch('functest.utils.openstack_utils.keystoneclient.Client')
+ @mock.patch('functest.utils.openstack_utils.get_keystone_client_version',
+ return_value='3')
+ @mock.patch('functest.utils.openstack_utils.os.getenv',
+ return_value='admin')
+ def test_get_keystone_client_no_interface(self, mock_os_getenv,
+ mock_keystoneclient_version,
+ mock_key_client,
+ mock_get_session):
+ mock_keystone_obj = mock.Mock()
+ mock_session_obj = mock.Mock()
+ mock_key_client.return_value = mock_keystone_obj
+ mock_get_session.return_value = mock_session_obj
+ self.assertEqual(openstack_utils.get_keystone_client(),
+ mock_keystone_obj)
+ mock_key_client.assert_called_once_with('3',
+ session=mock_session_obj,
+ interface='admin')
@mock.patch('functest.utils.openstack_utils.os.getenv',
return_value=None)
diff --git a/functest/utils/functest_logger.py b/functest/utils/functest_logger.py
deleted file mode 100644
index ba52829f..00000000
--- a/functest/utils/functest_logger.py
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/env python
-#
-# jose.lausuch@ericsson.com
-# 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
-#
-# Logging levels:
-# Level Numeric value
-# CRITICAL 50
-# ERROR 40
-# WARNING 30
-# INFO 20
-# DEBUG 10
-# NOTSET 0
-#
-# Usage:
-# import functest_logger as fl
-# logger = fl.Logger("script_name").getLogger()
-# logger.info("message to be shown with - INFO - ")
-# logger.debug("message to be shown with - DEBUG -")
-import logging
-import logging.config
-import os
-
-import json
-
-from functest.utils.constants import CONST
-
-ignore = ["paramiko",
- "stevedore.extension",
- "keystoneauth.session",
- "keystoneauth.identity.v3.base",
- "novaclient.v2.client",
- "neutronclient.v2_0.client",
- "glanceclient.common.http",
- "cinderclient.v2.client",
- "cinderclient.client"]
-
-
-class Logger(object):
-
- instance = None
-
- def __new__(cls, logger_name):
- if cls.instance is None:
- cls.instance = object.__new__(cls)
- return cls.instance
-
- def __init__(self, logger_name):
- self.setup_logging()
- self.logger = logging.getLogger(logger_name)
- for module_name in ignore:
- logging.getLogger(module_name).setLevel(logging.WARNING)
-
- def getLogger(self):
- return self.logger
-
- def is_debug(self):
- if CONST.CI_DEBUG and CONST.CI_DEBUG.lower() == "true":
- return True
- return False
-
- def setup_logging(self, default_path=CONST.dir_functest_logging_cfg,
- default_level=logging.INFO,
- env_key='LOG_CFG'):
- path = default_path
- value = os.getenv(env_key, None)
- if value:
- path = value
- if os.path.exists(path):
- with open(path, 'rt') as f:
- config = json.load(f)
- if (config['handlers'] and
- config['handlers']['console']):
- stream_level = logging.INFO
- if self.is_debug():
- stream_level = logging.DEBUG
- config['handlers']['console']['level'] = stream_level
- logging.config.dictConfig(config)
- else:
- logging.basicConfig(level=default_level)
diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py
index 7d993cbf..3e85b9e4 100644
--- a/functest/utils/functest_utils.py
+++ b/functest/utils/functest_utils.py
@@ -9,6 +9,7 @@
#
import functools
import json
+import logging
import os
import re
import shutil
@@ -24,9 +25,8 @@ import yaml
from git import Repo
from functest.utils import decorators
-import functest.utils.functest_logger as ft_logger
-logger = ft_logger.Logger("functest_utils").getLogger()
+logger = logging.getLogger(__name__)
# ----------------------------------------------------------
diff --git a/functest/utils/openstack/cinder.py b/functest/utils/openstack/cinder.py
deleted file mode 100644
index f966468a..00000000
--- a/functest/utils/openstack/cinder.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
-#
diff --git a/functest/utils/openstack/glance.py b/functest/utils/openstack/glance.py
deleted file mode 100644
index f966468a..00000000
--- a/functest/utils/openstack/glance.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
-#
diff --git a/functest/utils/openstack/keystone.py b/functest/utils/openstack/keystone.py
deleted file mode 100644
index f966468a..00000000
--- a/functest/utils/openstack/keystone.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
-#
diff --git a/functest/utils/openstack/neutron.py b/functest/utils/openstack/neutron.py
deleted file mode 100644
index f966468a..00000000
--- a/functest/utils/openstack/neutron.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
-#
diff --git a/functest/utils/openstack/nova.py b/functest/utils/openstack/nova.py
deleted file mode 100644
index f966468a..00000000
--- a/functest/utils/openstack/nova.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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
-#
diff --git a/functest/utils/openstack_clean.py b/functest/utils/openstack_clean.py
index ce61fcac..29106d9e 100755
--- a/functest/utils/openstack_clean.py
+++ b/functest/utils/openstack_clean.py
@@ -24,13 +24,13 @@
import time
+import logging
import yaml
-import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
from functest.utils.constants import CONST
-logger = ft_logger.Logger("openstack_clean").getLogger()
+logger = logging.getLogger(__name__)
OS_SNAPSHOT_FILE = CONST.openstack_snapshot_file
@@ -428,4 +428,5 @@ def main():
if __name__ == '__main__':
+ logging.basicConfig()
main()
diff --git a/functest/utils/openstack_snapshot.py b/functest/utils/openstack_snapshot.py
index e64030f7..952fb7bb 100755
--- a/functest/utils/openstack_snapshot.py
+++ b/functest/utils/openstack_snapshot.py
@@ -20,13 +20,13 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
+import logging
import yaml
-import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
from functest.utils.constants import CONST
-logger = ft_logger.Logger("openstack_snapshot").getLogger()
+logger = logging.getLogger(__name__)
OS_SNAPSHOT_FILE = CONST.openstack_snapshot_file
@@ -162,4 +162,5 @@ def main():
if __name__ == '__main__':
+ logging.basicConfig()
main()
diff --git a/functest/utils/openstack_tacker.py b/functest/utils/openstack_tacker.py
index 8327fdbe..9fd9d5c4 100644
--- a/functest/utils/openstack_tacker.py
+++ b/functest/utils/openstack_tacker.py
@@ -11,13 +11,13 @@
# http://www.apache.org/licenses/LICENSE-2.0
##########################################################################
+import logging
from tackerclient.v1_0 import client as tackerclient
-import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
import time
-logger = ft_logger.Logger("tacker_utils").getLogger()
+logger = logging.getLogger(__name__)
def get_tacker_client(other_creds={}):
diff --git a/functest/utils/openstack_utils.py b/functest/utils/openstack_utils.py
index 929a761e..7e00a269 100644
--- a/functest/utils/openstack_utils.py
+++ b/functest/utils/openstack_utils.py
@@ -8,7 +8,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
#
-import os
+import logging
import os.path
import re
import sys
@@ -23,10 +23,9 @@ from novaclient import client as novaclient
from keystoneclient import client as keystoneclient
from neutronclient.neutron import client as neutronclient
-import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
-logger = ft_logger.Logger("openstack_utils").getLogger()
+logger = logging.getLogger(__name__)
DEFAULT_API_VERSION = '2'
DEFAULT_HEAT_API_VERSION = '1'
@@ -139,11 +138,11 @@ def get_credentials_for_rally():
endpoint_types = [('internalURL', 'internal'),
('publicURL', 'public'), ('adminURL', 'admin')]
- endpoint_type = os.getenv('OS_ENDPOINT_TYPE')
+ endpoint_type = get_endpoint_type_from_env()
if endpoint_type is not None:
cred_key = env_cred_dict.get('OS_ENDPOINT_TYPE')
for k, v in endpoint_types:
- if endpoint_type == k:
+ if endpoint_type == v:
rally_conf[cred_key] = v
region_name = os.getenv('OS_REGION_NAME')
@@ -158,6 +157,14 @@ def get_credentials_for_rally():
return rally_conf
+def get_endpoint_type_from_env():
+ endpoint_type = os.environ.get("OS_ENDPOINT_TYPE",
+ os.environ.get("OS_INTERFACE"))
+ if endpoint_type and "URL" in endpoint_type:
+ endpoint_type = endpoint_type.replace("URL", "")
+ return endpoint_type
+
+
def get_session_auth(other_creds={}):
loader = loading.get_plugin_loader('password')
creds = get_credentials(other_creds)
@@ -198,7 +205,9 @@ def get_keystone_client_version():
def get_keystone_client(other_creds={}):
sess = get_session(other_creds)
- return keystoneclient.Client(get_keystone_client_version(), session=sess)
+ return keystoneclient.Client(get_keystone_client_version(),
+ session=sess,
+ interface=os.getenv('OS_INTERFACE', 'admin'))
def get_nova_client_version():
diff --git a/requirements.txt b/requirements.txt
index 92f16bcc..e709220a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -32,3 +32,4 @@ Pillow==3.3.0
click==6.6
openbaton-cli==2.2.1-beta7
mock==1.3.0
+iniparse==0.4