merge #54 - Fix failing RA OutgoingConnectionTests
This commit is contained in:
commit
3059c6f65b
|
@ -281,35 +281,6 @@ public class OutgoingConnectionTest extends ActiveMQRATestBase
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSimpleMessageSendAndReceiveTransacted() throws Exception
|
|
||||||
{
|
|
||||||
setupDLQ(10);
|
|
||||||
resourceAdapter = newResourceAdapter();
|
|
||||||
MyBootstrapContext ctx = new MyBootstrapContext();
|
|
||||||
resourceAdapter.start(ctx);
|
|
||||||
ActiveMQRAManagedConnectionFactory mcf = new ActiveMQRAManagedConnectionFactory();
|
|
||||||
mcf.setResourceAdapter(resourceAdapter);
|
|
||||||
ActiveMQRAConnectionFactory qraConnectionFactory = new ActiveMQRAConnectionFactoryImpl(mcf, qraConnectionManager);
|
|
||||||
QueueConnection queueConnection = qraConnectionFactory.createQueueConnection();
|
|
||||||
Session s = queueConnection.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE);
|
|
||||||
MessageProducer mp = s.createProducer(q);
|
|
||||||
MessageConsumer consumer = s.createConsumer(q);
|
|
||||||
Message message = s.createTextMessage("test");
|
|
||||||
mp.send(message);
|
|
||||||
s.commit();
|
|
||||||
queueConnection.start();
|
|
||||||
TextMessage textMessage = (TextMessage) consumer.receive(1000);
|
|
||||||
assertNotNull(textMessage);
|
|
||||||
assertEquals(textMessage.getText(), "test");
|
|
||||||
s.rollback();
|
|
||||||
textMessage = (TextMessage) consumer.receive(1000);
|
|
||||||
assertNotNull(textMessage);
|
|
||||||
assertEquals(textMessage.getText(), "test");
|
|
||||||
s.commit();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMultipleSessionsThrowsException() throws Exception
|
public void testMultipleSessionsThrowsException() throws Exception
|
||||||
{
|
{
|
||||||
|
@ -428,94 +399,6 @@ public class OutgoingConnectionTest extends ActiveMQRATestBase
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testQueueSessionAckModeJTA() throws Exception
|
|
||||||
{
|
|
||||||
testQueuSessionAckMode(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testQueueSessionAckModeNoJTA() throws Exception
|
|
||||||
{
|
|
||||||
testQueuSessionAckMode(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testQueuSessionAckMode(boolean inTx) throws Exception
|
|
||||||
{
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
DummyTransactionManager.tm.tx = new DummyTransaction();
|
|
||||||
}
|
|
||||||
QueueConnection queueConnection = qraConnectionFactory.createQueueConnection();
|
|
||||||
|
|
||||||
Session s = queueConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
assertEquals(Session.SESSION_TRANSACTED, s.getAcknowledgeMode());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
assertEquals(Session.AUTO_ACKNOWLEDGE, s.getAcknowledgeMode());
|
|
||||||
}
|
|
||||||
s.close();
|
|
||||||
|
|
||||||
s = queueConnection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
assertEquals(Session.SESSION_TRANSACTED, s.getAcknowledgeMode());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
assertEquals(Session.DUPS_OK_ACKNOWLEDGE, s.getAcknowledgeMode());
|
|
||||||
}
|
|
||||||
s.close();
|
|
||||||
|
|
||||||
//exception should be thrown if ack mode is SESSION_TRANSACTED or
|
|
||||||
//CLIENT_ACKNOWLEDGE when in a JTA else ackmode should bee ignored
|
|
||||||
try
|
|
||||||
{
|
|
||||||
s = queueConnection.createSession(false, Session.SESSION_TRANSACTED);
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
assertEquals(s.getAcknowledgeMode(), Session.SESSION_TRANSACTED);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fail("didn't get expected exception creating session with SESSION_TRANSACTED mode ");
|
|
||||||
}
|
|
||||||
s.close();
|
|
||||||
}
|
|
||||||
catch (JMSException e)
|
|
||||||
{
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
fail("shouldn't throw exception " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
s = queueConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
assertEquals(s.getAcknowledgeMode(), Session.SESSION_TRANSACTED);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fail("didn't get expected exception creating session with CLIENT_ACKNOWLEDGE mode");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (JMSException e)
|
|
||||||
{
|
|
||||||
if (inTx)
|
|
||||||
{
|
|
||||||
fail("shouldn't throw exception " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOutgoingXAResourceWrapper() throws Exception
|
public void testOutgoingXAResourceWrapper() throws Exception
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,229 @@
|
||||||
|
/**
|
||||||
|
* 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.activemq.tests.integration.ra;
|
||||||
|
|
||||||
|
import javax.jms.JMSException;
|
||||||
|
import javax.jms.Message;
|
||||||
|
import javax.jms.MessageConsumer;
|
||||||
|
import javax.jms.MessageProducer;
|
||||||
|
import javax.jms.Queue;
|
||||||
|
import javax.jms.QueueConnection;
|
||||||
|
import javax.jms.Session;
|
||||||
|
import javax.jms.TextMessage;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.activemq.api.jms.ActiveMQJMSClient;
|
||||||
|
import org.apache.activemq.core.remoting.impl.invm.InVMConnectorFactory;
|
||||||
|
import org.apache.activemq.core.security.Role;
|
||||||
|
import org.apache.activemq.ra.ActiveMQRAConnectionFactory;
|
||||||
|
import org.apache.activemq.ra.ActiveMQRAConnectionFactoryImpl;
|
||||||
|
import org.apache.activemq.ra.ActiveMQRAConnectionManager;
|
||||||
|
import org.apache.activemq.ra.ActiveMQRAManagedConnectionFactory;
|
||||||
|
import org.apache.activemq.ra.ActiveMQResourceAdapter;
|
||||||
|
import org.apache.activemq.tests.integration.jms.bridge.TransactionManagerLocatorImpl;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author mtaylor
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class OutgoingConnectionTestJTA extends ActiveMQRATestBase
|
||||||
|
{
|
||||||
|
protected ActiveMQResourceAdapter resourceAdapter;
|
||||||
|
protected ActiveMQRAConnectionFactory qraConnectionFactory;
|
||||||
|
protected ActiveMQRAManagedConnectionFactory mcf;
|
||||||
|
ActiveMQRAConnectionManager qraConnectionManager = new ActiveMQRAConnectionManager();
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
DummyTransactionManager dummyTransactionManager = new DummyTransactionManager();
|
||||||
|
TransactionManagerLocatorImpl.tm = dummyTransactionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean useSecurity()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
server.getSecurityManager().addUser("testuser", "testpassword");
|
||||||
|
server.getSecurityManager().addUser("guest", "guest");
|
||||||
|
server.getSecurityManager().setDefaultUser("guest");
|
||||||
|
server.getSecurityManager().addRole("testuser", "arole");
|
||||||
|
server.getSecurityManager().addRole("guest", "arole");
|
||||||
|
Role role = new Role("arole", true, true, true, true, true, true, true);
|
||||||
|
Set<Role> roles = new HashSet<Role>();
|
||||||
|
roles.add(role);
|
||||||
|
server.getSecurityRepository().addMatch(MDBQUEUEPREFIXED, roles);
|
||||||
|
|
||||||
|
resourceAdapter = new ActiveMQResourceAdapter();
|
||||||
|
resourceAdapter.setEntries("[\"java://jmsXA\"]");
|
||||||
|
|
||||||
|
resourceAdapter.setConnectorClassName(InVMConnectorFactory.class.getName());
|
||||||
|
MyBootstrapContext ctx = new MyBootstrapContext();
|
||||||
|
resourceAdapter.start(ctx);
|
||||||
|
mcf = new ActiveMQRAManagedConnectionFactory();
|
||||||
|
mcf.setResourceAdapter(resourceAdapter);
|
||||||
|
qraConnectionFactory = new ActiveMQRAConnectionFactoryImpl(mcf, qraConnectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@After
|
||||||
|
public void tearDown() throws Exception
|
||||||
|
{
|
||||||
|
((DummyTransactionManager) TransactionManagerLocatorImpl.tm).tx = null;
|
||||||
|
if (resourceAdapter != null)
|
||||||
|
{
|
||||||
|
resourceAdapter.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
qraConnectionManager.stop();
|
||||||
|
super.tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSimpleMessageSendAndReceiveTransacted() throws Exception
|
||||||
|
{
|
||||||
|
setDummyTX();
|
||||||
|
setupDLQ(10);
|
||||||
|
resourceAdapter = newResourceAdapter();
|
||||||
|
MyBootstrapContext ctx = new MyBootstrapContext();
|
||||||
|
resourceAdapter.start(ctx);
|
||||||
|
ActiveMQRAManagedConnectionFactory mcf = new ActiveMQRAManagedConnectionFactory();
|
||||||
|
mcf.setResourceAdapter(resourceAdapter);
|
||||||
|
ActiveMQRAConnectionFactory qraConnectionFactory = new ActiveMQRAConnectionFactoryImpl(mcf, qraConnectionManager);
|
||||||
|
QueueConnection queueConnection = qraConnectionFactory.createQueueConnection();
|
||||||
|
Session s = queueConnection.createSession(true, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE);
|
||||||
|
MessageProducer mp = s.createProducer(q);
|
||||||
|
MessageConsumer consumer = s.createConsumer(q);
|
||||||
|
Message message = s.createTextMessage("test");
|
||||||
|
mp.send(message);
|
||||||
|
s.commit();
|
||||||
|
queueConnection.start();
|
||||||
|
TextMessage textMessage = (TextMessage) consumer.receive(1000);
|
||||||
|
assertNotNull(textMessage);
|
||||||
|
assertEquals(textMessage.getText(), "test");
|
||||||
|
s.rollback();
|
||||||
|
textMessage = (TextMessage) consumer.receive(1000);
|
||||||
|
assertNotNull(textMessage);
|
||||||
|
assertEquals(textMessage.getText(), "test");
|
||||||
|
s.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testQueuSessionAckMode(boolean inTx) throws Exception
|
||||||
|
{
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
setDummyTX();
|
||||||
|
}
|
||||||
|
QueueConnection queueConnection = qraConnectionFactory.createQueueConnection();
|
||||||
|
|
||||||
|
Session s = queueConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
assertEquals(Session.SESSION_TRANSACTED, s.getAcknowledgeMode());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertEquals(Session.AUTO_ACKNOWLEDGE, s.getAcknowledgeMode());
|
||||||
|
}
|
||||||
|
s.close();
|
||||||
|
|
||||||
|
s = queueConnection.createSession(false, Session.DUPS_OK_ACKNOWLEDGE);
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
assertEquals(Session.SESSION_TRANSACTED, s.getAcknowledgeMode());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertEquals(Session.DUPS_OK_ACKNOWLEDGE, s.getAcknowledgeMode());
|
||||||
|
}
|
||||||
|
s.close();
|
||||||
|
|
||||||
|
//exception should be thrown if ack mode is SESSION_TRANSACTED or
|
||||||
|
//CLIENT_ACKNOWLEDGE when in a JTA else ackmode should bee ignored
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s = queueConnection.createSession(false, Session.SESSION_TRANSACTED);
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
assertEquals(s.getAcknowledgeMode(), Session.SESSION_TRANSACTED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fail("didn't get expected exception creating session with SESSION_TRANSACTED mode ");
|
||||||
|
}
|
||||||
|
s.close();
|
||||||
|
}
|
||||||
|
catch (JMSException e)
|
||||||
|
{
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
fail("shouldn't throw exception " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s = queueConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
assertEquals(s.getAcknowledgeMode(), Session.SESSION_TRANSACTED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fail("didn't get expected exception creating session with CLIENT_ACKNOWLEDGE mode");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (JMSException e)
|
||||||
|
{
|
||||||
|
if (inTx)
|
||||||
|
{
|
||||||
|
fail("shouldn't throw exception " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testQueueSessionAckModeJTA() throws Exception
|
||||||
|
{
|
||||||
|
testQueuSessionAckMode(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSessionAckModeNoJTA() throws Exception
|
||||||
|
{
|
||||||
|
testQueuSessionAckMode(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setDummyTX()
|
||||||
|
{
|
||||||
|
((DummyTransactionManager) TransactionManagerLocatorImpl.tm).tx = new DummyTransaction();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue