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);
+ }
+ }
+}