From a70bc06a188b1f90a726b550a1bbf2902dc596e4 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 11 Aug 2015 10:49:26 -0400 Subject: [PATCH] Fix FailoverClientConnectionFactoryTests Race condition in `ServerSocket`; the `accept` thread is exiting due to the close, but it still accepted a new message. All tests need to wait until the server has stopped listening (as well as waiting for the close to be propagated to the client). --- .../tcp/connection/FailoverClientConnectionFactoryTests.java | 1 + .../integration/ip/tcp/connection/SOLingerTests.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactoryTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactoryTests.java index 4d95d1ff48..cdf740571d 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactoryTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/FailoverClientConnectionFactoryTests.java @@ -570,6 +570,7 @@ public class FailoverClientConnectionFactoryTests { Message replyMessage = replyChannel.receive(10000); assertNotNull(replyMessage); server1.stop(); + TestingUtilities.waitStopListening(server1, 10000L); TestingUtilities.waitUntilFactoryHasThisNumberOfConnections(client1, 0); outGateway.handleMessage(message); if (!singleUse) { diff --git a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/SOLingerTests.java b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/SOLingerTests.java index de21a1ed75..acc2c3c784 100644 --- a/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/SOLingerTests.java +++ b/spring-integration-ip/src/test/java/org/springframework/integration/ip/tcp/connection/SOLingerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2015 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. @@ -32,6 +32,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.ip.util.TestingUtilities; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -42,6 +43,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration +@DirtiesContext public class SOLingerTests { @Autowired