/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * 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.direct; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetNodeConnectorStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.OpendaylightDirectStatisticsService; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; @RunWith(MockitoJUnitRunner.class) public class OpendaylightDirectStatisticsServiceImplTest { @Mock AbstractFlowDirectStatisticsService flowDirectStatisticsService; @Mock AbstractGroupDirectStatisticsService groupDirectStatisticsService; @Mock AbstractMeterDirectStatisticsService meterDirectStatisticsService; @Mock AbstractPortDirectStatisticsService nodeConnectorDirectStatisticsService; @Mock AbstractQueueDirectStatisticsService queueDirectStatisticsService; @Mock GetGroupStatisticsInput getGroupStatisticsInput; @Mock GetQueueStatisticsInput getQueueStatisticsInput; @Mock GetFlowStatisticsInput getFlowStatisticsInput; @Mock GetMeterStatisticsInput getMeterStatisticsInput; @Mock GetNodeConnectorStatisticsInput getNodeConnectorStatisticsInput; private OpendaylightDirectStatisticsService service; private OpendaylightDirectStatisticsService emptyService; @Before public void setUp() throws Exception { final OpendaylightDirectStatisticsServiceProvider provider = new OpendaylightDirectStatisticsServiceProvider(); provider.register(AbstractFlowDirectStatisticsService.class, flowDirectStatisticsService); provider.register(AbstractGroupDirectStatisticsService.class, groupDirectStatisticsService); provider.register(AbstractMeterDirectStatisticsService.class, meterDirectStatisticsService); provider.register(AbstractPortDirectStatisticsService.class, nodeConnectorDirectStatisticsService); provider.register(AbstractQueueDirectStatisticsService.class, queueDirectStatisticsService); service = new OpendaylightDirectStatisticsServiceImpl(provider); emptyService = new OpendaylightDirectStatisticsServiceImpl(new OpendaylightDirectStatisticsServiceProvider()); } @Test public void testGetGroupStatistics() throws Exception { service.getGroupStatistics(getGroupStatisticsInput); verify(groupDirectStatisticsService).handleAndReply(getGroupStatisticsInput); } @Test public void testGetGroupStatisticsFail() throws Exception { RpcResult<GetGroupStatisticsOutput> result = emptyService .getGroupStatistics(getGroupStatisticsInput) .get(); assertFalse(result.isSuccessful()); for (RpcError error : result.getErrors()) { assertTrue(error.getMessage().contains(AbstractGroupDirectStatisticsService.class.getSimpleName())); } verify(groupDirectStatisticsService, times(0)).handleAndReply(getGroupStatisticsInput); } @Test public void testGetQueueStatistics() throws Exception { service.getQueueStatistics(getQueueStatisticsInput); verify(queueDirectStatisticsService).handleAndReply(getQueueStatisticsInput); } @Test public void testGetQueueStatisticsFail() throws Exception { RpcResult<GetQueueStatisticsOutput> result = emptyService .getQueueStatistics(getQueueStatisticsInput) .get(); assertFalse(result.isSuccessful()); for (RpcError error : result.getErrors()) { assertTrue(error.getMessage().contains(AbstractQueueDirectStatisticsService.class.getSimpleName())); } verify(queueDirectStatisticsService, times(0)).handleAndReply(getQueueStatisticsInput); } @Test public void testGetFlowStatistics() throws Exception { service.getFlowStatistics(getFlowStatisticsInput); verify(flowDirectStatisticsService).handleAndReply(getFlowStatisticsInput); } @Test public void testGetFlowStatisticsFail() throws Exception { RpcResult<GetFlowStatisticsOutput> result = emptyService .getFlowStatistics(getFlowStatisticsInput) .get(); assertFalse(result.isSuccessful()); for (RpcError error : result.getErrors()) { assertTrue(error.getMessage().contains(AbstractFlowDirectStatisticsService.class.getSimpleName())); } verify(flowDirectStatisticsService, times(0)).handleAndReply(getFlowStatisticsInput); } @Test public void testGetMeterStatistics() throws Exception { service.getMeterStatistics(getMeterStatisticsInput); verify(meterDirectStatisticsService).handleAndReply(getMeterStatisticsInput); } @Test public void testGetMeterStatisticsFail() throws Exception { RpcResult<GetMeterStatisticsOutput> result = emptyService .getMeterStatistics(getMeterStatisticsInput) .get(); assertFalse(result.isSuccessful()); for (RpcError error : result.getErrors()) { assertTrue(error.getMessage().contains(AbstractMeterDirectStatisticsService.class.getSimpleName())); } verify(meterDirectStatisticsService, times(0)).handleAndReply(getMeterStatisticsInput); } @Test public void testGetNodeConnectorStatistics() throws Exception { service.getNodeConnectorStatistics(getNodeConnectorStatisticsInput); verify(nodeConnectorDirectStatisticsService).handleAndReply(getNodeConnectorStatisticsInput); } @Test public void testGetNodeConnectorStatisticsFail() throws Exception { RpcResult<GetNodeConnectorStatisticsOutput> result = emptyService .getNodeConnectorStatistics(getNodeConnectorStatisticsInput) .get(); assertFalse(result.isSuccessful()); for (RpcError error : result.getErrors()) { assertTrue(error.getMessage().contains(AbstractPortDirectStatisticsService.class.getSimpleName())); } verify(nodeConnectorDirectStatisticsService, times(0)).handleAndReply(getNodeConnectorStatisticsInput); } }