From 20348ae38f2c3ff199f7521f6d7e838da08e1288 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 8 Oct 2020 12:41:35 -0400 Subject: [PATCH] Fix compatibility with the latest Reactor * Fix missed long-running tests according components under testing changes --- .../gateway/MessagingGatewaySupport.java | 2 +- .../ip/tcp/TcpOutboundGatewayTests.java | 22 +++---- .../mail/ImapMailReceiverTests.java | 64 +++++++++---------- 3 files changed, 43 insertions(+), 45 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java index 10043075db..be00b75523 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java @@ -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 diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java index cf62e9bb08..0764807801 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/TcpOutboundGatewayTests.java @@ -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 replies = new HashSet(); + Set 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 replies = new HashSet(); + Set 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 lastReceived = new AtomicReference(); + final AtomicReference 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 = new AtomicReference(); + final AtomicReference 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 factories = new ArrayList(); + List 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 message = new GenericMessage("foo"); + GenericMessage 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 factories = new ArrayList(); + List 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 message = new GenericMessage("foo"); + GenericMessage message = new GenericMessage<>("foo"); gateway.handleMessage(message); Message reply = outputChannel.receive(0); assertThat(reply).isNotNull(); diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java index 0daf7dde0e..1916b9ea40 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java @@ -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 "); 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");