BUG-432 Registration change
[openflowplugin.git] / test-provider / src / main / java / org / opendaylight / openflowplugin / test / OpenflowpluginMeterTestCommandProvider.java
index 94869beec6f72db3c2733a89b69823ff01629889..471232cacfecd81b5ecbe6a464db89f8e8f6af2a 100644 (file)
@@ -61,12 +61,14 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
     private ProviderContext pc;
     private final BundleContext ctx;
     private Meter testMeter;
+    private Meter testMeter1;
+    private Meter testMeter2;
     private Node testNode;
     private final String originalMeterName = "Foo";
     private final String updatedMeterName = "Bar";
-    private MeterEventListener meterEventListener = new MeterEventListener();
+    private final MeterEventListener meterEventListener = new MeterEventListener();
     private static NotificationService notificationService;
-    private Registration<org.opendaylight.yangtools.yang.binding.NotificationListener> listener1Reg;
+    private Registration listener1Reg;
 
     public OpenflowpluginMeterTestCommandProvider(BundleContext ctx) {
         this.ctx = ctx;
@@ -79,7 +81,7 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         notificationService = session.getSALService(NotificationService.class);
         // For switch events
         listener1Reg = notificationService.registerNotificationListener(meterEventListener);
-        
+
         createTestNode();
         createTestMeter();
     }
@@ -106,36 +108,36 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
 
         @Override
         public void onMeterAdded(MeterAdded notification) {
-            LOG.info("Meter to be added.........................."+notification.toString());
-            LOG.info("Meter  Xid........................."+notification.getTransactionId().getValue());
-            LOG.info("-----------------------------------------------------------------------------------");            
+            LOG.info("Meter to be added.........................." + notification.toString());
+            LOG.info("Meter  Xid........................." + notification.getTransactionId().getValue());
+            LOG.info("-----------------------------------------------------------------------------------");
         }
 
         @Override
         public void onMeterRemoved(MeterRemoved notification) {
-            LOG.info("Meter to be removed.........................."+notification.toString());
-            LOG.info("Meter  Xid........................."+notification.getTransactionId().getValue());
-            LOG.info("-----------------------------------------------------------------------------------");            
+            LOG.info("Meter to be removed.........................." + notification.toString());
+            LOG.info("Meter  Xid........................." + notification.getTransactionId().getValue());
+            LOG.info("-----------------------------------------------------------------------------------");
         }
 
         @Override
         public void onMeterUpdated(MeterUpdated notification) {
-            LOG.info("Meter to be updated.........................."+notification.toString());
-            LOG.info("Meter  Xid........................."+notification.getTransactionId().getValue());
-            LOG.info("-----------------------------------------------------------------------------------");            
+            LOG.info("Meter to be updated.........................." + notification.toString());
+            LOG.info("Meter  Xid........................." + notification.getTransactionId().getValue());
+            LOG.info("-----------------------------------------------------------------------------------");
         }
-        
+
     }
-    
+
     private MeterBuilder createTestMeter() {
         // Sample data , committing to DataStore
-        DataModification modification = dataBrokerService.beginTransaction();
+        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
 
         long id = 12;
         MeterKey key = new MeterKey(new MeterId(id));
         MeterBuilder meter = new MeterBuilder();
-        meter.setContainerName("abcd");     
-        meter.setKey(key);       
+        meter.setContainerName("abcd");
+        meter.setKey(key);
         meter.setMeterId(new MeterId(9L));
         meter.setMeterName(originalMeterName);
         meter.setFlags(new MeterFlags(true, false, false, false));
@@ -154,7 +156,7 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         bandTypes.setFlags(bandType);
         bandHeader.setMeterBandTypes(bandTypes.build());
         bandHeader.setBandId(new BandId(0L));
-        bandHdr.add(bandHeader.build());       
+        bandHdr.add(bandHeader.build());
         bandHeaders.setMeterBandHeader(bandHdr);
         meter.setMeterBandHeaders(bandHeaders.build());
 
@@ -162,6 +164,62 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         return meter;
     }
 
