"type": "grafana",
       "id": "grafana",
       "name": "Grafana",
-      "version": "4.6.3"
+      "version": "4.4.3"
     },
     {
       "type": "panel",
   "hideControls": false,
   "id": null,
   "links": [],
-  "refresh": false,
+  "refresh": "5s",
   "rows": [
     {
       "collapse": false,
             "max": true,
             "min": true,
             "show": true,
-            "sortDesc": true,
+            "sort": null,
+            "sortDesc": null,
             "total": false,
             "values": true
           },
           "fill": 1,
           "grid": {},
           "height": "300px",
-          "id": 2,
+          "id": 2,
+          "legend": {
+            "alignAsTable": true,
+            "avg": true,
+            "current": false,
+            "max": true,
+            "min": true,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 6,
+          "stack": false,
+          "steppedLine": true,
+          "targets": [
+            {
+              "alias": "Load Requested to Generator",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.RequestedTxThroughput"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": []
+            },
+            {
+              "alias": "Load Generated (by the Generator)",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.TxThroughput"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": []
+            },
+            {
+              "alias": "Load Received (by the Generator)",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "hide": false,
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "refId": "B",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.RxThroughput"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": []
+            }
+          ],
+          "thresholds": [
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(216, 200, 27, 0.27)",
+              "op": "gt",
+              "value": 0
+            },
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(234, 112, 112, 0.22)",
+              "op": "gt",
+              "value": 0
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Generator Stats: Average Throughout per step",
+          "tooltip": {
+            "msResolution": true,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "transparent": false,
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": "Million Packets Per Second",
+              "logBase": 1,
+              "max": null,
+              "min": "0",
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": false
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "datasource": "${DS_YARDSTICK}",
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "height": "300px",
+          "id": 5,
+          "legend": {
+            "alignAsTable": true,
+            "avg": true,
+            "current": false,
+            "max": true,
+            "min": true,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 6,
+          "stack": false,
+          "steppedLine": true,
+          "targets": [
+            {
+              "alias": "Packet Size",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.PktSize"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  }
+                ]
+              ],
+              "tags": []
+            }
+          ],
+          "thresholds": [
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(216, 200, 27, 0.27)",
+              "op": "gt",
+              "value": 0
+            },
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(234, 112, 112, 0.22)",
+              "op": "gt",
+              "value": 0
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Packet size",
+          "tooltip": {
+            "msResolution": true,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": "Packet Size (Bytes)",
+              "logBase": 2,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "New row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 169,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "datasource": "${DS_YARDSTICK}",
+          "decimals": 4,
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "height": "300px",
+          "id": 206,
+          "legend": {
+            "alignAsTable": true,
+            "avg": true,
+            "current": false,
+            "max": true,
+            "min": true,
+            "show": true,
+            "sortDesc": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 6,
+          "stack": false,
+          "steppedLine": true,
+          "targets": [
+            {
+              "alias": "TG xe-0 Out packets",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "hide": false,
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "query": "SELECT mean(\"tg__0.collect_stats.xe0.out_packets\")  / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "A",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.live_stats.xe0.out_packets"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
+                  }
+                ]
+              ],
+              "tags": []
+            },
+            {
+              "alias": "TG xe-1 Out packets",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "hide": false,
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe1.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "B",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.live_stats.xe1.out_packets"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
+                  }
+                ]
+              ],
+              "tags": []
+            },
+            {
+              "alias": "TG xe-2 Out packets",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "hide": false,
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "query": "SELECT mean(\"tg__0.collect_stats.xe2.out_packets\")  / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "C",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.live_stats.xe2.out_packets"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
+                  }
+                ]
+              ],
+              "tags": []
+            },
+            {
+              "alias": "TG xe-3 Out packets",
+              "dsType": "influxdb",
+              "groupBy": [
+                {
+                  "params": [
+                    "$interval"
+                  ],
+                  "type": "time"
+                },
+                {
+                  "params": [
+                    "null"
+                  ],
+                  "type": "fill"
+                }
+              ],
+              "measurement": "tc_prox_baremetal_l3fwd-4",
+              "orderByTime": "ASC",
+              "policy": "default",
+              "query": "SELECT mean(\"tg__0.collect_stats.xe3.out_packets\")  / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "D",
+              "resultFormat": "time_series",
+              "select": [
+                [
+                  {
+                    "params": [
+                      "tg__0.collect_stats.live_stats.xe3.out_packets"
+                    ],
+                    "type": "field"
+                  },
+                  {
+                    "params": [],
+                    "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
+                  }
+                ]
+              ],
+              "tags": []
+            }
+          ],
+          "thresholds": [
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(216, 200, 27, 0.27)",
+              "op": "gt",
+              "value": 0
+            },
+            {
+              "colorMode": "custom",
+              "fill": true,
+              "fillColor": "rgba(234, 112, 112, 0.22)",
+              "op": "gt",
+              "value": 0
+            }
+          ],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Packets Sent by Generator per second and per interface",
+          "tooltip": {
+            "msResolution": true,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": "Million Packets  Per Second",
+              "logBase": 1,
+              "max": null,
+              "min": "0",
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "datasource": "${DS_YARDSTICK}",
+          "decimals": 4,
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "height": "300px",
+          "id": 207,
           "legend": {
             "alignAsTable": true,
             "avg": true,
           "spaceLength": 10,
           "span": 6,
           "stack": false,
-          "steppedLine": true,
+          "steppedLine": false,
           "targets": [
             {
-              "alias": "Load Requested to Generator",
+              "alias": "TG xe-0 in packets",
               "dsType": "influxdb",
               "groupBy": [
                 {
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
+              "query": "SELECT mean(\"tg__0.collect_stats.xe0.in_packets\")  / 1000000 FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
               "refId": "A",
               "resultFormat": "time_series",
               "select": [
                 [
                   {
                     "params": [
-                      "tg__0.collect_stats.RequestedTxThroughput"
+                      "tg__0.collect_stats.live_stats.xe0.in_packets"
                     ],
                     "type": "field"
                   },
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "tags": []
             },
             {
-              "alias": "Load Generated (by the Generator)",
+              "alias": "TG xe-1 in packets",
               "dsType": "influxdb",
               "groupBy": [
                 {
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
-              "refId": "A",
+              "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe1.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "B",
               "resultFormat": "time_series",
               "select": [
                 [
                   {
                     "params": [
-                      "tg__0.TxThroughput"
+                      "tg__0.collect_stats.live_stats.xe1.in_packets"
                     ],
                     "type": "field"
                   },
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "tags": []
             },
             {
-              "alias": "Load Received (by the Generator)",
+              "alias": "TG xe-2 in packets",
               "dsType": "influxdb",
               "groupBy": [
                 {
                   "type": "fill"
                 }
               ],
-              "hide": false,
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
-              "refId": "B",
+              "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe2.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "C",
               "resultFormat": "time_series",
               "select": [
                 [
                   {
                     "params": [
-                      "tg__0.RxThroughput"
+                      "tg__0.collect_stats.live_stats.xe2.in_packets"
                     ],
                     "type": "field"
                   },
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "tags": []
-            }
-          ],
-          "thresholds": [
-            {
-              "colorMode": "custom",
-              "fill": true,
-              "fillColor": "rgba(216, 200, 27, 0.27)",
-              "op": "gt",
-              "value": 0
-            },
-            {
-              "colorMode": "custom",
-              "fill": true,
-              "fillColor": "rgba(234, 112, 112, 0.22)",
-              "op": "gt",
-              "value": 0
-            }
-          ],
-          "timeFrom": null,
-          "timeShift": null,
-          "title": "Generator stats",
-          "tooltip": {
-            "msResolution": true,
-            "shared": true,
-            "sort": 0,
-            "value_type": "cumulative"
-          },
-          "transparent": false,
-          "type": "graph",
-          "xaxis": {
-            "buckets": null,
-            "mode": "time",
-            "name": null,
-            "show": true,
-            "values": []
-          },
-          "yaxes": [
-            {
-              "format": "short",
-              "label": "Million Packets Per Second",
-              "logBase": 1,
-              "max": null,
-              "min": "0",
-              "show": true
             },
             {
-              "format": "short",
-              "label": null,
-              "logBase": 1,
-              "max": null,
-              "min": null,
-              "show": false
-            }
-          ]
-        },
-        {
-          "aliasColors": {},
-          "bars": false,
-          "dashLength": 10,
-          "dashes": false,
-          "datasource": "${DS_YARDSTICK}",
-          "editable": true,
-          "error": false,
-          "fill": 1,
-          "grid": {},
-          "height": "300px",
-          "id": 5,
-          "legend": {
-            "alignAsTable": true,
-            "avg": true,
-            "current": false,
-            "max": true,
-            "min": true,
-            "show": true,
-            "total": false,
-            "values": true
-          },
-          "lines": true,
-          "linewidth": 2,
-          "links": [],
-          "nullPointMode": "connected",
-          "percentage": false,
-          "pointradius": 5,
-          "points": false,
-          "renderer": "flot",
-          "seriesOverrides": [],
-          "spaceLength": 10,
-          "span": 6,
-          "stack": false,
-          "steppedLine": true,
-          "targets": [
-            {
-              "alias": "Packet Size",
+              "alias": "TG xe-3 in packets",
               "dsType": "influxdb",
               "groupBy": [
                 {
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
-              "refId": "A",
+              "query": "SELECT mean(\"tg__0.collect_stats.live_stats.xe3.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
+              "rawQuery": false,
+              "refId": "D",
               "resultFormat": "time_series",
               "select": [
                 [
                   {
                     "params": [
-                      "tg__0.collect_stats.PktSize"
+                      "tg__0.collect_stats.live_stats.xe3.in_packets"
                     ],
                     "type": "field"
                   },
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
           ],
           "timeFrom": null,
           "timeShift": null,
-          "title": "Packet size",
+          "title": "Packets Received by Generator per second and per interface",
           "tooltip": {
             "msResolution": true,
             "shared": true,
           },
           "yaxes": [
             {
-              "format": "none",
-              "label": "Packet Size (Bytes)",
-              "logBase": 2,
+              "format": "short",
+              "label": "Million Packets Per Second",
+              "logBase": 1,
               "max": null,
-              "min": null,
+              "min": "0",
               "show": true
             },
             {
               "show": true
             }
           ]
-        }
-      ],
-      "repeat": null,
-      "repeatIteration": null,
-      "repeatRowId": null,
-      "showTitle": false,
-      "title": "New row",
-      "titleSize": "h6"
-    },
-    {
-      "collapse": false,
-      "height": 169,
-      "panels": [
+        },
         {
           "aliasColors": {},
           "bars": false,
             "min": true,
             "rightSide": false,
             "show": true,
-            "sortDesc": true,
+            "sortDesc": false,
             "total": false,
             "values": true
           },
           ]
         },
         {
-          "content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><a style=\"font: 22px '#31A7D3'\"><center>Prox L3Fwd Traffic Gen stats</center> </a></h5>\n",
+          "content": "<h5 style=\"font-family:Verdana\"> <a style=\"color:#31A7D3\"><a style=\"font: 22px '#31A7D3'\"><center>Generator Stats: Packets per Step</center> </a></h5>\n",
           "editable": true,
           "error": false,
           "height": "40",
                   "type": "fill"
                 }
               ],
+              "hide": false,
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe0.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "A",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
                   "type": "fill"
                 }
               ],
+              "hide": false,
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe1.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "B",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
                   "type": "fill"
                 }
               ],
+              "hide": false,
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe2.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "C",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe3.out_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "D",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
           ],
           "timeFrom": null,
           "timeShift": null,
-          "title": "Packets Sent by Generator",
+          "title": "Packets Sent by Generator per Step",
           "tooltip": {
             "msResolution": true,
             "shared": true,
           "yaxes": [
             {
               "format": "short",
-              "label": "Packets ",
+              "label": "Million Packets  Per Step",
               "logBase": 1,
               "max": null,
               "min": "0",
           "dashLength": 10,
           "dashes": false,
           "datasource": "${DS_YARDSTICK}",
+          "decimals": 4,
           "editable": true,
           "error": false,
           "fill": 1,
             "max": true,
             "min": true,
             "show": true,
+            "sortDesc": true,
             "total": false,
             "values": true
           },
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe0.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "A",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe1.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "B",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe2.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "C",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
               "orderByTime": "ASC",
               "policy": "default",
               "query": "SELECT mean(\"tg__0.collect_stats.xe3.in_packets\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE $timeFilter GROUP BY time($interval) fill(null)",
-              "rawQuery": true,
+              "rawQuery": false,
               "refId": "D",
               "resultFormat": "time_series",
               "select": [
                   {
                     "params": [],
                     "type": "mean"
+                  },
+                  {
+                    "params": [
+                      " / 1000000"
+                    ],
+                    "type": "math"
                   }
                 ]
               ],
           ],
           "timeFrom": null,
           "timeShift": null,
-          "title": "Packets Received by Generator",
+          "title": "Packets Received by Generator per Step",
           "tooltip": {
             "msResolution": true,
             "shared": true,
           "yaxes": [
             {
               "format": "short",
-              "label": "Packets Per Second",
+              "label": "Million Packets Per Step",
               "logBase": 1,
               "max": null,
               "min": "0",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
               "measurement": "tc_prox_baremetal_l3fwd-4",
               "orderByTime": "ASC",
               "policy": "default",
-              "query": "SELECT  last(\"tg__0.collect_stats.theor_max_throughput\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE \"tg__0.collect_stats.PktSize\" = 64 AND \"tg__0.collect_stats.Status\" = 'Result' AND $timeFilter GROUP BY time($__interval) fill(null)",
+              "query": "SELECT  last(\"tg__0.collect_stats.theor_max_throughput\") FROM \"tc_prox_baremetal_l3fwd-4\" WHERE \"tg__0.collect_stats.PktSize\" = 64  AND \"tg__0.collect_stats.Status\" = 'Result' AND $timeFilter GROUP BY time($__interval) fill(null)",
               "rawQuery": true,
               "refId": "A",
               "resultFormat": "time_series",
                 [
                   {
                     "params": [
-                      "tg__0.collect_stats.theor_max_throughput"
+                      "tg__0.collect_stats.RequestedTxThroughput"
                     ],
                     "type": "field"
                   },
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
           "thresholds": "",
           "title": "",
           "type": "singlestat",
-          "valueFontSize": "50%",
+          "valueFontSize": "30%",
           "valueMaps": [
             {
               "op": "=",
     "list": []
   },
   "time": {
-    "from": "2018-09-04T00:52:16.948Z",
-    "to": "2018-09-04T12:52:16.948Z"
+    "from": "now-3h",
+    "to": "now"
   },
   "timepicker": {
     "refresh_intervals": [
   },
   "timezone": "browser",
   "title": "Prox_BM_L3FWD-4Port",
-  "version": 3
+  "version": 6
 }
\ No newline at end of file
 
         self.assertListEqual(result, expected)
         self.assertTrue(ok)
 
+    @mock.patch.object(prox_helpers.LOG, 'error')
+    def test_multi_port_stats_diff(self, *args):
+        mock_socket = mock.MagicMock()
+        prox = prox_helpers.ProxSocketHelper(mock_socket)
+        prox.get_string = mock.MagicMock(return_value=(True, '0,1,2,3,4,5;1,1,2,3,4,5'))
+        _, t1 = prox.multi_port_stats([0, 1])
+
+        prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,6;1,4,8,16,32,6'))
+        _, t2 = prox.multi_port_stats([0, 1])
+
+        prox.get_string = mock.MagicMock(return_value=(True, '0,1,1,1,1,1;1,1,1,1,1,1'))
+        _, t3 = prox.multi_port_stats([0, 1])
+
+        prox.get_string = mock.MagicMock(return_value=(True, '0,2,2,2,2,2;1,2,2,2,2,2'))
+        _, t4 = prox.multi_port_stats([0, 1])
+
+        expected = [[0, 1.0, 2.0, 0, 0, 1], [1, 3.0, 6.0, 0, 0, 1]]
+        result = prox.multi_port_stats_diff(t1, t2, 1)
+
+        self.assertListEqual(result, expected)
+
+        result = prox.multi_port_stats_diff(t4, t3, 1)
+        expected = [[0, 1.0, 1.0, 0, 0, 1], [1, 1.0, 1.0, 0, 0, 1]]
+
+        self.assertListEqual(result, expected)
+
+        prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,10'))
+        ok, t5 = prox.multi_port_stats([0, 1])
+        self.assertFalse(ok)
+        self.assertListEqual(t5, [])
+
+        result = prox.multi_port_stats_diff(t5, t4, 1)
+        expected = [[0, 0.0, 0.0, 0, 0, 0], [1, 0.0, 0.0, 0, 0, 0]]
+        self.assertListEqual(result, expected)
+
+        prox.get_string = mock.MagicMock(return_value=(True, '0,10,10,20,30,0;1,30,40,50,60,0'))
+        _, t6 = prox.multi_port_stats([0, 1])
+
+        prox.get_string = \
+            mock.MagicMock(return_value=(True, '0,100,100,100,100,0;1,100,100,100,100,0'))
+        _, t7 = prox.multi_port_stats([0, 1])
+
+        result = prox.multi_port_stats_diff(t6, t7, 1)
+        expected = [[0, 0.0, 0.0, 0, 0, 0], [1, 0.0, 0.0, 0, 0, 0]]
+        self.assertListEqual(result, expected)
+
+        result = prox.multi_port_stats_diff(t1, t2, 0)
+        expected = [[0, 0.0, 0.0, 0, 0, 1], [1, 0.0, 0.0, 0, 0, 1]]
+        self.assertListEqual(result, expected)
+
+    @mock.patch.object(prox_helpers.LOG, 'error')
+    def test_multi_port_stats_tuple(self, *args):
+        mock_socket = mock.MagicMock()
+        prox = prox_helpers.ProxSocketHelper(mock_socket)
+        prox.get_string = mock.MagicMock(return_value=(True, '0,1,2,3,4,5;1,1,2,3,4,5'))
+        _, result1 = prox.multi_port_stats([0, 1])
+        prox.get_string = mock.MagicMock(return_value=(True, '0,2,4,6,8,6;1,4,8,16,32,6'))
+        _, result2 = prox.multi_port_stats([0, 1])
+
+        result = prox.multi_port_stats_diff(result1, result2, 1)
+
+        vnfd_helper = mock.MagicMock()
+        vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)]
+
+        expected = {'xe0': {'in_packets': 1.0, 'out_packets': 2.0},
+                    'xe1': {'in_packets': 3.0, 'out_packets': 6.0}}
+        live_stats = prox.multi_port_stats_tuple(result, vnfd_helper.ports_iter())
+        self.assertDictEqual(live_stats, expected)
+
+        live_stats = prox.multi_port_stats_tuple(result, None)
+        expected = {}
+        self.assertDictEqual(live_stats, expected)
+
+        live_stats = prox.multi_port_stats_tuple(None, vnfd_helper.ports_iter())
+        self.assertDictEqual(live_stats, expected)
+
     def test_port_stats(self):
         port_stats = [
             ','.join(str(n) for n in range(3, 15)),
         helper = prox_helpers.ProxResourceHelper(mock.MagicMock())
         helper._queue = queue = mock.MagicMock()
         helper._result = {'z': 123}
+
+        helper.client = mock.MagicMock()
+        helper.client.hz.return_value = 1
+        helper.client.multi_port_stats.return_value = \
+            (True, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]])
+        helper.client.multi_port_stats_diff.return_value = \
+            ([0, 1, 2, 3, 4, 5, 6, 7])
+        helper.client.multi_port_stats_tuple.return_value = \
+            {"xe0": {"in_packets": 1, "out_packets": 2}}
+        helper.resource = resource = mock.MagicMock()
+
+        vnfd_helper = mock.MagicMock()
+        vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)]
+        helper.vnfd_helper = vnfd_helper
+
+        resource.check_if_system_agent_running.return_value = 0, '1234'
+        resource.amqp_collect_nfvi_kpi.return_value = 543
+        resource.check_if_system_agent_running.return_value = (0, None)
+
+        queue.empty.return_value = False
+        queue.get.return_value = {'a': 789}
+
+        expected = {'z': 123, 'a': 789,
+                    'collect_stats': {'core': 543},
+                    'live_stats': {'xe0': {'in_packets': 1, 'out_packets': 2}}}
+        result = helper.collect_kpi()
+        self.assertDictEqual(result, expected)
+
+    def test_collect_kpi_no_hz(self):
+        helper = prox_helpers.ProxResourceHelper(mock.MagicMock())
+        helper._queue = queue = mock.MagicMock()
+        helper._result = {'z': 123}
+
+        helper.client = mock.MagicMock()
+        helper.client.multi_port_stats.return_value = \
+            (True, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]])
+        helper.client.multi_port_stats_diff.return_value = \
+            ([0, 1, 2, 3, 4, 5, 6, 7])
+        helper.client.multi_port_stats_tuple.return_value = \
+            {"xe0": {"in_packets": 1, "out_packets": 2}}
+        helper.resource = resource = mock.MagicMock()
+
+        vnfd_helper = mock.MagicMock()
+        vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)]
+        helper.vnfd_helper = vnfd_helper
+
+        resource.check_if_system_agent_running.return_value = 0, '1234'
+        resource.amqp_collect_nfvi_kpi.return_value = 543
+        resource.check_if_system_agent_running.return_value = (0, None)
+
+        queue.empty.return_value = False
+        queue.get.return_value = {'a': 789}
+
+        expected = {'z': 123, 'a': 789,
+                    'collect_stats': {'core': 543},
+                    'live_stats': {'xe0': {'in_packets': 1, 'out_packets': 2}}}
+        result = helper.collect_kpi()
+        self.assertDictEqual(result, expected)
+
+    def test_collect_kpi_bad_data(self):
+        helper = prox_helpers.ProxResourceHelper(mock.MagicMock())
+        helper._queue = queue = mock.MagicMock()
+        helper._result = {'z': 123}
+
+        helper.client = mock.MagicMock()
+        helper.client.multi_port_stats.return_value = \
+            (False, [[0, 1, 2, 3, 4, 5], [1, 1, 2, 3, 4, 5]])
+        helper.client.multi_port_stats_diff.return_value = \
+            ([0, 1, 2, 3, 4, 5, 6, 7])
+        helper.client.multi_port_stats_tuple.return_value = \
+            {"xe0": {"in_packets": 1, "out_packets": 2}}
         helper.resource = resource = mock.MagicMock()
 
+        vnfd_helper = mock.MagicMock()
+        vnfd_helper.ports_iter.return_value = [('xe0', 0), ('xe1', 1)]
+        helper.vnfd_helper = vnfd_helper
+
         resource.check_if_system_agent_running.return_value = 0, '1234'
         resource.amqp_collect_nfvi_kpi.return_value = 543
         resource.check_if_system_agent_running.return_value = (0, None)
         queue.empty.return_value = False
         queue.get.return_value = {'a': 789}
 
-        expected = {'z': 123, 'a': 789, 'collect_stats': {'core': 543}}
+        expected = {'z': 123, 'a': 789,
+                    'collect_stats': {'core': 543}}
         result = helper.collect_kpi()
         self.assertDictEqual(result, expected)