Remove unused routedRpcRegistration
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / statistics / services / OpendaylightGroupStatisticsServiceImplTest.java
index 0102ad7e1dabe9f2118a1cdc0317dbe604e50c90..0d61ba0d01732e663eb9e5790285279c65ccd94f 100644 (file)
@@ -5,19 +5,25 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.statistics.services;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+
 import com.google.common.util.concurrent.FutureCallback;
+import java.util.Collections;
 import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicLong;
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
 import org.mockito.Captor;
-import org.mockito.Matchers;
 import org.mockito.Mockito;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManagerFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInputBuilder;
@@ -27,59 +33,98 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ActionType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupCapabilities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsListBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupDescCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupFeaturesCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.MultipartReplyGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.group.stats.BucketStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc._case.MultipartReplyGroupDescBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.desc._case.multipart.reply.group.desc.GroupDescBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group.features._case.MultipartReplyGroupFeaturesBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
 
 /**
- * Test for {@link OpendaylightGroupStatisticsServiceImpl}
+ * Test for {@link OpendaylightGroupStatisticsServiceImpl}.
  */
-public class OpendaylightGroupStatisticsServiceImplTest extends AbstractStatsServiceTest {
+public class OpendaylightGroupStatisticsServiceImplTest extends AbstractSingleStatsServiceTest {
 
+    private static final org.opendaylight.yang.gen.v1.urn
+            .opendaylight.openflow.common.types.rev130731.GroupId GROUP_ID = new org.opendaylight.yang.gen.v1.urn
+                .opendaylight.openflow.common.types.rev130731.GroupId(Uint32.valueOf(123));
     @Captor
     private ArgumentCaptor<MultipartRequestInput> requestInput;
 
-    private RequestContext<Object> rqContext;
-
     private OpendaylightGroupStatisticsServiceImpl groupStatisticsService;
 
+    @Override
     public void setUp() {
-        groupStatisticsService = new OpendaylightGroupStatisticsServiceImpl(rqContextStack, deviceContext);
-
-        rqContext = new AbstractRequestContext<Object>(42L) {
-            @Override
-            public void close() {
-                //NOOP
-            }
-        };
-        Mockito.when(rqContextStack.<Object>createRequestContext()).thenReturn(rqContext);
+        final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();
+        groupStatisticsService = new OpendaylightGroupStatisticsServiceImpl(rqContextStack, deviceContext,
+                new AtomicLong(), notificationPublishService, convertorManager);
+
+        Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider)
+                .commitEntry(eq(Uint32.valueOf(42)), requestInput.capture(), any(FutureCallback.class));
+    }
+
+    @After
+    public void tearDown() {
+        Mockito.verify(notificationPublishService).offerNotification(ArgumentMatchers.any());
     }
 
     @Test
     public void testGetAllGroupStatistics() throws Exception {
-        Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider)
-                .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class));
-
         GetAllGroupStatisticsInputBuilder input = new GetAllGroupStatisticsInputBuilder()
                 .setNode(createNodeRef("unitProt:123"));
 
+        rpcResult = buildGroupStatsResponse();
+
         final Future<RpcResult<GetAllGroupStatisticsOutput>> resultFuture
                 = groupStatisticsService.getAllGroupStatistics(input.build());
 
         Assert.assertTrue(resultFuture.isDone());
-        final RpcResult<GetAllGroupStatisticsOutput> rpcResult = resultFuture.get();
-        Assert.assertTrue(rpcResult.isSuccessful());
+        final RpcResult<GetAllGroupStatisticsOutput> rpcResultCompatible = resultFuture.get();
+        Assert.assertTrue(rpcResultCompatible.isSuccessful());
         Assert.assertEquals(MultipartType.OFPMPGROUP, requestInput.getValue().getType());
     }
 
     @Test
     public void testGetGroupDescription() throws Exception {
-        Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider)
-                .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class));
-
         GetGroupDescriptionInputBuilder input = new GetGroupDescriptionInputBuilder()
                 .setNode(createNodeRef("unitProt:123"));
 
