Merge "Creating result checker classes"
authorliang gao <jean.gaoliang@huawei.com>
Fri, 8 Jul 2016 03:49:32 +0000 (03:49 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Fri, 8 Jul 2016 03:49:33 +0000 (03:49 +0000)
14 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-TC037-1456496078470
docs/userguide/opnfv_yardstick_tc045.rst [new file with mode: 0644]
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/unit/benchmark/scenarios/networking/test_vsperf.py [new file with mode: 0644]
yardstick/benchmark/scenarios/networking/ping.py
yardstick/benchmark/scenarios/networking/vsperf.py [new file with mode: 0644]

index eb8c27d..8bf10f4 100644 (file)
           "type": "table",
           "repeatIteration": 1456495841616,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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": "24h",
+          "title": "$POD",
+          "transform": "table",
+          "transparent": false,
+          "type": "table",
+          "repeatIteration": 1456495841616,
+          "repeatPanelId": 2
         }
       ],
       "showTitle": false,
           ],
           "repeatIteration": 1456495841616,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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": 1456495841616,
+          "repeatPanelId": 3
         }
       ],
       "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 113,
   "links": []
-}
\ No newline at end of file
+}
index c971986..e5b29d3 100644 (file)
           "type": "table",
           "repeatIteration": 1456495861692,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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": "24h",
+          "title": "$POD",
+          "transform": "timeseries_to_rows",
+          "type": "table",
+          "repeatIteration": 1456495861692,
+          "repeatPanelId": 5
         }
       ],
       "title": "New row"
           ],
           "repeatIteration": 1456495861692,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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": "10d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "repeatIteration": 1456495861692,
+          "repeatPanelId": 7
         }
       ],
       "title": "New row"
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 9,
   "links": []
-}
\ No newline at end of file
+}
index 9edc972..72cb704 100644 (file)
           "type": "table",
           "repeatIteration": 1456495934825,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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_tc010",
+              "query": "SELECT \"latencies0.latency\" FROM \"opnfv_yardstick_tc010\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "latencies0.latency"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "24h",
+          "title": "$POD",
+          "transform": "timeseries_to_rows",
+          "type": "table",
+          "repeatIteration": 1456495934825,
+          "repeatPanelId": 5
         }
       ],
       "title": "New row"
           ],
           "repeatIteration": 1456495934825,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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_tc010",
+              "query": "SELECT mean(\"latencies0.latency\") FROM \"opnfv_yardstick_tc010\" 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": [
+                      "latencies0.latency"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "10d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "repeatIteration": 1456495934825,
+          "repeatPanelId": 7
         }
       ],
       "title": "New row"
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 4,
   "links": []
-}
\ No newline at end of file
+}
index 2481355..db8f48c 100644 (file)
           "type": "table",
           "repeatIteration": 1456495947533,
           "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": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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": 4,
+              "pattern": "/.*/",
+              "thresholds": [],
+              "type": "number",
+              "unit": "short"
+            }
+          ],
+          "targets": [
+            {
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc011",
+              "query": "SELECT \"end.sum.jitter_ms\" FROM \"opnfv_yardstick_tc011\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "end.sum.jitter_ms"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "24h",
+          "title": "$POD",
+          "transform": "timeseries_to_rows",
+          "type": "table",
+          "repeatIteration": 1456495947533,
+          "repeatPanelId": 5
         }
       ],
       "title": "New row"
           ],
           "repeatIteration": 1456495947533,
           "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": 3,
+          "points": true,
+          "renderer": "flot",
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "seriesOverrides": [],
+          "span": 2,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "24h"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "pod_name"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc011",
+              "query": "SELECT mean(\"end.sum.jitter_ms\") FROM \"opnfv_yardstick_tc011\" 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": [
+                      "end.sum.jitter_ms"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "10d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "repeatIteration": 1456495947533,
+          "repeatPanelId": 7
         }
       ],
       "title": "New row"
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 11,
   "links": []
-}
\ No newline at end of file
+}
index fde466f..0cab517 100644 (file)
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 29,
   "links": []
-}
\ No newline at end of file
+}
index e0a2845..a06ddb6 100644 (file)
           "type": "table",
           "repeatIteration": 1456496008517,
           "repeatPanelId": 6
+        },
+        {
+          "columns": [],
+          "datasource": "yardstick-vtc",
+          "editable": true,
+          "error": false,
+          "fontSize": "90%",
+          "id": 24,
+          "isNew": true,
+          "links": [],
+          "minSpan": 2,
+          "pageSize": null,
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "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_tc014",
+              "query": "SELECT \"parallel_score\" FROM \"opnfv_yardstick_tc014\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "parallel_score"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "24h",
+          "title": "$POD",
+          "transform": "timeseries_to_rows",
+          "type": "table",
+          "repeatIteration": 1456496008517,
+          "repeatPanelId": 6
         }
       ],
       "title": "New row"
           ],
           "repeatIteration": 1456496008517,
           "repeatPanelId": 5
