Skip to content

Commit 8c7d469

Browse files
committed
One last try to fix JmsMessageSenderIntegrationTests
See gh-1777
1 parent 0ef015b commit 8c7d469

1 file changed

Lines changed: 9 additions & 32 deletions

File tree

spring-ws-support/src/test/java/org/springframework/ws/transport/jms/JmsMessageSenderIntegrationTests.java

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,12 @@
2626
import jakarta.jms.ConnectionFactory;
2727
import jakarta.jms.JMSException;
2828
import jakarta.jms.Message;
29-
import jakarta.jms.QueueBrowser;
30-
import jakarta.jms.Session;
3129
import jakarta.jms.TextMessage;
3230
import jakarta.xml.soap.MessageFactory;
3331
import jakarta.xml.soap.SOAPConstants;
3432
import jakarta.xml.soap.SOAPException;
3533
import org.apache.activemq.ActiveMQConnectionFactory;
36-
import org.awaitility.Awaitility;
3734
import org.jspecify.annotations.Nullable;
38-
import org.junit.jupiter.api.Disabled;
3935
import org.junit.jupiter.api.Test;
4036

4137
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,8 +41,6 @@
4541
import org.springframework.jms.annotation.EnableJms;
4642
import org.springframework.jms.annotation.JmsListener;
4743
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
48-
import org.springframework.jms.core.BrowserCallback;
49-
import org.springframework.jms.core.JmsTemplate;
5044
import org.springframework.jms.core.MessagePostProcessor;
5145
import org.springframework.messaging.handler.annotation.SendTo;
5246
import org.springframework.messaging.support.MessageBuilder;
@@ -82,13 +76,12 @@ void testSendAndReceiveQueueBytesMessageTemporaryQueue() throws Exception {
8276
try (WebServiceConnection connection = this.messageSender.createConnection(uri)) {
8377
SoapMessage soapRequest = new SaajSoapMessage(messageFactory.createMessage());
8478
soapRequest.setSoapAction(SOAP_ACTION);
85-
connection.send(soapRequest);
86-
8779
this.testJmsListener.handleMessage((message) -> {
8880
assertNonEmptyByteMessage(message);
8981
return createEmptySoapMessage();
9082
});
9183

84+
connection.send(soapRequest);
9285
SoapMessage response = (SoapMessage) connection.receive(new SaajSoapMessageFactory(messageFactory));
9386
assertThat(response).isNotNull();
9487
assertThat(response.getSoapAction()).isEqualTo(SOAP_ACTION);
@@ -97,22 +90,19 @@ void testSendAndReceiveQueueBytesMessageTemporaryQueue() throws Exception {
9790
}
9891

9992
@Test
100-
@Disabled("flaky")
10193
void testSendAndReceiveQueueBytesMessagePermanentQueue() throws Exception {
10294
String responseQueueName = "SenderResponseQueue";
10395
URI uri = new URI("jms:SenderRequestQueue?replyToName=" + responseQueueName + "&deliveryMode=NON_PERSISTENT");
10496

10597
try (WebServiceConnection connection = this.messageSender.createConnection(uri)) {
10698
SoapMessage soapRequest = new SaajSoapMessage(messageFactory.createMessage());
10799
soapRequest.setSoapAction(SOAP_ACTION);
108-
connection.send(soapRequest);
109-
110100
this.testJmsListener.handleMessage((message) -> {
111101
assertNonEmptyByteMessage(message);
112102
return createEmptySoapMessage();
113103
});
114-
waitForReply(responseQueueName);
115104

105+
connection.send(soapRequest);
116106
SoapMessage response = (SoapMessage) connection.receive(new SaajSoapMessageFactory(messageFactory));
117107
assertThat(response).isNotNull();
118108
assertThat(response.getSoapAction()).isEqualTo(SOAP_ACTION);
@@ -126,13 +116,12 @@ void testSendAndReceiveQueueTextMessage() throws Exception {
126116
try (WebServiceConnection connection = this.messageSender.createConnection(uri)) {
127117
SoapMessage soapRequest = new SaajSoapMessage(messageFactory.createMessage());
128118
soapRequest.setSoapAction(SOAP_ACTION);
129-
connection.send(soapRequest);
130-
131119
this.testJmsListener.handleMessage((message) -> {
132120
assertNonEmptyTextMessage(message);
133121
return createEmptySoapMessage();
134122
});
135123

124+
connection.send(soapRequest);
136125
SoapMessage response = (SoapMessage) connection.receive(new SaajSoapMessageFactory(messageFactory));
137126
assertThat(response).isNotNull();
138127
assertThat(response.getSoapAction()).isEqualTo(SOAP_ACTION);
@@ -142,17 +131,18 @@ void testSendAndReceiveQueueTextMessage() throws Exception {
142131

143132
@Test
144133
void testSendNoResponse() throws Exception {
134+
JmsMessageSender customSender = new JmsMessageSender(this.connectionFactory);
135+
customSender.setReceiveTimeout(Duration.ofSeconds(1).toMillis());
145136
URI uri = new URI("jms:SenderRequestQueue?deliveryMode=NON_PERSISTENT");
146-
try (WebServiceConnection connection = this.messageSender.createConnection(uri)) {
137+
try (WebServiceConnection connection = customSender.createConnection(uri)) {
147138
SoapMessage soapRequest = new SaajSoapMessage(messageFactory.createMessage());
148139
soapRequest.setSoapAction(SOAP_ACTION);
149-
connection.send(soapRequest);
150-
151140
this.testJmsListener.handleMessage((message) -> {
152141
assertNonEmptyByteMessage(message);
153142
return null;
154143
});
155144

145+
connection.send(soapRequest);
156146
SoapMessage response = (SoapMessage) connection.receive(new SaajSoapMessageFactory(messageFactory));
157147
assertThat(response).isNull();
158148
}
@@ -168,13 +158,12 @@ void testPostProcessor() throws Exception {
168158
try (JmsSenderConnection connection = (JmsSenderConnection) this.messageSender.createConnection(uri)) {
169159
connection.setPostProcessor(processor);
170160
SoapMessage soapRequest = new SaajSoapMessage(messageFactory.createMessage());
171-
connection.send(soapRequest);
172-
173161
this.testJmsListener.handleMessage((message) -> {
174162
assertNonEmptyByteMessage(message);
175163
assertThat(message.getBooleanProperty("processed")).isTrue();
176164
return null;
177165
});
166+
connection.send(soapRequest);
178167
}
179168
}
180169

@@ -215,18 +204,6 @@ private static MessageFactory createMessageFactory() {
215204
}
216205
}
217206

218-
private void waitForReply(String destinationName) {
219-
JmsTemplate jmsTemplate = new JmsTemplate(this.connectionFactory);
220-
Awaitility.await()
221-
.atMost(Duration.ofSeconds(10))
222-
.until(() -> jmsTemplate.browse(destinationName, new BrowserCallback<Boolean>() {
223-
@Override
224-
public Boolean doInJms(Session session, QueueBrowser browser) throws JMSException {
225-
return browser.getEnumeration().hasMoreElements();
226-
}
227-
}));
228-
}
229-
230207
static class TestJmsListener {
231208

232209
private ThrowingFunction<jakarta.jms.Message, @Nullable Object> messageHandler;
@@ -263,7 +240,7 @@ public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(Connection
263240
@Bean
264241
JmsMessageSender messageSender(ConnectionFactory connectionFactory) {
265242
JmsMessageSender messageSender = new JmsMessageSender(connectionFactory);
266-
messageSender.setReceiveTimeout(Duration.ofSeconds(1).toMillis());
243+
messageSender.setReceiveTimeout(Duration.ofSeconds(5).toMillis());
267244
return messageSender;
268245
}
269246

0 commit comments

Comments
 (0)