2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.extension.onf.serializer;
11 import static org.mockito.ArgumentMatchers.any;
13 import io.netty.buffer.ByteBuf;
14 import io.netty.buffer.UnpooledByteBufAllocator;
15 import java.util.ArrayList;
16 import java.util.Collections;
17 import org.junit.Assert;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.Mock;
21 import org.mockito.Mockito;
22 import org.mockito.runners.MockitoJUnitRunner;
23 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
24 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
25 import org.opendaylight.openflowplugin.extension.onf.BundleTestUtils;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleFlags;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.BundleId;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.BundleInnerMessage;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleFlowModCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundleGroupModCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.bundle.add.message.grouping.bundle.inner.message.BundlePortModCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessageOnf;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.BundleAddMessageOnfBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.onf.rev170124.experimenter.input.experimenter.data.of.choice.bundle.add.message.onf.OnfAddMessageGroupingDataBuilder;
37 * Test for {@link org.opendaylight.openflowplugin.extension.onf.serializer.BundleAddMessageFactory}.
39 @RunWith(MockitoJUnitRunner.class)
40 public class BundleAddMessageFactoryTest extends AbstractBundleMessageFactoryTest {
42 private final OFSerializer<BundleAddMessageOnf> factory = new BundleAddMessageFactory();
44 private OFSerializer<BundleInnerMessage> caseSerializer;
47 public void testSerializeWithoutProperties() {
52 public void testSerializeWithExperimenterProperty() {
57 public void testSerializeFlowModCase() {
58 testSerialize(new BundleFlowModCaseBuilder().build());
62 public void testSerializeGroupModCase() {
63 testSerialize(new BundleGroupModCaseBuilder().build());
67 public void testSerializePortModCase() {
68 testSerialize(new BundlePortModCaseBuilder().build());
71 private void testSerialize(final BundleInnerMessage innerMessage) {
72 testSerialize(false, innerMessage);
75 private void testSerialize(final boolean withProperty) {
76 testSerialize(withProperty, new BundleFlowModCaseBuilder().build());
79 private void testSerialize(final boolean withProperty, final BundleInnerMessage innerMessage) {
80 final BundleAddMessageOnfBuilder builder = new BundleAddMessageOnfBuilder();
81 final OnfAddMessageGroupingDataBuilder dataBuilder = new OnfAddMessageGroupingDataBuilder();
82 dataBuilder.setBundleId(new BundleId(1L));
83 dataBuilder.setFlags(new BundleFlags(true, false));
85 dataBuilder.setBundleInnerMessage(innerMessage);
88 dataBuilder.setBundleProperty(new ArrayList<>(Collections.singleton(
89 BundleTestUtils.createExperimenterProperty(propertyExperimenterData))));
90 Mockito.when(registry.getSerializer(any()))
91 .thenReturn(caseSerializer)
92 .thenReturn(propertySerializer);
94 Mockito.when(registry.getSerializer(any())).thenReturn(caseSerializer);
97 builder.setOnfAddMessageGroupingData(dataBuilder.build());
99 ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
100 ((SerializerRegistryInjector) factory).injectSerializerRegistry(registry);
101 factory.serialize(builder.build(), out);
103 Assert.assertEquals("Wrong bundle ID", 1L, out.readUnsignedInt());
104 long padding = out.readUnsignedShort();
105 Assert.assertEquals("Wrong flags", 1, out.readUnsignedShort());
106 Mockito.verify(caseSerializer).serialize(any(), any());
109 Mockito.verify(propertySerializer).serialize(propertyExperimenterData, out);