+        },
+        {
+          "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)"
+          },
+          "id": 25,
+          "isNew": true,
+          "leftYAxisLabel": "score",
+          "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": true,
+          "renderer": "flot",
+          "repeat": null,
+          "scopedVars": {
+            "POD": {
+              "selected": true,
+              "text": "zte-pod1",
+              "value": "zte\\-pod1"
+            }
+          },
+          "seriesOverrides": [
+            {
+              "alias": "os-odl_l2-bgpvpn-ha",
+              "color": "#7EB26D"
+            }
+          ],
+          "span": 2,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "alias": "$tag_deploy_scenario",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "deploy_scenario"
+                  ],
+                  "type": "tag"
+                },
+                {
+                  "params": [
+                    "pod_name"
+                  ],
+                  "type": "tag"
+                }
+              ],
+              "measurement": "opnfv_yardstick_tc014",
+              "query": "SELECT \"single_score\" FROM \"opnfv_yardstick_tc014\" WHERE \"pod_name\" =~ /$POD$/ AND \"deploy_scenario\" =~ /$SCENARIO$/ AND $timeFilter GROUP BY \"deploy_scenario\", \"pod_name\"",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "single_score"
+                    ],
+                    "type": "field"
+                  }
+                ]
+              ],
+              "tags": [
+                {
+                  "key": "pod_name",
+                  "operator": "=~",
+                  "value": "/$POD$/"
+                },
+                {
+                  "condition": "AND",
+                  "key": "deploy_scenario",
+                  "operator": "=~",
+                  "value": "/$SCENARIO$/"
+                }
+              ]
+            }
+          ],
+          "timeFrom": "10d",
+          "timeShift": null,
+          "title": "$POD",
+          "tooltip": {
+            "shared": true,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "x-axis": true,
+          "y-axis": true,
+          "y_formats": [
+            "short",
+            "short"
+          ],
+          "repeatIteration": 1456496008517,
+          "repeatPanelId": 5
         }
       ],
       "title": "New row"
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 13,
   "links": []
-}
\ No newline at end of file
+}
index dae167d..6072c32 100644 (file)
         "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-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1",
           "value": [
             "ericsson\\-pod2",
             "huawei\\-us\\-deploy\\-bare\\-1",
             "intel\\-pod6",
             "opnfv\\-jump\\-1",
             "opnfv\\-jump\\-2",
-            "orange\\-fr\\-pod2"
+            "orange\\-fr\\-pod2",
+            "zte\\-pod1"
           ]
         },
         "datasource": "yardstick-vtc",
           {
             "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\\-pod2|huawei\\-us\\-deploy\\-bare\\-1|intel\\-pod6|opnfv\\-jump\\-1|opnfv\\-jump\\-2|orange\\-fr\\-pod2|zte\\-pod1|unknown)"
           },
           {
             "selected": false,
             "text": "orange-fr-pod2",
             "value": "orange\\-fr\\-pod2"
           },
+          {
+            "selected": true,
+            "text": "zte-pod1",
+            "value": "zte\\-pod1"
+          },
           {
             "selected": false,
             "text": "unknown",
   "schemaVersion": 8,
   "version": 85,
   "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.                                           |
+|              |                                                              |
++--------------+--------------------------------------------------------------+
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
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 3af3548..08755a0 100644 (file)
@@ -41,11 +41,17 @@ class Ping(base.Scenario):
         user = host.get('user', 'ubuntu')
         ip = host.get('ip', None)
         key_filename = host.get('key_filename', '/root/.ssh/id_rsa')
-        password = host.get('password', 'root')
+        password = host.get('password', None)
+
+        if password is not None:
+            LOG.info("Log in via pw, user:%s, host:%s, pw:%s",
+                     user, ip, password)
+            self.connection = ssh.SSH(user, ip, password=password)
+        else:
+            LOG.info("Log in via key, user:%s, host:%s, key_filename:%s",
+                     user, ip, key_filename)
+            self.connection = ssh.SSH(user, ip, key_filename=key_filename)
 
-        LOG.info("user:%s, host:%s, key_filename:%s", user, ip, key_filename)
-        self.connection = ssh.SSH(user, ip, key_filename=key_filename,
-                                  password=password)
         self.connection.wait()
 
     def run(self, result):
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