Bug 1596: Fixed stats issue and NPE 96/10296/3
authorPrashaanth <prashaanthr92@gmail.com>
Tue, 26 Aug 2014 10:56:18 +0000 (16:26 +0530)
committerPrasanna Huddar <prasanna.k.huddar@gmail.com>
Tue, 26 Aug 2014 10:58:29 +0000 (10:58 +0000)
Signed-off-by: Prashaanth <prashaanthr92@gmail.com>
test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginStatsTestCommandProvider.java

index 8ee8833175b273a35e88a9bebee93a3b458f3dbd..cd3f4c4a14eddfb399e52897d39fbd432f3eaf21 100644 (file)
@@ -2,6 +2,7 @@ package org.opendaylight.openflowplugin.test;
 
 import java.util.Iterator;
 import java.util.List;
+
 import org.eclipse.osgi.framework.console.CommandInterpreter;
 import org.eclipse.osgi.framework.console.CommandProvider;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -35,407 +36,518 @@ import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class OpenflowpluginStatsTestCommandProvider implements CommandProvider {
+import com.google.common.base.Preconditions;
 
-    private static final Logger LOG = LoggerFactory.getLogger(OpenflowpluginStatsTestCommandProvider.class);
-    private DataBroker dataProviderService;
-    private final BundleContext ctx;
+public class OpenflowpluginStatsTestCommandProvider implements CommandProvider {
 
-    public OpenflowpluginStatsTestCommandProvider(BundleContext ctx) {
-        this.ctx = ctx;
+ private static final Logger LOG = LoggerFactory
+   .getLogger(OpenflowpluginStatsTestCommandProvider.class);
+ private DataBroker dataProviderService;
+ private final BundleContext ctx;
+
+ public OpenflowpluginStatsTestCommandProvider(BundleContext ctx) {
+  this.ctx = ctx;
+ }
+
+ public void onSessionInitiated(ProviderContext session) {
+  dataProviderService = session.getSALService(DataBroker.class);
+  ctx.registerService(CommandProvider.class.getName(), this, null);
+
+ }
+
+ public void _portStats(CommandInterpreter ci) {
+  int nodeConnectorCount = 0;
+  int nodeConnectorStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<Node> nodeRef = InstanceIdentifier.create(Nodes.class)
+     .child(Node.class, nodeKey);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   Node node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction,
+     nodeRef);
+   if (node != null) {
+    if (node.getNodeConnector() != null) {
+     List<NodeConnector> ports = node.getNodeConnector();
+
+     for (Iterator<NodeConnector> iterator2 = ports.iterator(); iterator2
+       .hasNext();) {
+      nodeConnectorCount++;
+      NodeConnectorKey nodeConnectorKey = iterator2.next().getKey();
+      InstanceIdentifier<NodeConnector> connectorRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .child(NodeConnector.class, nodeConnectorKey);
+      NodeConnector nodeConnector = TestProviderTransactionUtil.getDataObject(
+        readOnlyTransaction, connectorRef);
+      if (nodeConnector != null) {
+       FlowCapableNodeConnectorStatisticsData data = nodeConnector
+         .getAugmentation(FlowCapableNodeConnectorStatisticsData.class);
+       if (null != data) {
+        nodeConnectorStatsCount++;
+       }
+      }
+     }
     }
-
-
-    public void onSessionInitiated(ProviderContext session) {
-        dataProviderService = session.getSALService(DataBroker.class);
-        ctx.registerService(CommandProvider.class.getName(), this, null);
-
+   }
+  }
+
+  if (nodeConnectorCount == nodeConnectorStatsCount) {
+   LOG.debug("portStats - Success");
+  } else {
+   LOG.debug("portStats - Failed");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+
+ }
+
+ public void _portDescStats(CommandInterpreter ci) {
+  int nodeConnectorCount = 0;
+  int nodeConnectorDescStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<Node> nodeRef = InstanceIdentifier.create(Nodes.class)
+     .child(Node.class, nodeKey);
+
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   Node node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction,
+     nodeRef);
+   if (node != null) {
+    if (node.getNodeConnector() != null) {
+     List<NodeConnector> ports = node.getNodeConnector();
+     for (Iterator<NodeConnector> iterator2 = ports.iterator(); iterator2
+       .hasNext();) {
+      nodeConnectorCount++;
+      NodeConnectorKey nodeConnectorKey = iterator2.next().getKey();
+      InstanceIdentifier<FlowCapableNodeConnector> connectorRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .child(NodeConnector.class, nodeConnectorKey)
+        .augmentation(FlowCapableNodeConnector.class);
+      FlowCapableNodeConnector nodeConnector = TestProviderTransactionUtil
+        .getDataObject(readOnlyTransaction, connectorRef);
+      if (nodeConnector != null) {
+       if (null != nodeConnector.getName()
+         && null != nodeConnector.getCurrentFeature()
+         && null != nodeConnector.getState()
+         && null != nodeConnector.getHardwareAddress()
+         && null != nodeConnector.getPortNumber()) {
+        nodeConnectorDescStatsCount++;
+       }
+      }
+     }
     }
 
-    public void _portStats(CommandInterpreter ci) {
-        int nodeConnectorCount = 0;
-        int nodeConnectorStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<Node> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey);
-
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            Node node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<NodeConnector> ports = node.getNodeConnector();
-                for (Iterator<NodeConnector> iterator2 = ports.iterator(); iterator2.hasNext(); ) {
-                    nodeConnectorCount++;
-                    NodeConnectorKey nodeConnectorKey = iterator2.next().getKey();
-                    InstanceIdentifier<NodeConnector> connectorRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).child(NodeConnector.class, nodeConnectorKey);
-                    NodeConnector nodeConnector = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, connectorRef);
-                    if (nodeConnector != null) {
-                        FlowCapableNodeConnectorStatisticsData data = nodeConnector.getAugmentation(FlowCapableNodeConnectorStatisticsData.class);
-                        if (null != data) {
-                            nodeConnectorStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (nodeConnectorCount == nodeConnectorStatsCount) {
-            LOG.debug("portStats - Success");
-        } else {
-            LOG.debug("portStats - Failed");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+   }
+  }
+
+  if (nodeConnectorCount == nodeConnectorDescStatsCount) {
+   LOG.debug("portDescStats - Success");
+  } else {
+   LOG.debug("portDescStats - Failed");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+
+ }
+
+ public void _flowStats(CommandInterpreter ci) {
+  int flowCount = 0;
+  int flowStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+
+   if (node != null) {
+    List<Table> tables = node.getTable();
+    for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext();) {
+     TableKey tableKey = iterator2.next().getKey();
+     InstanceIdentifier<Table> tableRef = InstanceIdentifier
+       .create(Nodes.class).child(Node.class, nodeKey)
+       .augmentation(FlowCapableNode.class).child(Table.class, tableKey);
+     Table table = TestProviderTransactionUtil.getDataObject(
+       readOnlyTransaction, tableRef);
+     if (table != null) {
+      if (table.getFlow() != null) {
+       List<Flow> flows = table.getFlow();
+       for (Iterator<Flow> iterator3 = flows.iterator(); iterator3.hasNext();) {
+        flowCount++;
+        FlowKey flowKey = iterator3.next().getKey();
+        InstanceIdentifier<Flow> flowRef = InstanceIdentifier
+          .create(Nodes.class).child(Node.class, nodeKey)
+          .augmentation(FlowCapableNode.class).child(Table.class, tableKey)
+          .child(Flow.class, flowKey);
+        Flow flow = TestProviderTransactionUtil.getDataObject(
+          readOnlyTransaction, flowRef);
+        if (flow != null) {
+         FlowStatisticsData data = flow
+           .getAugmentation(FlowStatisticsData.class);
+         if (null != data) {
+          flowStatsCount++;
+          LOG.debug("--------------------------------------------");
+          ci.print(data);
+         }
         }
 
+       }
+      }
+     }
     }
-
-
-    public void _portDescStats(CommandInterpreter ci) {
-        int nodeConnectorCount = 0;
-        int nodeConnectorDescStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<Node> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey);
-
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            Node node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<NodeConnector> ports = node.getNodeConnector();
-                for (Iterator<NodeConnector> iterator2 = ports.iterator(); iterator2.hasNext(); ) {
-                    nodeConnectorCount++;
-                    NodeConnectorKey nodeConnectorKey = iterator2.next().getKey();
-                    InstanceIdentifier<FlowCapableNodeConnector> connectorRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).child(NodeConnector.class, nodeConnectorKey).augmentation(FlowCapableNodeConnector.class);
-                    FlowCapableNodeConnector nodeConnector = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, connectorRef);
-                    if (nodeConnector != null) {
-                        if (null != nodeConnector.getName() &&
-                                null != nodeConnector.getCurrentFeature() &&
-                                null != nodeConnector.getState() &&
-                                null != nodeConnector.getHardwareAddress() &&
-                                null != nodeConnector.getPortNumber()) {
-                            nodeConnectorDescStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (nodeConnectorCount == nodeConnectorDescStatsCount) {
-            LOG.debug("portDescStats - Success");
-        } else {
-            LOG.debug("portDescStats - Failed");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-
+   }
+  }
+
+  if (flowCount == flowStatsCount) {
+   LOG.debug("flowStats - Success");
+  } else {
+   LOG.debug("flowStats - Failed");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+
+ }
+
+ public void _tableStats(CommandInterpreter ci) {
+  int tableCount = 0;
+  int tableStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    List<Table> tables = node.getTable();
+    for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext();) {
+     tableCount++;
+     TableKey tableKey = iterator2.next().getKey();
+     InstanceIdentifier<Table> tableRef = InstanceIdentifier
+       .create(Nodes.class).child(Node.class, nodeKey)
+       .augmentation(FlowCapableNode.class).child(Table.class, tableKey);
+     Table table = TestProviderTransactionUtil.getDataObject(
+       readOnlyTransaction, tableRef);
+     if (table != null) {
+      FlowTableStatisticsData data = table
+        .getAugmentation(FlowTableStatisticsData.class);
+      if (null != data) {
+       tableStatsCount++;
+      }
+     }
     }
-
-    public void _flowStats(CommandInterpreter ci) {
-        int flowCount = 0;
-        int flowStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-
-            if (node != null) {
-                List<Table> tables = node.getTable();
-                for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext(); ) {
-                    TableKey tableKey = iterator2.next().getKey();
-                    InstanceIdentifier<Table> tableRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Table.class, tableKey);
-                    Table table = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, tableRef);
-                    if (table != null) {
-                        List<Flow> flows = table.getFlow();
-                        for (Iterator<Flow> iterator3 = flows.iterator(); iterator3.hasNext(); ) {
-                            flowCount++;
-                            FlowKey flowKey = iterator3.next().getKey();
-                            InstanceIdentifier<Flow> flowRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Table.class, tableKey).child(Flow.class, flowKey);
-                            Flow flow = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, flowRef);
-                            if (flow != null) {
-                                FlowStatisticsData data = flow.getAugmentation(FlowStatisticsData.class);
-                                if (null != data) {
-                                    flowStatsCount++;
-                                    LOG.debug("--------------------------------------------");
-                                    ci.print(data);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        if (flowCount == flowStatsCount) {
-            LOG.debug("flowStats - Success");
-        } else {
-            LOG.debug("flowStats - Failed");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-
+   }
+  }
+
+  if (tableCount == tableStatsCount) {
+   LOG.debug("tableStats - Success");
+  } else {
+   LOG.debug("tableStats - Failed");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+
+ }
+
+ public void _groupStats(CommandInterpreter ci) {
+  int groupCount = 0;
+  int groupStatsCount = 0;
+  NodeGroupStatistics data = null;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    if (node.getGroup() != null) {
+     List<Group> groups = node.getGroup();
+     for (Iterator<Group> iterator2 = groups.iterator(); iterator2.hasNext();) {
+      groupCount++;
+      GroupKey groupKey = iterator2.next().getKey();
+      InstanceIdentifier<Group> groupRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .augmentation(FlowCapableNode.class).child(Group.class, groupKey);
+      Group group = TestProviderTransactionUtil.getDataObject(
+        readOnlyTransaction, groupRef);
+      if (group != null) {
+       data = group.getAugmentation(NodeGroupStatistics.class);
+       if (null != data) {
+        groupStatsCount++;
+       }
+      }
+     }
     }
 
-
-    public void _tableStats(CommandInterpreter ci) {
-        int tableCount = 0;
-        int tableStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<Table> tables = node.getTable();
-                for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext(); ) {
-                    tableCount++;
-                    TableKey tableKey = iterator2.next().getKey();
-                    InstanceIdentifier<Table> tableRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Table.class, tableKey);
-                    Table table = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, tableRef);
-                    if (table != null) {
-                        FlowTableStatisticsData data = table.getAugmentation(FlowTableStatisticsData.class);
-                        if (null != data) {
-                            tableStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (tableCount == tableStatsCount) {
-            LOG.debug("tableStats - Success");
-        } else {
-            LOG.debug("tableStats - Failed");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-
+   }
+  }
+
+  if (groupCount == groupStatsCount) {
+   LOG
+     .debug("---------------------groupStats - Success-------------------------------");
+  } else {
+   LOG
+     .debug("------------------------------groupStats - Failed--------------------------");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+ }
+
+ public void _groupDescStats(CommandInterpreter ci) {
+  int groupCount = 0;
+  int groupDescStatsCount = 0;
+  NodeGroupDescStats data = null;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+
+   if (node != null) {
+    if (node.getGroup() != null) {
+     List<Group> groups = node.getGroup();
+     for (Iterator<Group> iterator2 = groups.iterator(); iterator2.hasNext();) {
+      groupCount++;
+      GroupKey groupKey = iterator2.next().getKey();
+      InstanceIdentifier<Group> groupRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .augmentation(FlowCapableNode.class).child(Group.class, groupKey);
+      Group group = TestProviderTransactionUtil.getDataObject(
+        readOnlyTransaction, groupRef);
+      if (group != null) {
+       data = group.getAugmentation(NodeGroupDescStats.class);
+       if (null != data) {
+        groupDescStatsCount++;
+       }
+      }
+
+     }
     }
+   }
+
+   if (groupCount == groupDescStatsCount) {
+    LOG
+      .debug("---------------------groupDescStats - Success-------------------------------");
+   } else {
+    LOG
+      .debug("------------------------------groupDescStats - Failed--------------------------");
+    LOG
+      .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+   }
+  }
+ }
+
+ public void _meterStats(CommandInterpreter ci) {
+  int meterCount = 0;
+  int meterStatsCount = 0;
+  NodeMeterStatistics data = null;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    if (node.getMeter() != null) {
+     List<Meter> meters = node.getMeter();
+     for (Iterator<Meter> iterator2 = meters.iterator(); iterator2.hasNext();) {
+      meterCount++;
+      MeterKey meterKey = iterator2.next().getKey();
+      InstanceIdentifier<Meter> meterRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
+      Meter meter = TestProviderTransactionUtil.getDataObject(
+        readOnlyTransaction, meterRef);
+      if (meter != null) {
+       data = meter.getAugmentation(NodeMeterStatistics.class);
+       if (null != data) {
+        meterStatsCount++;
+       }
+      }
+     }
 
-    public void _groupStats(CommandInterpreter ci) {
-        int groupCount = 0;
-        int groupStatsCount = 0;
-        NodeGroupStatistics data = null;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<Group> groups = node.getGroup();
-                for (Iterator<Group> iterator2 = groups.iterator(); iterator2.hasNext(); ) {
-                    groupCount++;
-                    GroupKey groupKey = iterator2.next().getKey();
-                    InstanceIdentifier<Group> groupRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Group.class, groupKey);
-                    Group group = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, groupRef);
-                    if (group != null) {
-                        data = group.getAugmentation(NodeGroupStatistics.class);
-                        if (null != data) {
-                            groupStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (groupCount == groupStatsCount) {
-            LOG.debug("---------------------groupStats - Success-------------------------------");
-        } else {
-            LOG.debug("------------------------------groupStats - Failed--------------------------");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
     }
+   }
+  }
+
+  if (meterCount == meterStatsCount) {
+   LOG
+     .debug("---------------------------meterStats - Success-------------------------------------");
+  } else {
+   LOG
+     .debug("----------------------------meterStats - Failed-------------------------------------");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+ }
+
+ public void _meterConfigStats(CommandInterpreter ci) {
+  int meterCount = 0;
+  int meterConfigStatsCount = 0;
+  NodeMeterConfigStats data = null;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    if (node.getMeter() != null) {
+     List<Meter> meters = node.getMeter();
+     for (Iterator<Meter> iterator2 = meters.iterator(); iterator2.hasNext();) {
+      meterCount++;
+      MeterKey meterKey = iterator2.next().getKey();
+      InstanceIdentifier<Meter> meterRef = InstanceIdentifier
+        .create(Nodes.class).child(Node.class, nodeKey)
+        .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
+      Meter meter = TestProviderTransactionUtil.getDataObject(
+        readOnlyTransaction, meterRef);
+      if (meter != null) {
+       data = meter.getAugmentation(NodeMeterConfigStats.class);
+       if (null != data) {
+        meterConfigStatsCount++;
+       }
+      }
+     }
 
-    public void _groupDescStats(CommandInterpreter ci) {
-        int groupCount = 0;
-        int groupDescStatsCount = 0;
-        NodeGroupDescStats data = null;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-
-            if (node != null) {
-                List<Group> groups = node.getGroup();
-                for (Iterator<Group> iterator2 = groups.iterator(); iterator2.hasNext(); ) {
-                    groupCount++;
-                    GroupKey groupKey = iterator2.next().getKey();
-                    InstanceIdentifier<Group> groupRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Group.class, groupKey);
-                    Group group = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, groupRef);
-                    if (group != null) {
-                        data = group.getAugmentation(NodeGroupDescStats.class);
-                        if (null != data) {
-                            groupDescStatsCount++;
-                        }
-                    }
-                }
-            }
-
-            if (groupCount == groupDescStatsCount) {
-                LOG.debug("---------------------groupDescStats - Success-------------------------------");
-            } else {
-                LOG.debug("------------------------------groupDescStats - Failed--------------------------");
-                LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-            }
-        }
     }
-
-    public void _meterStats(CommandInterpreter ci) {
-        int meterCount = 0;
-        int meterStatsCount = 0;
-        NodeMeterStatistics data = null;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<Meter> meters = node.getMeter();
-                for (Iterator<Meter> iterator2 = meters.iterator(); iterator2.hasNext(); ) {
-                    meterCount++;
-                    MeterKey meterKey = iterator2.next().getKey();
-                    InstanceIdentifier<Meter> meterRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
-                    Meter meter = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, meterRef);
-                    if (meter != null) {
-                        data = meter.getAugmentation(NodeMeterStatistics.class);
-                        if (null != data) {
-                            meterStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (meterCount == meterStatsCount) {
-            LOG.debug("---------------------------meterStats - Success-------------------------------------");
-        } else {
-            LOG.debug("----------------------------meterStats - Failed-------------------------------------");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-    }
-
-
-    public void _meterConfigStats(CommandInterpreter ci) {
-        int meterCount = 0;
-        int meterConfigStatsCount = 0;
-        NodeMeterConfigStats data = null;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<Meter> meters = node.getMeter();
-                for (Iterator<Meter> iterator2 = meters.iterator(); iterator2.hasNext(); ) {
-                    meterCount++;
-                    MeterKey meterKey = iterator2.next().getKey();
-                    InstanceIdentifier<Meter> meterRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
-                    Meter meter = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, meterRef);
-                    if (meter != null) {
-                        data = meter.getAugmentation(NodeMeterConfigStats.class);
-                        if (null != data) {
-                            meterConfigStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (meterCount == meterConfigStatsCount) {
-            LOG.debug("---------------------------meterConfigStats - Success-------------------------------------");
-            ci.print(data);
-        } else {
-            LOG.debug("----------------------------meterConfigStats - Failed-------------------------------------");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-    }
-
-
-    public void _aggregateStats(CommandInterpreter ci) {
-        int aggregateFlowCount = 0;
-        int aggerateFlowStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                List<Table> tables = node.getTable();
-                for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext(); ) {
-                    aggregateFlowCount++;
-                    TableKey tableKey = iterator2.next().getKey();
-                    InstanceIdentifier<Table> tableRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Table.class, tableKey);
-                    Table table = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, tableRef);
-                    if (table != null) {
-                        AggregateFlowStatisticsData data = table.getAugmentation(AggregateFlowStatisticsData.class);
-                        if (null != data) {
-                            aggerateFlowStatsCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (aggregateFlowCount == aggerateFlowStatsCount) {
-            LOG.debug("aggregateStats - Success");
-        } else {
-            LOG.debug("aggregateStats - Failed");
-            LOG.debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
-        }
-
-    }
-
-    public void _descStats(CommandInterpreter ci) {
-        int descCount = 0;
-        int descStatsCount = 0;
-        List<Node> nodes = getNodes();
-        for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext(); ) {
-            descCount++;
-            NodeKey nodeKey = iterator.next().getKey();
-            InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.create(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class);
-            ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-            FlowCapableNode node = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodeRef);
-            if (node != null) {
-                if (null != node.getHardware() &&
-                        null != node.getManufacturer() &&
-                        null != node.getSoftware()) {
-                    descStatsCount++;
-                }
-            }
-        }
-
-        if (descCount == descStatsCount) {
-            LOG.debug("descStats - Success");
-        } else {
-            LOG.debug("descStats - Failed");
-            LOG.debug("System fetches stats data in 50 seconds interval, so please wait and try again.");
-        }
-
+   }
+  }
+
+  if (meterCount == meterConfigStatsCount) {
+   LOG
+     .debug("---------------------------meterConfigStats - Success-------------------------------------");
+   ci.print(data);
+  } else {
+   LOG
+     .debug("----------------------------meterConfigStats - Failed-------------------------------------");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+ }
+
+ public void _aggregateStats(CommandInterpreter ci) {
+  int aggregateFlowCount = 0;
+  int aggerateFlowStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    List<Table> tables = node.getTable();
+    for (Iterator<Table> iterator2 = tables.iterator(); iterator2.hasNext();) {
+     aggregateFlowCount++;
+     TableKey tableKey = iterator2.next().getKey();
+     InstanceIdentifier<Table> tableRef = InstanceIdentifier
+       .create(Nodes.class).child(Node.class, nodeKey)
+       .augmentation(FlowCapableNode.class).child(Table.class, tableKey);
+     Table table = TestProviderTransactionUtil.getDataObject(
+       readOnlyTransaction, tableRef);
+     if (table != null) {
+      AggregateFlowStatisticsData data = table
+        .getAugmentation(AggregateFlowStatisticsData.class);
+      if (null != data) {
+       aggerateFlowStatsCount++;
+      }
+     }
     }
-
-    private List<Node> getNodes() {
-        ReadOnlyTransaction readOnlyTransaction = dataProviderService.newReadOnlyTransaction();
-        InstanceIdentifier<Nodes> nodesID = InstanceIdentifier.create(Nodes.class);
-        Nodes nodes = TestProviderTransactionUtil.getDataObject(readOnlyTransaction, nodesID);
-        if (nodes == null) {
-            throw new RuntimeException("nodes are not found, pls add the node.");
-        }
-        return nodes.getNode();
+   }
+  }
+
+  if (aggregateFlowCount == aggerateFlowStatsCount) {
+   LOG.debug("aggregateStats - Success");
+  } else {
+   LOG.debug("aggregateStats - Failed");
+   LOG
+     .debug("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+  }
+
+ }
+
+ public void _descStats(CommandInterpreter ci) {
+  int descCount = 0;
+  int descStatsCount = 0;
+  List<Node> nodes = getNodes();
+  for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+   descCount++;
+   NodeKey nodeKey = iterator.next().getKey();
+   InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier
+     .create(Nodes.class).child(Node.class, nodeKey)
+     .augmentation(FlowCapableNode.class);
+   ReadOnlyTransaction readOnlyTransaction = dataProviderService
+     .newReadOnlyTransaction();
+   FlowCapableNode node = TestProviderTransactionUtil.getDataObject(
+     readOnlyTransaction, nodeRef);
+   if (node != null) {
+    if (null != node.getHardware() && null != node.getManufacturer()
+      && null != node.getSoftware()) {
+     descStatsCount++;
     }
-
-
-    @Override
-    public String getHelp() {
-        StringBuffer help = new StringBuffer();
-        help.append("---MD-SAL Stats test module---\n");
-        return help.toString();
-    }
-
+   }
+  }
+
+  if (descCount == descStatsCount) {
+   LOG.debug("descStats - Success");
+  } else {
+   LOG.debug("descStats - Failed");
+   LOG
+     .debug("System fetches stats data in 50 seconds interval, so please wait and try again.");
+  }
+
+ }
+
+ private List<Node> getNodes() {
+  ReadOnlyTransaction readOnlyTransaction = dataProviderService
+    .newReadOnlyTransaction();
+  InstanceIdentifier<Nodes> nodesID = InstanceIdentifier.create(Nodes.class);
+  Nodes nodes = TestProviderTransactionUtil.getDataObject(readOnlyTransaction,
+    nodesID);
+  if (nodes == null) {
+   throw new RuntimeException("nodes are not found, pls add the node.");
+  }
+  return nodes.getNode();
+ }
+
+ @Override
+ public String getHelp() {
+  StringBuffer help = new StringBuffer();
+  help.append("---MD-SAL Stats test module---\n");
+  return help.toString();
+ }
 
 }