+    private MeterBuilder createTestMeters(String s1, String s2) {
+        // Sample data , committing to DataStore
+        long id = Integer.parseInt(s1);
+        MeterKey key = new MeterKey(new MeterId(id));
+        MeterBuilder meter = new MeterBuilder();
+        meter.setContainerName("abcd");
+        meter.setKey(key);
+        meter.setMeterId(new MeterId(9L));
+        MeterBandHeaderBuilder bandHeader = new MeterBandHeaderBuilder();
+        if (s2.equalsIgnoreCase("modify")) {
+            meter.setMeterName(updatedMeterName);
+            bandHeader.setBandRate((long) 234);
+        } else {
+            meter.setMeterName(originalMeterName);
+            bandHeader.setBandRate((long) 123);
+        }
+        meter.setFlags(new MeterFlags(true, false, false, false));
+        MeterBandHeadersBuilder bandHeaders = new MeterBandHeadersBuilder();
+        List<MeterBandHeader> bandHdr = new ArrayList<MeterBandHeader>();
+
+        bandHeader.setBandBurstSize((long) 444);
+        DscpRemarkBuilder dscpRemark = new DscpRemarkBuilder();
+        dscpRemark.setDscpRemarkBurstSize((long) 5);
+        dscpRemark.setPercLevel((short) 1);
+        dscpRemark.setDscpRemarkRate((long) 12);
+        bandHeader.setBandType(dscpRemark.build());
+        MeterBandTypesBuilder bandTypes = new MeterBandTypesBuilder();
+        MeterBandType bandType = new MeterBandType(false, true, false);
+        bandTypes.setFlags(bandType);
+        bandHeader.setMeterBandTypes(bandTypes.build());
+        bandHeader.setBandId(new BandId(0L));
+        bandHdr.add(bandHeader.build());
+        bandHeaders.setMeterBandHeader(bandHdr);
+        meter.setMeterBandHeaders(bandHeaders.build());
+
+        if (Integer.parseInt(s1) == 1) {
+            testMeter1 = meter.build();
+        } else if (Integer.parseInt(s1) == 2) {
+            testMeter2 = meter.build();
+        } else if (Integer.parseInt(s1) == 3) {
+            testMeter1 = meter.build();
+        } else if (Integer.parseInt(s1) == 4) {
+            testMeter2 = meter.build();
+        } else if (Integer.parseInt(s1) == 5) {
+            testMeter1 = meter.build();
+        } else if (Integer.parseInt(s1) == 6) {
+            testMeter2 = meter.build();
+        } else if (Integer.parseInt(s1) == 7) {
+            testMeter1 = meter.build();
+        } else if (Integer.parseInt(s1) == 8) {
+            testMeter2 = meter.build();
+        }
+
+        return meter;
+    }
+
     public void _removeMeter(CommandInterpreter ci) {
         String nref = ci.nextArgument();
 
@@ -173,11 +231,9 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
             createUserNode(nref);
         }
         MeterBuilder mBuilder = createTestMeter();
-        DataModification modification = dataBrokerService.beginTransaction();
-        InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class)
-                .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
-                .child(Meter.class, new MeterKey(testMeter.getMeterId()))
-                .build();
+        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
+        InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
+                .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(testMeter.getMeterId())).build();
         modification.removeConfigurationData(path1);
         Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
         try {
@@ -194,6 +250,88 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         }
     }
 
