diff options
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 |