Fix compatibility with the latest Reactor

* Fix missed long-running tests according components under testing changes
This commit is contained in:
Artem Bilan
2020-10-08 12:41:35 -04:00
parent d020d7abfb
commit 20348ae38f
3 changed files with 43 additions and 45 deletions

View File

@@ -894,7 +894,7 @@ public abstract class MessagingGatewaySupport extends AbstractEndpoint
@Override
public boolean send(Message<?> message, long timeout) {
return this.replyMono.tryEmitValue(message).hasSucceeded();
return this.replyMono.tryEmitValue(message).isSuccess();
}
@Override

View File

@@ -147,12 +147,12 @@ public class TcpOutboundGatewayTests {
gateway.setRemoteTimeout(60000);
gateway.setSendTimeout(61000);
// ensure this did NOT change the remote timeout
assertThat(TestUtils.getPropertyValue(gateway, "remoteTimeoutExpression.literalValue")).isEqualTo("60000");
assertThat(TestUtils.getPropertyValue(gateway, "remoteTimeoutExpression.value")).isEqualTo(60000L);
gateway.setRequestTimeout(60000);
for (int i = 100; i < 200; i++) {
gateway.handleMessage(MessageBuilder.withPayload("Test" + i).build());
}
Set<String> replies = new HashSet<String>();
Set<String> replies = new HashSet<>();
for (int i = 100; i < 200; i++) {
Message<?> m = replyChannel.receive(10000);
assertThat(m).isNotNull();
@@ -207,7 +207,7 @@ public class TcpOutboundGatewayTests {
for (int i = 100; i < 110; i++) {
gateway.handleMessage(MessageBuilder.withPayload("Test" + i).build());
}
Set<String> replies = new HashSet<String>();
Set<String> replies = new HashSet<>();
for (int i = 100; i < 110; i++) {
Message<?> m = replyChannel.receive(10000);
assertThat(m).isNotNull();
@@ -348,7 +348,7 @@ public class TcpOutboundGatewayTests {
* The payload of the last message received by the remote side;
* used to verify the correct response is received.
*/
final AtomicReference<String> lastReceived = new AtomicReference<String>();
final AtomicReference<String> lastReceived = new AtomicReference<>();
final CountDownLatch serverLatch = new CountDownLatch(2);
this.executor.execute(() -> {
@@ -447,7 +447,7 @@ public class TcpOutboundGatewayTests {
@Test
void testCachingFailover() throws Exception {
final AtomicReference<ServerSocket> serverSocket = new AtomicReference<ServerSocket>();
final AtomicReference<ServerSocket> serverSocket = new AtomicReference<>();
final CountDownLatch latch = new CountDownLatch(1);
final AtomicBoolean done = new AtomicBoolean();
final CountDownLatch serverLatch = new CountDownLatch(1);
@@ -489,7 +489,7 @@ public class TcpOutboundGatewayTests {
TcpConnectionSupport mockConn1 = makeMockConnection();
when(factory1.getConnection()).thenReturn(mockConn1);
doThrow(new UncheckedIOException(new IOException("fail")))
.when(mockConn1).send(Mockito.any(Message.class));
.when(mockConn1).send(Mockito.any(Message.class));
AbstractClientConnectionFactory factory2 = new TcpNetClientConnectionFactory("localhost",
serverSocket.get().getLocalPort());
@@ -498,7 +498,7 @@ public class TcpOutboundGatewayTests {
factory2.setSoTimeout(10000);
factory2.setSingleUse(false);
List<AbstractClientConnectionFactory> factories = new ArrayList<AbstractClientConnectionFactory>();
List<AbstractClientConnectionFactory> factories = new ArrayList<>();
factories.add(factory1);
factories.add(factory2);
FailoverClientConnectionFactory failoverFactory = new FailoverClientConnectionFactory(factories);
@@ -515,7 +515,7 @@ public class TcpOutboundGatewayTests {
gateway.afterPropertiesSet();
gateway.start();
GenericMessage<String> message = new GenericMessage<String>("foo");
GenericMessage<String> message = new GenericMessage<>("foo");
gateway.handleMessage(message);
Message<?> reply = outputChannel.receive(0);
assertThat(reply).isNotNull();
@@ -572,7 +572,7 @@ public class TcpOutboundGatewayTests {
when(factory1.getConnection()).thenReturn(mockConn1);
when(factory1.isSingleUse()).thenReturn(true);
doThrow(new UncheckedIOException(new IOException("fail")))
.when(mockConn1).send(Mockito.any(Message.class));
.when(mockConn1).send(Mockito.any(Message.class));
CachingClientConnectionFactory cachingFactory1 = new CachingClientConnectionFactory(factory1, 1);
AbstractClientConnectionFactory factory2 = new TcpNetClientConnectionFactory("localhost",
@@ -584,7 +584,7 @@ public class TcpOutboundGatewayTests {
CachingClientConnectionFactory cachingFactory2 = new CachingClientConnectionFactory(factory2, 1);
// Failover
List<AbstractClientConnectionFactory> factories = new ArrayList<AbstractClientConnectionFactory>();
List<AbstractClientConnectionFactory> factories = new ArrayList<>();
factories.add(cachingFactory1);
factories.add(cachingFactory2);
FailoverClientConnectionFactory failoverFactory = new FailoverClientConnectionFactory(factories);
@@ -600,7 +600,7 @@ public class TcpOutboundGatewayTests {
gateway.afterPropertiesSet();
gateway.start();
GenericMessage<String> message = new GenericMessage<String>("foo");
GenericMessage<String> message = new GenericMessage<>("foo");
gateway.handleMessage(message);
Message<?> reply = outputChannel.receive(0);
assertThat(reply).isNotNull();

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -54,12 +54,9 @@ import javax.mail.search.AndTerm;
import javax.mail.search.FlagTerm;
import javax.mail.search.FromTerm;
import org.apache.commons.logging.Log;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.beans.DirectFieldAccessor;
@@ -67,6 +64,7 @@ import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.log.LogAccessor;
import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.channel.DirectChannel;
@@ -74,9 +72,9 @@ import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
import org.springframework.integration.history.MessageHistory;
import org.springframework.integration.mail.support.DefaultMailHeaderMapper;
import org.springframework.integration.test.condition.LongRunningTest;
import org.springframework.integration.test.mail.TestMailServer;
import org.springframework.integration.test.mail.TestMailServer.ImapServer;
import org.springframework.integration.test.support.LongRunningIntegrationTest;
import org.springframework.integration.test.util.TestUtils;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.PollableChannel;
@@ -84,7 +82,8 @@ import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.springframework.util.MimeTypeUtils;
import com.sun.mail.imap.IMAPFolder;
@@ -93,15 +92,13 @@ import com.sun.mail.imap.IMAPFolder;
* @author Gary Russell
* @author Artem Bilan
*/
@RunWith(SpringRunner.class)
@SpringJUnitConfig
@ContextConfiguration(
"classpath:org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml")
@DirtiesContext
@LongRunningTest
public class ImapMailReceiverTests {
@ClassRule
public static final LongRunningIntegrationTest longTests = new LongRunningIntegrationTest();
private AtomicInteger failed;
private ImapServer imapIdleServer;
@@ -109,7 +106,7 @@ public class ImapMailReceiverTests {
@Autowired
private ApplicationContext context;
@Before
@BeforeEach
public void setup() throws InterruptedException {
failed = new AtomicInteger(0);
this.imapIdleServer = TestMailServer.imap(0);
@@ -120,7 +117,7 @@ public class ImapMailReceiverTests {
assertThat(n < 100).isTrue();
}
@After
@AfterEach
public void tearDown() {
this.imapIdleServer.stop();
}
@@ -192,7 +189,7 @@ public class ImapMailReceiverTests {
setUpScheduler(receiver, taskScheduler);
receiver.setUserFlag("testSIUserFlag");
receiver.afterPropertiesSet();
Log logger = spy(TestUtils.getPropertyValue(receiver, "logger", Log.class));
LogAccessor logger = spy(TestUtils.getPropertyValue(receiver, "logger", LogAccessor.class));
new DirectFieldAccessor(receiver).setPropertyValue("logger", logger);
ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(receiver);
QueueChannel channel = new QueueChannel();
@@ -222,7 +219,7 @@ public class ImapMailReceiverTests {
MessageHeaders headers = received.getHeaders();
assertThat(headers.get(MailHeaders.RAW_HEADERS)).isNotNull();
assertThat(headers.get(MailHeaders.CONTENT_TYPE)).isEqualTo("TEXT/PLAIN; charset=ISO-8859-1");
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo("TEXT/PLAIN; charset=ISO-8859-1");
assertThat(headers.get(MessageHeaders.CONTENT_TYPE)).isEqualTo(MimeTypeUtils.TEXT_PLAIN_VALUE);
assertThat(headers.get(MailHeaders.FROM)).isEqualTo("Bar <bar@baz>");
String[] toHeader = headers.get(MailHeaders.TO, String[].class);
assertThat(toHeader).isNotEmpty();
@@ -259,6 +256,7 @@ public class ImapMailReceiverTests {
private AbstractMailReceiver receiveAndMarkAsReadDontDeleteGuts(AbstractMailReceiver receiver, Message msg1,
Message msg2) throws NoSuchFieldException, IllegalAccessException, MessagingException {
((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(true);
receiver = spy(receiver);
receiver.setBeanFactory(mock(BeanFactory.class));
@@ -269,7 +267,7 @@ public class ImapMailReceiverTests {
given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
folderField.set(receiver, folder);
final Message[] messages = new Message[] { msg1, msg2 };
final Message[] messages = new Message[]{ msg1, msg2 };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
@@ -334,7 +332,7 @@ public class ImapMailReceiverTests {
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
final Message[] messages = new Message[]{ msg1, msg2 };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
int folderOpenMode = (int) accessor.getPropertyValue("folderOpenMode");
@@ -370,7 +368,7 @@ public class ImapMailReceiverTests {
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
final Message[] messages = new Message[]{ msg1, msg2 };
willAnswer(invocation -> null).given(receiver).openFolder();
willAnswer(invocation -> messages).given(receiver).searchForNewMessages();
@@ -399,7 +397,7 @@ public class ImapMailReceiverTests {
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
final Message[] messages = new Message[]{ msg1, msg2 };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
int folderOpenMode = (int) accessor.getPropertyValue("folderOpenMode");
@@ -435,7 +433,7 @@ public class ImapMailReceiverTests {
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
final Message[] messages = new Message[]{ msg1, msg2 };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
int folderOpenMode = (int) accessor.getPropertyValue("folderOpenMode");
@@ -470,7 +468,7 @@ public class ImapMailReceiverTests {
MimeMessage mailMessage = mock(MimeMessage.class);
Flags flags = mock(Flags.class);
given(mailMessage.getFlags()).willReturn(flags);
final Message[] messages = new Message[] { mailMessage };
final Message[] messages = new Message[]{ mailMessage };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor((invocation.getMock()));
@@ -538,7 +536,7 @@ public class ImapMailReceiverTests {
MimeMessage mailMessage = mock(MimeMessage.class);
Flags flags = mock(Flags.class);
given(mailMessage.getFlags()).willReturn(flags);
final Message[] messages = new Message[] { mailMessage };
final Message[] messages = new Message[]{ mailMessage };
willAnswer(invocation -> messages).given(receiver).searchForNewMessages();
@@ -585,7 +583,7 @@ public class ImapMailReceiverTests {
MimeMessage mailMessage = mock(MimeMessage.class);
Flags flags = mock(Flags.class);
given(mailMessage.getFlags()).willReturn(flags);
final Message[] messages = new Message[] { mailMessage };
final Message[] messages = new Message[]{ mailMessage };
final AtomicInteger shouldFindMessagesCounter = new AtomicInteger(2);
willAnswer(invocation -> {
@@ -658,7 +656,7 @@ public class ImapMailReceiverTests {
MimeMessage mailMessage = mock(MimeMessage.class);
Flags flags = mock(Flags.class);
given(mailMessage.getFlags()).willReturn(flags);
final Message[] messages = new Message[] { mailMessage };
final Message[] messages = new Message[]{ mailMessage };
willAnswer(invocation -> messages).given(receiver).searchForNewMessages();
@@ -667,7 +665,7 @@ public class ImapMailReceiverTests {
final CountDownLatch idles = new CountDownLatch(2);
willAnswer(invocation -> {
idles.countDown();
Thread.sleep(1000);
Thread.sleep(500);
return null;
}).given(folder).idle();
@@ -714,7 +712,7 @@ public class ImapMailReceiverTests {
Folder folder = mock(Folder.class);
given(folder.exists()).willReturn(true);
given(folder.isOpen()).willReturn(true);
given(folder.search(Mockito.any())).willReturn(new Message[] { });
given(folder.search(Mockito.any())).willReturn(new Message[]{ });
given(store.getFolder(Mockito.any(URLName.class))).willReturn(folder);
given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
@@ -796,7 +794,7 @@ public class ImapMailReceiverTests {
given(folder.isOpen()).willReturn(true);
Message message = new MimeMessage(null, new ClassPathResource("test.mail").getInputStream());
given(folder.search(Mockito.any())).willReturn(new Message[] { message });
given(folder.search(Mockito.any())).willReturn(new Message[]{ message });
given(store.getFolder(Mockito.any(URLName.class))).willReturn(folder);
given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
DirectFieldAccessor df = new DirectFieldAccessor(receiver);
@@ -811,8 +809,8 @@ public class ImapMailReceiverTests {
public void testNullMessages() throws Exception {
Message message1 = mock(Message.class);
Message message2 = mock(Message.class);
final Message[] messages1 = new Message[] { null, null, message1 };
final Message[] messages2 = new Message[] { message2 };
final Message[] messages1 = new Message[]{ null, null, message1 };
final Message[] messages2 = new Message[]{ message2 };
final SearchTermStrategy searchTermStrategy = mock(SearchTermStrategy.class);
class TestReceiver extends ImapMailReceiver {
@@ -872,9 +870,9 @@ public class ImapMailReceiverTests {
storeField.set(receiver, store);
ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(receiver);
Log logger = spy(TestUtils.getPropertyValue(adapter, "logger", Log.class));
LogAccessor logger = spy(TestUtils.getPropertyValue(adapter, "logger", LogAccessor.class));
new DirectFieldAccessor(adapter).setPropertyValue("logger", logger);
willDoNothing().given(logger).warn(anyString(), any(Throwable.class));
willDoNothing().given(logger).warn(any(Throwable.class), anyString());
willAnswer(i -> {
i.callRealMethod();
throw new FolderClosedException(folder, "test");