Optimise JmsInboundGatewayParserTests

Increase the test performance from 15 seconds to 4
This commit is contained in:
Artem Bilan
2017-11-13 09:14:17 -05:00
parent f7e75223c7
commit a2d0ea5997
10 changed files with 62 additions and 153 deletions

View File

@@ -103,55 +103,32 @@ public class JmsInboundGatewayParserTests {
}
@Test
public void testGatewayWithDefaultExtractPayload() {
public void testGatewayWithExtractPayloadAttributes() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewaysWithExtractPayloadAttributes.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("defaultGateway");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listener"));
assertEquals(Boolean.TRUE, accessor.getPropertyValue("extractReplyPayload"));
context.close();
}
@Test
public void testGatewayWithExtractReplyPayloadTrue() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewaysWithExtractPayloadAttributes.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("extractReplyPayloadTrue");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
gateway = (JmsMessageDrivenEndpoint) context.getBean("extractReplyPayloadTrue");
accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listener"));
assertEquals(Boolean.TRUE, accessor.getPropertyValue("extractReplyPayload"));
context.close();
}
@Test
public void testGatewayWithExtractReplyPayloadFalse() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewaysWithExtractPayloadAttributes.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("extractReplyPayloadFalse");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
gateway = (JmsMessageDrivenEndpoint) context.getBean("extractReplyPayloadFalse");
accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listener"));
assertEquals(Boolean.FALSE, accessor.getPropertyValue("extractReplyPayload"));
context.close();
}
@Test
public void testGatewayWithExtractRequestPayloadTrue() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewaysWithExtractPayloadAttributes.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("extractRequestPayloadTrue");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
gateway = (JmsMessageDrivenEndpoint) context.getBean("extractRequestPayloadTrue");
accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listener"));
assertEquals(Boolean.TRUE, accessor.getPropertyValue("extractRequestPayload"));
context.close();
}
@Test
public void testGatewayWithExtractRequestPayloadFalse() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewaysWithExtractPayloadAttributes.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("extractRequestPayloadFalse");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
gateway = (JmsMessageDrivenEndpoint) context.getBean("extractRequestPayloadFalse");
accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listener"));
assertEquals(Boolean.FALSE, accessor.getPropertyValue("extractRequestPayload"));
context.close();
@@ -195,22 +172,16 @@ public class JmsInboundGatewayParserTests {
}
@Test
public void testTransactionManagerIsNullByDefault() {
public void testTransactionManager() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayTransactionManagerTests.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithoutTransactionManager");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listenerContainer"));
assertNull(accessor.getPropertyValue("transactionManager"));
context.close();
}
@Test
public void testGatewayWithTransactionManagerReference() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayTransactionManagerTests.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithTransactionManager");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithTransactionManager");
accessor = new DirectFieldAccessor(gateway);
accessor = new DirectFieldAccessor(accessor.getPropertyValue("listenerContainer"));
Object txManager = accessor.getPropertyValue("transactionManager");
assertEquals(JmsTransactionManager.class, txManager.getClass());
@@ -220,64 +191,32 @@ public class JmsInboundGatewayParserTests {
}
@Test
public void testGatewayWithConcurrentConsumers() {
public void testGatewayWithContainerSettings() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithConcurrentConsumers");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(3, new DirectFieldAccessor(container).getPropertyValue("concurrentConsumers"));
gateway.stop();
context.close();
}
@Test
public void testGatewayWithMaxConcurrentConsumers() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMaxConcurrentConsumers");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMaxConcurrentConsumers");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(22, new DirectFieldAccessor(container).getPropertyValue("maxConcurrentConsumers"));
gateway.stop();
context.close();
}
@Test
public void testGatewayWithMaxMessagesPerTask() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMaxMessagesPerTask");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMaxMessagesPerTask");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(99, new DirectFieldAccessor(container).getPropertyValue("maxMessagesPerTask"));
gateway.stop();
context.close();
}
@Test
public void testGatewayWithReceiveTimeout() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithReceiveTimeout");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithReceiveTimeout");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(1111L, new DirectFieldAccessor(container).getPropertyValue("receiveTimeout"));
gateway.stop();
context.close();
}
@Test
public void testGatewayWithRecoveryInterval() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithRecoveryInterval");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithRecoveryInterval");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
Object recoveryInterval;
try {
@@ -287,33 +226,23 @@ public class JmsInboundGatewayParserTests {
recoveryInterval = TestUtils.getPropertyValue(container, "backOff.interval");
}
assertEquals(2222L, recoveryInterval);
gateway.stop();
context.close();
}
@Test
public void testGatewayWithIdleTaskExecutionLimit() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithIdleTaskExecutionLimit");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithIdleTaskExecutionLimit");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(7, new DirectFieldAccessor(container).getPropertyValue("idleTaskExecutionLimit"));
gateway.stop();
context.close();
}
@Test
public void testGatewayWithIdleConsumerLimit() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithContainerSettings.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithIdleConsumerLimit");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithIdleConsumerLimit");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
assertEquals(33, new DirectFieldAccessor(container).getPropertyValue("idleConsumerLimit"));
gateway.stop();
gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMessageSelector");
container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
String messageSelector = (String) new DirectFieldAccessor(container).getPropertyValue("messageSelector");
assertEquals("TestProperty = 'foo'", messageSelector);
context.close();
}
@@ -343,20 +272,6 @@ public class JmsInboundGatewayParserTests {
context.close();
}
@Test
public void testGatewayWithMessageSelector() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"inboundGatewayWithMessageSelector.xml", this.getClass());
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithMessageSelector");
gateway.start();
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
String messageSelector = (String) new DirectFieldAccessor(container).getPropertyValue("messageSelector");
assertEquals("TestProperty = 'foo'", messageSelector);
gateway.stop();
context.close();
}
@Test
public void testGatewayWithReplyQosProperties() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
@@ -411,15 +326,17 @@ public class JmsInboundGatewayParserTests {
@Test
public void gatewayWithReplyChannel() {
ActiveMqTestUtils.prepare();
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayWithReplyChannel.xml", this.getClass());
JmsTemplate template = new JmsTemplate(context.getBean(ConnectionFactory.class));
template.convertAndSend("testDestination", "Hello");
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gateway");
Object replyChannel = TestUtils.getPropertyValue(gateway, "listener.gatewayDelegate.replyChannel");
assertEquals(context.getBean("replies"), replyChannel);
JmsTemplate template = new JmsTemplate(context.getBean(ConnectionFactory.class));
template.convertAndSend("testDestination", "Hello");
assertNotNull(template.receive("testReplyDestination"));
context.close();
}

View File

@@ -16,6 +16,7 @@
<jms:inbound-gateway id="gateway"
request-destination-name="testDestinationName"
auto-startup="false"
request-channel="requestChannel"/>
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:si="http://www.springframework.org/schema/integration"
xmlns:jms="http://www.springframework.org/schema/integration/jms"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/jms
http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd">
<si:channel id="requestChannel">
<si:queue/>
</si:channel>
<jms:inbound-gateway id="gatewayWithMessageSelector"
request-destination-name="testDestinationName"
request-channel="requestChannel"
selector="TestProperty = 'foo'"/>
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<constructor-arg>
<bean class="org.springframework.integration.jms.StubConnection">
<constructor-arg value="test"/>
</bean>
</constructor-arg>
</bean>
</beans>

View File

@@ -19,6 +19,7 @@
request-channel="requestChannel"
reply-time-to-live="12345"
reply-priority="7"
reply-timeout="0"
reply-delivery-persistent="false"
explicit-qos-enabled-for-replies="true"/>

View File

@@ -17,12 +17,14 @@
<jms:inbound-gateway id="gatewayWithoutTransactionManager"
connection-factory="testConnectionFactory"
request-destination="testDestination"
auto-startup="false"
request-channel="requestChannel"/>
<jms:inbound-gateway id="gatewayWithTransactionManager"
connection-factory="testConnectionFactory"
request-destination="testDestination"
request-channel="requestChannel"
auto-startup="false"
transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.jms.connection.JmsTransactionManager">

View File

@@ -11,7 +11,7 @@
http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd">
<si:message-history/>
<si:channel id="requestChannel">
<si:queue/>
</si:channel>
@@ -19,6 +19,7 @@
<jms:inbound-gateway id="jmsGateway"
connection-factory="testConnectionFactory"
request-destination="testDestination"
reply-timeout="0"
request-channel="requestChannel"/>
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

View File

@@ -17,6 +17,7 @@
<jms:inbound-gateway id="jmsGateway"
connection-factory="testConnectionFactory"
request-destination-name="testDestinationName"
reply-timeout="0"
request-channel="requestChannel"/>
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

View File

@@ -20,6 +20,7 @@
request-destination-name="testQueue"
request-pub-sub-domain="false"
auto-startup="false"
reply-timeout="0"
concurrent-consumers="3"/>
<jms:inbound-gateway id="gatewayWithMaxConcurrentConsumers"
@@ -28,6 +29,7 @@
request-destination-name="testTopic"
request-pub-sub-domain="true"
auto-startup="false"
reply-timeout="0"
max-concurrent-consumers="22"/>
<jms:inbound-gateway id="gatewayWithMaxMessagesPerTask"
@@ -36,6 +38,7 @@
request-destination-name="testQueue"
request-pub-sub-domain="false"
auto-startup="false"
reply-timeout="0"
max-messages-per-task="99"/>
<jms:inbound-gateway id="gatewayWithReceiveTimeout"
@@ -44,6 +47,7 @@
request-destination-name="testTopic"
request-pub-sub-domain="true"
auto-startup="false"
reply-timeout="0"
receive-timeout="1111"/>
<jms:inbound-gateway id="gatewayWithRecoveryInterval"
@@ -52,6 +56,7 @@
request-destination-name="testTopic"
request-pub-sub-domain="true"
auto-startup="false"
reply-timeout="0"
recovery-interval="2222"/>
<jms:inbound-gateway id="gatewayWithIdleTaskExecutionLimit"
@@ -60,6 +65,7 @@
request-destination-name="testTopic"
request-pub-sub-domain="true"
auto-startup="false"
reply-timeout="0"
idle-task-execution-limit="7"/>
<jms:inbound-gateway id="gatewayWithIdleConsumerLimit"
@@ -68,8 +74,16 @@
request-destination-name="testTopic"
request-pub-sub-domain="true"
auto-startup="false"
reply-timeout="0"
idle-consumer-limit="33"/>
<jms:inbound-gateway id="gatewayWithMessageSelector"
connection-factory="testConnectionFactory"
request-destination-name="testDestinationName"
request-channel="requestChannel"
auto-startup="false"
selector="TestProperty = 'foo'"/>
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<constructor-arg>
<bean class="org.springframework.integration.jms.StubConnection">

View File

@@ -16,6 +16,7 @@
<jms:inbound-gateway id="jmsGateway"
request-destination-name="testDestinationName"
reply-timeout="0"
request-channel="requestChannel"/>
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">

View File

@@ -18,6 +18,7 @@
connection-factory="testConnectionFactory"
request-destination="testDestination"
message-converter="converter"
reply-timeout="0"
request-channel="requestChannel"/>
<bean id="converter" class="org.springframework.integration.jms.config.TestMessageConverter"/>