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

@@ -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");