+        rpcResult = RpcResultBuilder.<Object>success(Collections.singletonList(
+                new MultipartReplyMessageBuilder()
+                        .setVersion(EncodeConstants.OF_VERSION_1_3)
+                        .setMultipartReplyBody(new MultipartReplyGroupDescCaseBuilder()
+                                .setMultipartReplyGroupDesc(new MultipartReplyGroupDescBuilder()
+                                        .setGroupDesc(Collections.singletonList(new GroupDescBuilder()
+                                                .setGroupId(GROUP_ID)
+                                                .setBucketsList(Collections.singletonList(new BucketsListBuilder()
+                                                        .setWatchGroup(Uint32.valueOf(51))
+                                                        .setWatchPort(new PortNumber(Uint32.valueOf(52)))
+                                                        .setWeight(Uint16.valueOf(53))
+                                                        .build()))
+                                                .setType(GroupType.OFPGTALL)
+                                                .build()))
+                                        .build())
+                                .build())
+                        .build()
+        )).build();
+
         final Future<RpcResult<GetGroupDescriptionOutput>> resultFuture
                 = groupStatisticsService.getGroupDescription(input.build());
 
@@ -91,12 +136,25 @@ public class OpendaylightGroupStatisticsServiceImplTest extends AbstractStatsSer
 
     @Test
     public void testGetGroupFeatures() throws Exception {
-        Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider)
-                .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class));
-
         GetGroupFeaturesInputBuilder input = new GetGroupFeaturesInputBuilder()
                 .setNode(createNodeRef("unitProt:123"));
 
+        rpcResult = RpcResultBuilder.<Object>success(Collections.singletonList(
+                new MultipartReplyMessageBuilder()
+                        .setVersion(EncodeConstants.OF_VERSION_1_3)
+                        .setMultipartReplyBody(new MultipartReplyGroupFeaturesCaseBuilder()
+                                .setMultipartReplyGroupFeatures(new MultipartReplyGroupFeaturesBuilder()
+                                        .setActionsBitmap(Collections.singletonList(new ActionType(true,
+                                                false, false, false, false, false, false, false, false, false, false,
+                                                false, false, false, false, false, false)))
+                                        .setCapabilities(new GroupCapabilities(true, false, false, false))
+                                        .setTypes(new GroupTypes(true, false, false, false))
+                                        .setMaxGroups(Collections.singletonList(Uint32.valueOf(5L)))
+                                        .build())
+                                .build())
+                        .build()
+        )).build();
+
         final Future<RpcResult<GetGroupFeaturesOutput>> resultFuture
                 = groupStatisticsService.getGroupFeatures(input.build());
 
@@ -108,12 +166,11 @@ public class OpendaylightGroupStatisticsServiceImplTest extends AbstractStatsSer
 
     @Test
     public void testGetGroupStatistics() throws Exception {
-        Mockito.doAnswer(answerVoidToCallback).when(outboundQueueProvider)
-                .commitEntry(Matchers.eq(42L), requestInput.capture(), Matchers.any(FutureCallback.class));
-
         GetGroupStatisticsInputBuilder input = new GetGroupStatisticsInputBuilder()
                 .setNode(createNodeRef("unitProt:123"))
-                .setGroupId(new GroupId(21L));
+                .setGroupId(new GroupId(Uint32.valueOf(21)));
+
+        rpcResult = buildGroupStatsResponse();
 
         final Future<RpcResult<GetGroupStatisticsOutput>> resultFuture
                 = groupStatisticsService.getGroupStatistics(input.build());
@@ -123,4 +180,28 @@ public class OpendaylightGroupStatisticsServiceImplTest extends AbstractStatsSer
         Assert.assertTrue(rpcResult.isSuccessful());
         Assert.assertEquals(MultipartType.OFPMPGROUP, requestInput.getValue().getType());
     }
+
+    private static RpcResult<Object> buildGroupStatsResponse() {
+        return RpcResultBuilder.<Object>success(Collections.singletonList(
+                new MultipartReplyMessageBuilder()
+                        .setVersion(EncodeConstants.OF_VERSION_1_3)
+                        .setMultipartReplyBody(new MultipartReplyGroupCaseBuilder()
+                                .setMultipartReplyGroup(new MultipartReplyGroupBuilder()
+                                        .setGroupStats(Collections.singletonList(new GroupStatsBuilder()
+                                                .setByteCount(Uint64.valueOf(21))
+                                                .setPacketCount(Uint64.valueOf(22))
+                                                .setRefCount(Uint32.valueOf(23))
+                                                .setDurationSec(Uint32.valueOf(24))
+                                                .setDurationNsec(Uint32.valueOf(25))
+                                                .setGroupId(GROUP_ID)
+                                                .setBucketStats(Collections.singletonList(new BucketStatsBuilder()
+                                                        .setByteCount(Uint64.valueOf(26))
+                                                        .setPacketCount(Uint64.valueOf(27))
+                                                        .build()))
+                                                .build()))
+                                        .build())
+                                .build())
+                        .build()
+        )).build();
+    }
 }
\ No newline at end of file