diff options
39 files changed, 4327 insertions, 1529 deletions
diff --git a/dashboard/Yardstick-TC002-1456495853488 b/dashboard/Yardstick-TC002-1456495853488 index 8bf10f445..a0be68402 100644 --- a/dashboard/Yardstick-TC002-1456495853488 +++ b/dashboard/Yardstick-TC002-1456495853488 @@ -306,7 +306,7 @@ "tags": [] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "Network Latency - RTT", "tooltip": { @@ -366,9 +366,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "scroll": true, @@ -458,7 +458,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, @@ -479,9 +479,9 @@ "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, @@ -571,12 +571,12 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 }, { @@ -594,9 +594,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "scroll": true, @@ -686,12 +686,12 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 }, { @@ -709,9 +709,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod5", + "value": "intel\\-pod5", + "selected": true } }, "scroll": true, @@ -801,12 +801,12 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 }, { @@ -824,9 +824,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "scroll": true, @@ -916,12 +916,12 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 }, { @@ -939,9 +939,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "scroll": true, @@ -1031,12 +1031,12 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 }, { @@ -1054,9 +1054,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, "text": "zte-pod1", - "value": "zte\\-pod1" + "value": "zte\\-pod1", + "selected": true } }, "scroll": true, @@ -1151,7 +1151,7 @@ "transform": "table", "transparent": false, "type": "table", - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 2 } ], @@ -1212,9 +1212,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -1378,9 +1378,9 @@ "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": [ @@ -1494,7 +1494,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 }, { @@ -1546,9 +1546,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -1662,7 +1662,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 }, { @@ -1714,9 +1714,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod5", + "value": "intel\\-pod5", + "selected": true } }, "seriesOverrides": [ @@ -1830,7 +1830,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 }, { @@ -1882,9 +1882,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "seriesOverrides": [ @@ -1998,7 +1998,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 }, { @@ -2050,9 +2050,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -2166,7 +2166,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 }, { @@ -2218,9 +2218,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, "text": "zte-pod1", - "value": "zte\\-pod1" + "value": "zte\\-pod1", + "selected": true } }, "seriesOverrides": [ @@ -2334,7 +2334,7 @@ "ms", "short" ], - "repeatIteration": 1456495841616, + "repeatIteration": 1467967293010, "repeatPanelId": 3 } ], @@ -2378,14 +2378,14 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -2398,54 +2398,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"", @@ -2528,6 +2558,6 @@ }, "refresh": "15m", "schemaVersion": 8, - "version": 113, + "version": 2, "links": [] } diff --git a/dashboard/Yardstick-TC005-1456495868837 b/dashboard/Yardstick-TC005-1456495868837 index e5b29d3dd..9463b40d3 100644 --- a/dashboard/Yardstick-TC005-1456495868837 +++ b/dashboard/Yardstick-TC005-1456495868837 @@ -154,7 +154,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "Storage Performance", "tooltip": { @@ -212,9 +212,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "scroll": true, @@ -298,7 +298,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table" @@ -317,9 +317,9 @@ "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, @@ -403,11 +403,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 }, { @@ -424,9 +424,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "scroll": true, @@ -510,11 +510,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 }, { @@ -531,9 +531,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod5", + "value": "intel\\-pod5", + "selected": true } }, "scroll": true, @@ -617,11 +617,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 }, { @@ -638,9 +638,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "scroll": true, @@ -724,11 +724,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 }, { @@ -745,9 +745,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "scroll": true, @@ -831,11 +831,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 }, { @@ -852,9 +852,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, "text": "zte-pod1", - "value": "zte\\-pod1" + "value": "zte\\-pod1", + "selected": true } }, "scroll": true, @@ -938,11 +938,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 5 } ], @@ -995,9 +995,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1067,7 +1067,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1124,9 +1124,9 @@ "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": [], @@ -1196,7 +1196,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1210,7 +1210,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 }, { @@ -1255,9 +1255,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1327,7 +1327,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1341,7 +1341,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 }, { @@ -1386,9 +1386,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod5", + "value": "intel\\-pod5", + "selected": true } }, "seriesOverrides": [], @@ -1458,7 +1458,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1472,7 +1472,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 }, { @@ -1517,9 +1517,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "seriesOverrides": [], @@ -1589,7 +1589,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1603,7 +1603,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 }, { @@ -1648,9 +1648,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1720,7 +1720,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1734,7 +1734,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 }, { @@ -1779,9 +1779,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, "text": "zte-pod1", - "value": "zte\\-pod1" + "value": "zte\\-pod1", + "selected": true } }, "seriesOverrides": [], @@ -1851,7 +1851,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1865,7 +1865,7 @@ "short", "short" ], - "repeatIteration": 1456495861692, + "repeatIteration": 1467968127728, "repeatPanelId": 7 } ], @@ -1907,14 +1907,14 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -1925,54 +1925,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"", @@ -2050,6 +2080,6 @@ "list": [] }, "schemaVersion": 8, - "version": 9, + "version": 2, "links": [] } diff --git a/dashboard/Yardstick-TC010-1456495940503 b/dashboard/Yardstick-TC010-1456495940503 index 72cb70495..562c7f0ac 100644 --- a/dashboard/Yardstick-TC010-1456495940503 +++ b/dashboard/Yardstick-TC010-1456495940503 @@ -155,7 +155,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "Memory Latency, lmbench", "tooltip": { @@ -213,9 +213,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "scroll": true, @@ -299,7 +299,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table" @@ -318,9 +318,9 @@ "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, @@ -404,11 +404,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 5 }, { @@ -425,9 +425,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "scroll": true, @@ -511,11 +511,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 5 }, { @@ -532,9 +532,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "scroll": true, @@ -618,11 +618,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 5 }, { @@ -639,9 +639,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "scroll": true, @@ -725,11 +725,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 5 }, { @@ -746,116 +746,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "scroll": true, @@ -939,11 +832,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 5 } ], @@ -996,9 +889,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1068,7 +961,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1125,9 +1018,9 @@ "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": [], @@ -1197,7 +1090,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1211,7 +1104,7 @@ "short", "short" ], - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 7 }, { @@ -1256,9 +1149,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1328,7 +1221,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1342,7 +1235,7 @@ "short", "short" ], - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 7 }, { @@ -1387,9 +1280,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "seriesOverrides": [], @@ -1459,7 +1352,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1473,7 +1366,7 @@ "short", "short" ], - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 7 }, { @@ -1518,9 +1411,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1590,7 +1483,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1604,7 +1497,7 @@ "short", "short" ], - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 7 }, { @@ -1649,140 +1542,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "seriesOverrides": [], @@ -1852,7 +1614,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1866,7 +1628,7 @@ "short", "short" ], - "repeatIteration": 1456495934825, + "repeatIteration": 1468224666109, "repeatPanelId": 7 } ], @@ -1908,14 +1670,13 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -1926,54 +1687,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"", @@ -2051,6 +1842,6 @@ "list": [] }, "schemaVersion": 8, - "version": 4, + "version": 3, "links": [] } diff --git a/dashboard/Yardstick-TC011-1456495954966 b/dashboard/Yardstick-TC011-1456495954966 index db8f48ce8..2bca4dece 100644 --- a/dashboard/Yardstick-TC011-1456495954966 +++ b/dashboard/Yardstick-TC011-1456495954966 @@ -154,7 +154,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "jitter: packet delay variation (ms)", "tooltip": { @@ -212,9 +212,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "scroll": true, @@ -298,7 +298,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table" @@ -317,9 +317,9 @@ "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, @@ -403,11 +403,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 5 }, { @@ -424,9 +424,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "scroll": true, @@ -510,11 +510,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 5 }, { @@ -531,9 +531,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "scroll": true, @@ -617,11 +617,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 5 }, { @@ -638,9 +638,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "scroll": true, @@ -724,11 +724,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 5 }, { @@ -745,116 +745,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "scroll": true, @@ -938,11 +831,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 5 } ], @@ -995,9 +888,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1066,7 +959,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1123,9 +1016,9 @@ "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": [], @@ -1194,7 +1087,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1208,7 +1101,7 @@ "short", "short" ], - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 7 }, { @@ -1253,9 +1146,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1324,7 +1217,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1338,7 +1231,7 @@ "short", "short" ], - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 7 }, { @@ -1383,9 +1276,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "seriesOverrides": [], @@ -1454,7 +1347,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1468,7 +1361,7 @@ "short", "short" ], - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 7 }, { @@ -1513,9 +1406,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "seriesOverrides": [], @@ -1584,7 +1477,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1598,7 +1491,7 @@ "short", "short" ], - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 7 }, { @@ -1643,139 +1536,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "seriesOverrides": [], @@ -1844,7 +1607,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1858,7 +1621,7 @@ "short", "short" ], - "repeatIteration": 1456495947533, + "repeatIteration": 1468225357451, "repeatPanelId": 7 } ], @@ -1900,14 +1663,13 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -1918,54 +1680,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"", @@ -2044,6 +1836,6 @@ }, "refresh": "15m", "schemaVersion": 8, - "version": 11, + "version": 2, "links": [] } diff --git a/dashboard/Yardstick-TC012-1456495966540 b/dashboard/Yardstick-TC012-1456495966540 index 0cab51702..c170897f5 100644 --- a/dashboard/Yardstick-TC012-1456495966540 +++ b/dashboard/Yardstick-TC012-1456495966540 @@ -88,12 +88,6 @@ "groupBy": [ { "params": [ - "24h" - ], - "type": "time" - }, - { - "params": [ "pod_name" ], "type": "tag" @@ -106,7 +100,7 @@ } ], "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\"", + "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": [ @@ -116,10 +110,6 @@ "bandwidth(MBps)" ], "type": "field" - }, - { - "params": [], - "type": "mean" } ] ], @@ -138,7 +128,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "Memory read/write bandwidth trend", "tooltip": { @@ -157,92 +147,1103 @@ "title": "New row" }, { - "collapse": false, - "editable": true, + "title": "New row", "height": "250px", + "editable": true, + "collapse": false, "panels": [ { - "aliasColors": {}, - "bars": false, + "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, - "fill": 0, + "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, - "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" + ] } ], + "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 \"pod_name\", \"deploy_scenario\", \"task_id\"", + "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)" - ], - "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": "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", @@ -255,46 +1256,224 @@ "operator": "=~", "value": "/$SCENARIO$/" } - ] - }, - { - "alias": "$tag_pod_name - $tag_deploy_scenario - size", - "dsType": "influxdb", + ], "groupBy": [ { + "type": "tag", "params": [ - "pod_name" - ], - "type": "tag" + "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": [ "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)" + ] } ] ], + "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": "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" + ], + "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", @@ -307,31 +1486,172 @@ "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" } ], - "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": "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": "/$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": "zte-pod1", + "value": "zte\\-pod1", + "selected": true + } + }, + "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, @@ -365,14 +1685,13 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -383,54 +1702,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\" ", @@ -440,9 +1789,9 @@ { "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, @@ -451,49 +1800,84 @@ "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\" ", @@ -505,8 +1889,8 @@ "annotations": { "list": [] }, - "refresh": false, + "refresh": "30m", "schemaVersion": 8, - "version": 29, + "version": 3, "links": [] } diff --git a/dashboard/Yardstick-TC014-1456496016450 b/dashboard/Yardstick-TC014-1456496016450 index a06ddb603..fb6badedc 100644 --- a/dashboard/Yardstick-TC014-1456496016450 +++ b/dashboard/Yardstick-TC014-1456496016450 @@ -158,7 +158,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "Processor Speed - Unixbench single score", "tooltip": { @@ -216,9 +216,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "scroll": true, @@ -302,7 +302,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table" @@ -321,9 +321,9 @@ "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, @@ -407,11 +407,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 6 }, { @@ -428,9 +428,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "scroll": true, @@ -514,11 +514,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 6 }, { @@ -535,9 +535,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "scroll": true, @@ -621,11 +621,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 6 }, { @@ -642,9 +642,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "scroll": true, @@ -728,11 +728,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 6 }, { @@ -749,116 +749,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "scroll": true, @@ -942,11 +835,11 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "title": "$POD", "transform": "timeseries_to_rows", "type": "table", - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 6 } ], @@ -1000,9 +893,9 @@ "repeat": "POD", "scopedVars": { "POD": { - "selected": true, "text": "ericsson-pod2", - "value": "ericsson\\-pod2" + "value": "ericsson\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -1061,7 +954,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1119,9 +1012,9 @@ "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": [ @@ -1180,7 +1073,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1194,7 +1087,7 @@ "short", "short" ], - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 5 }, { @@ -1240,9 +1133,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "intel-pod6", - "value": "intel\\-pod6" + "text": "huawei-pod2", + "value": "huawei\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -1301,7 +1194,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1315,7 +1208,7 @@ "short", "short" ], - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 5 }, { @@ -1361,9 +1254,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-1", - "value": "opnfv\\-jump\\-1" + "text": "intel-pod6", + "value": "intel\\-pod6", + "selected": true } }, "seriesOverrides": [ @@ -1422,7 +1315,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1436,7 +1329,7 @@ "short", "short" ], - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 5 }, { @@ -1482,9 +1375,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "opnfv-jump-2", - "value": "opnfv\\-jump\\-2" + "text": "lf-pod2", + "value": "lf\\-pod2", + "selected": true } }, "seriesOverrides": [ @@ -1543,7 +1436,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1557,7 +1450,7 @@ "short", "short" ], - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 5 }, { @@ -1603,130 +1496,9 @@ "repeat": null, "scopedVars": { "POD": { - "selected": true, - "text": "orange-fr-pod2", - "value": "orange\\-fr\\-pod2" - } - }, - "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 - }, - { - "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" + "value": "zte\\-pod1", + "selected": true } }, "seriesOverrides": [ @@ -1785,7 +1557,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "$POD", "tooltip": { @@ -1799,7 +1571,7 @@ "short", "short" ], - "repeatIteration": 1456496008517, + "repeatIteration": 1468309859583, "repeatPanelId": 5 } ], @@ -1907,7 +1679,7 @@ ] } ], - "timeFrom": "24h", + "timeFrom": "14d", "timeShift": null, "title": "Processor Speed - Unixbench parallel score", "tooltip": { @@ -1962,14 +1734,13 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -1980,54 +1751,84 @@ "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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\"", @@ -2038,9 +1839,9 @@ { "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, @@ -2049,49 +1850,84 @@ "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\"", @@ -2106,6 +1942,6 @@ }, "refresh": "5m", "schemaVersion": 8, - "version": 13, + "version": 2, "links": [] } diff --git a/dashboard/Yardstick-TC027-1456496061153 b/dashboard/Yardstick-TC027-1456496061153 index e52d08ab7..4531c1552 100644 --- a/dashboard/Yardstick-TC027-1456496061153 +++ b/dashboard/Yardstick-TC027-1456496061153 @@ -103,30 +103,24 @@ "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": [ @@ -142,19 +136,19 @@ "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": { @@ -282,8 +276,8 @@ ] } ], - "timeFrom": "24h", - "title": "Panel Title", + "timeFrom": "14d", + "title": "$POD", "transform": "timeseries_to_rows", "type": "table" } @@ -384,9 +378,9 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, - "title": "Panel Title", + "title": "$POD", "tooltip": { "shared": true, "value_type": "cumulative" @@ -397,7 +391,8 @@ "y_formats": [ "short", "short" - ] + ], + "links": [] } ], "title": "New row" @@ -439,14 +434,8 @@ "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, @@ -455,44 +444,84 @@ "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\"", @@ -502,9 +531,12 @@ { "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, @@ -513,49 +545,84 @@ "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\"", @@ -568,6 +635,6 @@ "list": [] }, "schemaVersion": 8, - "version": 7, + "version": 8, "links": [] -}
\ No newline at end of file +} diff --git a/dashboard/Yardstick-TC037-1456496078470 b/dashboard/Yardstick-TC037-1456496078470 index 6072c327b..271b76e29 100644 --- a/dashboard/Yardstick-TC037-1456496078470 +++ b/dashboard/Yardstick-TC037-1456496078470 @@ -139,7 +139,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "Throughput mean trend", "tooltip": { @@ -255,7 +255,7 @@ ] } ], - "timeFrom": "10d", + "timeFrom": "14d", "timeShift": null, "title": "RTT mean trend", "tooltip": { @@ -674,7 +674,7 @@ ] } ], - "timeFrom": null, + "timeFrom": "14d", "timeShift": null, "title": "Round-trip time - ping", "tooltip": { @@ -947,7 +947,8 @@ ], "title": "RTT mean - ping", "transform": "table", - "type": "table" + "type": "table", + "timeFrom": "14d" } ], "showTitle": false, @@ -1113,14 +1114,13 @@ "allFormat": "regex values", "current": { "tags": [], - "text": "ericsson-pod2 + huawei-us-deploy-bare-1 + intel-pod6 + opnfv-jump-1 + opnfv-jump-2 + orange-fr-pod2 + zte-pod1", + "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" ] }, @@ -1132,54 +1132,84 @@ "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|zte\\-pod1|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": true, - "text": "zte-pod1", - "value": "zte\\-pod1" + "text": "unknown", + "value": "unknown", + "selected": false }, { - "selected": false, - "text": "unknown", - "value": "unknown" + "text": "zte-pod1", + "value": "zte\\-pod1", + "selected": true } ], "query": "SHOW TAG VALUES WITH KEY = \"pod_name\" ", @@ -1189,9 +1219,9 @@ { "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, @@ -1200,49 +1230,84 @@ "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\" ", @@ -1256,6 +1321,6 @@ }, "refresh": false, "schemaVersion": 8, - "version": 85, + "version": 3, "links": [] } diff --git a/docs/userguide/opnfv_yardstick_tc045.rst b/docs/userguide/opnfv_yardstick_tc045.rst new file mode 100644 index 000000000..0b0993c34 --- /dev/null +++ b/docs/userguide/opnfv_yardstick_tc045.rst @@ -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/docs/userguide/opnfv_yardstick_tc046.rst b/docs/userguide/opnfv_yardstick_tc046.rst new file mode 100644 index 000000000..612676434 --- /dev/null +++ b/docs/userguide/opnfv_yardstick_tc046.rst @@ -0,0 +1,138 @@ +.. 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 TC046 +************************************* + ++-----------------------------------------------------------------------------+ +|Control Node Openstack Service High Availability - Keystone | +| | ++--------------+--------------------------------------------------------------+ +|test case id | OPNFV_YARDSTICK_TC046: Control node Openstack service down - | +| | keystone | ++--------------+--------------------------------------------------------------+ +|test purpose | This test case will verify the high availability of the | +| | user service provided by OpenStack (keystone) on control | +| | node. | +| | | ++--------------+--------------------------------------------------------------+ +|test method | This test case kills the processes of keystone 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 "keystone" | +| | 3) host: which is the name of a control node being attacked. | +| | | +| | e.g. | +| | -fault_type: "kill-process" | +| | -process_name: "keystone" | +| | -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 keystone 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: "keystone user-list" | +| | monitor2: | +| | -monitor_type: "process" | +| | -process_name: "keystone" | +| | -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_tc046.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/fuel-plugin/README.md b/fuel-plugin/README.md index b5a954269..8c00d4b68 100644 --- a/fuel-plugin/README.md +++ b/fuel-plugin/README.md @@ -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 diff --git a/fuel-plugin/deployment_scripts/install.sh b/fuel-plugin/deployment_scripts/install.sh index f0bb3e366..84ef96c48 100755 --- a/fuel-plugin/deployment_scripts/install.sh +++ b/fuel-plugin/deployment_scripts/install.sh @@ -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 diff --git a/fuel-plugin/deployment_scripts/puppet/manifests/yardstick-install.pp b/fuel-plugin/deployment_scripts/puppet/manifests/yardstick-install.pp index 6547cb452..7993524d0 100644 --- a/fuel-plugin/deployment_scripts/puppet/manifests/yardstick-install.pp +++ b/fuel-plugin/deployment_scripts/puppet/manifests/yardstick-install.pp @@ -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 index 000000000..e367e98d1 --- /dev/null +++ b/fuel-plugin/fuel_ping.yaml @@ -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' diff --git a/fuel-plugin/vagrant/build_fuel_plugin.sh b/fuel-plugin/vagrant/build_fuel_plugin.sh index b016176fb..ddf2d6a6e 100755 --- a/fuel-plugin/vagrant/build_fuel_plugin.sh +++ b/fuel-plugin/vagrant/build_fuel_plugin.sh @@ -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 diff --git a/samples/cpuload.yaml b/samples/cpuload.yaml index 7ca528278..21d068205 100644 --- a/samples/cpuload.yaml +++ b/samples/cpuload.yaml @@ -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 index 000000000..d7406832d --- /dev/null +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc044.yaml @@ -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 index 000000000..812d53dd8 --- /dev/null +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml @@ -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_cases/opnfv_yardstick_tc046.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml new file mode 100644 index 000000000..867553d21 --- /dev/null +++ b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml @@ -0,0 +1,42 @@ +--- +# Test case for TC046 :Control node Openstack service down - keystone + +schema: "yardstick:task:0.1" + +scenarios: +- + type: ServiceHA + options: + attackers: + - fault_type: "kill-process" + process_name: "keystone" + host: node1 + + monitors: + - monitor_type: "openstack-cmd" + command_name: "keystone user-list" + monitor_time: 10 + sla: + max_outage_time: 5 + - monitor_type: "process" + process_name: "keystone" + 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 index 000000000..016bf0953 --- /dev/null +++ b/tests/opnfv/test_suites/fuel_test_suite.yaml @@ -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/opnfv/test_suites/opnfv_huawei-pod2_daily.yaml b/tests/opnfv/test_suites/opnfv_huawei-pod2_daily.yaml index 3a3bfccc0..435d21c9e 100644 --- a/tests/opnfv/test_suites/opnfv_huawei-pod2_daily.yaml +++ b/tests/opnfv/test_suites/opnfv_huawei-pod2_daily.yaml @@ -19,6 +19,4 @@ test_cases: - 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 index 000000000..9972d6b1b --- /dev/null +++ b/tests/unit/benchmark/scenarios/availability/test_baseresultchecker.py @@ -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 index 000000000..887ddd631 --- /dev/null +++ b/tests/unit/benchmark/scenarios/availability/test_director.py @@ -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 index 000000000..88a9b9d20 --- /dev/null +++ b/tests/unit/benchmark/scenarios/availability/test_result_checker_general.py @@ -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 index 000000000..c17edea45 --- /dev/null +++ b/tests/unit/benchmark/scenarios/availability/test_scenario_general.py @@ -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 diff --git a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt b/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt index b1723ae17..723e64bcb 100644 --- a/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt +++ b/tests/unit/benchmark/scenarios/compute/cpuload_sample_output1.txt @@ -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 diff --git a/tests/unit/benchmark/scenarios/compute/test_cpuload.py b/tests/unit/benchmark/scenarios/compute/test_cpuload.py index 22c4419b2..77f2a02d8 100644 --- a/tests/unit/benchmark/scenarios/compute/test_cpuload.py +++ b/tests/unit/benchmark/scenarios/compute/test_cpuload.py @@ -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 index 000000000..cb5c09ab3 --- /dev/null +++ b/tests/unit/benchmark/scenarios/networking/test_vsperf.py @@ -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() diff --git a/yardstick/benchmark/scenarios/availability/__init__.py b/yardstick/benchmark/scenarios/availability/__init__.py index e69de29bb..c3b3aae30 100755 --- a/yardstick/benchmark/scenarios/availability/__init__.py +++ b/yardstick/benchmark/scenarios/availability/__init__.py @@ -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 index 000000000..420626413 --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/actionplayers.py @@ -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 index 000000000..4b732a10c --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/actionrollbackers.py @@ -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 index 000000000..267933dd0 --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/director.py @@ -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 index 000000000..e69de29bb --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/result_checker/__init__.py diff --git a/yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py b/yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py new file mode 100644 index 000000000..1bdb9f2c2 --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/result_checker/baseresultchecker.py @@ -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 index 000000000..70bf9aea6 --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/result_checker/result_checker_general.py @@ -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 index 000000000..638c39a6e --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/result_checker_conf.yaml @@ -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 index 000000000..0a128aa09 --- /dev/null +++ b/yardstick/benchmark/scenarios/availability/scenario_general.py @@ -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() diff --git a/yardstick/benchmark/scenarios/compute/cpuload.py b/yardstick/benchmark/scenarios/compute/cpuload.py index d11bec5c3..f45313e91 100644 --- a/yardstick/benchmark/scenarios/compute/cpuload.py +++ b/yardstick/benchmark/scenarios/compute/cpuload.py @@ -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 index 000000000..d3123083a --- /dev/null +++ b/yardstick/benchmark/scenarios/networking/vsperf.py @@ -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 |