Merge "Add test case description and task file for TC046"
authorliang gao <jean.gaoliang@huawei.com>
Thu, 14 Jul 2016 06:46:31 +0000 (06:46 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Thu, 14 Jul 2016 06:46:31 +0000 (06:46 +0000)
37 files changed:
dashboard/Yardstick-TC002-1456495853488
dashboard/Yardstick-TC005-1456495868837
dashboard/Yardstick-TC010-1456495940503
dashboard/Yardstick-TC011-1456495954966
dashboard/Yardstick-TC012-1456495966540
dashboard/Yardstick-TC014-1456496016450
dashboard/Yardstick-TC027-1456496061153
dashboard/Yardstick-TC037-1456496078470
docs/userguide/opnfv_yardstick_tc045.rst [new file with mode: 0644]
fuel-plugin/README.md
fuel-plugin/deployment_scripts/install.sh
fuel-plugin/deployment_scripts/puppet/manifests/yardstick-install.pp
fuel-plugin/fuel_ping.yaml [new file with mode: 0644]
fuel-plugin/vagrant/build_fuel_plugin.sh
samples/cpuload.yaml
tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml [new file with mode: 0644]
tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml [new file with mode: 0644]
tests/opnfv/test_suites/fuel_test_suite.yaml [new file with mode: 0644]
tests/opnfv/test_suites/opnfv_huawei-pod2_daily.yaml
tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/availability/test_director.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/availability/test_result_checker_general.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/availability/test_scenario_general.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt
tests/unit/benchmark/scenarios/compute/test_cpuload.py
tests/unit/benchmark/scenarios/networking/test_vsperf.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/__init__.py
yardstick/benchmark/scenarios/availability/actionplayers.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/actionrollbackers.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/director.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/result_checker/__init__.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/result_checker_conf.yaml [new file with mode: 0644]
yardstick/benchmark/scenarios/availability/scenario_general.py [new file with mode: 0644]
yardstick/benchmark/scenarios/compute/cpuload.py
yardstick/benchmark/scenarios/networking/vsperf.py [new file with mode: 0644]

index eb8c27d..a0be684 100644 (file)
               "tags": []
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Network Latency - RTT",
           "tooltip": {
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "table",
           "transparent": false,
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "table",
           "transparent": false,
           "type": "table",
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 2
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "table",
           "transparent": false,
           "type": "table",
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 2
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod5",
+              "value": "intel\\-pod5",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "table",
           "transparent": false,
           "type": "table",
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 2
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "table",
           "transparent": false,
           "type": "table",
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 2
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
+            }
+          },
+          "scroll": true,
+          "showHeader": true,
+          "sort": {
+            "col": 2,
+            "desc": false
+          },
+          "span": 2,
+          "styles": [
+            {
+              "dateFormat": "YYYY-MM-DD HH:mm:ss",
+              "pattern": "Time",
+              "type": "date"
+            },
+            {
+              "colorMode": null,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "decimals": 2,
+              "pattern": "deploy_scenario",
+              "thresholds": [],
+              "type": "string",
+              "unit": "short"
+            },
+            {
+              "colorMode": null,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "dateFormat": "YYYY-MM-DD HH:mm:ss",
+              "decimals": 2,
+              "pattern": "/.*/",
+              "thresholds": [],
+              "type": "number",
+              "unit": "ms"
+            }
+          ],
+          "targets": [
+            {
+              "alias": "",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc002",
+              "query": "SELECT mean(\"rtt\") FROM \"opnfv_yardstick_tc002\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
+              "rawQuery": false,
+              "refId": "A",
+              "resultFormat": "table",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "rtt"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "14d",
+          "title": "$POD",
+          "transform": "table",
+          "transparent": false,
+          "type": "table",
+          "repeatIteration": 1467967293010,
+          "repeatPanelId": 2
+        },
+        {
+          "columns": [],
+          "datasource": "yardstick-vtc",
+          "editable": true,
+          "error": false,
+          "fontSize": "90%",
+          "height": "",
+          "id": 18,
+          "isNew": true,
+          "links": [],
+          "minSpan": 2,
+          "pageSize": 100,
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
           "transform": "table",
           "transparent": false,
           "type": "table",
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 2
         }
       ],
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [
             "ms",
             "short"
           ],
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 3
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
             "ms",
             "short"
           ],
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 3
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod5",
+              "value": "intel\\-pod5",
+              "selected": true
             }
           },
           "seriesOverrides": [
             "ms",
             "short"
           ],
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 3
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "seriesOverrides": [
             "ms",
             "short"
           ],
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 3
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
             "ms",
             "short"
           ],
-          "repeatIteration": 1456495841616,
+          "repeatIteration": 1467967293010,
+          "repeatPanelId": 3
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "yardstick-vtc",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": 0,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "height": "",
+          "id": 19,
+          "interval": "",
+          "isNew": true,
+          "leftYAxisLabel": "<RTT>",
+          "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": false,
+            "hideEmpty": false,
+            "hideZero": false,
+            "max": false,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "minSpan": 2,
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 1,
+          "points": true,
+          "renderer": "flot",
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
+            }
+          },
+          "seriesOverrides": [
+            {
+              "alias": "os-odl_l2-nofeature-ha",
+              "color": "#7EB26D"
+            },
+            {
+              "alias": "os-nosdn-nofeature-ha",
+              "color": "#E24D42"
+            },
+            {
+              "alias": "os-onos-nofeature-ha",
+              "color": "#6ED0E0"
+            },
+            {
+              "alias": "os-nosdn-ovs-ha",
+              "color": "#EAB839"
+            },
+            {
+              "alias": "os-odl_l3-nofeature-ha",
+              "color": "#E5A8E2"
+            },
+            {
+              "alias": "os-odl_l2-bgpvpn-ha",
+              "color": "#E0752D"
+            },
+            {
+              "alias": "os-odl_l2-sfc-ha",
+              "color": "#508642"
+            }
+          ],
+          "span": 2,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "alias": "$tag_deploy_scenario",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "24h"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "pod_name"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc002",
+              "query": "SELECT mean(\"rtt\") FROM \"opnfv_yardstick_tc002\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY time(24h), \"deploy_scenario\", \"pod_name\" fill(null)",
+              "rawQuery": false,
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "rtt"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "14d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "ms",
+            "short"
+          ],
+          "repeatIteration": 1467967293010,
           "repeatPanelId": 3
         }
       ],
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod5 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
+            "intel\\-pod5",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
   },
   "refresh": "15m",
   "schemaVersion": 8,
-  "version": 113,
+  "version": 2,
   "links": []
-}
\ No newline at end of file
+}
index c971986..9463b40 100644 (file)
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Storage Performance",
           "tooltip": {
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table"
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod5",
+              "value": "intel\\-pod5",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
+          "repeatPanelId": 5
+        },
+        {
+          "columns": [],
+          "datasource": "yardstick-vtc",
+          "editable": true,
+          "error": false,
+          "fontSize": "100%",
+          "id": 20,
+          "isNew": true,
+          "links": [],
+          "minSpan": 2,
+          "pageSize": null,
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
+            }
+          },
+          "scroll": true,
+          "showHeader": true,
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "span": 2,
+          "styles": [
+            {
+              "dateFormat": "YYYY-MM-DD HH:mm:ss",
+              "pattern": "Time",
+              "type": "date"
+            },
+            {
+              "colorMode": null,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "decimals": 2,
+              "pattern": "deploy_scenario",
+              "thresholds": [],
+              "type": "string",
+              "unit": "short"
+            },
+            {
+              "colorMode": null,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "dateFormat": "YYYY-MM-DD HH:mm:ss",
+              "decimals": 2,
+              "pattern": "/.*/",
+              "thresholds": [],
+              "type": "number",
+              "unit": "short"
+            }
+          ],
+          "targets": [
+            {
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc005",
+              "query": "SELECT \"read_iops\" FROM \"opnfv_yardstick_tc005\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "read_iops"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "14d",
+          "title": "$POD",
+          "transform": "timeseries_to_rows",
+          "type": "table",
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 5
         }
       ],
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod5",
+              "value": "intel\\-pod5",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495861692,
+          "repeatIteration": 1467968127728,
+          "repeatPanelId": 7
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "yardstick-vtc",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "leftMin": null,
+            "rightLogBase": 1,
+            "rightMax": null,
+            "rightMin": null,
+            "threshold1": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2": null,
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "id": 21,
+          "isNew": true,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "minSpan": 2,
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
+            }
+          },
+          "seriesOverrides": [],
+          "span": 2,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "alias": "$tag_deploy_scenario",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "24h"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "pod_name"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc005",
+              "query": "SELECT mean(\"read_bw\") FROM \"opnfv_yardstick_tc005\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY time(24h), \"deploy_scenario\", \"pod_name\" fill(null)",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "read_bw"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "14d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "repeatIteration": 1467968127728,
           "repeatPanelId": 7
         }
       ],
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod5 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
+            "intel\\-pod5",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
     "list": []
   },
   "schemaVersion": 8,
-  "version": 9,
+  "version": 2,
   "links": []
-}
\ No newline at end of file
+}
index 9edc972..562c7f0 100644 (file)
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Memory Latency, lmbench",
           "tooltip": {
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table"
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 5
         }
       ],
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495934825,
+          "repeatIteration": 1468224666109,
           "repeatPanelId": 7
         }
       ],
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
     "list": []
   },
   "schemaVersion": 8,
-  "version": 4,
+  "version": 3,
   "links": []
-}
\ No newline at end of file
+}
index 2481355..2bca4de 100644 (file)
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "jitter: packet delay variation (ms)",
           "tooltip": {
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table"
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 5
         }
       ],
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 7
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [],
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456495947533,
+          "repeatIteration": 1468225357451,
           "repeatPanelId": 7
         }
       ],
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
   },
   "refresh": "15m",
   "schemaVersion": 8,
-  "version": 11,
+  "version": 2,
   "links": []
-}
\ No newline at end of file
+}
index fde466f..c170897 100644 (file)
               "groupBy": [
                 {
                   "params": [
-                    "24h"
+                    "pod_name"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "deploy_scenario"
                   ],
-                  "type": "time"
+                  "type": "tag"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"pod_name\", \"deploy_scenario\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "bandwidth(MBps)"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "14d",
+          "timeShift": null,
+          "title": "Memory read/write bandwidth trend",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ]
+        }
+      ],
+      "title": "New row"
+    },
+    {
+      "title": "New row",
+      "height": "250px",
+      "editable": true,
+      "collapse": false,
+      "panels": [
+        {
+          "title": "Daily Averages",
+          "error": false,
+          "span": 12,
+          "editable": true,
+          "type": "text",
+          "isNew": true,
+          "id": 4,
+          "mode": "markdown",
+          "content": "",
+          "style": {},
+          "links": [],
+          "height": "0"
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 5,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": "POD",
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "ericsson-pod2",
+              "value": "ericsson\\-pod2",
+              "selected": true
+            }
+          }
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 6,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 5
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 7,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
                 },
                 {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 5
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 8,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 5
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 15,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 5
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "table",
+          "isNew": true,
+          "id": 22,
+          "styles": [
+            {
+              "type": "date",
+              "pattern": "Time",
+              "dateFormat": "YYYY-MM-DD HH:mm:ss"
+            },
+            {
+              "unit": "short",
+              "type": "number",
+              "decimals": 2,
+              "colors": [
+                "rgba(245, 54, 54, 0.9)",
+                "rgba(237, 129, 40, 0.89)",
+                "rgba(50, 172, 45, 0.97)"
+              ],
+              "colorMode": null,
+              "pattern": "",
+              "thresholds": []
+            }
+          ],
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            },
+            {
+              "refId": "B",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\""
+            }
+          ],
+          "transform": "timeseries_to_rows",
+          "pageSize": null,
+          "showHeader": true,
+          "columns": [],
+          "scroll": true,
+          "fontSize": "100%",
+          "sort": {
+            "col": 0,
+            "desc": true
+          },
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "datasource": "yardstick-vtc",
+          "timeFrom": "14d",
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 5
+        }
+      ]
+    },
+    {
+      "title": "New row",
+      "height": "250px",
+      "editable": true,
+      "collapse": false,
+      "panels": [
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "graph",
+          "isNew": true,
+          "id": 17,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "rightMax": null,
+            "leftMin": null,
+            "rightMin": null,
+            "rightLogBase": 1,
+            "threshold1": null,
+            "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
+          "legend": {
+            "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
+            "total": false,
+            "avg": false
+          },
+          "nullPointMode": "connected",
+          "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                },
+                {
+                  "type": "tag",
+                  "params": [
+                    "installer"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
+            }
+          ],
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": "POD",
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "ericsson-pod2",
+              "value": "ericsson\\-pod2",
+              "selected": true
+            }
+          }
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "graph",
+          "isNew": true,
+          "id": 18,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "rightMax": null,
+            "leftMin": null,
+            "rightMin": null,
+            "rightLogBase": 1,
+            "threshold1": null,
+            "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
+          "legend": {
+            "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
+            "total": false,
+            "avg": false
+          },
+          "nullPointMode": "connected",
+          "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                },
+                {
+                  "type": "tag",
+                  "params": [
+                    "installer"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
+            }
+          ],
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 17
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "graph",
+          "isNew": true,
+          "id": 19,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "rightMax": null,
+            "leftMin": null,
+            "rightMin": null,
+            "rightLogBase": 1,
+            "threshold1": null,
+            "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
+          "legend": {
+            "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
+            "total": false,
+            "avg": false
+          },
+          "nullPointMode": "connected",
+          "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
+                  "params": [
+                    "deploy_scenario"
+                  ]
+                },
+                {
+                  "type": "tag",
+                  "params": [
+                    "installer"
+                  ]
+                }
+              ],
+              "select": [
+                [
+                  {
+                    "type": "field",
+                    "params": [
+                      "bandwidth(MBps)"
+                    ]
+                  }
+                ]
+              ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
+            }
+          ],
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 17
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "graph",
+          "isNew": true,
+          "id": 20,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "rightMax": null,
+            "leftMin": null,
+            "rightMin": null,
+            "rightLogBase": 1,
+            "threshold1": null,
+            "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
+          "legend": {
+            "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
+            "total": false,
+            "avg": false
+          },
+          "nullPointMode": "connected",
+          "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
                   "params": [
-                    "pod_name"
-                  ],
-                  "type": "tag"
+                    "deploy_scenario"
+                  ]
                 },
                 {
+                  "type": "tag",
                   "params": [
-                    "deploy_scenario"
-                  ],
-                  "type": "tag"
+                    "installer"
+                  ]
                 }
               ],
