Update bundle extension tests 54/50954/15
authorJozef Bacigal <jozef.bacigal@pantheon.tech>
Tue, 24 Jan 2017 14:09:45 +0000 (15:09 +0100)
committerJozef Bacigal <jozef.bacigal@pantheon.tech>
Thu, 4 May 2017 08:23:19 +0000 (10:23 +0200)
Reference: ONF approved extension #230
Resolves: Bug 6806

Change-Id: If4b197b8ecf334286d4bb01748b8b622c2112182
Signed-off-by: Jozef Bacigal <jozef.bacigal@pantheon.tech>
extension/openflowplugin-extension-onf/src/main/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleAddMessageConverter.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/BundleTestUtils.java [moved from extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/ConverterTestUtils.java with 59% similarity]
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/ByteBufUtils.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleAddMessageConverterTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/converter/BundleControlConverterTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/deserializer/OnfExperimenterErrorFactoryTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/serializer/AbstractBundleMessageFactoryTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/serializer/BundleAddMessageFactoryTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/serializer/BundleControlFactoryTest.java
extension/openflowplugin-extension-onf/src/test/java/org/opendaylight/openflowplugin/extension/onf/service/SalBundleServiceImplTest.java

index 8d8b90794a54f517a20512cde0677c3c93a65ac4..e09ad9c22f3f8cc282ea31867df2afacaf6cd3a3 100644 (file)
@@ -21,12 +21,13 @@ import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.Versi
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.flow.update.UpdatedFlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMod;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroupBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeContextRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
@@ -50,7 +51,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessageBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortInputBuilder;
 
 /**
  * Converter for BundleAddMessage messages (ONF approved extension #230).
@@ -92,13 +92,17 @@ public class BundleAddMessageConverter implements
         if (clazz.equals(BundleAddFlowCase.class)) {
             flowModInputs = converterExecutor.convert(new AddFlowInputBuilder((Flow)messageCase).build(), data);
         } else if (clazz.equals(BundleUpdateFlowCase.class)) {
-            flowModInputs = converterExecutor.convert(new UpdateFlowInputBuilder((BundleUpdateFlowCase)messageCase).build(), data);
+            flowModInputs = converterExecutor.convert(new UpdatedFlowBuilder((Flow)messageCase).build(), data);
         } else if (clazz.equals(BundleRemoveFlowCase.class)) {
             flowModInputs = converterExecutor.convert(new RemoveFlowInputBuilder((Flow)messageCase).build(), data);
         }
 
         if (flowModInputs.isPresent()) {
-            return new BundleFlowModCaseBuilder(flowModInputs.get().get(0).build()).build();
+            if (flowModInputs.get().size() == 1) {
+                return new BundleFlowModCaseBuilder(flowModInputs.get().get(0).build()).build();
+            } else {
+                throw new ConversionException("BundleFlowCase conversion unsuccessful - not able to convert to multiple flows.");
+            }
         } else {
             throw new ConversionException("BundleFlowCase conversion unsuccessful.");
         }
@@ -110,7 +114,7 @@ public class BundleAddMessageConverter implements
         if (clazz.equals(BundleAddGroupCase.class)) {
             groupModInput = converterExecutor.convert(new AddGroupInputBuilder((Group)messageCase).build(), data);
         } else if (clazz.equals(BundleUpdateGroupCase.class)) {
-            groupModInput = converterExecutor.convert(new UpdateGroupInputBuilder((BundleUpdateGroupCase)messageCase).build(), data);
+            groupModInput = converterExecutor.convert(new UpdatedGroupBuilder((Group)messageCase).build(), data);
         } else if (clazz.equals(BundleRemoveGroupCase.class)) {
             groupModInput = converterExecutor.convert(new RemoveGroupInputBuilder((Group)messageCase).build(), data);
         }
@@ -126,7 +130,7 @@ public class BundleAddMessageConverter implements
         Optional<PortModInput> portModInput = Optional.empty();
         final Class clazz = messageCase.getImplementedInterface();
         if (clazz.equals(BundleUpdatePortCase.class)) {
-            portModInput = converterExecutor.convert(new UpdatePortInputBuilder((BundleUpdatePortCase)messageCase).build(), data);
+            portModInput = converterExecutor.convert(new PortBuilder(((PortMod)messageCase).getPort().getPort().get(0)).build(), data);
         }
 
         if (portModInput.isPresent()) {
@@ -13,21 +13,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundleProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundlePropertyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.BundlePropertyExperimenterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
 
 /**
  * Abstract class for common Converter util methods.
  */
