From a85a97c4ffd20a85dfc9aeb341ca905c672d1864 Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Mon, 21 Jul 2014 10:22:30 +0200 Subject: [PATCH] BUG-1397 Openflowjava corresponding changes for experimenter model update - DO NOT MERGE before https://git.opendaylight.org/gerrit/#/c/9155/ is merged BUG-1307 - unit test NP fix (caused by yangtools fix) Change-Id: I1b9a1f07821aa265fea4f280914d4fc2f0d975a6 Signed-off-by: Michal Polkorab Signed-off-by: Michal Rehak --- .../core/sal/convertor/ActionConvertor.java | 25 ----- .../md/core/sal/convertor/MeterConvertor.java | 8 +- .../translator/ExperimenterTranslator.java | 33 +------ .../md/core/ConnectionConductorImplTest.java | 95 ------------------- .../sal/convertor/MeterConvertorTest.java | 13 ++- .../md/util/OpenflowPortsUtilTest.java | 9 +- 6 files changed, 26 insertions(+), 157 deletions(-) diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java index 7dc613b6bb..9e6ab50d29 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java @@ -137,8 +137,6 @@ public final class ActionConvertor { ofAction = SalToOFPushPbbAction(action, actionBuilder); else if (action instanceof PopPbbActionCase) ofAction = SalToOFPopPBB(actionBuilder); - else if (action instanceof ExperimenterAction) - ofAction = SalToOFExperimenter(action, actionBuilder); // 1.0 Actions else if (action instanceof SetVlanIdActionCase) @@ -265,19 +263,6 @@ public final class ActionConvertor { return emtpyAction(actionBuilder); } - private static Action SalToOFExperimenter( - org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action, - ActionBuilder actionBuilder) { - ExperimenterActionBuilder experimenterActionBuilder = new ExperimenterActionBuilder(); - experimenterActionBuilder.setExperimenter(((ExperimenterAction) action).getExperimenter()); - actionBuilder.setType(Experimenter.class); - actionBuilder - .addAugmentation( - ExperimenterAction.class, - (Augmentation) experimenterActionBuilder); - return actionBuilder.build(); - } - private static Action SalToOFSetVlanId( org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action, ActionBuilder actionBuilder, short version) { @@ -878,14 +863,4 @@ public final class ActionConvertor { return new PushPbbActionCaseBuilder().setPushPbbAction(pushPbbAction.build()).build(); } - public static Object ofToSALExperimenter(Action action) { - - ExperimenterAction ExperimenterAction = action.getAugmentation(ExperimenterAction.class); - - return null; - /* - * TODO: Need to explore/discuss about how to handle experimenter - */ - - } } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java index 72b1b20c5e..1632b87241 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertor.java @@ -25,6 +25,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band. import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter; 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.meter.band.headers.MeterBandHeader; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMeterBand; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMeterBandBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId; @@ -157,7 +160,10 @@ public final class MeterConvertor { Experimenter experimenter = (Experimenter) meterBandHeader.getBandType(); meterBandExperimenterBuilder.setBurstSize(experimenter.getExperimenterBurstSize()); meterBandExperimenterBuilder.setRate(experimenter.getExperimenterRate()); - meterBandExperimenterBuilder.setExperimenter(experimenter.getExperimenter()); + ExperimenterIdMeterBandBuilder expBuilder = new ExperimenterIdMeterBandBuilder(); + expBuilder.setExperimenter(new ExperimenterId(experimenter.getExperimenter())); + meterBandExperimenterBuilder.addAugmentation(ExperimenterIdMeterBand.class, expBuilder.build()); + // TODO - implement / finish experimenter meter band translation experimenterCaseBuilder.setMeterBandExperimenter(meterBandExperimenterBuilder.build()); meterBandItem = experimenterCaseBuilder.build(); bandsB = new BandsBuilder(); diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/ExperimenterTranslator.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/ExperimenterTranslator.java index 680740f429..a5371b6d65 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/ExperimenterTranslator.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/ExperimenterTranslator.java @@ -9,17 +9,12 @@ */ package org.opendaylight.openflowplugin.openflow.md.core.translator; -import java.math.BigInteger; import java.util.Collections; import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator; import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeExperimenterErrorNotification; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeExperimenterErrorNotificationBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -34,32 +29,8 @@ public class ExperimenterTranslator implements IMDMessageTranslator translate(SwitchConnectionDistinguisher cookie, SessionContext sc, OfHeader msg) { if( msg instanceof ExperimenterMessage) { - ExperimenterMessage message = (ExperimenterMessage)msg ; - List list = new CopyOnWriteArrayList(); - LOG.error(" Experimenter Error Message received: Exp type={}, Exp Id={}, data={} ", - message.getExpType(), message.getExperimenter(), - new String(message.getData()) ) ; - - // create a Node Experimenter Error Notification event builder - NodeExperimenterErrorNotificationBuilder nodeErrBuilder = new NodeExperimenterErrorNotificationBuilder() ; - - nodeErrBuilder.setTransactionId(new TransactionId(BigInteger.valueOf( message.getXid() ))) ; - - // This is a fixed value 0xffff ( 65535 ) - nodeErrBuilder.setType(org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType.Experimenter ) ; - - // The experimenterType is defined as long in ExperimenterMessage where is just needs to be integer - nodeErrBuilder.setExpType(message.getExpType().intValue() ) ; - - nodeErrBuilder.setExperimenterId(message.getExperimenter()) ; - - nodeErrBuilder.setData(new String (message.getData()) ) ; - - //Not handling Augmentation - - NodeExperimenterErrorNotification nodeExpErrorEvent = nodeErrBuilder.build(); - list.add(nodeExpErrorEvent); - return list; + // TODO - implement functionality to fully support Experimenter framework + return null; }else { LOG.error( "Message is not of Experimenter Error Message " ) ; return Collections.emptyList(); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java index af73158a3b..3a6aa385f9 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImplTest.java @@ -354,74 +354,6 @@ public class ConnectionConductorImplTest { .shortValue()); } - /** - * Test method for - * {@link org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl#onExperimenterMessage(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage)} - * . - * @throws InterruptedException - */ - @Test - public void testOnExperimenterMessage1() throws InterruptedException { - simulateV13PostHandshakeState(connectionConductor); - - eventPlan.add(0, - EventFactory.createDefaultWaitForRpcEvent(42, "experimenter")); - ExperimenterMessageBuilder builder1 = new ExperimenterMessageBuilder(); - builder1.setExperimenter(84L).setExpType(4L); - eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, - EventFactory.DEFAULT_VERSION, builder1)); - - executeLater(); - - Runnable sendExperimenterCmd = new Runnable() { - - @Override - public void run() { - ExperimenterInputBuilder builder2 = new ExperimenterInputBuilder(); - builder2.setExperimenter(84L).setExpType(4L); - EventFactory.setupHeader(42L, builder2); - adapter.experimenter(builder2.build()); - } - }; - pool.schedule(sendExperimenterCmd, - ConnectionAdapterStackImpl.JOB_DELAY, TimeUnit.MILLISECONDS); - } - - /** - * Test method for - * {@link org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl#onExperimenterMessage(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage)} - * . - * @throws InterruptedException - */ - @Test - public void testOnExperimenterMessage2() throws InterruptedException { - simulateV13PostHandshakeState(connectionConductor); - - eventPlan.add(0, - EventFactory.createDefaultWaitForRpcEvent(42, "experimenter")); - ErrorMessageBuilder builder1 = new ErrorMessageBuilder(); - builder1.setType(ErrorType.BADREQUEST.getIntValue()).setCode(3) - .setData(new byte[] { 1, 2, 3 }); - - eventPlan.add(0, EventFactory.createDefaultNotificationEvent(42L, - EventFactory.DEFAULT_VERSION, builder1)); - - executeLater(); - - Runnable sendExperimenterCmd = new Runnable() { - - @Override - public void run() { - ExperimenterInputBuilder builder2 = new ExperimenterInputBuilder(); - builder2.setExperimenter(84L).setExpType(4L); - EventFactory.setupHeader(42L, builder2); - adapter.experimenter(builder2.build()); - } - }; - pool.schedule(sendExperimenterCmd, - ConnectionAdapterStackImpl.JOB_DELAY, TimeUnit.MILLISECONDS); - } - /** * Test method for * {@link org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl#onFlowRemovedMessage(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessage)} @@ -636,33 +568,6 @@ public class ConnectionConductorImplTest { } } - /** - * Test method for - * {@link org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl#onExperimenterMessage(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage)} - * . - * @throws InterruptedException - */ - @Test - public void testOnExperimenterMessage() throws InterruptedException { - simulateV13PostHandshakeState(connectionConductor); - - ExperimenterMessageBuilder builder1 = new ExperimenterMessageBuilder(); - builder1.setVersion((short) 4); - builder1.setExperimenter(84L).setExpType(4L); - connectionConductor.onExperimenterMessage(builder1.build()); - synchronized (popListener) { - popListener.wait(maxProcessingTimeout); - } - Assert.assertEquals(1, experimenterMessageCounter); - - builder1.setExperimenter(85L).setExpType(4L); - connectionConductor.onExperimenterMessage(builder1.build()); - synchronized (popListener) { - popListener.wait(maxProcessingTimeout); - } - Assert.assertEquals(2, experimenterMessageCounter); - } - /** * Test method for * {@link org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl#onExperimenterMessage(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage)} diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java index f128b52c61..013ab772b6 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java @@ -30,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter 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.MeterBandTypesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMeterBand; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder; @@ -154,7 +155,9 @@ public class MeterConvertorTest { ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType()); Assert.assertEquals((long) 12, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize()); Assert.assertEquals((long) 22, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate()); - Assert.assertEquals((long) 23, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getExperimenter()); + ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter() + .getAugmentation(ExperimenterIdMeterBand.class); + Assert.assertEquals((long) 23, (long) expBand.getExperimenter().getValue()); } @@ -274,7 +277,9 @@ public class MeterConvertorTest { ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType()); Assert.assertEquals((long) 12, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize()); Assert.assertEquals((long) 22, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate()); - Assert.assertEquals((long) 23, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getExperimenter()); + ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter() + .getAugmentation(ExperimenterIdMeterBand.class); + Assert.assertEquals((long) 23, (long) expBand.getExperimenter().getValue()); } @@ -415,7 +420,9 @@ public class MeterConvertorTest { ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType()); Assert.assertEquals((long) 12, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize()); Assert.assertEquals((long) 22, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate()); - Assert.assertEquals((long) 23, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getExperimenter()); + ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter() + .getAugmentation(ExperimenterIdMeterBand.class); + Assert.assertEquals((long) 23, (long) expBand.getExperimenter().getValue()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/util/OpenflowPortsUtilTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/util/OpenflowPortsUtilTest.java index d3be8d505f..ab77943088 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/util/OpenflowPortsUtilTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/util/OpenflowPortsUtilTest.java @@ -187,8 +187,13 @@ public class OpenflowPortsUtilTest { portNumber = new CommonPort.PortNumber(OutputPortValues.FLOOD.toString()); Assert.assertEquals("FLOOD", OpenflowPortsUtil.portNumberToString(portNumber)); - portNumber = new CommonPort.PortNumber((String) null); - Assert.assertNull(OpenflowPortsUtil.portNumberToString(portNumber)); + try { + portNumber = new CommonPort.PortNumber((String) null); + Assert.fail("NPE was expected - due to value type"); + } catch (Exception e) { + // expected + Assert.assertEquals(NullPointerException.class, e.getClass()); + } } } -- 2.36.6