-              "measurement": "opnfv_yardstick_tc012",
-              "query": "SELECT mean(\"bandwidth(MBps)\") FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY time(24h), \"pod_name\", \"deploy_scenario\"",
-              "refId": "A",
-              "resultFormat": "time_series",
               "select": [
                 [
                   {
+                    "type": "field",
                     "params": [
                       "bandwidth(MBps)"
-                    ],
-                    "type": "field"
-                  },
-                  {
-                    "params": [],
-                    "type": "mean"
+                    ]
                   }
                 ]
               ],
-              "tags": [
-                {
-                  "key": "pod_name",
-                  "operator": "=~",
-                  "value": "/$POD$/"
-                },
-                {
-                  "condition": "AND",
-                  "key": "deploy_scenario",
-                  "operator": "=~",
-                  "value": "/$SCENARIO$/"
-                }
-              ]
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
             }
           ],
-          "timeFrom": "10d",
-          "timeShift": null,
-          "title": "Memory read/write bandwidth trend",
-          "tooltip": {
-            "shared": true,
-            "value_type": "cumulative"
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
+            }
           },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 17
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
           "type": "graph",
+          "isNew": true,
+          "id": 21,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
           "x-axis": true,
           "y-axis": true,
           "y_formats": [
             "short",
             "short"
-          ]
-        }
-      ],
-      "title": "New row"
-    },
-    {
-      "collapse": false,
-      "editable": true,
-      "height": "250px",
-      "panels": [
-        {
-          "aliasColors": {},
-          "bars": false,
-          "datasource": "yardstick-vtc",
-          "editable": true,
-          "error": false,
-          "fill": 0,
+          ],
           "grid": {
             "leftLogBase": 1,
             "leftMax": null,
-            "leftMin": 0,
-            "rightLogBase": 1,
             "rightMax": null,
+            "leftMin": null,
             "rightMin": null,
+            "rightLogBase": 1,
             "threshold1": null,
-            "threshold1Color": "rgba(216, 200, 27, 0.27)",
             "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
             "threshold2Color": "rgba(234, 112, 112, 0.22)"
           },
-          "id": 1,
-          "isNew": true,
-          "leftYAxisLabel": "BW (MB/s)",
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
           "legend": {
-            "alignAsTable": true,
-            "avg": true,
-            "current": false,
-            "max": true,
-            "min": true,
             "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
             "total": false,
-            "values": true
+            "avg": false
           },
-          "lines": true,
-          "linewidth": 2,
-          "links": [],
           "nullPointMode": "connected",
-          "percentage": false,
-          "pointradius": 2,
-          "points": true,
-          "renderer": "flot",
-          "seriesOverrides": [],
-          "span": 12,
-          "stack": false,
           "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
           "targets": [
             {
-              "alias": "$tag_pod_name - $tag_deploy_scenario - bw",
+              "refId": "A",
               "dsType": "influxdb",
-              "groupBy": [
+              "resultFormat": "time_series",
+              "tags": [
                 {
-                  "params": [
-                    "pod_name"
-                  ],
-                  "type": "tag"
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
                 },
                 {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ],
+              "groupBy": [
+                {
+                  "type": "tag",
                   "params": [
                     "deploy_scenario"
-                  ],
-                  "type": "tag"
+                  ]
                 },
                 {
+                  "type": "tag",
                   "params": [
-                    "task_id"
-                  ],
-                  "type": "tag"
+                    "installer"
+                  ]
                 }
               ],
-              "measurement": "opnfv_yardstick_tc012",
-              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"pod_name\", \"deploy_scenario\", \"task_id\"",
-              "refId": "A",
-              "resultFormat": "time_series",
               "select": [
                 [
                   {
+                    "type": "field",
                     "params": [
                       "bandwidth(MBps)"
-                    ],
-                    "type": "field"
+                    ]
                   }
                 ]
               ],
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
+            }
+          ],
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
+            }
+          },
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 17
+        },
+        {
+          "title": "$POD",
+          "error": false,
+          "span": 2,
+          "editable": true,
+          "type": "graph",
+          "isNew": true,
+          "id": 32,
+          "datasource": "yardstick-vtc",
+          "renderer": "flot",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "grid": {
+            "leftLogBase": 1,
+            "leftMax": null,
+            "rightMax": null,
+            "leftMin": null,
+            "rightMin": null,
+            "rightLogBase": 1,
+            "threshold1": null,
+            "threshold2": null,
+            "threshold1Color": "rgba(216, 200, 27, 0.27)",
+            "threshold2Color": "rgba(234, 112, 112, 0.22)"
+          },
+          "lines": true,
+          "fill": 1,
+          "linewidth": 2,
+          "points": false,
+          "pointradius": 5,
+          "bars": false,
+          "stack": false,
+          "percentage": false,
+          "legend": {
+            "show": true,
+            "values": false,
+            "min": false,
+            "max": false,
+            "current": false,
+            "total": false,
+            "avg": false
+          },
+          "nullPointMode": "connected",
+          "steppedLine": false,
+          "tooltip": {
+            "value_type": "cumulative",
+            "shared": true
+          },
+          "timeFrom": "14d",
+          "timeShift": null,
+          "targets": [
+            {
+              "refId": "A",
+              "dsType": "influxdb",
+              "resultFormat": "time_series",
               "tags": [
                 {
                   "key": "pod_name",
                   "operator": "=~",
                   "value": "/$SCENARIO$/"
                 }
-              ]
-            },
-            {
-              "alias": "$tag_pod_name - $tag_deploy_scenario - size",
-              "dsType": "influxdb",
+              ],
               "groupBy": [
                 {
-                  "params": [
-                    "pod_name"
-                  ],
-                  "type": "tag"
-                },
-                {
+                  "type": "tag",
                   "params": [
                     "deploy_scenario"
-                  ],
-                  "type": "tag"
+                  ]
                 },
                 {
+                  "type": "tag",
                   "params": [
-                    "task_id"
-                  ],
-                  "type": "tag"
+                    "installer"
+                  ]
                 }
               ],
-              "hide": true,
-              "measurement": "opnfv_yardstick_tc012",
-              "query": "SELECT \"size(MB)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"pod_name\", \"deploy_scenario\", \"task_id\"",
-              "refId": "B",
-              "resultFormat": "time_series",
               "select": [
                 [
                   {
+                    "type": "field",
                     "params": [
-                      "size(MB)"
-                    ],
-                    "type": "field"
+                      "bandwidth(MBps)"
+                    ]
                   }
                 ]
               ],
-              "tags": [
-                {
-                  "key": "pod_name",
-                  "operator": "=~",
-                  "value": "/$POD$/"
-                },
-                {
-                  "condition": "AND",
-                  "key": "deploy_scenario",
-                  "operator": "=~",
-                  "value": "/$SCENARIO$/"
-                }
-              ]
+              "measurement": "opnfv_yardstick_tc012",
+              "query": "SELECT \"bandwidth(MBps)\" FROM \"opnfv_yardstick_tc012\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
+              "alias": "$tag_deploy_scenario - mean bw"
             }
           ],
-          "timeFrom": null,
-          "timeShift": null,
-          "title": "Memory read/write bandwidth",
-          "tooltip": {
-            "shared": true,
-            "value_type": "cumulative"
+          "aliasColors": {},
+          "seriesOverrides": [],
+          "links": [],
+          "repeat": null,
+          "minSpan": 2,
+          "scopedVars": {
+            "POD": {
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
+            }
           },
-          "type": "graph",
-          "x-axis": true,
-          "y-axis": true,
-          "y_formats": [
-            "short",
-            "short"
-          ]
+          "repeatIteration": 1468305923981,
+          "repeatPanelId": 17
         }
-      ],
-      "title": "Row"
+      ]
     }
   ],
   "time": {
-    "from": "2016-02-04T18:05:28.864Z",
-    "to": "2016-02-23T22:06:14.432Z"
+    "from": "now-7d",
+    "to": "now"
   },
   "timepicker": {
     "now": true,
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\" ",
       {
         "allFormat": "regex values",
         "current": {
-          "tags": [],
           "text": "All",
-          "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+          "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+          "tags": []
         },
         "datasource": "yardstick-vtc",
         "includeAll": true,
         "name": "SCENARIO",
         "options": [
           {
-            "selected": true,
             "text": "All",
-            "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+            "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+            "selected": true
+          },
+          {
+            "text": "os-no_sdn-ovs-ha",
+            "value": "os\\-no_sdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-kvm-ha",
+            "value": "os\\-nosdn\\-kvm\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-nofeature-ha",
-            "value": "os\\-nosdn\\-nofeature\\-ha"
+            "value": "os\\-nosdn\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-nofeature-noha",
+            "value": "os\\-nosdn\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-ovs-ha",
-            "value": "os\\-nosdn\\-ovs\\-ha"
+            "value": "os\\-nosdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ocl-nofeature-ha",
+            "value": "os\\-ocl\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-bgpvpn-ha",
-            "value": "os\\-odl_l2\\-bgpvpn\\-ha"
+            "value": "os\\-odl_l2\\-bgpvpn\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-ha",
-            "value": "os\\-odl_l2\\-nofeature\\-ha"
+            "value": "os\\-odl_l2\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-noha",
-            "value": "os\\-odl_l2\\-nofeature\\-noha"
+            "value": "os\\-odl_l2\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-sfc-ha",
-            "value": "os\\-odl_l2\\-sfc\\-ha"
+            "value": "os\\-odl_l2\\-sfc\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l3-nofeature-ha",
-            "value": "os\\-odl_l3\\-nofeature\\-ha"
+            "value": "os\\-odl_l3\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-onos-nofeature-ha",
-            "value": "os\\-onos\\-nofeature\\-ha"
+            "value": "os\\-onos\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-onos-sfc-ha",
+            "value": "os\\-onos\\-sfc\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ovs-nofeature-ha",
+            "value": "os\\-ovs\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "unknown",
+            "value": "unknown",
+            "selected": false
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"deploy_scenario\" ",
   "annotations": {
     "list": []
   },
-  "refresh": false,
+  "refresh": "30m",
   "schemaVersion": 8,
-  "version": 29,
+  "version": 3,
   "links": []
-}
\ No newline at end of file
+}
index e0a2845..fb6bade 100644 (file)
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Processor Speed  - Unixbench single score",
           "tooltip": {
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table"
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 6
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 6
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 6
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 6
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "scroll": true,
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table",
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 6
         }
       ],
           "repeat": "POD",
           "scopedVars": {
             "POD": {
-              "selected": true,
               "text": "ericsson-pod2",
-              "value": "ericsson\\-pod2"
+              "value": "ericsson\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "huawei-us-deploy-bare-1",
-              "value": "huawei\\-us\\-deploy\\-bare\\-1"
+              "text": "huawei-pod1",
+              "value": "huawei\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "intel-pod6",
-              "value": "intel\\-pod6"
+              "text": "huawei-pod2",
+              "value": "huawei\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-1",
-              "value": "opnfv\\-jump\\-1"
+              "text": "intel-pod6",
+              "value": "intel\\-pod6",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "opnfv-jump-2",
-              "value": "opnfv\\-jump\\-2"
+              "text": "lf-pod2",
+              "value": "lf\\-pod2",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 5
         },
         {
           "repeat": null,
           "scopedVars": {
             "POD": {
-              "selected": true,
-              "text": "orange-fr-pod2",
-              "value": "orange\\-fr\\-pod2"
+              "text": "zte-pod1",
+              "value": "zte\\-pod1",
+              "selected": true
             }
           },
           "seriesOverrides": [
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "$POD",
           "tooltip": {
             "short",
             "short"
           ],
-          "repeatIteration": 1456496008517,
+          "repeatIteration": 1468309859583,
           "repeatPanelId": 5
         }
       ],
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Processor Speed - Unixbench parallel score",
           "tooltip": {
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
       {
         "allFormat": "regex values",
         "current": {
-          "tags": [],
           "text": "All",
-          "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+          "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+          "tags": []
         },
         "datasource": "yardstick-vtc",
         "includeAll": true,
         "name": "SCENARIO",
         "options": [
           {
-            "selected": true,
             "text": "All",
-            "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+            "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+            "selected": true
+          },
+          {
+            "text": "os-no_sdn-ovs-ha",
+            "value": "os\\-no_sdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-kvm-ha",
+            "value": "os\\-nosdn\\-kvm\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-nofeature-ha",
-            "value": "os\\-nosdn\\-nofeature\\-ha"
+            "value": "os\\-nosdn\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-nofeature-noha",
+            "value": "os\\-nosdn\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-ovs-ha",
-            "value": "os\\-nosdn\\-ovs\\-ha"
+            "value": "os\\-nosdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ocl-nofeature-ha",
+            "value": "os\\-ocl\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-bgpvpn-ha",
-            "value": "os\\-odl_l2\\-bgpvpn\\-ha"
+            "value": "os\\-odl_l2\\-bgpvpn\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-ha",
-            "value": "os\\-odl_l2\\-nofeature\\-ha"
+            "value": "os\\-odl_l2\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-noha",
-            "value": "os\\-odl_l2\\-nofeature\\-noha"
+            "value": "os\\-odl_l2\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-sfc-ha",
-            "value": "os\\-odl_l2\\-sfc\\-ha"
+            "value": "os\\-odl_l2\\-sfc\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l3-nofeature-ha",
-            "value": "os\\-odl_l3\\-nofeature\\-ha"
+            "value": "os\\-odl_l3\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-onos-nofeature-ha",
-            "value": "os\\-onos\\-nofeature\\-ha"
+            "value": "os\\-onos\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-onos-sfc-ha",
+            "value": "os\\-onos\\-sfc\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ovs-nofeature-ha",
+            "value": "os\\-ovs\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "unknown",
+            "value": "unknown",
+            "selected": false
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"deploy_scenario\"",
   },
   "refresh": "5m",
   "schemaVersion": 8,
-  "version": 13,
+  "version": 2,
   "links": []
-}
\ No newline at end of file
+}
index e52d08a..4531c15 100644 (file)
           "steppedLine": false,
           "targets": [
             {
-              "alias": "$tag_pod_name - $tag_deploy_scenario",
+              "alias": "",
               "dsType": "influxdb",
               "groupBy": [
                 {
+                  "type": "tag",
                   "params": [
-                    "pod_name"
-                  ],
-                  "type": "tag"
-                },
-                {
-                  "params": [
-                    "task_id"
-                  ],
-                  "type": "tag"
+                    "deploy_scenario"
+                  ]
                 },
                 {
+                  "type": "tag",
                   "params": [
-                    "deploy_scenario"
-                  ],
-                  "type": "tag"
+                    "installer"
+                  ]
                 }
               ],
               "measurement": "opnfv_yardstick_tc027",
-              "query": "SELECT \"rtt\" FROM \"opnfv_yardstick_tc027\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"pod_name\", \"task_id\", \"deploy_scenario\"",
+              "query": "SELECT \"rtt\" FROM \"opnfv_yardstick_tc027\" WHERE \"pod_name\" = 'huawei-pod1' AND \"deploy_scenario\" = 'os-nosdn-nofeature-ha' AND $timeFilter GROUP BY \"deploy_scenario\", \"installer\"",
               "refId": "A",
               "resultFormat": "time_series",
               "select": [
               "tags": [
                 {
                   "key": "pod_name",
-                  "operator": "=~",
-                  "value": "/$POD$/"
+                  "operator": "=",
+                  "value": "huawei-pod1"
                 },
                 {
                   "condition": "AND",
                   "key": "deploy_scenario",
-                  "operator": "=~",
-                  "value": "/$SCENARIO$/"
+                  "operator": "=",
+                  "value": "os-nosdn-nofeature-ha"
                 }
               ]
             }
           ],
-          "timeFrom": "24h",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "RTT",
           "tooltip": {
               ]
             }
           ],