+    public void _removeMeters(CommandInterpreter ci) {
+        String nref = ci.nextArgument();
+
+        if (nref == null) {
+            ci.println("test node added");
+            createTestNode();
+        } else {
+            ci.println("User node added" + nref);
+            createUserNode(nref);
+        }
+
+        Integer count = Integer.parseInt(ci.nextArgument());
+
+        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
+        switch (count) {
+        case 1:
+            MeterBuilder mBuilder = createTestMeters("1", "remove");
+            InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter1.getMeterId())).build();
+            modification.removeConfigurationData(path1);
+            MeterBuilder mBuilder1 = createTestMeters("2", "remove");
+            InstanceIdentifier<Meter> path2 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter2.getMeterId())).build();
+            modification.removeConfigurationData(path2);
+
+            break;
+        case 2:
+            MeterBuilder mBuilder2 = createTestMeters("3", "remove");
+            InstanceIdentifier<Meter> path3 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter1.getMeterId())).build();
+            modification.removeConfigurationData(path3);
+            MeterBuilder mBuilder22 = createTestMeters("4", "remove");
+            InstanceIdentifier<Meter> path4 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter2.getMeterId())).build();
+            modification.removeConfigurationData(path4);
+            break;
+        case 3:
+            MeterBuilder mBuilder3 = createTestMeters("5", "remove");
+            InstanceIdentifier<Meter> path5 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter1.getMeterId())).build();
+            modification.removeConfigurationData(path5);
+            MeterBuilder mBuilder4 = createTestMeters("6", "remove");
+            InstanceIdentifier<Meter> path6 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter2.getMeterId())).build();
+            modification.removeConfigurationData(path6);
+            break;
+        case 4:
+            MeterBuilder mBuilder5 = createTestMeters("7", "remove");
+            InstanceIdentifier<Meter> path7 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter1.getMeterId())).build();
+            modification.removeConfigurationData(path7);
+            MeterBuilder mBuilder6 = createTestMeters("8", "remove");
+            InstanceIdentifier<Meter> path8 = InstanceIdentifier.builder(Nodes.class)
+                    .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
+                    .child(Meter.class, new MeterKey(testMeter2.getMeterId())).build();
+            modification.removeConfigurationData(path8);
+            break;
+
+        }
+
+        Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
+        try {
+            RpcResult<TransactionStatus> result = commitFuture.get();
+            TransactionStatus status = result.getResult();
+            ci.println("Status of Meter Data Loaded Transaction: " + status);
+
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (ExecutionException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
     public void _addMeter(CommandInterpreter ci) {
         String nref = ci.nextArgument();
 
@@ -208,15 +346,79 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         writeMeter(ci, testMeter);
     }
 
+    public void _addMeters(CommandInterpreter ci) {
+        String nref = ci.nextArgument();
+
+        if (nref == null) {
+            ci.println("test node added");
+            createTestNode();
+        } else {
+            ci.println("User node added" + nref);
+            createUserNode(nref);
+        }
+        Integer count = Integer.parseInt(ci.nextArgument());
+        switch (count) {
+        case 1:
+            createTestMeters("1", "add");
+            createTestMeters("2", "add");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+        case 2:
+            createTestMeters("3", "add");
+            createTestMeters("4", "add");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+        case 3:
+            createTestMeters("5", "add");
+            createTestMeters("6", "add");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+        case 4:
+            createTestMeters("7", "add");
+            createTestMeters("8", "add");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+
+        }
+        // createTestMeters();
+        // writeMeter(ci, testMeter);
+    }
+
     private void writeMeter(CommandInterpreter ci, Meter meter) {
-        DataModification modification = dataBrokerService.beginTransaction();
-        InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class)
-                .child(Node.class, testNode.getKey()).augmentation(FlowCapableNode.class)
-                .child(Meter.class, new MeterKey(meter.getMeterId()))
-                .build();
-        DataObject cls = (DataObject) modification.readConfigurationData(path1);
+        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
+        InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
+                .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter.getMeterId())).build();
+        DataObject cls = modification.readConfigurationData(path1);
+        modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
+        modification.putConfigurationData(path1, meter);
+        Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
+        try {
+            RpcResult<TransactionStatus> result = commitFuture.get();
+            TransactionStatus status = result.getResult();
+            ci.println("Status of Meter Data Loaded Transaction: " + status);
+
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (ExecutionException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    private void writeMeter(CommandInterpreter ci, Meter meter, Meter meter1) {
+        DataModification<InstanceIdentifier<?>, DataObject> modification = dataBrokerService.beginTransaction();
+        InstanceIdentifier<Meter> path1 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
+                .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter.getMeterId())).build();
+        DataObject cls = modification.readConfigurationData(path1);
         modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
         modification.putConfigurationData(path1, meter);
+        InstanceIdentifier<Meter> path2 = InstanceIdentifier.builder(Nodes.class).child(Node.class, testNode.getKey())
+                .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter1.getMeterId())).build();
+        DataObject cls1 = modification.readConfigurationData(path2);
+        modification.putConfigurationData(nodeToInstanceId(testNode), testNode);
+        modification.putConfigurationData(path2, meter1);
+
         Future<RpcResult<TransactionStatus>> commitFuture = modification.commit();
         try {
             RpcResult<TransactionStatus> result = commitFuture.get();
@@ -249,11 +451,37 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider {
         writeMeter(ci, meter.build());
     }
 
+    public void _modifyMeters(CommandInterpreter ci) {
+        String nref = ci.nextArgument();
+
+        if (nref == null) {
+            ci.println("test node added");
+            createTestNode();
+        } else {
+            ci.println("User node added" + nref);
+            createUserNode(nref);
+        }
+
+        Integer count = Integer.parseInt(ci.nextArgument());
+        switch (count) {
+        case 1:
+            createTestMeters("1", "modify");
+            createTestMeters("2", "modify");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+        case 2:
+            createTestMeters("3", "modify");
+            createTestMeters("4", "modify");
+            writeMeter(ci, testMeter1, testMeter2);
+            break;
+        }
+    }
+
     @Override
     public String getHelp() {
         StringBuffer help = new StringBuffer();
-        help.append("---FRM MD-SAL Group test module---\n");
-        help.append("\t addMeter <node id>        - node ref\n");
+        help.append("---FRM MD-SAL Meter test module---\n");
+        help.append("\t addMeter <node id>           - node ref\n");
         help.append("\t modifyMeter <node id>        - node ref\n");
         help.append("\t removeMeter <node id>        - node ref\n");