/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.qpid.jms.provider; import static org.junit.Assert.assertSame; import static org.junit.Assert.fail; import java.io.IOException; import java.net.URI; import org.apache.qpid.jms.message.JmsInboundMessageDispatch; import org.apache.qpid.jms.message.JmsOutboundMessageDispatch; import org.apache.qpid.jms.meta.JmsConnectionId; import org.apache.qpid.jms.meta.JmsConnectionInfo; import org.apache.qpid.jms.meta.JmsConsumerId; import org.apache.qpid.jms.meta.JmsSessionId; import org.apache.qpid.jms.meta.JmsSessionInfo; import org.apache.qpid.jms.meta.JmsTransactionId; import org.apache.qpid.jms.meta.JmsTransactionInfo; import org.apache.qpid.jms.provider.ProviderConstants.ACK_TYPE; import org.apache.qpid.jms.test.QpidJmsTestCase; import org.junit.Test; import org.mockito.Mockito; public class ProviderWrapperTest extends QpidJmsTestCase{ @Test public void testGetMessageFactory() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.getMessageFactory(); Mockito.verify(mockProvider).getMessageFactory(); } @Test public void testGetNext() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); assertSame(mockProvider, wrapper.getNext()); } @Test public void testAcknowledgeMessage() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); JmsInboundMessageDispatch inbound = Mockito.mock(JmsInboundMessageDispatch.class); AsyncResult result = Mockito.mock(AsyncResult.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.acknowledge(inbound, ACK_TYPE.ACCEPTED, result); Mockito.verify(mockProvider).acknowledge(inbound, ACK_TYPE.ACCEPTED, result); } @Test public void testAcknowledgeSession() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.acknowledge(sessionId, ACK_TYPE.ACCEPTED, result); Mockito.verify(mockProvider).acknowledge(sessionId, ACK_TYPE.ACCEPTED, result); } @Test public void testRecover() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.recover(sessionId, result); Mockito.verify(mockProvider).recover(sessionId, result); } @Test public void testStart() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); try { wrapper.start(); fail("should have thrown exception due to no listener"); } catch (IllegalStateException ise) { } ProviderListener listener = Mockito.mock(ProviderListener.class); wrapper.setProviderListener(listener); wrapper.start(); assertSame(listener, wrapper.getProviderListener()); Mockito.verify(mockProvider).start(); } @Test public void testClose() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.close(); Mockito.verify(mockProvider).close(); } @Test public void testConnect() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); JmsConnectionId id = new JmsConnectionId("ID:1"); JmsConnectionInfo connectionInfo = new JmsConnectionInfo(id); wrapper.connect(connectionInfo); Mockito.verify(mockProvider).connect(connectionInfo); } @Test public void testGetRemoteURI() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.getRemoteURI(); Mockito.verify(mockProvider).getRemoteURI(); } @Test public void testCreate() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsSessionInfo session = new JmsSessionInfo(sessionId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.create(session, result); Mockito.verify(mockProvider).create(session, result); } @Test public void testStartResource() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsSessionInfo session = new JmsSessionInfo(sessionId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.start(session, result); Mockito.verify(mockProvider).start(session, result); } @Test public void testStopResource() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsSessionInfo session = new JmsSessionInfo(sessionId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.stop(session, result); Mockito.verify(mockProvider).stop(session, result); } @Test public void testDestroy() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsSessionInfo session = new JmsSessionInfo(sessionId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.destroy(session, result); Mockito.verify(mockProvider).destroy(session, result); } @Test public void testSend() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class); AsyncResult result = Mockito.mock(AsyncResult.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.send(envelope, result); Mockito.verify(mockProvider).send(envelope, result); } @Test public void testUnsubscribe() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); String subscriptionName = "subName"; ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.unsubscribe(subscriptionName, result); Mockito.verify(mockProvider).unsubscribe(subscriptionName, result); } @Test public void testCommit() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsConnectionId connectionId = new JmsConnectionId("ID"); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsTransactionId txId = new JmsTransactionId(connectionId, 1); JmsTransactionInfo txInfo = new JmsTransactionInfo(sessionId, txId); JmsTransactionId nextTxId = new JmsTransactionId(connectionId, 2); JmsTransactionInfo nextTxInfo = new JmsTransactionInfo(sessionId, nextTxId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.commit(txInfo, nextTxInfo, result); Mockito.verify(mockProvider).commit(txInfo, nextTxInfo, result); } @Test public void testRollback() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsConnectionId connectionId = new JmsConnectionId("ID"); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsTransactionId txId = new JmsTransactionId(connectionId, 1); JmsTransactionInfo txInfo = new JmsTransactionInfo(sessionId, txId); JmsTransactionId nextTxId = new JmsTransactionId(connectionId, 2); JmsTransactionInfo nextTxInfo = new JmsTransactionInfo(sessionId, nextTxId); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.rollback(txInfo, nextTxInfo, result); Mockito.verify(mockProvider).rollback(txInfo, nextTxInfo, result); } @Test public void testPull() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); AsyncResult result = Mockito.mock(AsyncResult.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsConsumerId consumerId = new JmsConsumerId(sessionId, 1); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); wrapper.pull(consumerId, 1000, result); Mockito.verify(mockProvider).pull(consumerId, 1000, result); } @Test public void testOnInboundMessage() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); JmsInboundMessageDispatch envelope = Mockito.mock(JmsInboundMessageDispatch.class); ProviderListener listener = Mockito.mock(ProviderListener.class); wrapper.setProviderListener(listener); wrapper.onInboundMessage(envelope); Mockito.verify(listener).onInboundMessage(envelope); } @Test public void testOnCompletedMessageSend() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class); ProviderListener listener = Mockito.mock(ProviderListener.class); wrapper.setProviderListener(listener); wrapper.onCompletedMessageSend(envelope); Mockito.verify(listener).onCompletedMessageSend(envelope); } @Test public void testOnFailedMessageSend() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class); ProviderListener listener = Mockito.mock(ProviderListener.class); IOException ex = new IOException(); wrapper.setProviderListener(listener); wrapper.onFailedMessageSend(envelope, ex); Mockito.verify(listener).onFailedMessageSend(envelope, ex); } @Test public void testOnConnectionInterrupted() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); URI remoteURI = new URI("tcp://localhost"); wrapper.setProviderListener(listener); wrapper.onConnectionInterrupted(remoteURI); Mockito.verify(listener).onConnectionInterrupted(remoteURI); } @Test public void testOnConnectionEstablished() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); URI remoteURI = new URI("tcp://localhost"); Mockito.when(mockProvider.getRemoteURI()).thenReturn(remoteURI); wrapper.setProviderListener(listener); wrapper.onConnectionEstablished(remoteURI); Mockito.verify(listener).onConnectionEstablished(remoteURI); } @Test public void testOnConnectionRestored() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); URI remoteURI = new URI("tcp://localhost"); wrapper.setProviderListener(listener); wrapper.onConnectionRestored(remoteURI); Mockito.verify(listener).onConnectionRestored(remoteURI); } @Test public void testOnResourceClosed() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1); JmsSessionInfo session = new JmsSessionInfo(sessionId); IOException ex = new IOException(); wrapper.setProviderListener(listener); wrapper.onResourceClosed(session, ex); Mockito.verify(listener).onResourceClosed(session, ex); } @Test public void testOnProviderException() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); IOException ex = new IOException(); wrapper.setProviderListener(listener); wrapper.onProviderException(ex); Mockito.verify(listener).onProviderException(ex); } @Test public void testOnConnectionFailure() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); IOException ex = new IOException(); wrapper.setProviderListener(listener); wrapper.onConnectionFailure(ex); Mockito.verify(listener).onConnectionFailure(ex); } @Test public void onConnectionRecovery() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); wrapper.setProviderListener(listener); wrapper.onConnectionRecovery(mockProvider); Mockito.verify(listener).onConnectionRecovery(mockProvider); } @Test public void onConnectionRecoverd() throws Exception { Provider mockProvider = Mockito.mock(Provider.class); ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider); ProviderListener listener = Mockito.mock(ProviderListener.class); wrapper.setProviderListener(listener); wrapper.onConnectionRecovered(mockProvider); Mockito.verify(listener).onConnectionRecovered(mockProvider); } }