-          "timeFrom": "24h",
-          "title": "Panel Title",
+          "timeFrom": "14d",
+          "title": "$POD",
           "transform": "timeseries_to_rows",
           "type": "table"
         }
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
-          "title": "Panel Title",
+          "title": "$POD",
           "tooltip": {
             "shared": true,
             "value_type": "cumulative"
           "y_formats": [
             "short",
             "short"
-          ]
+          ],
+          "links": []
         }
       ],
       "title": "New row"
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
-          "value": [
-            "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
-          ]
+          "text": "huawei-pod1",
+          "value": "huawei\\-pod1"
         },
         "datasource": "yardstick-vtc",
         "includeAll": true,
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": false
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
+          },
+          {
+            "text": "intel-pod6",
+            "value": "intel\\-pod6",
+            "selected": false
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": false
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"",
       {
         "allFormat": "regex values",
         "current": {
-          "tags": [],
-          "text": "All",
-          "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+          "text": "os-nosdn-nofeature-ha + os-nosdn-nofeature-noha",
+          "value": [
+            "os\\-nosdn\\-nofeature\\-ha",
+            "os\\-nosdn\\-nofeature\\-noha"
+          ],
+          "tags": []
         },
         "datasource": "yardstick-vtc",
         "includeAll": true,
         "name": "SCENARIO",
         "options": [
           {
-            "selected": true,
             "text": "All",
-            "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+            "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+            "selected": false
+          },
+          {
+            "text": "os-no_sdn-ovs-ha",
+            "value": "os\\-no_sdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-kvm-ha",
+            "value": "os\\-nosdn\\-kvm\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-nofeature-ha",
-            "value": "os\\-nosdn\\-nofeature\\-ha"
+            "value": "os\\-nosdn\\-nofeature\\-ha",
+            "selected": true
+          },
+          {
+            "text": "os-nosdn-nofeature-noha",
+            "value": "os\\-nosdn\\-nofeature\\-noha",
+            "selected": true
           },
           {
-            "selected": false,
             "text": "os-nosdn-ovs-ha",
-            "value": "os\\-nosdn\\-ovs\\-ha"
+            "value": "os\\-nosdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ocl-nofeature-ha",
+            "value": "os\\-ocl\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-bgpvpn-ha",
-            "value": "os\\-odl_l2\\-bgpvpn\\-ha"
+            "value": "os\\-odl_l2\\-bgpvpn\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-ha",
-            "value": "os\\-odl_l2\\-nofeature\\-ha"
+            "value": "os\\-odl_l2\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-noha",
-            "value": "os\\-odl_l2\\-nofeature\\-noha"
+            "value": "os\\-odl_l2\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-sfc-ha",
-            "value": "os\\-odl_l2\\-sfc\\-ha"
+            "value": "os\\-odl_l2\\-sfc\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l3-nofeature-ha",
-            "value": "os\\-odl_l3\\-nofeature\\-ha"
+            "value": "os\\-odl_l3\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-onos-nofeature-ha",
-            "value": "os\\-onos\\-nofeature\\-ha"
+            "value": "os\\-onos\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-onos-sfc-ha",
+            "value": "os\\-onos\\-sfc\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ovs-nofeature-ha",
+            "value": "os\\-ovs\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "unknown",
+            "value": "unknown",
+            "selected": false
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"deploy_scenario\"",
     "list": []
   },
   "schemaVersion": 8,
-  "version": 7,
+  "version": 8,
   "links": []
-}
\ No newline at end of file
+}
index dae167d..271b76e 100644 (file)
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Throughput mean trend",
           "tooltip": {
               ]
             }
           ],
-          "timeFrom": "10d",
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "RTT mean trend",
           "tooltip": {
               ]
             }
           ],
-          "timeFrom": null,
+          "timeFrom": "14d",
           "timeShift": null,
           "title": "Round-trip time - ping",
           "tooltip": {
           ],
           "title": "RTT mean - ping",
           "transform": "table",