-public abstract class ConverterTestUtils {
+public abstract class BundleTestUtils {
 
-    public static BundleProperty createExperimenterProperty() {
-        final BundlePropertyBuilder propertyBuilder = new BundlePropertyBuilder();
-        propertyBuilder.setType(BundlePropertyType.ONFETBPTEXPERIMENTER);
-        propertyBuilder.setBundlePropertyEntry(new BundlePropertyExperimenterBuilder()
-                .setExperimenter(new ExperimenterId(1L))
-                .setExpType(1L)
-                .setBundlePropertyExperimenterData(null)
-                .build());
-        return propertyBuilder.build();
+    public static BundleProperty createExperimenterProperty(final BundlePropertyExperimenterData data) {
+        return new BundlePropertyBuilder()
+                .setType(BundlePropertyType.ONFETBPTEXPERIMENTER)
+                .setBundlePropertyEntry(new BundlePropertyExperimenterBuilder()
+                        .setExperimenter(new ExperimenterId(1L))
+                        .setExpType(2L)
+                        .setBundlePropertyExperimenterData(data)
+                        .build())
+                .build();
     }
 
 }
index 138d70e6c52c9eeae323d045a0239227c77af83d..cf75e1fb5c868d10846caf6ddd9b96705ad9baca 100644 (file)
@@ -24,7 +24,7 @@ public abstract class ByteBufUtils {
 
     private static final Splitter HEXSTRING_SPLITTER =  Splitter.onPattern("\\s+").omitEmptyStrings();
     private static final byte[] XID = new byte[] { 0x01, 0x02, 0x03, 0x04 };
-    public static final Long DEFAULT_XID = 0x01020304L;
+    private static final Long DEFAULT_XID = 0x01020304L;
 
     public static ByteBuf hexStringToByteBuf(final String hexSrc) {
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
index a2cd06aebe03aa64a2296d312da24cf7d46e06f0..1c4bea313c7a501e0f24cdf4c48bfc8fbd28eedb 100644 (file)
@@ -9,23 +9,40 @@
 package org.opendaylight.openflowplugin.extension.onf.converter;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
-import org.opendaylight.openflowplugin.extension.onf.ConverterTestUtils;
+import org.mockito.Mockito;
+import org.opendaylight.openflowplugin.extension.onf.BundleTestUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.PortBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
 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.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleAddFlowCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.BundleInnerMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleAddFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleAddGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleRemoveFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleRemoveGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdateFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdateGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdatePortCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleFlowModCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleGroupModCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundleProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.BundlePropertyExperimenter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessage;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -35,6 +52,9 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 public class BundleAddMessageConverterTest {
 
     private final BundleAddMessageConverter converter = new BundleAddMessageConverter();
+    private static final NodeRef NODE_REF = new NodeRef(InstanceIdentifier.create(Nodes.class)
+            .child(Node.class, new NodeKey(new NodeId("openflow:1"))));
+    private static final GroupId GROUP_ID = new GroupId(1L);
 
     @Test
     public void testGetExperimenterId() {
@@ -48,27 +68,75 @@ public class BundleAddMessageConverterTest {
 
     @Test
     public void testConvertWithoutProperty() throws Exception {
-        final boolean withProperty = false;
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessage
-            original = createMessage(withProperty);
-        final BundleAddMessage converted = converter.convert(original);
-        testConvert(original, converted, withProperty);
+        testConvert(false);
     }
 
     @Test
     public void testConvertWithProperty() throws Exception {
-        final boolean withProperty = true;
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessage
-                original = createMessage(withProperty);
-        final BundleAddMessage converted = converter.convert(original);
-        testConvert(original, converted, withProperty);
+        testConvert(true);
     }
 
-    private void testConvert(final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessage original,
-                             final BundleAddMessage converted, final boolean withProperty) {
+    @Test
+    public void testConvertAddFlowCase() throws Exception {
+        testConvert(new BundleAddFlowCaseBuilder().setNode(NODE_REF).build(), BundleFlowModCase.class);
+    }
+
+    @Test
+    public void testConvertUpdateFlowCase() throws Exception {
+        testConvert(new BundleUpdateFlowCaseBuilder().setNode(NODE_REF).build(), BundleFlowModCase.class);
+    }
+
+    @Test
+    public void testConvertRemoveFlowCase() throws Exception {
+        testConvert(new BundleRemoveFlowCaseBuilder().setNode(NODE_REF).build(), BundleFlowModCase.class);
+    }
+
+    @Test
+    public void testConvertAddGroupCase() throws Exception {
+        testConvert(new BundleAddGroupCaseBuilder().setNode(NODE_REF).setGroupId(GROUP_ID).build(), BundleGroupModCase.class);
+    }
+
+    @Test
+    public void testConvertUpdateGroupCase() throws Exception {
+        testConvert(new BundleUpdateGroupCaseBuilder().setNode(NODE_REF).setGroupId(GROUP_ID).build(), BundleGroupModCase.class);
+    }
+
+    @Test
+    public void testConvertRemoveGroupCase() throws Exception {
+        testConvert(new BundleRemoveGroupCaseBuilder().setNode(NODE_REF).setGroupId(GROUP_ID).build(), BundleGroupModCase.class);
+    }
+
+    @Test
+    public void testConvertUpdatePortCase() throws Exception {
+        testConvert(new BundleUpdatePortCaseBuilder()
+                .setNode(NODE_REF)
+                .setPort(new PortBuilder()
+                            .setPort(Collections.singletonList(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder()
+                                    .setConfiguration(Mockito.mock(PortConfig.class))
+                                    .setAdvertisedFeatures(Mockito.mock(PortFeatures.class))
+                                    .setPortNumber(Mockito.mock(PortNumberUni.class))
+                                    .setHardwareAddress(Mockito.mock(MacAddress.class))
+                                    .build()))
+                            .build())
+                .build(), BundlePortModCase.class);
+    }
+
+    private void testConvert(final BundleInnerMessage message, final Class clazz) throws Exception {
+        testConvert(message, clazz, false);
+    }
+
+    private void testConvert(final boolean withProperty) throws Exception {
+        final BundleInnerMessage message = new BundleAddFlowCaseBuilder().setNode(NODE_REF).build();
+        testConvert(message, BundleFlowModCase.class, withProperty);
+    }
+
+    private void testConvert(final BundleInnerMessage message, Class clazz, final boolean withProperty) throws Exception {
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessage
+                original = createMessage(withProperty, message);
+        final BundleAddMessage converted = converter.convert(original);
         Assert.assertEquals("Wrong BundleId", new BundleId(original.getBundleId().getValue()), converted.getBundleId());
         Assert.assertEquals("Wrong flags", new BundleFlags(original.getFlags().isAtomic(), original.getFlags().isOrdered()), converted.getFlags());
-        Assert.assertEquals("Wrong inner message conversion", BundleFlowModCase.class, converted.getBundleInnerMessage().getImplementedInterface());
+        Assert.assertEquals("Wrong inner message conversion", clazz, converted.getBundleInnerMessage().getImplementedInterface());
         if (withProperty) {
             final BundlePropertyExperimenter originalProperty = (BundlePropertyExperimenter) original.getBundleProperty().get(0).getBundlePropertyEntry();
             final BundlePropertyExperimenter convertedProperty = ((BundlePropertyExperimenter) converted.getBundleProperty().get(0).getBundlePropertyEntry());
@@ -81,26 +149,19 @@ public class BundleAddMessageConverterTest {
     }
 
     private static org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessage
-                createMessage(final boolean withProperty) {
+                createMessage(final boolean withProperty, final BundleInnerMessage innerMessage) {
         final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessageBuilder builder
                 = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessageBuilder();
         builder.setBundleId(new BundleId(1L));
         builder.setFlags(new BundleFlags(true, false));
         List<BundleProperty> properties = new ArrayList<>();
         if (withProperty) {
-            properties.add(ConverterTestUtils.createExperimenterProperty());
+            properties.add(BundleTestUtils.createExperimenterProperty(Mockito.mock(BundlePropertyExperimenterData.class)));
         }
         builder.setBundleProperty(properties);
 
-        builder.setBundleInnerMessage(createaddFlowCase());
+        builder.setBundleInnerMessage(innerMessage);
         return builder.build();
     }
 
-    private static BundleAddFlowCase createaddFlowCase() {
-        return new BundleAddFlowCaseBuilder()
-                .setNode(new NodeRef(InstanceIdentifier.create(Nodes.class)
-                        .child(Node.class, new NodeKey(new NodeId("openflow:1")))))
-                .build();
-    }
-
 }
\ No newline at end of file
index 34d8abb1c716f64336df8778a8ddcf030456af69..47d24f5f4e2d461ebdab5f14bf5147fe19458893 100644 (file)
@@ -12,16 +12,15 @@ import java.util.ArrayList;
 import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
-import org.opendaylight.openflowplugin.extension.onf.ConverterTestUtils;
+import org.mockito.Mockito;
+import org.opendaylight.openflowplugin.extension.onf.BundleTestUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleControlType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundlePropertyType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundleProperty;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundlePropertyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.BundlePropertyExperimenter;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.BundlePropertyExperimenterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControl;
 
 /**
@@ -43,16 +42,15 @@ public class BundleControlConverterTest {
 
     @Test
     public void testConvertWithProperty() {
-        final boolean withProperty = true;
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleControl original
-                = createMessage(withProperty);
-        final BundleControl converted = converter.convert(original);
-        testConvert(original, converted, withProperty);
+        testConvert(true);
     }
 
     @Test
     public void testConvertWithoutProperty() {
-        final boolean withProperty = false;
+        testConvert(false);
+    }
+
+    private void testConvert(final boolean withProperty) {
         final org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleControl original
                 = createMessage(withProperty);
         final BundleControl converted = converter.convert(original);
@@ -84,12 +82,10 @@ public class BundleControlConverterTest {
         builder.setFlags(new BundleFlags(true, false));
         List<BundleProperty> properties = new ArrayList<>();
         if (withProperty) {
-            properties.add(ConverterTestUtils.createExperimenterProperty());
+            properties.add(BundleTestUtils.createExperimenterProperty(Mockito.mock(BundlePropertyExperimenterData.class)));
         }
         builder.setBundleProperty(properties);
         return builder.build();
     }
 
-
-
 }
index 52c3780f48ea3aa6a5b8e70624ff0106603d029c..788d5ac6753069a976ac0df61c8c3f89c9276b82 100644 (file)
@@ -33,13 +33,13 @@ public class OnfExperimenterErrorFactoryTest {
 
     @Test
     public void testDeserializeBase() {
-        ByteBuf buffer = ByteBufUtils.buildBuf("ff ff 08 fc 4f 4e 46 00");
+        ByteBuf buffer = ByteBufUtils.buildBuf("ff ff 08 fc 4f 4e 46 00 00 00");
         ErrorMessage builtByFactory = factory.deserialize(buffer);
         Assert.assertEquals("Wrong type", EncodeConstants.EXPERIMENTER_VALUE, builtByFactory.getType().intValue());
         Assert.assertEquals("Wrong type string", "EXPERIMENTER", builtByFactory.getTypeString());
         Assert.assertEquals("Wrong experimenter ID", EncodeConstants.ONF_EXPERIMENTER_ID,
                 builtByFactory.getAugmentation(ExperimenterIdError.class).getExperimenter().getValue().intValue());
-        Assert.assertNull("Data is not null", builtByFactory.getData());
+        Assert.assertNotNull("Data is null", builtByFactory.getData());
     }
 
     @Test
@@ -123,6 +123,11 @@ public class OnfExperimenterErrorFactoryTest {
         builtByFactory = factory.deserialize(buffer);
         Assert.assertEquals("Wrong code", 2315, builtByFactory.getCode().intValue());
         Assert.assertEquals("Wrong code string", "ONFERR_ET_BUNDLE_IN_PROGRESS", builtByFactory.getCodeString());
+
+        buffer = ByteBufUtils.buildBuf("ff ff 09 0c 00 00 00 01");
+        builtByFactory = factory.deserialize(buffer);
+        Assert.assertEquals("Wrong code", 2316, builtByFactory.getCode().intValue());
+        Assert.assertEquals("Wrong code string", "UNKNOWN_CODE", builtByFactory.getCodeString());
     }
 
 }
\ No newline at end of file
index f80fdbace1ff7aa461c539042f3dfe9beeb6b14d..6df8f5ba2d0772b23f39a6eb8a9f98c46fb6d5b9 100644 (file)
@@ -10,67 +10,32 @@ package org.opendaylight.openflowplugin.extension.onf.serializer;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-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.PortConfig;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
+import org.mockito.Mock;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundlePropertyType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundleProperty;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundlePropertyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.BundlePropertyExperimenterBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
 
 /**
  * Test for {@link org.opendaylight.openflowplugin.extension.onf.serializer.AbstractBundleMessageFactory}
  * and util methods.
  */
-public class AbstractBundleMessageFactoryTest {
+public abstract class AbstractBundleMessageFactoryTest {
+
+    @Mock
+    protected SerializerRegistry registry;
+    @Mock
+    protected OFSerializer<BundlePropertyExperimenterData> propertySerializer;
+    @Mock
+    protected BundlePropertyExperimenterData propertyExperimenterData;
 
     @Test
-    public void writeBundleFlags() throws Exception {
+    public void writeBundleFlags() {
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
         AbstractBundleMessageFactory.writeBundleFlags(new BundleFlags(true, true), out);
         Assert.assertEquals("Wrong flags", 3, out.readUnsignedShort());
     }
 
-    public static List<BundleProperty> createListWithBundleExperimenterProperty(BundlePropertyExperimenterData data) {
-        BundlePropertyBuilder propertyBuilder = new BundlePropertyBuilder();
-        propertyBuilder.setType(BundlePropertyType.ONFETBPTEXPERIMENTER);
-        BundlePropertyExperimenterBuilder experimenterPropertyBuilder = new BundlePropertyExperimenterBuilder();
-        experimenterPropertyBuilder.setExperimenter(new ExperimenterId(1L));
-        experimenterPropertyBuilder.setExpType(2L);
-
-        experimenterPropertyBuilder.setBundlePropertyExperimenterData(data);
-        propertyBuilder.setBundlePropertyEntry(experimenterPropertyBuilder.build());
-        return new ArrayList<>(Collections.singleton(propertyBuilder.build()));
-    }
-
-    public static BundlePropertyExperimenterData createBundleExperimenterPropertyData() {
-        return () -> null;
-    }
-
-    public static BundlePortModCase createBundlePortModCase() {
-        BundlePortModCaseBuilder caseBuilder = new BundlePortModCaseBuilder();
-        caseBuilder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
-        caseBuilder.setXid(3L);
-        caseBuilder.setPortNo(new PortNumber(9L));
-        caseBuilder.setHwAddress(new MacAddress("08:00:27:00:B0:EB"));
-        caseBuilder.setConfig(new PortConfig(true, false, true, false));
-        caseBuilder.setMask(new PortConfig(false, true, false, true));
-        caseBuilder.setAdvertise(new PortFeatures(true, false, false, false,
-                                                  false, false, false, true,
-                                                  false, false, false, false,
-                                                  false, false, false, false));
-        return caseBuilder.build();
-    }
 }
\ No newline at end of file
index 5d1508dae20bfb8d8617e9ab2732a7bfdc96936a..0af23ee4afea036401a1574aaa9407df3b2d817b 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.openflowplugin.extension.onf.serializer;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
+import java.util.ArrayList;
+import java.util.Collections;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -18,14 +20,14 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
-import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortMod;
+import org.opendaylight.openflowplugin.extension.onf.BundleTestUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.BundleInnerMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleFlowModCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleGroupModCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessageBuilder;
 
@@ -33,60 +35,74 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
  * Test for {@link org.opendaylight.openflowplugin.extension.onf.serializer.BundleAddMessageFactory}.
  */
 @RunWith(MockitoJUnitRunner.class)
-public class BundleAddMessageFactoryTest {
+public class BundleAddMessageFactoryTest extends AbstractBundleMessageFactoryTest {
 
     private final OFSerializer<BundleAddMessage> factory = new BundleAddMessageFactory();
     @Mock
-    SerializerRegistry registry;
-    @Mock
-    OFSerializer<PortMod> portModSerializer;
-    @Mock
-    OFSerializer<BundlePropertyExperimenterData> propertySerializer;
+    private OFSerializer caseSerializer;
 
     @Test
     public void testSerializeWithoutProperties() {
-        BundleAddMessageBuilder builder = new BundleAddMessageBuilder();
-        builder.setBundleId(new BundleId(1L));
-        builder.setFlags(new BundleFlags(true, false));
+        testSerialize(false);
+    }
 
-        BundleInnerMessage innerMessage = AbstractBundleMessageFactoryTest.createBundlePortModCase();
-        builder.setBundleInnerMessage(innerMessage);
+    @Test
+    public void testSerializeWithExperimenterProperty() {
+        testSerialize(true);
+    }
 
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        Mockito.when(registry.getSerializer(Matchers.any(MessageTypeKey.class))).thenReturn(portModSerializer);
-        ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
-        factory.serialize(builder.build(), out);
+    @Test
+    public void testSerializeFlowModCase() {
+        testSerialize(new BundleFlowModCaseBuilder().build());
+    }
 
-        Assert.assertEquals("Wrong bundle ID", 1L, out.readUnsignedInt());
-        long padding = out.readUnsignedShort();
-        Assert.assertEquals("Wrong flags", 1, out.readUnsignedShort());
-        Mockito.verify(portModSerializer, Mockito.times(1)).serialize((PortMod)innerMessage, out);
+    @Test
+    public void testSerializeGroupModCase() {
+        testSerialize(new BundleGroupModCaseBuilder().build());
     }
 
     @Test
-    public void testSerializeWithExperimenterProperty() {
-        BundleAddMessageBuilder builder = new BundleAddMessageBuilder();
-        builder.setBundleId(new BundleId(2L));
+    public void testSerializePortModCase() {
+        testSerialize(new BundlePortModCaseBuilder().build());
+    }
+
+    private void testSerialize(final BundleInnerMessage innerMessage) {
+        testSerialize(false, innerMessage);
+    }
+
+    private void testSerialize(final boolean withProperty) {
+        testSerialize(withProperty, new BundleFlowModCaseBuilder().build());
+    }
+
+    private void testSerialize(final boolean withProperty, final BundleInnerMessage innerMessage) {
+        final BundleAddMessageBuilder builder = new BundleAddMessageBuilder();
+        builder.setBundleId(new BundleId(1L));
         builder.setFlags(new BundleFlags(true, false));
 
-        BundleInnerMessage innerMessage = AbstractBundleMessageFactoryTest.createBundlePortModCase();
         builder.setBundleInnerMessage(innerMessage);
 
-        BundlePropertyExperimenterData data = AbstractBundleMessageFactoryTest.createBundleExperimenterPropertyData();
-        builder.setBundleProperty(AbstractBundleMessageFactoryTest.createListWithBundleExperimenterProperty(data));
+        if (withProperty) {
+            builder.setBundleProperty(new ArrayList<>(Collections.singleton(
+                    BundleTestUtils.createExperimenterProperty(propertyExperimenterData))));
+            Mockito.when(registry.getSerializer(Matchers.any()))
+                    .thenReturn(caseSerializer)
+                    .thenReturn(propertySerializer);
+        } else {
+            Mockito.when(registry.getSerializer(Matchers.any())).thenReturn(caseSerializer);
+        }
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        Mockito.when(registry.getSerializer(Matchers.any(MessageTypeKey.class)))
-                .thenReturn(portModSerializer)
-                .thenReturn(propertySerializer);
         ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
         factory.serialize(builder.build(), out);
 
-        Assert.assertEquals("Wrong bundle ID", 2L, out.readUnsignedInt());
+        Assert.assertEquals("Wrong bundle ID", 1L, out.readUnsignedInt());
         long padding = out.readUnsignedShort();
         Assert.assertEquals("Wrong flags", 1, out.readUnsignedShort());
-        Mockito.verify(portModSerializer, Mockito.times(1)).serialize((PortMod)innerMessage, out);
-        Mockito.verify(propertySerializer, Mockito.times(1)).serialize(data, out);
+        Mockito.verify(caseSerializer).serialize(innerMessage, out);
+
+        if (withProperty) {
+            Mockito.verify(propertySerializer).serialize(propertyExperimenterData, out);
+        }
     }
 
 }
\ No newline at end of file
index 7a710683aa786ecb38a4b787ffbca18e3f194ca7..f7a22db8582213f38279fc062d8b8131bdbb640b 100644 (file)
@@ -10,22 +10,22 @@ package org.opendaylight.openflowplugin.extension.onf.serializer;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
+import java.util.ArrayList;
+import java.util.Collections;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Matchers;
-import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
+import org.opendaylight.openflowplugin.extension.onf.BundleTestUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleControlType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundlePropertyType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.property.grouping.bundle.property.entry.bundle.property.experimenter.BundlePropertyExperimenterData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControlBuilder;
 
@@ -33,53 +33,49 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
  * Test for {@link org.opendaylight.openflowplugin.extension.onf.serializer.BundleControlFactory}.
  */
 @RunWith(MockitoJUnitRunner.class)
-public class BundleControlFactoryTest {
+public class BundleControlFactoryTest extends AbstractBundleMessageFactoryTest {
 
     private final OFSerializer<BundleControl> factory = new BundleControlFactory();
-    @Mock
-    SerializerRegistry registry;
-    @Mock
-    OFSerializer<BundlePropertyExperimenterData> serializer;
 
     @Test
     public void testSerializeWithoutProperties() {
-        BundleControlBuilder builder = new BundleControlBuilder();
+        testSerialize(false);
+    }
+
+    @Test
+    public void testSerializeWithExperimenterProperty() {
+        testSerialize(true);
+    }
+
+    private void testSerialize(final boolean withProperty) {
+        final BundleControlBuilder builder = new BundleControlBuilder();
         builder.setBundleId(new BundleId(1L));
         builder.setType(BundleControlType.ONFBCTOPENREQUEST);
         builder.setFlags(new BundleFlags(true, true));
 
+        if (withProperty) {
+            builder.setBundleProperty((new ArrayList<>(Collections.singleton(
+                    BundleTestUtils.createExperimenterProperty(propertyExperimenterData)))));
+            Mockito.when(registry.getSerializer(Matchers.any(MessageTypeKey.class))).thenReturn(propertySerializer);
+            ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
+        }
+
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
         factory.serialize(builder.build(), out);
 
         Assert.assertEquals("Wrong bundle ID", 1L, out.readUnsignedInt());
         Assert.assertEquals("Wrong type", BundleControlType.ONFBCTOPENREQUEST.getIntValue(), out.readUnsignedShort());
         Assert.assertEquals("Wrong flags", 3, out.readUnsignedShort());
-        Assert.assertTrue("Unexpected data", out.readableBytes() == 0);
-    }
-
-    @Test
-    public void testSerializeWithExperimenterProperty() {
-        BundleControlBuilder builder = new BundleControlBuilder();
-        builder.setBundleId(new BundleId(3L));
-        builder.setType(BundleControlType.ONFBCTCOMMITREQUEST);
-        builder.setFlags(new BundleFlags(false, true));
-
-        BundlePropertyExperimenterData data = AbstractBundleMessageFactoryTest.createBundleExperimenterPropertyData();
-        builder.setBundleProperty(AbstractBundleMessageFactoryTest.createListWithBundleExperimenterProperty(data));
-
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        Mockito.when(registry.getSerializer(Matchers.any(MessageTypeKey.class))).thenReturn(serializer);
-        ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
-        factory.serialize(builder.build(), out);
+        if (withProperty) {
+            Assert.assertEquals("Wrong property type", BundlePropertyType.ONFETBPTEXPERIMENTER.getIntValue(), out.readUnsignedShort());
+            int length = out.readUnsignedShort();
+            Assert.assertEquals("Wrong experimenter ID", 1, out.readUnsignedInt());
+            Assert.assertEquals("Wrong experimenter type", 2, out.readUnsignedInt());
+            Mockito.verify(propertySerializer, Mockito.times(1)).serialize(propertyExperimenterData, out);
 
-        Assert.assertEquals("Wrong bundle ID", 3L, out.readUnsignedInt());
-        Assert.assertEquals("Wrong type", BundleControlType.ONFBCTCOMMITREQUEST.getIntValue(), out.readUnsignedShort());
-        Assert.assertEquals("Wrong flags", 2, out.readUnsignedShort());
-        Assert.assertEquals("Wrong property type", BundlePropertyType.ONFETBPTEXPERIMENTER.getIntValue(), out.readUnsignedShort());
-        int length = out.readUnsignedShort();
-        Assert.assertEquals("Wrong experimenter ID", 1, out.readUnsignedInt());
-        Assert.assertEquals("Wrong experimenter type", 2, out.readUnsignedInt());
-        Mockito.verify(serializer, Mockito.times(1)).serialize(data, out);
+        } else {
+            Assert.assertTrue("Unexpected data", out.readableBytes() == 0);
+        }
     }
 
 }
\ No newline at end of file
index 5bd62dcf79fa18f049f1913bda5020e95674b5e1..6ccdd1eac810d2dc3eddcc3a5525219ebc26341f 100644 (file)
@@ -8,18 +8,44 @@
 
 package org.opendaylight.openflowplugin.extension.onf.service;
 
+import com.google.common.util.concurrent.SettableFuture;
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.experimenter.message.service.rev151020.SalExperimenterMessageService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.experimenter.message.service.rev151020.SendExperimenterInputBuilder;
+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.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.AddBundleMessagesInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.AddBundleMessagesInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.ControlBundleInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.ControlBundleInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.SalBundleService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.add.bundle.messages.input.Messages;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.add.bundle.messages.input.MessagesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleAddFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleAddGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleRemoveFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleRemoveGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdateFlowCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdateGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.bundle.inner.message.grouping.bundle.inner.message.BundleUpdatePortCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleAddMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.bundle.service.rev170124.send.experimenter.input.experimenter.message.of.choice.BundleControlBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleControlType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.common.grouping.BundleProperty;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
  * Test for {@link org.opendaylight.openflowplugin.extension.onf.service.SalBundleServiceImpl}.
@@ -27,9 +53,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.on
 @RunWith(MockitoJUnitRunner.class)
 public class SalBundleServiceImplTest {
 
+    private static final NodeRef NODE_REF = new NodeRef(InstanceIdentifier.create(Nodes.class)
+            .child(Node.class, new NodeKey(new NodeId("openflow:1"))));
+    private static final BundleId BUNDLE_ID = new BundleId(1L);
+    private static final BundleFlags BUNDLE_FLAGS = new BundleFlags(true, false);
+
     private SalBundleService service;
     @Mock
     private SalExperimenterMessageService experimenterMessageService;
+    @Mock
+    private List<BundleProperty> properties;
 
     @Before
     public void setUp() {
@@ -38,16 +71,55 @@ public class SalBundleServiceImplTest {
 
     @Test
     public void testControlBundle() {
-        final ControlBundleInput input = new ControlBundleInputBuilder().build();
-        final SendExperimenterInputBuilder experimenterInput = new SendExperimenterInputBuilder();
-        experimenterInput.setExperimenterMessageOfChoice(new BundleControlBuilder(input).build());
+        final ControlBundleInput input = new ControlBundleInputBuilder()
+                .setNode(NODE_REF)
+                .setBundleId(BUNDLE_ID)
+                .setFlags(BUNDLE_FLAGS)
+                .setType(BundleControlType.ONFBCTOPENREQUEST)
+                .setBundleProperty(properties)
+                .build();
+        final SendExperimenterInputBuilder experimenterBuilder = new SendExperimenterInputBuilder();
+        experimenterBuilder.setNode(NODE_REF);
+        experimenterBuilder.setExperimenterMessageOfChoice(new BundleControlBuilder(input).build());
         service.controlBundle(input);
-        Mockito.verify(experimenterMessageService).sendExperimenter(experimenterInput.build());
+        Mockito.verify(experimenterMessageService).sendExperimenter(experimenterBuilder.build());
     }
 
     @Test
-    public void testAddBundleMessages() {
-        // TODO
+    public void testAddBundleMessages() throws Exception {
+        final List<Messages> innerMessages = createMessages();
+        final AddBundleMessagesInput input = new AddBundleMessagesInputBuilder()
+                .setNode(NODE_REF)
+                .setBundleId(BUNDLE_ID)
+                .setFlags(BUNDLE_FLAGS)
+                .setBundleProperty(properties)
+                .setMessages(innerMessages)
+                .build();
+        final BundleAddMessageBuilder addMessageBuilder = new BundleAddMessageBuilder()
+                .setBundleId(BUNDLE_ID)
+                .setFlags(BUNDLE_FLAGS)
+                .setBundleProperty(properties);
+        final SendExperimenterInputBuilder experimenterBuilder = new SendExperimenterInputBuilder()
+                .setNode(NODE_REF);
+        Mockito.when(experimenterMessageService.sendExperimenter(Matchers.any())).thenReturn(SettableFuture.create());
+        service.addBundleMessages(input);
+        for (Messages msg : innerMessages) {
+            Mockito.verify(experimenterMessageService).sendExperimenter(experimenterBuilder.setExperimenterMessageOfChoice(
+                    addMessageBuilder.setBundleInnerMessage(msg.getBundleInnerMessage()).build()
+            ).build());
+        }
+    }
+
+    private static List<Messages> createMessages() {
+        List<Messages> messages  = new ArrayList<>();
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleAddFlowCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleUpdateFlowCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleRemoveFlowCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleAddGroupCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleUpdateGroupCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleRemoveGroupCaseBuilder().build()).build());
+        messages.add(new MessagesBuilder().setBundleInnerMessage(new BundleUpdatePortCaseBuilder().build()).build());
+        return messages;
     }
 
 }
\ No newline at end of file