X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=test-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Ftest%2FOpenflowpluginMeterTestCommandProvider.java;h=f385405a12c64487223db3cd487ea91ba9b8230e;hb=05f8db12159673d0e0a95642fe86e62c14b7dc7b;hp=9e77054c234359f9d4311c4eecb579889618c2a8;hpb=37730f1ee7a354a7863e4f9da76d2b8906dbd4d0;p=openflowplugin.git diff --git a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestCommandProvider.java b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestCommandProvider.java index 9e77054c23..f385405a12 100644 --- a/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestCommandProvider.java +++ b/test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginMeterTestCommandProvider.java @@ -1,118 +1,219 @@ +/* + * Copyright (c) 2013, 2015 IBM Corporation and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.openflowplugin.test; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.MoreExecutors; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; - import org.eclipse.osgi.framework.console.CommandInterpreter; import org.eclipse.osgi.framework.console.CommandProvider; -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.NotificationService; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.Meters; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.meters.Meter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.meters.MeterBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.meters.MeterKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterAdded; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterRemoved; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterUpdated; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterListener; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypes; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder; -import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.RpcResult; import org.osgi.framework.BundleContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +@SuppressWarnings("checkstyle:MethodName") public class OpenflowpluginMeterTestCommandProvider implements CommandProvider { - private DataBrokerService dataBrokerService; - private ProviderContext pc; + private static final Logger LOG = LoggerFactory.getLogger(OpenflowpluginMeterTestCommandProvider.class); + private final DataBroker dataBroker; 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 final MeterEventListener meterEventListener = new MeterEventListener(); + private final NotificationService notificationService; + private Registration listener1Reg; - public OpenflowpluginMeterTestCommandProvider(BundleContext ctx) { + public OpenflowpluginMeterTestCommandProvider(DataBroker dataBroker, NotificationService notificationService, + BundleContext ctx) { + this.dataBroker = dataBroker; + this.notificationService = notificationService; this.ctx = ctx; } - public void onSessionInitiated(ProviderContext session) { - pc = session; - dataBrokerService = session.getSALService(DataBrokerService.class); + public void init() { ctx.registerService(CommandProvider.class.getName(), this, null); + // For switch events + listener1Reg = notificationService.registerNotificationListener(meterEventListener); + createTestNode(); createTestMeter(); } - private void createUserNode(String nodeRef) { + private void createUserNode(String nodeRef) { NodeBuilder builder = new NodeBuilder(); builder.setId(new NodeId(nodeRef)); - builder.setKey(new NodeKey(builder.getId())); + builder.withKey(new NodeKey(builder.getId())); testNode = builder.build(); } - - private void createTestNode() { + + private void createTestNode() { NodeBuilder builder = new NodeBuilder(); builder.setId(new NodeId(OpenflowpluginTestActivator.NODE_ID)); - builder.setKey(new NodeKey(builder.getId())); + builder.withKey(new NodeKey(builder.getId())); testNode = builder.build(); } private InstanceIdentifier nodeToInstanceId(Node node) { - return InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()).toInstance(); + return InstanceIdentifier.create(Nodes.class).child(Node.class, node.key()); + } + + private static final class MeterEventListener implements SalMeterListener { + + @Override + public void onMeterAdded(MeterAdded notification) { + LOG.info("Meter to be added {}", notification.toString()); + LOG.info("Meter Xid {}", notification.getTransactionId().getValue()); + } + + @Override + public void onMeterRemoved(MeterRemoved notification) { + LOG.info("Meter to be removed {}", notification.toString()); + LOG.info("Meter Xid {}", notification.getTransactionId().getValue()); + } + + @Override + public void onMeterUpdated(MeterUpdated notification) { + LOG.info("Meter to be updated {}", notification.toString()); + LOG.info("Meter Xid {}", notification.getTransactionId().getValue()); + } + } private MeterBuilder createTestMeter() { // Sample data , committing to DataStore - DataModification modification = dataBrokerService.beginTransaction(); + long id = 12; - MeterKey key = new MeterKey(id, new NodeRef(new NodeRef(nodeToInstanceId(testNode)))); + MeterKey key = new MeterKey(new MeterId(id)); MeterBuilder meter = new MeterBuilder(); - meter.setContainerName("abcd"); - meter.setId((long) 9); - meter.setKey(key); + meter.setContainerName("abcd"); + meter.withKey(key); + meter.setMeterId(new MeterId(9L)); meter.setMeterName(originalMeterName); - meter.setFlags(new MeterFlags(true, false, false, false)); - MeterBandHeadersBuilder bandHeaders = new MeterBandHeadersBuilder(); - List bandHdr = new ArrayList(); + meter.setFlags(new MeterFlags(true, false, false, false)); MeterBandHeaderBuilder bandHeader = new MeterBandHeaderBuilder(); - bandHeader.setRate((long) 234); - bandHeader.setBurstSize((long) 444); + bandHeader.setBandRate((long) 234); + bandHeader.setBandBurstSize((long) 444); DscpRemarkBuilder dscpRemark = new DscpRemarkBuilder(); - dscpRemark.setBurstSize((long) 5); - dscpRemark.setPercLevel((short) 1); - dscpRemark.setRate((long) 12); + dscpRemark.setDscpRemarkBurstSize((long) 5); + dscpRemark.setPrecLevel((short) 1); + dscpRemark.setDscpRemarkRate((long) 12); bandHeader.setBandType(dscpRemark.build()); MeterBandTypesBuilder bandTypes = new MeterBandTypesBuilder(); - MeterBandType bandType = new MeterBandType(false, true, false); + MeterBandType bandType = new MeterBandType(false, true, false); bandTypes.setFlags(bandType); bandHeader.setMeterBandTypes(bandTypes.build()); - bandHdr.add(bandHeader.build()); + bandHeader.setBandId(new BandId(0L)); + + List bandHdr = new ArrayList<>(); + bandHdr.add(bandHeader.build()); + + MeterBandHeadersBuilder bandHeaders = new MeterBandHeadersBuilder(); bandHeaders.setMeterBandHeader(bandHdr); meter.setMeterBandHeaders(bandHeaders.build()); - + testMeter = meter.build(); return meter; } - public void _removeMeter(CommandInterpreter ci) { + 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.withKey(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)); + + bandHeader.setBandBurstSize((long) 444); + DscpRemarkBuilder dscpRemark = new DscpRemarkBuilder(); + dscpRemark.setDscpRemarkBurstSize((long) 5); + dscpRemark.setPrecLevel((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)); + + List bandHdr = new ArrayList<>(); + bandHdr.add(bandHeader.build()); + + MeterBandHeadersBuilder bandHeaders = new MeterBandHeadersBuilder(); + 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(final CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); @@ -120,33 +221,108 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider { ci.println("User node added" + nref); createUserNode(nref); } - MeterBuilder mBuilder = createTestMeter(); - DataModification modification = dataBrokerService.beginTransaction(); - InstanceIdentifier path1 = InstanceIdentifier.builder(Meters.class) - .child(Meter.class, mBuilder.getKey()).toInstance(); - DataObject cls = (DataObject) modification.readConfigurationData(path1); - modification.removeOperationalData(nodeToInstanceId(testNode)); - modification.removeOperationalData(path1); - modification.removeConfigurationData(nodeToInstanceId(testNode)); - modification.removeConfigurationData(path1); - Future> commitFuture = modification.commit(); - try { - RpcResult 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(); + createTestMeter(); + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key()) + .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(testMeter.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path1); + modification.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(Object notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); + } + + public void _removeMeters(final 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()); + + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + switch (count) { + case 1: + createTestMeters("1", "remove"); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter1.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path1); + createTestMeters("2", "remove"); + InstanceIdentifier path2 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter2.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path2); + + break; + case 2: + createTestMeters("3", "remove"); + InstanceIdentifier path3 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter1.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path3); + createTestMeters("4", "remove"); + InstanceIdentifier path4 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter2.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path4); + break; + case 3: + createTestMeters("5", "remove"); + InstanceIdentifier path5 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter1.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path5); + createTestMeters("6", "remove"); + InstanceIdentifier path6 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter2.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path6); + break; + case 4: + createTestMeters("7", "remove"); + InstanceIdentifier path7 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter1.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path7); + createTestMeters("8", "remove"); + InstanceIdentifier path8 = InstanceIdentifier.create(Nodes.class) + .child(Node.class, testNode.key()).augmentation(FlowCapableNode.class) + .child(Meter.class, new MeterKey(testMeter2.getMeterId())); + modification.delete(LogicalDatastoreType.CONFIGURATION, path8); + break; + default: + break; } + + modification.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(Object notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); } public void _addMeter(CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); @@ -154,38 +330,98 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider { ci.println("User node added" + nref); createUserNode(nref); } - createTestMeter(); + createTestMeter(); writeMeter(ci, testMeter); } - private void writeMeter(CommandInterpreter ci, Meter meter) { - DataModification modification = dataBrokerService.beginTransaction(); - InstanceIdentifier path1 = InstanceIdentifier.builder(Meters.class). - child(Meter.class, meter.getKey()) - .toInstance(); - DataObject cls = (DataObject) modification.readConfigurationData(path1); - modification.putOperationalData(nodeToInstanceId(testNode), testNode); - modification.putOperationalData(path1, meter); - modification.putConfigurationData(nodeToInstanceId(testNode), testNode); - modification.putConfigurationData(path1, meter); - Future> commitFuture = modification.commit(); - try { - RpcResult 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 _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; + default: + break; + } + // createTestMeters(); + // writeMeter(ci, testMeter); + } + + private void writeMeter(final CommandInterpreter ci, Meter meter) { + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key()) + .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter.getMeterId())); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), + testNode); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, path1, meter); + modification.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(Object notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); + } + + private void writeMeter(final CommandInterpreter ci, Meter meter, Meter meter1) { + ReadWriteTransaction modification = dataBroker.newReadWriteTransaction(); + InstanceIdentifier path1 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key()) + .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter.getMeterId())); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), + testNode); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, path1, meter); + InstanceIdentifier path2 = InstanceIdentifier.create(Nodes.class).child(Node.class, testNode.key()) + .augmentation(FlowCapableNode.class).child(Meter.class, new MeterKey(meter1.getMeterId())); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, nodeToInstanceId(testNode), + testNode); + modification.mergeParentStructureMerge(LogicalDatastoreType.CONFIGURATION, path2, meter1); + + modification.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(Object notUsed) { + ci.println("Status of Group Data Loaded Transaction: success."); + } + + @Override + public void onFailure(Throwable throwable) { + ci.println(String.format("Status of Group Data Loaded Transaction : failure. Reason : %s", throwable)); + } + }, MoreExecutors.directExecutor()); } public void _modifyMeter(CommandInterpreter ci) { String nref = ci.nextArgument(); - + if (nref == null) { ci.println("test node added"); createTestNode(); @@ -193,22 +429,50 @@ public class OpenflowpluginMeterTestCommandProvider implements CommandProvider { ci.println("User node added" + nref); createUserNode(nref); } - MeterBuilder meter = createTestMeter(); + MeterBuilder meter = createTestMeter(); meter.setMeterName(updatedMeterName); writeMeter(ci, meter.build()); meter.setMeterName(originalMeterName); 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; + default: + break; + } + } + @Override public String getHelp() { - StringBuffer help = new StringBuffer(); - help.append("---FRM MD-SAL Group test module---\n"); - help.append("\t addMeter - node ref\n"); + StringBuilder help = new StringBuilder(); + help.append("---FRM MD-SAL Meter test module---\n"); + help.append("\t addMeter - node ref\n"); help.append("\t modifyMeter - node ref\n"); help.append("\t removeMeter - node ref\n"); - + return help.toString(); - } - + } + }