-          "type": "table"
+          "type": "table",
+          "timeFrom": "14d"
         }
       ],
       "showTitle": false,
         "allFormat": "regex values",
         "current": {
           "tags": [],
-          "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2",
+          "text": "ericsson-pod2 + huawei-pod1 + huawei-pod2 + intel-pod6 + lf-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
-            "huawei\\-us\\-deploy\\-bare\\-1",
+            "huawei\\-pod1",
+            "huawei\\-pod2",
             "intel\\-pod6",
-            "opnfv\\-jump\\-1",
-            "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "lf\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
         "name": "POD",
         "options": [
           {
-            "selected": false,
             "text": "All",
-            "value": "(elxg482ls42|ericsson\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown)"
+            "value": "(elxg482ls42|ericsson\\-pod1|ericsson\\-pod2|huawei\\-pod1|huawei\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod5|intel\\-pod6|lf\\-pod1|lf\\-pod2|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|unknown|zte\\-pod1)",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "elxg482ls42",
-            "value": "elxg482ls42"
+            "value": "elxg482ls42",
+            "selected": false
+          },
+          {
+            "text": "ericsson-pod1",
+            "value": "ericsson\\-pod1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "ericsson-pod2",
-            "value": "ericsson\\-pod2"
+            "value": "ericsson\\-pod2",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod1",
+            "value": "huawei\\-pod1",
+            "selected": true
+          },
+          {
+            "text": "huawei-pod2",
+            "value": "huawei\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "huawei-us-deploy-bare-1",
-            "value": "huawei\\-us\\-deploy\\-bare\\-1"
+            "value": "huawei\\-us\\-deploy\\-bare\\-1",
+            "selected": false
+          },
+          {
+            "text": "intel-pod5",
+            "value": "intel\\-pod5",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "intel-pod6",
-            "value": "intel\\-pod6"
+            "value": "intel\\-pod6",
+            "selected": true
+          },
+          {
+            "text": "lf-pod1",
+            "value": "lf\\-pod1",
+            "selected": false
+          },
+          {
+            "text": "lf-pod2",
+            "value": "lf\\-pod2",
+            "selected": true
           },
           {
-            "selected": true,
             "text": "opnfv-jump-1",
-            "value": "opnfv\\-jump\\-1"
+            "value": "opnfv\\-jump\\-1",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "opnfv-jump-2",
-            "value": "opnfv\\-jump\\-2"
+            "value": "opnfv\\-jump\\-2",
+            "selected": false
           },
           {
-            "selected": true,
             "text": "orange-fr-pod2",
-            "value": "orange\\-fr\\-pod2"
+            "value": "orange\\-fr\\-pod2",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "unknown",
-            "value": "unknown"
+            "value": "unknown",
+            "selected": false
+          },
+          {
+            "text": "zte-pod1",
+            "value": "zte\\-pod1",
+            "selected": true
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"pod_name\" ",
       {
         "allFormat": "regex values",
         "current": {
-          "tags": [],
           "text": "All",
-          "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+          "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+          "tags": []
         },
         "datasource": "yardstick-vtc",
         "includeAll": true,
         "name": "SCENARIO",
         "options": [
           {
-            "selected": true,
             "text": "All",
-            "value": "(os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-ovs\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha)"
+            "value": "(os\\-no_sdn\\-ovs\\-ha|os\\-nosdn\\-kvm\\-ha|os\\-nosdn\\-nofeature\\-ha|os\\-nosdn\\-nofeature\\-noha|os\\-nosdn\\-ovs\\-ha|os\\-ocl\\-nofeature\\-ha|os\\-odl_l2\\-bgpvpn\\-ha|os\\-odl_l2\\-nofeature\\-ha|os\\-odl_l2\\-nofeature\\-noha|os\\-odl_l2\\-sfc\\-ha|os\\-odl_l3\\-nofeature\\-ha|os\\-onos\\-nofeature\\-ha|os\\-onos\\-sfc\\-ha|os\\-ovs\\-nofeature\\-ha|unknown)",
+            "selected": true
+          },
+          {
+            "text": "os-no_sdn-ovs-ha",
+            "value": "os\\-no_sdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-kvm-ha",
+            "value": "os\\-nosdn\\-kvm\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-nofeature-ha",
-            "value": "os\\-nosdn\\-nofeature\\-ha"
+            "value": "os\\-nosdn\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-nosdn-nofeature-noha",
+            "value": "os\\-nosdn\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-nosdn-ovs-ha",
-            "value": "os\\-nosdn\\-ovs\\-ha"
+            "value": "os\\-nosdn\\-ovs\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ocl-nofeature-ha",
+            "value": "os\\-ocl\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-bgpvpn-ha",
-            "value": "os\\-odl_l2\\-bgpvpn\\-ha"
+            "value": "os\\-odl_l2\\-bgpvpn\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-ha",
-            "value": "os\\-odl_l2\\-nofeature\\-ha"
+            "value": "os\\-odl_l2\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-nofeature-noha",
-            "value": "os\\-odl_l2\\-nofeature\\-noha"
+            "value": "os\\-odl_l2\\-nofeature\\-noha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l2-sfc-ha",
-            "value": "os\\-odl_l2\\-sfc\\-ha"
+            "value": "os\\-odl_l2\\-sfc\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-odl_l3-nofeature-ha",
-            "value": "os\\-odl_l3\\-nofeature\\-ha"
+            "value": "os\\-odl_l3\\-nofeature\\-ha",
+            "selected": false
           },
           {
-            "selected": false,
             "text": "os-onos-nofeature-ha",
-            "value": "os\\-onos\\-nofeature\\-ha"
+            "value": "os\\-onos\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-onos-sfc-ha",
+            "value": "os\\-onos\\-sfc\\-ha",
+            "selected": false
+          },
+          {
+            "text": "os-ovs-nofeature-ha",
+            "value": "os\\-ovs\\-nofeature\\-ha",
+            "selected": false
+          },
+          {
+            "text": "unknown",
+            "value": "unknown",
+            "selected": false
           }
         ],
         "query": "SHOW TAG VALUES WITH KEY = \"deploy_scenario\" ",
   },
   "refresh": false,
   "schemaVersion": 8,
-  "version": 85,
+  "version": 3,
   "links": []
-}
\ No newline at end of file
+}
diff --git a/docs/userguide/opnfv_yardstick_tc045.rst b/docs/userguide/opnfv_yardstick_tc045.rst
new file mode 100644 (file)
index 0000000..0b0993c
--- /dev/null
@@ -0,0 +1,139 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, Yin Kanglin and others.
+.. 14_ykl@tongji.edu.cn
+
+*************************************
+Yardstick Test Case Description TC045
+*************************************
+
++-----------------------------------------------------------------------------+
+|Control Node Openstack Service High Availability - Neutron Server            |
+|                                                                             |
++--------------+--------------------------------------------------------------+
+|test case id  | OPNFV_YARDSTICK_TC045: Control node Openstack service down - |
+|              | neutron server                                               |
++--------------+--------------------------------------------------------------+
+|test purpose  | This test case will verify the high availability of the      |
+|              | network service provided by OpenStack (neutro-server) on     |
+|              | control node.                                                |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|test method   | This test case kills the processes of neutron-server service |
+|              | on a selected control node, then checks whether the request  |
+|              | of the related Openstack command is OK and the killed        |
+|              | processes are recovered.                                     |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|attackers     | In this test case, an attacker called "kill-process" is      |
+|              | needed. This attacker includes three parameters:             |
+|              | 1) fault_type: which is used for finding the attacker's      |
+|              | scripts. It should be always set to "kill-process" in this   |
+|              | test case.                                                   |
+|              | 2) process_name: which is the process name of the specified  |
+|              | OpenStack service. If there are multiple processes use the   |
+|              | same name on the host, all of them are killed by this        |
+|              | attacker.                                                    |
+|              | In this case. This parameter should always set to "neutron-  |
+|              | server".                                                     |
+|              | 3) host: which is the name of a control node being attacked. |
+|              |                                                              |
+|              | e.g.                                                         |
+|              | -fault_type: "kill-process"                                  |
+|              | -process_name: "neutron-server"                              |
+|              | -host: node1                                                 |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|monitors      | In this test case, two kinds of monitor are needed:          |
+|              | 1. the "openstack-cmd" monitor constantly request a specific |
+|              | Openstack command, which needs two parameters:               |
+|              | 1) monitor_type: which is used for finding the monitor class |
+|              | and related scritps. It should be always set to              |
+|              | "openstack-cmd" for this monitor.                            |
+|              | 2) command_name: which is the command name used for request. |
+|              | In this case, the command name should be neutron related     |
+|              | commands.                                                    |
+|              |                                                              |
+|              | 2. the "process" monitor check whether a process is running  |
+|              | on a specific node, which needs three parameters:            |
+|              | 1) monitor_type: which used for finding the monitor class and|
+|              | related scritps. It should be always set to "process"        |
+|              | for this monitor.                                            |
+|              | 2) process_name: which is the process name for monitor       |
+|              | 3) host: which is the name of the node runing the process    |
+|              |                                                              |
+|              | e.g.                                                         |
+|              | monitor1:                                                    |
+|              | -monitor_type: "openstack-cmd"                               |
+|              | -command_name: "neutron agent-list"                          |
+|              | monitor2:                                                    |
+|              | -monitor_type: "process"                                     |
+|              | -process_name: "neutron-server"                              |
+|              | -host: node1                                                 |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|metrics       | In this test case, there are two metrics:                    |
+|              | 1)service_outage_time: which indicates the maximum outage    |
+|              | time (seconds) of the specified Openstack command request.   |
+|              | 2)process_recover_time: which indicates the maximun time     |
+|              | (seconds) from the process being killed to recovered         |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|test tool     | Developed by the project. Please see folder:                 |
+|              | "yardstick/benchmark/scenarios/availability/ha_tools"        |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|references    | ETSI NFV REL001                                              |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|configuration | This test case needs two configuration files:                |
+|              | 1) test case file: opnfv_yardstick_tc045.yaml                |
+|              | -Attackers: see above "attackers" discription                |
+|              | -waiting_time: which is the time (seconds) from the process  |
+|              | being killed to stoping monitors the monitors                |
+|              | -Monitors: see above "monitors" discription                  |
+|              | -SLA: see above "metrics" discription                        |
+|              |                                                              |
+|              | 2)POD file: pod.yaml                                         |
+|              | The POD configuration should record on pod.yaml first.       |
+|              | the "host" item in this test case will use the node name in  |
+|              | the pod.yaml.                                                |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|test sequence | description and expected result                              |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|step 1        | start monitors:                                              |
+|              | each monitor will run with independently process             |
+|              |                                                              |
+|              | Result: The monitor info will be collected.                  |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|step 2        | do attacker: connect the host through SSH, and then execute  |
+|              | the kill process script with param value specified by        |
+|              | "process_name"                                               |
+|              |                                                              |
+|              | Result: Process will be killed.                              |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|step 3        | stop monitors after a period of time specified by            |
+|              | "waiting_time"                                               |
+|              |                                                              |
+|              | Result: The monitor info will be aggregated.                 |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|step 4        | verify the SLA                                               |
+|              |                                                              |
+|              | Result: The test case is passed or not.                      |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|post-action   | It is the action when the test cases exist. It will check the|
+|              | status of the specified process on the host, and restart the |
+|              | process if it is not running for next test cases             |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
+|test verdict  | Fails only if SLA is not passed, or if there is a test case  |
+|              | execution problem.                                           |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
index b5a9542..8c00d4b 100644 (file)
@@ -4,16 +4,13 @@ plugin-yardstick
 Plugin description
 Installs Yardstick on base-os node via a fuel plugin.
 
-
-To build:
-1) install fuel plugin builder (fpb)
-       sudo apt-get install createrepo rpm dpkg-dev
-       easy_install pip
-       pip install fuel-plugin-builder
-
+1) install vagrant fuel plugin builder (fpb)
+    sudo apt-get install -y ruby-dev rubygems-integration python-pip rpm createrepo dpkg-dev
+    sudo gem install fpm
+    sudo pip install fuel-plugin-builder
 2) build plugin
-       fpb --build <plugin-name>
-       e.g.: fpb --build plugin-yardstick
+    fpb --build <plugin-dir>
+    e.g.: fpb --build yardstick/fuel-plugin
 
 3) copy plugin rpm to fuel master
        e.g. scp plugin-yardstick-0.1-0.1.0-1.noarch.rpm <user>@<server-name>:~/
@@ -33,4 +30,7 @@ To build:
 8) run
 Once deployed, SSH to deployed node. Find IP of yardstick node.
 SSH to yardstick node, Activate yardstick:
-       source yardstick_env/bin/activate
+    source /var/lib/yardstick.openrc
+    source /var/lib/yardstick/bin/activate
+    export EXTERNAL_NETWORK="admin_floating_net"
+    yardstick task start /opt/yardstick/fuel-plugin/fuel_ping.yaml
index f0bb3e3..84ef96c 100755 (executable)
@@ -3,24 +3,24 @@
 set -eux
 
 HOST=$1
-INSTALL_HOME=/opt/yardstick
-rm -rf $INSTALL_HOME; mkdir -p $INSTALL_HOME
+BIN_HOME=/opt/yardstick
+VAR_HOME=/var/lib/yardstick
+rm -rf $BIN_HOME; mkdir -p $BIN_HOME
+rm -rf $VAR_HOME; mkdir -p $VAR_HOME
 
-cd $INSTALL_HOME
-
-sudo apt-get install -y python-virtualenv python-dev python-pip libffi-dev libssl-dev libxml2-dev libxslt1-dev
-pip install --user virtualenv
-pip install --upgrade virtualenv
+sudo apt-get install -y python-dev python-pip libffi-dev libssl-dev libxml2-dev libxslt1-dev
+pip install virtualenv
 
 # create python virtual env
-virtualenv $INSTALL_HOME/yardstick_venv
-# source $INSTALL_HOME/yardstick_venv/bin/activate
+virtualenv $VAR_HOME
+
+export PS1="yardstick"
+source $VAR_HOME/bin/activate
 
 easy_install -U setuptools
 
-mkdir bin
-cd $INSTALL_HOME/bin
+cd $BIN_HOME
 
 curl http://$HOST:8080/plugins/fuel-plugin-yardstick-0.9/repositories/ubuntu/yardstick.tar.gz | tar xzvf -
 
-pip install -r tests/ci/requirements.txt
+python setup.py develop
index 6547cb4..7993524 100644 (file)
@@ -7,6 +7,7 @@ $admin_user     = $access_hash['user']
 $admin_password = $access_hash['password']
 $region         = hiera('region', 'RegionOne')
 
+$auth_api_version       = 'v2.0'
 $service_endpoint       = hiera('service_endpoint', $management_vip)
 $ssl_hash               = hiera_hash('use_ssl', {})
 $internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
@@ -19,7 +20,7 @@ exec { "install yardstick":
     path   => "/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin";
 }
 
