blob: 21d5f50203f64bcde30fd1b4413f5579f24bd37b [file] [log] [blame]
/*
* 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;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.nullable;
import java.io.Serializable;
import java.util.UUID;
import javax.jms.BytesMessage;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.IllegalStateException;
import javax.jms.IllegalStateRuntimeException;
import javax.jms.JMSContext;
import javax.jms.JMSException;
import javax.jms.JMSRuntimeException;
import javax.jms.JMSSecurityException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.qpid.jms.provider.ProviderConstants.ACK_TYPE;
import org.apache.qpid.jms.provider.mock.MockRemotePeer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
/**
* Test various aspects of the JmsContext class.
*/
public class JmsContextTest extends JmsConnectionTestSupport {
private final MockRemotePeer remotePeer = new MockRemotePeer();
private JmsContext context;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
remotePeer.start();
context = createJMSContextToMockProvider();
}
@Override
@After
public void tearDown() throws Exception {
super.tearDown();
if (context != null) {
context.close();
}
}
//----- Test basic interface behaviors -----------------------------------//
@Test
public void testCreateContextWithNewAcknowledgementMode() {
JMSContext newContext = context.createContext(JMSContext.CLIENT_ACKNOWLEDGE);
try {
assertNotNull(newContext);
assertEquals(JMSContext.CLIENT_ACKNOWLEDGE, newContext.getSessionMode());
} finally {
newContext.close();
}
}
@Test
public void testGetMeataData() {
assertNotNull(context.getMetaData());
}
@Test
public void testGetTransactedFromContext() {
assertFalse(context.getTransacted());
JMSContext newContext = context.createContext(JMSContext.SESSION_TRANSACTED);
try {
assertNotNull(newContext);
assertEquals(JMSContext.SESSION_TRANSACTED, newContext.getSessionMode());
assertTrue(newContext.getTransacted());
} finally {
newContext.close();
}
}
@Test
public void testCreateContextFromClosedContextThrowsISRE() {
context.close();
try {
context.createContext(JMSContext.CLIENT_ACKNOWLEDGE);
fail("Should throw state exception");
} catch (IllegalStateRuntimeException isre) {
}
}
@Test
public void testCreateContextWithNegativeSessionModeThrowsJMSRE() {
try {
context.createContext(-1);
fail("Should throw JMSRuntimeException");
} catch (JMSRuntimeException jmsre) {
}
}
@Test
public void testCreateContextWithSessionModeOutOfRangeThrowsJMSRE() {
try {
context.createContext(4);
fail("Should throw JMSRuntimeException");
} catch (JMSRuntimeException jmsre) {
}
}
@Test
public void testCreateTextMessage() throws JMSException {
TextMessage message = context.createTextMessage();
assertNotNull(message);
assertNull(message.getText());
}
@Test
public void testCreateTextMessageWithBody() throws JMSException {
TextMessage message = context.createTextMessage("test");
assertNotNull(message);
assertEquals("test", message.getText());
}
@Test
public void testCreateBytesMessage() throws JMSException {
BytesMessage message = context.createBytesMessage();
assertNotNull(message);
}
@Test
public void testCreateMapMessage() throws JMSException {
MapMessage message = context.createMapMessage();
assertNotNull(message);
}
@Test
public void testCreateMessage() throws JMSException {
Message message = context.createMessage();
assertNotNull(message);
}
@Test
public void testCreateStreamMessage() throws JMSException {
StreamMessage message = context.createStreamMessage();
assertNotNull(message);
}
@Test
public void testCreateObjectMessage() throws JMSException {
ObjectMessage message = context.createObjectMessage();
assertNotNull(message);
}
@Test
public void testCreateObjectMessageWithBody() throws JMSException {
UUID payload = UUID.randomUUID();
ObjectMessage message = context.createObjectMessage(payload);
assertNotNull(message);
assertEquals(payload, message.getObject());
}
@Test
public void testInternalSessionLazyCreate() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
// No session until needed.
Mockito.verify(connection, Mockito.times(0)).createSession(anyInt());
assertNotNull(context.createTemporaryQueue());
Mockito.verify(connection, Mockito.times(1)).createSession(anyInt());
context.close();
}
@Test
public void testAutoStartOnDoesStartTheConnectionMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(anyInt())).thenReturn(session);
Mockito.when(session.createConsumer(any(Destination.class))).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createConsumer(context.createTemporaryQueue());
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Destination.class));
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(anyInt())).thenReturn(session);
Mockito.when(session.createConsumer(any(Destination.class))).thenReturn(consumer);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createConsumer(context.createTemporaryQueue());
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Destination.class));
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionMessageConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createConsumer(any(Destination.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createConsumer(context.createTemporaryTopic(), "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionMessageConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createConsumer(any(Destination.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createConsumer(context.createTemporaryTopic(), "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionMessageConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(session.createConsumer(any(Destination.class), anyString(), anyBoolean())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createConsumer(context.createTemporaryTopic(), "a = b", true);
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Topic.class), anyString(), anyBoolean());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionMessageConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(session.createConsumer(any(Destination.class), anyString(), anyBoolean())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createConsumer(context.createTemporaryTopic(), "a = b", true);
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Topic.class), anyString(), anyBoolean());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionDurableMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createDurableConsumer(any(Topic.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionDurableMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(session.createDurableConsumer(any(Topic.class), anyString())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionDurableMessageConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name", "a = b", true);
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionDurableMessageConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name", "a = b", true);
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionSharedMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedConsumer(any(Topic.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionSharedMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(session.createSharedConsumer(any(Topic.class), anyString())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionMessageSharedConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(session.createSharedConsumer(any(Topic.class), anyString(), anyString())).thenReturn(consumer);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name", "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString(), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionSharedMessageConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedConsumer(any(Topic.class), anyString(), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name", "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString(), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionSharedDurableMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedDurableConsumer(any(Topic.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionSharedDurableMessageConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedDurableConsumer(any(Topic.class), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionMessageSharedDurableConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedDurableConsumer(any(Topic.class), anyString(), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name", "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString(), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionSharedDurableMessageConsumerSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsMessageConsumer consumer = Mockito.mock(JmsMessageConsumer.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createSharedDurableConsumer(any(Topic.class), anyString(), anyString())).thenReturn(consumer);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name", "a = b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString(), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionQueueBrowser() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsQueueBrowser browser = Mockito.mock(JmsQueueBrowser.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(session.createBrowser(any(Queue.class))).thenReturn(browser);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createBrowser(context.createTemporaryQueue());
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class));
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionQueueBrowser() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsQueueBrowser browser = Mockito.mock(JmsQueueBrowser.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(session.createBrowser(any(Queue.class))).thenReturn(browser);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createBrowser(context.createTemporaryQueue());
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class));
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAutoStartOnDoesStartTheConnectionQueueBrowserWithSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsQueueBrowser browser = Mockito.mock(JmsQueueBrowser.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createBrowser(any(Queue.class))).thenReturn(browser);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(true);
try {
context.createBrowser(context.createTemporaryQueue(), "a == b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class), anyString());
Mockito.verify(connection, Mockito.times(1)).start();
}
@Test
public void testAutoStartOffDoesNotStartTheConnectionQueueBrowserWithSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
JmsQueueBrowser browser = Mockito.mock(JmsQueueBrowser.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createBrowser(any(Queue.class))).thenReturn(browser);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
context.setAutoStart(false);
try {
context.createBrowser(context.createTemporaryQueue(), "a == b");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class), anyString());
Mockito.verify(connection, Mockito.times(0)).start();
}
@Test
public void testAcknowledgeNoopAutoAcknowledge() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.acknowledge();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(0)).acknowledge(ACK_TYPE.ACCEPTED);
}
@Test
public void testAcknowledgeNoopDupsOkAcknowledge() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.DUPS_OK_ACKNOWLEDGE);
try {
context.acknowledge();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(0)).acknowledge(ACK_TYPE.ACCEPTED);
}
@Test
public void testAcknowledgeNoopSessionTransacted() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
try {
context.acknowledge();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(0)).acknowledge(ACK_TYPE.ACCEPTED);
}
@Test
public void testAcknowledgeAcceptsMessages() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
try {
context.acknowledge();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).acknowledge(ACK_TYPE.ACCEPTED);
}
//----- Test that calls pass through to the underlying connection --------//
@Test
public void testStopPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
try {
context.stop();
} finally {
context.close();
}
Mockito.verify(connection, Mockito.times(1)).stop();
}
@Test
public void testCommitPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
try {
context.commit();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).commit();
}
@Test
public void testRollbackPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
try {
context.rollback();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).rollback();
}
@Test
public void testRecoverPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
try {
context.recover();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).recover();
}
@Test
public void testUnsubscribePassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
try {
context.unsubscribe("subscription");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).unsubscribe(anyString());
}
@Test
public void testCreateTopicPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.createTopic("test");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createTopic(anyString());
}
@Test
public void testCreateQueuePassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.createQueue("test");
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createQueue(anyString());
}
@Test
public void testCreateTemporaryQueuePassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.createTemporaryQueue();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createTemporaryQueue();
}
@Test
public void testCreateTemporaryTopicPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.createTemporaryTopic();
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createTemporaryTopic();
}
@Test
public void testGetClientIDPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.getClientID();
} finally {
context.close();
}
Mockito.verify(connection, Mockito.times(1)).getClientID();
}
@Test
public void testSetClientIDPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.setClientID("test");
} finally {
context.close();
}
Mockito.verify(connection, Mockito.times(1)).setClientID("test");
}
@Test
public void testGetExceptionListenerPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.getExceptionListener();
} finally {
context.close();
}
Mockito.verify(connection, Mockito.times(1)).getExceptionListener();
}
@Test
public void testSetExceptionListenerPassthrough() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
ExceptionListener listener = new ExceptionListener() {
@Override
public void onException(JMSException exception) {
}
};
try {
context.setExceptionListener(listener);
} finally {
context.close();
}
Mockito.verify(connection, Mockito.times(1)).setExceptionListener(listener);
}
//----- Test JMSException handling ---------------------------------------//
@Test
public void testRuntimeExceptionOnConnectionClose() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).close();
try {
context.close();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
}
}
@Test
public void testContextClosePreservesSessionCloseException() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).close();
Mockito.doThrow(JMSSecurityException.class).when(connection).close();
context.createTemporaryTopic();
Mockito.verify(connection, Mockito.times(1)).createSession(JMSContext.AUTO_ACKNOWLEDGE);
try {
context.close();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
}
}
@Test
public void testRuntimeExceptionOnCreateProducer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createProducer(null);
try {
context.createProducer();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createConsumer(any(Destination.class));
try {
context.createConsumer(context.createTemporaryQueue());
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Destination.class));
}
@Test
public void testRuntimeExceptionOnCreateConsumerWithSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createConsumer(any(Destination.class), anyString());
try {
context.createConsumer(context.createTemporaryQueue(), "a = b");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Destination.class), anyString());
}
@Test
public void testRuntimeExceptionOnCreateConsumerWithSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createConsumer(any(Destination.class), anyString(), anyBoolean());
try {
context.createConsumer(context.createTemporaryQueue(), "a = b", true);
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createConsumer(any(Destination.class), anyString(), anyBoolean());
}
@Test
public void testRuntimeExceptionOnCreateDurableConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createDurableConsumer(any(Topic.class), anyString());
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString());
}
@Test
public void testRuntimeExceptionOnCreateDurableConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).
createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean());
try {
context.createDurableConsumer(context.createTemporaryTopic(), "name", "a = b", true);
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createDurableConsumer(any(Topic.class), anyString(), anyString(), anyBoolean());
}
@Test
public void testRuntimeExceptionOnCreateSharedConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createSharedConsumer(any(Topic.class), anyString());
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString());
}
@Test
public void testRuntimeExceptionOnCreateSharedConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).
createSharedConsumer(any(Topic.class), anyString(), anyString());
try {
context.createSharedConsumer(context.createTemporaryTopic(), "name", "a = b");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedConsumer(any(Topic.class), anyString(), anyString());
}
@Test
public void testRuntimeExceptionOnCreateSharedDurableConsumer() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createSharedDurableConsumer(any(Topic.class), anyString());
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString());
}
@Test
public void testRuntimeExceptionOnCreateSharedDurableConsumerSelectorNoLocal() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryTopic()).thenReturn(new JmsTemporaryTopic());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).
createSharedDurableConsumer(any(Topic.class), anyString(), anyString());
try {
context.createSharedDurableConsumer(context.createTemporaryTopic(), "name", "a = b");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createSharedDurableConsumer(any(Topic.class), anyString(), anyString());
}
@Test
public void testRuntimeExceptionOnCreateQueueBrowser() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createBrowser(any(Queue.class));
try {
context.createBrowser(context.createTemporaryQueue());
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class));
}
@Test
public void testRuntimeExceptionOnCreateQueueBrowserWithSelector() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
Mockito.when(session.createTemporaryQueue()).thenReturn(new JmsTemporaryQueue());
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createBrowser(any(Queue.class), anyString());
try {
context.createBrowser(context.createTemporaryQueue(), "a == b");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
Mockito.verify(session, Mockito.times(1)).createBrowser(any(Queue.class), anyString());
}
@Test
public void testRuntimeExceptionOnCreateSession() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).createSession(anyInt());
try {
context.createTemporaryQueue();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnStartFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).start();
try {
context.start();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnStopFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
Mockito.doThrow(IllegalStateException.class).when(connection).stop();
JmsContext context = new JmsContext(connection, JMSContext.AUTO_ACKNOWLEDGE);
try {
context.stop();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCommitFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
Mockito.doThrow(IllegalStateException.class).when(session).commit();
try {
context.commit();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnRollbackFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.SESSION_TRANSACTED);
Mockito.doThrow(IllegalStateException.class).when(session).rollback();
try {
context.rollback();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnRecoverFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).recover();
try {
context.recover();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnAcknowledgeFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).acknowledge(ACK_TYPE.ACCEPTED);
try {
context.acknowledge();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnUnsubscribeFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).unsubscribe(anyString());
try {
context.unsubscribe("subscription");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateTopicFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createTopic(anyString());
try {
context.createTopic("test");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateQueueFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createQueue(anyString());
try {
context.createQueue("test");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateTemporaryTopicFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createTemporaryTopic();
try {
context.createTemporaryTopic();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateTemporaryQueueFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createTemporaryQueue();
try {
context.createTemporaryQueue();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnGetClientIDFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).getClientID();
try {
context.getClientID();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnSetClientIDFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).setClientID(anyString());
try {
context.setClientID("client");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnGetExceptionListenerFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).getExceptionListener();
try {
context.getExceptionListener();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnSetExceptionListenerFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).setExceptionListener(nullable(ExceptionListener.class));
try {
context.setExceptionListener(null);
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnGetMetaDataFailure() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(connection).getMetaData();
try {
context.getMetaData();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createMessage();
try {
context.createMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateTextMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createTextMessage();
try {
context.createTextMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateTextMessageWithBody() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createTextMessage(anyString());
try {
context.createTextMessage("test");
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateBytesMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createBytesMessage();
try {
context.createBytesMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateStreamMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createStreamMessage();
try {
context.createStreamMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateMapMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createMapMessage();
try {
context.createMapMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateObjectMessage() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createObjectMessage();
try {
context.createObjectMessage();
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
@Test
public void testRuntimeExceptionOnCreateObjectMessageWithBody() throws JMSException {
JmsConnection connection = Mockito.mock(JmsConnection.class);
JmsSession session = Mockito.mock(JmsSession.class);
Mockito.when(connection.createSession(Mockito.anyInt())).thenReturn(session);
JmsContext context = new JmsContext(connection, JMSContext.CLIENT_ACKNOWLEDGE);
Mockito.doThrow(IllegalStateException.class).when(session).createObjectMessage(any(Serializable.class));
try {
context.createObjectMessage(UUID.randomUUID());
fail("Should throw ISRE");
} catch (IllegalStateRuntimeException isre) {
} finally {
context.close();
}
}
}