OPNFLWPLUG-1032: Neon-MRI: Bump odlparent, yangtools, mdsal
[openflowplugin.git] / extension / openflowplugin-extension-onf / src / test / java / org / opendaylight / openflowplugin / extension / onf / serializer / BundleControlFactoryTest.java
index 7a710683aa786ecb38a4b787ffbca18e3f194ca7..15210b600bad5dd040467147fbf99a27d08433db 100644 (file)
@@ -8,78 +8,75 @@
 
 package org.opendaylight.openflowplugin.extension.onf.serializer;
 
+import static org.mockito.ArgumentMatchers.any;
+
 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;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControlOnf;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleControlOnfBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.bundle.control.onf.OnfControlGroupingDataBuilder;
 
 /**
  * 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;
+    private final OFSerializer<BundleControlOnf> factory = new BundleControlFactory();
 
     @Test
     public void testSerializeWithoutProperties() {
-        BundleControlBuilder builder = new BundleControlBuilder();
-        builder.setBundleId(new BundleId(1L));
-        builder.setType(BundleControlType.ONFBCTOPENREQUEST);
-        builder.setFlags(new BundleFlags(true, true));
-
-        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);
+        testSerialize(false);
     }
 
     @Test
     public void testSerializeWithExperimenterProperty() {
-        BundleControlBuilder builder = new BundleControlBuilder();
-        builder.setBundleId(new BundleId(3L));
-        builder.setType(BundleControlType.ONFBCTCOMMITREQUEST);
-        builder.setFlags(new BundleFlags(false, true));
+        testSerialize(true);
+    }
+
+    private void testSerialize(final boolean withProperty) {
+        final OnfControlGroupingDataBuilder dataBuilder = new OnfControlGroupingDataBuilder();
+        dataBuilder.setBundleId(new BundleId(1L));
+        dataBuilder.setType(BundleControlType.ONFBCTOPENREQUEST);
+        dataBuilder.setFlags(new BundleFlags(true, true));
 
-        BundlePropertyExperimenterData data = AbstractBundleMessageFactoryTest.createBundleExperimenterPropertyData();
-        builder.setBundleProperty(AbstractBundleMessageFactoryTest.createListWithBundleExperimenterProperty(data));
+        if (withProperty) {
+            dataBuilder.setBundleProperty(new ArrayList<>(Collections.singleton(
+                    BundleTestUtils.createExperimenterProperty(propertyExperimenterData))));
+            Mockito.when(registry.getSerializer(any())).thenReturn(propertySerializer);
+            ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
+        }
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        Mockito.when(registry.getSerializer(Matchers.any(MessageTypeKey.class))).thenReturn(serializer);
-        ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
-        factory.serialize(builder.build(), out);
+        factory.serialize(new BundleControlOnfBuilder().setOnfControlGroupingData(dataBuilder.build()).build(), 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);
-    }
+        Assert.assertEquals("Wrong bundle ID", 1L, out.readUnsignedInt());
+        Assert.assertEquals("Wrong type", BundleControlType.ONFBCTOPENREQUEST.getIntValue(), out.readUnsignedShort());
+        Assert.assertEquals("Wrong flags", 3, out.readUnsignedShort());
+        if (withProperty) {
+            Assert.assertEquals("Wrong property type", BundlePropertyType.ONFETBPTEXPERIMENTER.getIntValue(),
+                    out.readUnsignedShort());
+            out.readUnsignedShort(); // length
+            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);
 
-}
\ No newline at end of file
+        } else {
+            Assert.assertTrue("Unexpected data", out.readableBytes() == 0);
+        }
+    }
+}