-osnailyfacter::credentials_file { '/opt/yardstick/openrc':
+osnailyfacter::credentials_file { '/var/lib/yardstick.openrc':
   admin_user          => $admin_user,
   admin_password      => $admin_password,
   admin_tenant        => $admin_tenant,
diff --git a/fuel-plugin/fuel_ping.yaml b/fuel-plugin/fuel_ping.yaml
new file mode 100644 (file)
index 0000000..e367e98
--- /dev/null
@@ -0,0 +1,43 @@
+---
+# Sample file copied from  sampls/ping.yaml
+# context part is modified according to fuel default env
+
+schema: "yardstick:task:0.1"
+
+scenarios:
+-
+  type: Ping
+  options:
+    packetsize: 200
+  host: athena.demo
+  target: ares.demo
+
+  runner:
+    type: Duration
+    duration: 60
+    interval: 1
+
+  sla:
+    max_rtt: 10
+    action: monitor
+
+context:
+  name: demo
+  image: TestVM
+  flavor: m1.micro
+  user: cirros
+
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+
+  servers:
+    athena:
+      floating_ip: true
+      placement: "pgrp1"
+    ares:
+      placement: "pgrp1"
+
+  networks:
+    test:
+      cidr: '192.169.111.0/24'
index b016176..ddf2d6a 100755 (executable)
@@ -1,14 +1,8 @@
 #!/bin/bash
 sudo apt-get update -y
-sudo apt-get install createrepo rpm dpkg-dev -y
-sudo apt-get install python-setuptools -y
-sudo apt-get install python-pip -y
-sudo easy_install pip
-sudo pip install fuel-plugin-builder
-sudo apt-get install ruby -y
-sudo gem install rubygems-update
+sudo apt-get install -y ruby-dev rubygems-integration python-pip rpm createrepo dpkg-dev
 sudo gem install fpm
-sudo apt-get install docker.io -y
+sudo pip install fuel-plugin-builder
 cp -r /yardstick /home/vagrant
 cd /home/vagrant/yardstick/fuel-plugin;
 rm -rf vagrant/.vagrant
index 7ca5282..21d0682 100644 (file)
@@ -10,7 +10,8 @@ scenarios:
 -
   type: CPUload
   options:
-    interval: 2
+    interval: 1
+    count: 1
   host: apollo.demo
   runner:
     type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml
new file mode 100644 (file)
index 0000000..d740683
--- /dev/null
@@ -0,0 +1,87 @@
+---
+# Yardstick TC044 config file
+# Measure memory usage statistics, network throughput, latency and packet loss.
+# Different amounts of flows are tested with, from 2 up to 1001000.
+# All tests are run 2 times each. First 2 times with the least
+# amount of ports, then 2 times with the next amount of ports,
+# and so on until all packet sizes have been run with.
+#
+# During the measurements memory usage statistics and network latency are
+# recorded/measured using sar and ping, respectively.
+
+schema: "yardstick:task:0.1"
+
+scenarios:
+-
+  type: MEMORYload
+  run_in_background: true
+
+  options:
+    interval: 1
+    count: 1
+
+  host: demeter.yardstick-TC044
+-
+  type: MEMORYload
+  run_in_background: true
+
+  options:
+    interval: 1
+    count: 1
+
+  host: poseidon.yardstick-TC044
+-
+  type: Ping
+  run_in_background: true
+
+  options:
+    packetsize: 100
+
+  host: demeter.yardstick-TC044
+  target: poseidon.yardstick-TC044
+
+  sla:
+    max_rtt: 10
+    action: monitor
+{% for num_ports in [1, 10, 50, 100, 300, 500, 750, 1000] %}
+-
+  type: Pktgen
+  options:
+    packetsize: 64
+    number_of_ports: {{num_ports}}
+    duration: 20
+
+  host: demeter.yardstick-TC044
+  target: poseidon.yardstick-TC044
+
+  runner:
+    type: Iteration
+    iterations: 2
+    interval: 1
+
+  sla:
+    max_ppm: 1000
+    action: monitor
+{% endfor %}
+
+context:
+  name: yardstick-TC044
+  image: yardstick-trusty-server
+  flavor: yardstick-flavor
+  user: ubuntu
+
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+
+  servers:
+    demeter:
+      floating_ip: true
+      placement: "pgrp1"
+    poseidon:
+      floating_ip: true
+      placement: "pgrp1"
+
+  networks:
+    test:
+      cidr: '10.0.1.0/24'
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
new file mode 100644 (file)
index 0000000..812d53d
--- /dev/null
@@ -0,0 +1,43 @@
+---
+# Test case for TC045 :Control node Openstack service down - neutron server
+
+schema: "yardstick:task:0.1"
+
+scenarios:
+-
+  type: ServiceHA
+  options:
+    attackers:
+    - fault_type: "kill-process"
+      process_name: "neutron-server"
+      host: node1
+
+    monitors:
+    - monitor_type: "openstack-cmd"
+      command_name: "neutron agent-list"
+      monitor_time: 10
+      sla:
+        max_outage_time: 5
+    - monitor_type: "process"
+      process_name: "neutron-server"
+      host: node1
+      monitor_time: 10
+      sla:
+        max_recover_time: 5
+
+  nodes:
+    node1: node1.LF
+
+  runner:
+    type: Duration
+    duration: 1
+  sla:
+    outage_time: 5
+    action: monitor
+
+
+context:
+  type: Node
+  name: LF
+  file: /root/yardstick/etc/yardstick/nodes/fuel_virtual/pod.yaml
+
diff --git a/tests/opnfv/test_suites/fuel_test_suite.yaml b/tests/opnfv/test_suites/fuel_test_suite.yaml
new file mode 100644 (file)
index 0000000..016bf09
--- /dev/null
@@ -0,0 +1,12 @@
+---
+# Fuel integration test task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "fuel_test_suite"
+test_cases_dir: "samples/"
+test_cases:
+-
+  file_name: ping.yaml
+-
+  file_name: iperf3.yaml
index 3a3bfcc..435d21c 100644 (file)
@@ -18,7 +18,5 @@ test_cases:
   file_name: opnfv_yardstick_tc012.yaml
 -
   file_name: opnfv_yardstick_tc014.yaml
--
-  file_name: opnfv_yardstick_tc027.yaml
 -
   file_name: opnfv_yardstick_tc037.yaml
diff --git a/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py b/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py
new file mode 100644 (file)
index 0000000..9972d6b
--- /dev/null
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2016 Huan Li and others
+# lihuansse@tongji.edu.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.availability.result_checker
+# .baseresultchecker
+
+import mock
+import unittest
+
+from yardstick.benchmark.scenarios.availability.result_checker import baseresultchecker
+
+
+@mock.patch('yardstick.benchmark.scenarios.availability.result_checker'
+    '.baseresultchecker.BaseResultChecker')
+class ResultCheckerMgrTestCase(unittest.TestCase):
+
+    def setUp(self):
+        config = {
+            'checker_type': 'general-result-checker',
+            'key' : 'process-checker'
+        }
+
+        self.checker_configs = []
+        self.checker_configs.append(config)
+
+    def test_ResultCheckerMgr_setup_successful(self, mock_basechacer):
+        mgr_ins = baseresultchecker.ResultCheckerMgr()
+        mgr_ins.init_ResultChecker(self.checker_configs, None)
+        mgr_ins.verify()
+
+    def test_getitem_succeessful(self, mock_basechacer):
+        mgr_ins = baseresultchecker.ResultCheckerMgr()
+        mgr_ins.init_ResultChecker(self.checker_configs, None)
+        checker_ins = mgr_ins["process-checker"]
+
+    def test_getitem_fail(self, mock_basechacer):
+        mgr_ins = baseresultchecker.ResultCheckerMgr()
+        mgr_ins.init_ResultChecker(self.checker_configs, None)
+        with self.assertRaises(KeyError):
+            checker_ins = mgr_ins["checker-not-exist"]
+
+
+class BaseResultCheckerTestCase(unittest.TestCase):
+
+    class ResultCheckeSimple(baseresultchecker.BaseResultChecker):
+        __result_checker__type__ = "ResultCheckeForTest"
+        def setup(self):
+            self.success = False
+
+        def verify(self):
+            return self.success
+
+    def setUp(self):
+        self.checker_cfg = {
+            'checker_type': 'general-result-checker',
+            'key' : 'process-checker'
+        }
+
+    def test_baseresultchecker_setup_verify_successful(self):
+        ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None)
+        ins.setup()
+        ins.verify()
+
+    def test_baseresultchecker_verfiy_pass(self):
+        ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None)
+        ins.setup()
+        ins.actualResult = True
+        ins.expectedResult = True
+        ins.verify()
+
+    def test_get_script_fullpath(self):
+        ins = baseresultchecker.BaseResultChecker(self.checker_cfg, None)
+        path = ins.get_script_fullpath("test.bash")
+
+    def test_get_resultchecker_cls_successful(self):
+        baseresultchecker.BaseResultChecker.get_resultchecker_cls("ResultCheckeForTest")
+
+    def test_get_resultchecker_cls_fail(self):
+        with self.assertRaises(RuntimeError):
+            baseresultchecker.BaseResultChecker.get_resultchecker_cls("ResultCheckeNotExist")
diff --git a/tests/unit/benchmark/scenarios/availability/test_director.py b/tests/unit/benchmark/scenarios/availability/test_director.py
new file mode 100644 (file)
index 0000000..887ddd6
--- /dev/null
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2016 Huan Li and others
+# lihuansse@tongji.edu.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.availability.director
+
+import mock
+import unittest
+
+from yardstick.benchmark.scenarios.availability.director import Director
+from yardstick.benchmark.scenarios.availability import  actionplayers
+
+
+@mock.patch('yardstick.benchmark.scenarios.availability.director.basemonitor')
+@mock.patch('yardstick.benchmark.scenarios.availability.director.baseattacker')
+@mock.patch('yardstick.benchmark.scenarios.availability.director.baseoperation')
+@mock.patch('yardstick.benchmark.scenarios.availability.director.baseresultchecker')
+class DirectorTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.scenario_cfg = {
+            'type': "general_scenario",
+            'options': {
+                'attackers':[{
+                    'fault_type': "general-attacker",
+                    'key': "kill-process"}],
+                'monitors': [{
+                    'monitor_type': "general-monitor",
+                    'key': "service_status"}],
+                'operations': [{
+                    'operation_type': 'general-operation',
+                    'key' : 'service_status'}],
+                'resultCheckers': [{
+                    'checker_type': 'general-result-checker',
+                    'key' : 'process-checker',}],
+                'steps':[
+                    {
+                        'actionKey': "service_status",
+                        'actionType': "operation",
+                        'index': 1},
+                    {
+                        'actionKey': "kill-process",
+                        'actionType': "attacker",
+                        'index': 2},
+                    {
+                        'actionKey': "process-checker",
+                        'actionType': "resultchecker",
+                        'index': 3},
+                    {
+                        'actionKey': "service_status",
+                        'actionType': "monitor",
+                        'index': 4},
+                    ]
+            }
+        }
+        host = {
+            "ip": "10.20.0.5",
+            "user": "root",
+            "key_filename": "/root/.ssh/id_rsa"
+        }
+        self.ctx = {"nodes": {"node1": host}}
+
+    def test_director_all_successful(self, mock_checer, mock_opertion, mock_attacker, mock_monitor):
+        ins = Director(self.scenario_cfg, self.ctx)
+        opertion_action = ins.createActionPlayer("operation", "service_status")
+        attacker_action = ins.createActionPlayer("attacker", "kill-process")
+        checker_action = ins.createActionPlayer("resultchecker", "process-checker")
+        monitor_action = ins.createActionPlayer("monitor", "service_status")
+
+        opertion_rollback = ins.createActionRollbacker("operation", "service_status")
+        attacker_rollback = ins.createActionRollbacker("attacker", "kill-process")
+        ins.executionSteps.append(opertion_rollback)
+        ins.executionSteps.append(attacker_rollback)
+
+        opertion_action.action()
+        attacker_action.action()
+        checker_action.action()
+        monitor_action.action()
+
+        attacker_rollback.rollback()
+        opertion_rollback.rollback()
+
+        ins.stopMonitors()
+        ins.verify()
+        ins.knockoff()
+
+    def test_director_get_wrong_item(self, mock_checer, mock_opertion, mock_attacker, mock_monitor):
+        ins = Director(self.scenario_cfg, self.ctx)
+        ins.createActionPlayer("wrong_type", "wrong_key")
+        ins.createActionRollbacker("wrong_type", "wrong_key")
+
+
+
+
+
+
diff --git a/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py b/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py
new file mode 100644 (file)
index 0000000..88a9b9d
--- /dev/null
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2016 Huan Li and others
+# lihuansse@tongji.edu.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.availability.result_checker
+# .result_checker_general
+
+import mock
+import unittest
+import copy
+
+from yardstick.benchmark.scenarios.availability.result_checker import  result_checker_general
+
+
+@mock.patch('yardstick.benchmark.scenarios.availability.result_checker.'
+            'result_checker_general.ssh')
+@mock.patch('yardstick.benchmark.scenarios.availability.result_checker.'
+            'result_checker_general.open')
+class GeneralResultCheckerTestCase(unittest.TestCase):
+
+    def setUp(self):
+        host = {
+            "ip": "10.20.0.5",
+            "user": "root",
+            "key_filename": "/root/.ssh/id_rsa"
+        }
+        self.context = {"node1": host}
+        self.checker_cfg = {
+            'parameter': {'processname': 'process'},
+            'checker_type': 'general-result-checker',
+            'condition' : 'eq',
+            'expectedValue' : 1,
+            'key' : 'process-checker',
+            'host': 'node1'
+        }
+
+    def test__result_checker_eq(self, mock_open, mock_ssh):
+        ins = result_checker_general.GeneralResultChecker(self.checker_cfg,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "1", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_gt(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'gt'
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "2", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_gt_eq(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'gt_eq'
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "1", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_lt(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'lt'
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "0", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_lt_eq(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'lt_eq'
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "1", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_in(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'in'
+        config['expectedValue'] = "value"
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "value return", '')
+        ins.setup()
+        self.assertTrue(ins.verify())
+
+    def test__result_checker_wrong(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config['condition'] = 'wrong'
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (0, "1", '')
+        ins.setup()
+        self.assertFalse(ins.verify())
+
+    def test__result_checker_fail(self, mock_open, mock_ssh):
+        config = copy.deepcopy(self.checker_cfg)
+        config.pop('parameter')
+        ins = result_checker_general.GeneralResultChecker(config,
+            self.context);
+        mock_ssh.SSH().execute.return_value = (1, "fail", '')
+        ins.setup()
+        ins.verify()
\ No newline at end of file
diff --git a/tests/unit/benchmark/scenarios/availability/test_scenario_general.py b/tests/unit/benchmark/scenarios/availability/test_scenario_general.py
new file mode 100644 (file)
index 0000000..c17edea
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2016 Huan Li and others
+# lihuansse@tongji.edu.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.availability.scenario_general
+
+import mock
+import unittest
+
+from yardstick.benchmark.scenarios.availability.scenario_general import ScenarioGeneral
+
+
+@mock.patch('yardstick.benchmark.scenarios.availability.scenario_general.Director')
+class ScenarioGeneralTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.scenario_cfg = {
+            'type': "general_scenario",
+            'options': {
+                'attackers':[{
+                    'fault_type': "general-attacker",
+                    'key': "kill-process"}],
+                'monitors': [{
+                    'monitor_type': "general-monitor",
+                    'key': "service_status"}],
+                'steps':[
+                    {
+                        'actionKey': "kill-process",
+                        'actionType': "attacker",
+                        'index': 1},
+                    {
+                        'actionKey': "service_status",
+                        'actionType': "monitor",
+                        'index': 2}]
+            }
+        }
+
+    def test_scenario_general_all_successful(self, mock_director):
+        ins = ScenarioGeneral(self.scenario_cfg, None)
+        ins.setup()
+        ins.run(None)
+        ins.teardown()
+
+    def test_scenario_general_exception(self, mock_director):
+        ins = ScenarioGeneral(self.scenario_cfg, None)
+        mock_obj = mock.Mock()
+        mock_obj.createActionPlayer.side_effect = KeyError('Wrong')
+        ins.director = mock_obj
+        ins.run(None)
+        ins.teardown()
+
+    def test_scenario_general_case_fail(self, mock_director):
+        ins = ScenarioGeneral(self.scenario_cfg, None)
+        mock_obj = mock.Mock()
+        mock_obj.verify.return_value = False
+        ins.director = mock_obj
+        ins.run(None)
+        ins.teardown()
\ No newline at end of file
index b1723ae..723e64b 100644 (file)
@@ -1,5 +1,9 @@
-Linux 3.13.0-68-generic (elxg482ls42)  11/30/2015      _x86_64_        (12 CPU)
+Linux 3.13.0-68-generic (elxg482ls42)  11/30/2015      _x86_64_        (1 CPU)
 
-04:53:04 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
-04:53:04 PM  all   11.31    0.03    1.19    0.18    0.00    0.01    0.00    5.51    0.00   81.77
-04:53:04 PM    0   20.03    0.03    1.36    0.33    0.00    0.06    0.00    6.62    0.00   71.56
+04:34:26 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
+04:34:26 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
+04:34:26 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
+
+Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
+Average:     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
+Average:       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
index 22c4419..77f2a02 100644 (file)
@@ -33,7 +33,14 @@ class CPULoadTestCase(unittest.TestCase):
         self.result = {}
 
     def test_setup_mpstat_installed(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
 
         l.setup()
@@ -42,7 +49,14 @@ class CPULoadTestCase(unittest.TestCase):
         self.assertTrue(l.has_mpstat)
 
     def test_setup_mpstat_not_installed(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (127, '', '')
 
         l.setup()
@@ -51,7 +65,14 @@ class CPULoadTestCase(unittest.TestCase):
         self.assertFalse(l.has_mpstat)
 
     def test_execute_command_success(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
         l.setup()
 
@@ -61,7 +82,14 @@ class CPULoadTestCase(unittest.TestCase):
         self.assertEqual(result, expected_result)
 
     def test_execute_command_failed(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
         l.setup()
 
@@ -70,7 +98,14 @@ class CPULoadTestCase(unittest.TestCase):
                           "cat /proc/loadavg")
 
     def test_get_loadavg(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
         l.setup()
 
@@ -82,44 +117,63 @@ class CPULoadTestCase(unittest.TestCase):
         self.assertEqual(result, expected_result)
 
     def test_get_cpu_usage_mpstat(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 1,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
         l.setup()
 
-        l.interval = 0
+        l.interval = 1
+        l.count = 1
         mpstat_output = self._read_file("cpuload_sample_output1.txt")
         mock_ssh.SSH().execute.return_value = (0, mpstat_output, '')
         result = l._get_cpu_usage_mpstat()
 
         expected_result = \
-            {'mpstat':
-                {'cpu':
-                    {'%gnice': '0.00',
-                     '%guest': '5.51',
-                     '%idle': '81.77',
-                     '%iowait': '0.18',
-                     '%irq': '0.00',
-                     '%nice': '0.03',
-                     '%soft': '0.01',
-                     '%steal': '0.00',
-                     '%sys': '1.19',
-                     '%usr': '11.31'},
-                 'cpu0':
-                     {'%gnice': '0.00',
-                      '%guest': '6.62',
-                      '%idle': '71.56',
-                      '%iowait': '0.33',
-                      '%irq': '0.00',
-                      '%nice': '0.03',
-                      '%soft': '0.06',
-                      '%steal': '0.00',
-                      '%sys': '1.36',
-                      '%usr': '20.03'}}}
+            {"mpstat_minimum":
+                {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                         "%idle": "100.00", "%guest": "0.00",
+                         "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                         "%irq": "0.00", "%nice": "0.00"},
+                 "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                          "%idle": "100.00", "%guest": "0.00",
+                          "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                          "%irq": "0.00", "%nice": "0.00"}},
+             "mpstat_average":
+                {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                         "%idle": "100.00", "%guest": "0.00",
+                         "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                         "%irq": "0.00", "%nice": "0.00"},
+                 "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                          "%idle": "100.00", "%guest": "0.00",
+                          "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                          "%irq": "0.00", "%nice": "0.00"}},
+             "mpstat_maximun":
+                {"cpu": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                         "%idle": "100.00", "%guest": "0.00",
+                         "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                         "%irq": "0.00", "%nice": "0.00"},
+                 "cpu0": {"%steal": "0.00", "%usr": "0.00", "%gnice": "0.00",
+                          "%idle": "100.00", "%guest": "0.00",
+                          "%iowait": "0.00", "%sys": "0.00", "%soft": "0.00",
+                          "%irq": "0.00", "%nice": "0.00"}}}
 
         self.assertDictEqual(result, expected_result)
 
     def test_get_cpu_usage(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        options = {
+            "interval": 0,
+            "count": 1
+        }
+
+        args = {'options': options}
+
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (0, '', '')
         l.setup()
 
@@ -154,45 +208,16 @@ class CPULoadTestCase(unittest.TestCase):
                      '%nice': '0.03'}}}
 
         self.assertDictEqual(result, expected_result)
+    
+    def test_run_proc_stat(self, mock_ssh):
+        options = {
+            "interval": 1,
+            "count": 1
+        }
 
-    def test_run_mpstat(self, mock_ssh):
-        l = cpuload.CPULoad({'options': {'interval': 1}}, self.ctx)
-        mock_ssh.SSH().execute.return_value = (0, '', '')
-
-        mpstat_output = self._read_file("cpuload_sample_output1.txt")
-        mock_ssh.SSH().execute.side_effect = \
-            [(0, '', ''), (0, '1.50 1.45 1.51 3/813 14322', ''), (0, mpstat_output, '')]
-
-        l.run(self.result)
-
-        expected_result = {
-            'loadavg': ['1.50', '1.45', '1.51', '3/813', '14322'],
-            'mpstat':
-            {'cpu': {'%gnice': '0.00',
-                     '%guest': '5.51',
-                     '%idle': '81.77',
-                     '%iowait': '0.18',
-                     '%irq': '0.00',
-                     '%nice': '0.03',
-                     '%soft': '0.01',
-                     '%steal': '0.00',
-                     '%sys': '1.19',
-                     '%usr': '11.31'},
-             'cpu0': {'%gnice': '0.00',
-                      '%guest': '6.62',
-                      '%idle': '71.56',
-                      '%iowait': '0.33',
-                      '%irq': '0.00',
-                      '%nice': '0.03',
-                      '%soft': '0.06',
-                      '%steal': '0.00',
-                      '%sys': '1.36',
-                      '%usr': '20.03'}}}
-
-        self.assertDictEqual(self.result, expected_result)
+        args = {'options': options}
 
-    def test_run_proc_stat(self, mock_ssh):
-        l = cpuload.CPULoad({}, self.ctx)
+        l = cpuload.CPULoad(args, self.ctx)
         mock_ssh.SSH().execute.return_value = (1, '', '')
         l.setup()
 
diff --git a/tests/unit/benchmark/scenarios/networking/test_vsperf.py b/tests/unit/benchmark/scenarios/networking/test_vsperf.py
new file mode 100644 (file)
index 0000000..cb5c09a
--- /dev/null
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+
+# Copyright 2016 Intel Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Unittest for yardstick.benchmark.scenarios.networking.vsperf.Vsperf
+
+import mock
+import unittest
+import os
+import subprocess
+
+from yardstick.benchmark.scenarios.networking import vsperf
+
+
+@mock.patch('yardstick.benchmark.scenarios.networking.vsperf.subprocess')
+@mock.patch('yardstick.benchmark.scenarios.networking.vsperf.ssh')
+@mock.patch("__builtin__.open", return_value=None)
+class VsperfTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.ctx = {
+            "host": {
+                "ip": "10.229.47.137",
+                "user": "ubuntu",
+                "password": "ubuntu",
+            },
+        }
+        self.args = {
+            'options': {
+                'testname': 'rfc2544_p2p_continuous',
+                'traffic_type': 'continuous',
+                'pkt_sizes': '64',
+                'bidirectional': 'True',
+                'iload': 100,
+                'duration': 29,
+                'trafficgen_port1': 'eth1',
+                'trafficgen_port2': 'eth3',
+                'external_bridge': 'br-ex',
+                'conf-file': 'vsperf-yardstick.conf',
+                'setup-script': 'setup_yardstick.sh',
+            },
+            'sla': {
+                'metrics': 'throughput_rx_fps',
+                'throughput_rx_fps': 500000,
+                'action': 'monitor',
+            }
+        }
+
+    def test_vsperf_setup(self, mock_open, mock_ssh, mock_subprocess):
+        p = vsperf.Vsperf(self.args, self.ctx)
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_subprocess.call().execute.return_value = None
+
+        p.setup()
+        self.assertIsNotNone(p.client)
+        self.assertEqual(p.setup_done, True)
+
+    def test_vsperf_teardown(self, mock_open, mock_ssh, mock_subprocess):
+        p = vsperf.Vsperf(self.args, self.ctx)
+
+        # setup() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_subprocess.call().execute.return_value = None
+
+        p.setup()
+        self.assertIsNotNone(p.client)
+        self.assertEqual(p.setup_done, True)
+
+        p.teardown()
+        self.assertEqual(p.setup_done, False)
+
+    def test_vsperf_run_ok(self, mock_open, mock_ssh, mock_subprocess):
+        p = vsperf.Vsperf(self.args, self.ctx)
+
+        # setup() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_subprocess.call().execute.return_value = None
+
+        # run() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_ssh.SSH().execute.return_value = (0, 'throughput_rx_fps\r\n14797660.000\r\n', '')
+
+        result = {}
+        p.run(result)
+
+        self.assertEqual(result['throughput_rx_fps'], '14797660.000')
+
+    def test_vsperf_run_falied_vsperf_execution(self, mock_open, mock_ssh, mock_subprocess):
+        p = vsperf.Vsperf(self.args, self.ctx)
+
+        # setup() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_subprocess.call().execute.return_value = None
+
+        # run() specific mocks
+        mock_ssh.SSH().execute.return_value = (1, '', '')
+
+        result = {}
+        self.assertRaises(RuntimeError, p.run, result)
+
+    def test_vsperf_run_falied_csv_report(self, mock_open, mock_ssh, mock_subprocess):
+        p = vsperf.Vsperf(self.args, self.ctx)
+
+        # setup() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_subprocess.call().execute.return_value = None
+
+        # run() specific mocks
+        mock_ssh.SSH().execute.return_value = (0, '', '')
+        mock_ssh.SSH().execute.return_value = (1, '', '')
+
+        result = {}
+        self.assertRaises(RuntimeError, p.run, result)
+
+
+def main():
+    unittest.main()
+
+if __name__ == '__main__':
+    main()
index e69de29..c3b3aae 100755 (executable)
@@ -0,0 +1,24 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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
+##############################################################################
+
+
+class ActionType:
+    ATTACKER = "attacker"
+    MONITOR = "monitor"
+    RESULTCHECKER = "resultchecker"
+    OPERATION = "operation"
+
+
+class Condition:
+    EQUAL = "eq"
+    GREATERTHAN = "gt"
+    GREATERTHANEQUAL = "gt_eq"
+    LESSTHAN = "lt"
+    LESSTHANEQUAL = "lt_eq"
+    IN = "in"
diff --git a/yardstick/benchmark/scenarios/availability/actionplayers.py b/yardstick/benchmark/scenarios/availability/actionplayers.py
new file mode 100644 (file)
index 0000000..4206264
--- /dev/null
@@ -0,0 +1,54 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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
+##############################################################################
+
+
+class ActionPlayer(object):
+    """
+    Abstract the action functions of attacker,
+    monitor, operation, resultchecker and mybe others in future
+    """
+
+    def action(self):
+        pass
+
+
+class AttackerPlayer(ActionPlayer):
+
+    def __init__(self, attacker):
+        self.underlyingAttacker = attacker
+
+    def action(self):
+        self.underlyingAttacker.inject_fault()
+
+
+class OperationPlayer(ActionPlayer):
+
+    def __init__(self, operation):
+        self.underlyingOperation = operation
+
+    def action(self):
+        self.underlyingOperation.run()
+
+
+class MonitorPlayer(ActionPlayer):
+
+    def __init__(self, monitor):
+        self.underlyingmonitor = monitor
+
+    def action(self):
+        self.underlyingmonitor.start_monitor()
+
+
+class ResultCheckerPlayer(ActionPlayer):
+
+    def __init__(self, resultChecker):
+        self.underlyingresultChecker = resultChecker
+
+    def action(self):
+        self.underlyingresultChecker.verify()
diff --git a/yardstick/benchmark/scenarios/availability/actionrollbackers.py b/yardstick/benchmark/scenarios/availability/actionrollbackers.py
new file mode 100644 (file)
index 0000000..4b732a1
--- /dev/null
@@ -0,0 +1,45 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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
+
+LOG = logging.getLogger(__name__)
+
+
+class ActionRollbacker(object):
+    """
+    Abstract the rollback functions of attacker, operation
+    and mybe others in future
+    """
+
+    def rollback(self):
+        pass
+
+
+class AttackerRollbacker(ActionRollbacker):
+
+    def __init__(self, attacker):
+        self.underlyingAttacker = attacker
+
+    def rollback(self):
+        LOG.debug(
+            "\033[93m recovering attacker %s \033[0m"
+            % (self.underlyingAttacker.key))
+        self.underlyingAttacker.recover()
+
+
+class OperationRollbacker(ActionRollbacker):
+
+    def __init__(self, operation):
+        self.underlyingOperation = operation
+
+    def rollback(self):
+        LOG.debug(
+            "\033[93m rollback operation %s \033[0m"
+            % (self.underlyingOperation.key))
+        self.underlyingOperation.rollback()
diff --git a/yardstick/benchmark/scenarios/availability/director.py b/yardstick/benchmark/scenarios/availability/director.py
new file mode 100644 (file)
index 0000000..267933d
--- /dev/null
@@ -0,0 +1,106 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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
+
+from yardstick.benchmark.scenarios.availability.monitor import basemonitor
+from yardstick.benchmark.scenarios.availability.attacker import baseattacker
+from yardstick.benchmark.scenarios.availability.operation import baseoperation
+from yardstick.benchmark.scenarios.availability.result_checker \
+    import baseresultchecker
+from yardstick.benchmark.scenarios.availability import ActionType
+from yardstick.benchmark.scenarios.availability import actionplayers
+from yardstick.benchmark.scenarios.availability import actionrollbackers
+
+LOG = logging.getLogger(__name__)
+
+
+class Director(object):
+    """
+    Director is used to direct a test scenaio
+    including the creation of  action players, test result verification
+    and rollback of actions.
+    """
+
+    def __init__(self, scenario_cfg, context_cfg):
+
+        # A stack store Rollbacker that will be called after
+        # all actionplayers finish.
+        self.executionSteps = []
+
+        self.scenario_cfg = scenario_cfg
+        self.context_cfg = context_cfg
+        nodes = self.context_cfg.get("nodes", None)
+        # setup attackers
+        if "attackers" in self.scenario_cfg["options"]:
+            LOG.debug("start init attackers...")
+            attacker_cfgs = self.scenario_cfg["options"]["attackers"]
+            self.attackerMgr = baseattacker.AttackerMgr()
+            self.attackerMgr.init_attackers(attacker_cfgs, nodes)
+        # setup monitors
+        if "monitors" in self.scenario_cfg["options"]:
+            LOG.debug("start init monitors...")
+            monitor_cfgs = self.scenario_cfg["options"]["monitors"]
+            self.monitorMgr = basemonitor.MonitorMgr()
+            self.monitorMgr.init_monitors(monitor_cfgs, nodes)
+        # setup operations
+        if "operations" in self.scenario_cfg["options"]:
+            LOG.debug("start init operations...")
+            operation_cfgs = self.scenario_cfg["options"]["operations"]
+            self.operationMgr = baseoperation.OperationMgr()
+            self.operationMgr.init_operations(operation_cfgs, nodes)
+        # setup result checker
+        if "resultCheckers" in self.scenario_cfg["options"]:
+            LOG.debug("start init resultCheckers...")
+            result_check_cfgs = self.scenario_cfg["options"]["resultCheckers"]
+            self.resultCheckerMgr = baseresultchecker.ResultCheckerMgr()
+            self.resultCheckerMgr.init_ResultChecker(result_check_cfgs, nodes)
+
+    def createActionPlayer(self, type, key):
+        LOG.debug(
+            "the type of current action is %s, the key is %s" % (type, key))
+        if type == ActionType.ATTACKER:
+            return actionplayers.AttackerPlayer(self.attackerMgr[key])
+        if type == ActionType.MONITOR:
+            return actionplayers.MonitorPlayer(self.monitorMgr[key])
+        if type == ActionType.RESULTCHECKER:
+            return actionplayers.ResultCheckerPlayer(
+                self.resultCheckerMgr[key])
+        if type == ActionType.OPERATION:
+            return actionplayers.OperationPlayer(self.operationMgr[key])
+        LOG.debug("something run when creatactionplayer")
+
+    def createActionRollbacker(self, type, key):
+        LOG.debug(
+            "the type of current action is %s, the key is %s" % (type, key))
+        if type == ActionType.ATTACKER:
+            return actionrollbackers.AttackerRollbacker(self.attackerMgr[key])
+        if type == ActionType.OPERATION:
+            return actionrollbackers.OperationRollbacker(
+                self.operationMgr[key])
+        LOG.debug("no rollbacker created for %s" % (key))
+
+    def verify(self):
+        result = True
+        if hasattr(self, 'monitorMgr'):
+            result &= self.monitorMgr.verify_SLA()
+        if hasattr(self, 'resultCheckerMgr'):
+            result &= self.resultCheckerMgr.verify()
+        if result:
+            LOG.debug("monitors are passed")
+        return result
+
+    def stopMonitors(self):
+        if "monitors" in self.scenario_cfg["options"]:
+            self.monitorMgr.wait_monitors()
+
+    def knockoff(self):
+        LOG.debug("knock off ....")
+        while self.executionSteps:
+            singleStep = self.executionSteps.pop()
+            singleStep.rollback()
diff --git a/yardstick/benchmark/scenarios/availability/result_checker/__init__.py b/yardstick/benchmark/scenarios/availability/result_checker/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py b/yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py
new file mode 100644 (file)
index 0000000..1bdb9f2
--- /dev/null
@@ -0,0 +1,88 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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 pkg_resources
+import yaml
+import logging
+import os
+
+import yardstick.common.utils as utils
+
+LOG = logging.getLogger(__name__)
+
+resultchecker_conf_path = pkg_resources.resource_filename(
+    "yardstick.benchmark.scenarios.availability",
+    "result_checker_conf.yaml")
+
+
+class ResultCheckerMgr(object):
+
+    def __init__(self):
+        self._result_checker_list = []
+
+    def init_ResultChecker(self, resultchecker_cfgs, context):
+        LOG.debug("resultcheckerMgr confg: %s" % resultchecker_cfgs)
+
+        for cfg in resultchecker_cfgs:
+            resultchecker_type = cfg['checker_type']
+            resultchecker_cls = BaseResultChecker.get_resultchecker_cls(
+                resultchecker_type)
+            resultchecker_ins = resultchecker_cls(cfg, context)
+            resultchecker_ins.key = cfg['key']
+            resultchecker_ins.setup()
+            self._result_checker_list.append(resultchecker_ins)
+
+    def __getitem__(self, item):
+        for obj in self._result_checker_list:
+            if(obj.key == item):
+                return obj
+        raise KeyError("No such result checker instance of key - %s" % item)
+
+    def verify(self):
+        result = True
+        for obj in self._result_checker_list:
+                result &= obj.success
+        return result
+
+
+class BaseResultChecker(object):
+
+    resultchecker_cfgs = {}
+
+    def __init__(self, config, context):
+        if not BaseResultChecker.resultchecker_cfgs:
+            with open(resultchecker_conf_path) as stream:
+                BaseResultChecker.resultchecker_cfgs = yaml.load(stream)
+        self.actualResult = object()
+        self.expectedResult = object()
+        self.success = False
+
+        self._config = config
+        self._context = context
+        self.setup_done = False
+
+    @staticmethod
+    def get_resultchecker_cls(type):
+        '''return resultchecker instance of specified type'''
+        resultchecker_type = type
+        for checker_cls in utils.itersubclasses(BaseResultChecker):
+            if resultchecker_type == checker_cls.__result_checker__type__:
+                return checker_cls
+        raise RuntimeError("No such runner_type %s" % resultchecker_type)
+
+    def get_script_fullpath(self, path):
+        base_path = os.path.dirname(resultchecker_conf_path)
+        return os.path.join(base_path, path)
+
+    def setup(self):
+        pass
+
+    def verify(self):
+        if(self.actualResult == self.expectedResult):
+            self.success = True
+        return self.success
diff --git a/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py b/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py
new file mode 100644 (file)
index 0000000..70bf9ae
--- /dev/null
@@ -0,0 +1,107 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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
+
+from baseresultchecker import BaseResultChecker
+from yardstick.benchmark.scenarios.availability import Condition
+import yardstick.ssh as ssh
+from yardstick.benchmark.scenarios.availability.util import buildshellparams
+
+LOG = logging.getLogger(__name__)
+
+
+class GeneralResultChecker(BaseResultChecker):
+
+    __result_checker__type__ = "general-result-checker"
+
+    def setup(self):
+        LOG.debug("config:%s context:%s" % (self._config, self._context))
+        host = self._context.get(self._config['host'], None)
+        ip = host.get("ip", None)
+        user = host.get("user", "root")
+        key_filename = host.get("key_filename", "~/.ssh/id_rsa")
+
+        self.connection = ssh.SSH(user, ip, key_filename=key_filename)
+        self.connection.wait(timeout=600)
+        LOG.debug("ssh host success!")
+
+        self.key = self._config['key']
+        self.type = self._config['checker_type']
+        self.condition = self._config['condition']
+        self.expectedResult = self._config['expectedValue']
+        self.actualResult = object()
+
+        self.key = self._config['key']
+        if "parameter" in self._config:
+            parameter = self._config['parameter']
+            str = buildshellparams(parameter)
+            l = list(item for item in parameter.values())
+            self.shell_cmd = str.format(*l)
+
+        self.resultchecker_cfgs = BaseResultChecker.resultchecker_cfgs.get(
+            self.key)
+        self.verify_script = self.get_script_fullpath(
+            self.resultchecker_cfgs['verify_script'])
+
+    def verify(self):
+        if "parameter" in self._config:
+            exit_status, stdout, stderr = self.connection.execute(
+                self.shell_cmd,
+                stdin=open(self.verify_script, "r"))
+            LOG.debug("action script of the operation is: {0}"
+                      .format(self.verify_script))
+            LOG.debug("action parameter the of operation is: {0}"
+                      .format(self.shell_cmd))
+        else:
+            exit_status, stdout, stderr = self.connection.execute(
+                "/bin/bash -s ",
+                stdin=open(self.verify_script, "r"))
+            LOG.debug("action script of the operation is: {0}"
+                      .format(self.verify_script))
+
+        LOG.debug("exit_status ,stdout : {0} ,{1}".format(exit_status, stdout))
+        if exit_status == 0 and stdout:
+            self.actualResult = stdout
+            LOG.debug("verifying resultchecker: {0}".format(self.key))
+            LOG.debug("verifying resultchecker,expected: {0}"
+                      .format(self.expectedResult))
+            LOG.debug("verifying resultchecker,actual: {0}"
+                      .format(self.actualResult))
+            LOG.debug("verifying resultchecker,condition: {0}"
+                      .format(self.condition))
+            if (type(self.expectedResult) is int):
+                self.actualResult = int(self.actualResult)
+            if self.condition == Condition.EQUAL:
+                self.success = self.actualResult == self.expectedResult
+            elif self.condition == Condition.GREATERTHAN:
+                self.success = self.actualResult > self.expectedResult
+            elif self.condition == Condition.GREATERTHANEQUAL:
+                self.success = self.actualResult >= self.expectedResult
+            elif self.condition == Condition.LESSTHANEQUAL:
+                self.success = self.actualResult <= self.expectedResult
+            elif self.condition == Condition.LESSTHAN:
+                self.success = self.actualResult < self.expectedResult
+            elif self.condition == Condition.IN:
+                self.success = self.expectedResult in self.actualResult
+            else:
+                self.success = False
+                LOG.debug(
+                    "error happened when resultchecker: {0} Invalid condition"
+                    .format(self.key))
+        else:
+            self.success = False
+            LOG.debug(
+                "error happened when resultchecker: {0} verifying the result"
+                .format(self.key))
+            LOG.error(stderr)
+
+        LOG.debug(
+            "verifying resultchecker: {0},the result is : {1}"
+            .format(self.key, self.success))
+        return self.success
diff --git a/yardstick/benchmark/scenarios/availability/result_checker_conf.yaml b/yardstick/benchmark/scenarios/availability/result_checker_conf.yaml
new file mode 100644 (file)
index 0000000..638c39a
--- /dev/null
@@ -0,0 +1,11 @@
+---
+# sample config file for ha test
+#
+schema: "yardstick:task:0.1"
+
+process-checker:
+  verify_script: ha_tools/check_process_python.bash
+service-checker:
+  verify_script: ha_tools/check_service.bash
+nova-instance-checker:
+  verify_script: ha_tools/nova/show_instances.bash
\ No newline at end of file
diff --git a/yardstick/benchmark/scenarios/availability/scenario_general.py b/yardstick/benchmark/scenarios/availability/scenario_general.py
new file mode 100644 (file)
index 0000000..0a128aa
--- /dev/null
@@ -0,0 +1,68 @@
+##############################################################################
+# Copyright (c) 2016 Juan Qiu and others
+# juan_ qiu@tongji.edu.cn
+# 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 traceback
+
+from yardstick.benchmark.scenarios import base
+from yardstick.benchmark.scenarios.availability.director import Director
+
+LOG = logging.getLogger(__name__)
+
+
+class ScenarioGeneral(base.Scenario):
+    """Support orchestrating general HA test scenarios."""
+
+    __scenario_type__ = "GeneralHA"
+
+    def __init__(self, scenario_cfg, context_cfg):
+        LOG.debug(
+            "scenario_cfg:%s context_cfg:%s" % (scenario_cfg, context_cfg))
+        self.scenario_cfg = scenario_cfg
+        self.context_cfg = context_cfg
+
+    def setup(self):
+        self.director = Director(self.scenario_cfg, self.context_cfg)
+
+    def run(self, args):
+        steps = self.scenario_cfg["options"]["steps"]
+        orderedSteps = sorted(steps, key=lambda x: x['index'])
+        for step in orderedSteps:
+            LOG.debug(
+                "\033[94m running step: {0} .... \033[0m"
+                .format(orderedSteps.index(step)+1))
+            try:
+                actionPlayer = self.director.createActionPlayer(
+                    step['actionType'], step['actionKey'])
+                actionPlayer.action()
+                actionRollbacker = self.director.createActionRollbacker(
+                    step['actionType'], step['actionKey'])
+                if actionRollbacker:
+                    self.director.executionSteps.append(actionRollbacker)
+            except Exception, e:
+                LOG.debug(e.message)
+                traceback.print_exc()
+                LOG.debug(
+                    "\033[91m exception when running step: {0} .... \033[0m"
+                    .format(orderedSteps.index(step)))
+                break
+            finally:
+                pass
+
+        self.director.stopMonitors()
+        if self.director.verify():
+            LOG.debug(
+                "\033[92m congratulations, "
+                "the test cases scenario is pass! \033[0m")
+        else:
+            LOG.debug(
+                "\033[91m aoh,the test cases scenario failed,"
+                "please check the detail debug information! \033[0m")
+
+    def teardown(self):
+        self.director.knockoff()
index d11bec5..f45313e 100644 (file)
@@ -36,13 +36,17 @@ class CPULoad(base.Scenario):
     on the Linux host.
 
     Parameters
-          interval - Time interval to measure CPU usage. A value of 0
-                     indicates that processors statistics are to be
-                     reported for the time since system startup (boot)
+          interval - Time interval to measure CPU usage.
 
           type:       [int]
           unit:       seconds
-          default:    0
+          default:    1
+
+          count (for mpstat only) - Number of CPU usage measurment.
+
+          type:       [int]
+          unit:       N/A
+          default:    1
 
     """
 
@@ -56,6 +60,7 @@ class CPULoad(base.Scenario):
         self.context_cfg = context_cfg
         self.setup_done = False
         self.has_mpstat = False
+        self.has_count = False
 
     def setup(self):
         """Scenario setup."""
@@ -77,10 +82,13 @@ class CPULoad(base.Scenario):
             LOG.info("MPSTAT is installed")
             self.has_mpstat = True
 
-        if 'options' in self.scenario_cfg:
-            self.interval = self.scenario_cfg['options'].get("interval", 0)
+        options = self.scenario_cfg['options']
+        self.interval = options.get("interval", 1)
+        if 'count' in options:
+            self.count = options.get("count", 1)
+            self.has_count = True
         else:
-            self.interval = 0
+            self.has_count = False
 
         self.setup_done = True
 
@@ -99,15 +107,17 @@ class CPULoad(base.Scenario):
 
     def _get_cpu_usage_mpstat(self):
         """Get processor usage using mpstat."""
-        if self.interval > 0:
-            cmd = "mpstat -P ON %s 1" % self.interval
+        if self.interval > 0 and self.has_count:
+            cmd = "mpstat -P ON %s %s" % (self.interval, self.count)
         else:
-            cmd = "mpstat -P ON"
+            cmd = "mpstat -P ON %s 1" % self.interval
 
         result = self._execute_command(cmd)
 
         fields = []
-        mpstat = {}
+        maximum = {}
+        minimum = {}
+        average = {}
 
         time_marker = re.compile("^([0-9]+):([0-9]+):([0-9]+)$")
         ampm_marker = re.compile("(AM|PM)$")
@@ -117,7 +127,6 @@ class CPULoad(base.Scenario):
             line = row.split()
 
             if line and re.match(time_marker, line[0]):
-
                 if re.match(ampm_marker, line[1]):
                     del line[:2]
                 else:
@@ -134,11 +143,45 @@ class CPULoad(base.Scenario):
                     cpu = 'cpu' if line[0] == 'all' else 'cpu' + line[0]
                     values = line[1:]
                     if values and len(values) == len(fields):
-                        mpstat[cpu] = dict(zip(fields, values))
+                        temp_dict = dict(zip(fields, values))
+                        if cpu not in maximum:
+                            maximum[cpu] = temp_dict
+                        else:
+                            for item in temp_dict:
+                                if float(maximum[cpu][item]) <\
+                                   float(temp_dict[item]):
+                                    maximum[cpu][item] = temp_dict[item]
+
+                        if cpu not in minimum:
+                            minimum[cpu] = temp_dict
+                        else:
+                            for item in temp_dict:
+                                if float(minimum[cpu][item]) >\
+                                   float(temp_dict[item]):
+                                    minimum[cpu][item] = temp_dict[item]
                     else:
                         raise RuntimeError("mpstat: parse error", fields, line)
 
-        return {'mpstat': mpstat}
+            elif line and line[0] == 'Average:':
+                del line[:1]
+                if line[0] == 'CPU':
+                    # header fields
+                    fields = line[1:]
+                    if len(fields) != CPULoad.MPSTAT_FIELD_SIZE:
+                        raise RuntimeError("mpstat average: unexpected field\
+                                           size", fields)
+                else:
+                    # value fields
+                    cpu = 'cpu' if line[0] == 'all' else 'cpu' + line[0]
+                    values = line[1:]
+                    if values and len(values) == len(fields):
+                        average[cpu] = dict(zip(fields, values))
+                    else:
+                        raise RuntimeError("mpstat average: parse error",
+                                           fields, line)
+
+        return {'mpstat_maximun': maximum, 'mpstat_minimum': minimum,
+                'mpstat_average': average}
 
     def _get_cpu_usage(self):
         """Get processor usage from /proc/stat."""
diff --git a/yardstick/benchmark/scenarios/networking/vsperf.py b/yardstick/benchmark/scenarios/networking/vsperf.py
new file mode 100644 (file)
index 0000000..d312308
--- /dev/null
@@ -0,0 +1,229 @@
+# Copyright 2016 Intel Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+""" Vsperf specific scenario definition """
+
+import logging
+import os
+import subprocess
+import csv
+
+import yardstick.ssh as ssh
+from yardstick.benchmark.scenarios import base
+
+LOG = logging.getLogger(__name__)
+
+
+class Vsperf(base.Scenario):
+    """Execute vsperf with defined parameters
+
+  Parameters:
+    traffic_type - to specify the type of traffic executed by traffic generator
+    the valid values are "rfc2544", "continuous", "back2back"
+        type:    string
+        default: "rfc2544"
+    pkt_sizes - a packet size for which test should be executed;
+        Multiple packet sizes can be tested by modification of Sequence runner
+        section inside TC YAML definition.
+        type:    string
+        default: "64"
+    duration - sets duration for which traffic will be generated
+        type:    int
+        default: 30
+    bidirectional - speficies if traffic will be uni (False) or bi-directional
+        (True)
+        type:    string
+        default: False
+    iload - specifies frame rate
+        type:    string
+        default: 100
+    rfc2544_trials - the number of trials performed for each packet size
+        type:    string
+        default: NA
+    multistream - the number of simulated streams
+        type:    string
+        default: 0 (disabled)
+    stream_type - specifies network layer used for multistream simulation
+        the valid values are "L4", "L3" and "L2"
+        type:    string
+        default: "L4"
+    conf-file - path to the vsperf configuration file, which will be uploaded
+        to the VM
+        type:   string
+        default: NA
+    setup-script - path to the setup script, which will be executed during
+        setup and teardown phases
+        type:   string
+        default: NA
+    trafficgen_port1 - specifies device name of 1st interface connected to
+        the trafficgen
+        type:   string
+        default: NA
+    trafficgen_port2 - specifies device name of 2nd interface connected to
+        the trafficgen
+        type:   string
+        default: NA
+    external_bridge - specifies name of external bridge configured in OVS
+        type:   string
+        default: "br-ex"
+
+    """
+    __scenario_type__ = "Vsperf"
+
+    VSPERF_CONF = '~/vsperf-yardstick.conf'
+
+    def __init__(self, scenario_cfg, context_cfg):
+        self.scenario_cfg = scenario_cfg
+        self.context_cfg = context_cfg
+        self.setup_done = False
+        self.client = None
+        self.tg_port1 = self.scenario_cfg['options'].get('trafficgen_port1',
+                                                         None)
+        self.tg_port2 = self.scenario_cfg['options'].get('trafficgen_port2',
+                                                         None)
+        self.br_ex = self.scenario_cfg['options'].get('external_bridge',
+                                                      'br-ex')
+        self.vsperf_conf = os.path.expanduser(
+            self.scenario_cfg['options'].get('conf-file', Vsperf.VSPERF_CONF))
+        self.setup_script = self.scenario_cfg['options'].get('setup-script',
+                                                             None)
+        if self.setup_script:
+            self.setup_script = os.path.expanduser(self.setup_script)
+
+    def setup(self):
+        '''scenario setup'''
+        vsperf = self.context_cfg['host']
+        vsperf_user = vsperf.get('user', 'ubuntu')
+        vsperf_password = vsperf.get('password', 'ubuntu')
+        vsperf_ip = vsperf.get('ip', None)
+
+        # add trafficgen interfaces to the external bridge
+        if self.tg_port1:
+            subprocess.call('sudo bash -c "ovs-vsctl add-port %s %s"' %
+                            (self.br_ex, self.tg_port1), shell=True)
+        if self.tg_port2:
+            subprocess.call('sudo bash -c "ovs-vsctl add-port %s %s"' %
+                            (self.br_ex, self.tg_port2), shell=True)
+
+        # copy vsperf conf to VM
+        LOG.info("user:%s, host:%s", vsperf_user, vsperf_ip)
+        self.client = ssh.SSH(vsperf_user, vsperf_ip,
+                              password=vsperf_password)
+        # traffic generation could last long
+        self.client.wait(timeout=1800)
+
+        # copy script to host
+        self.client.run("cat > ~/vsperf.conf",
+                        stdin=open(self.vsperf_conf, "rb"))
+
+        # execute external setup script
+        if self.setup_script:
+            cmd = "%s setup" % (self.setup_script)
+            LOG.info("Execute setup script \"%s\"", cmd)
+            subprocess.call(cmd, shell=True)
+
+        self.setup_done = True
+
+    def run(self, result):
+        """ execute the vsperf benchmark and return test results
+            within result dictionary
+        """
+        def add_test_params(options, option, default_value):
+            """return parameter and its value as a string to be passed
+               to the VSPERF inside --test-params argument
+
+               Parameters:
+                options - dictionary with scenario options
+                option  - a name of option to be added to the string
+                default_value - value to be used in case that option
+                    is not defined inside scenario options
+            """
+            if option in options:
+                return "%s=%s" % (option, options[option])
+            elif default_value is not None:
+                return "%s=%s" % (option, default_value)
+            else:
+                return None
+
+        if not self.setup_done:
+            self.setup()
+
+        # remove results from previous tests
+        self.client.execute("rm -rf /tmp/results*")
+
+        # get vsperf options
+        options = self.scenario_cfg['options']
+        test_params = []
+        test_params.append(add_test_params(options, "traffic_type", "rfc2544"))
+        test_params.append(add_test_params(options, "pkt_sizes", "64"))
+        test_params.append(add_test_params(options, "duration", None))
+        test_params.append(add_test_params(options, "bidirectional", "False"))
+        test_params.append(add_test_params(options, "iload", 100))
+        test_params.append(add_test_params(options, "rfc2544_trials", None))
+        test_params.append(add_test_params(options, "multistream", None))
+        test_params.append(add_test_params(options, "stream_type", None))
+
+        # execute vsperf
+        cmd = "source ~/vsperfenv/bin/activate ; cd vswitchperf ; "
+        cmd += "./vsperf --mode trafficgen --conf-file ~/vsperf.conf "
+        cmd += "--test-params=\"%s\"" % (';'.join(filter(None, test_params)))
+        LOG.debug("Executing command: %s", cmd)
+        status, stdout, stderr = self.client.execute(cmd)
+
+        if status:
+            raise RuntimeError(stderr)
+
+        # get test results
+        cmd = "cat /tmp/results*/result.csv"
+        LOG.debug("Executing command: %s", cmd)
+        status, stdout, stderr = self.client.execute(cmd)
+
+        if status:
+            raise RuntimeError(stderr)
+
+        # convert result.csv to JSON format
+        reader = csv.DictReader(stdout.split('\r\n'))
+        result.update(reader.next())
+
+        # sla check; go through all defined SLAs and check if values measured
+        # by VSPERF are higher then those defined by SLAs
+        if 'sla' in self.scenario_cfg and \
+           'metrics' in self.scenario_cfg['sla']:
+            for metric in self.scenario_cfg['sla']['metrics'].split(','):
+                assert metric in result, \
+                    '%s is not collected by VSPERF' % (metric)
+                assert metric in self.scenario_cfg['sla'], \
+                    '%s is not defined in SLA' % (metric)
+                vs_res = float(result[metric])
+                sla_res = float(self.scenario_cfg['sla'][metric])
+                assert vs_res >= sla_res, \
+                    'VSPERF_%s(%f) < SLA_%s(%f)' % \
+                    (metric, vs_res, metric, sla_res)
+
+    def teardown(self):
+        """cleanup after the test execution"""
+        # remove trafficgen interfaces from the external bridge
+        if self.tg_port1:
+            subprocess.call('sudo bash -c "ovs-vsctl del-port %s %s"' %
+                            (self.br_ex, self.tg_port1), shell=True)
+        if self.tg_port2:
+            subprocess.call('sudo bash -c "ovs-vsctl del-port %s %s"' %
+                            (self.br_ex, self.tg_port2), shell=True)
+
+        # execute external setup script
+        if self.setup_script:
+            cmd = "%s teardown" % (self.setup_script)
+            LOG.info("Execute setup script \"%s\"", cmd)
+            subprocess.call(cmd, shell=True)
+
+        self.setup_done = False