Repository: ignite Updated Branches: refs/heads/ignite-comm-opts2 bb465cc9c -> c604e8cb2
conn Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c604e8cb Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c604e8cb Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c604e8cb Branch: refs/heads/ignite-comm-opts2 Commit: c604e8cb291bae294bf97d8eb13fc16b8cf8a12e Parents: bb465cc Author: sboikov <sboi...@gridgain.com> Authored: Wed Sep 21 11:04:40 2016 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Wed Sep 21 11:04:40 2016 +0300 ---------------------------------------------------------------------- .../GridTcpCommunicationSpiAbstractTest.java | 28 ++++++++++++-- ...mmunicationSpiConcurrentConnectSelfTest.java | 40 ++++++++++++++++++-- 2 files changed, 61 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c604e8cb/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiAbstractTest.java index 076724d..3c4fea0 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiAbstractTest.java @@ -90,16 +90,36 @@ abstract class GridTcpCommunicationSpiAbstractTest extends GridAbstractCommunica super.afterTest(); for (CommunicationSpi spi : spis.values()) { - ConcurrentMap<UUID, GridCommunicationClient> clients = U.field(spi, "clients"); + ConcurrentMap<UUID, GridCommunicationClient[]> clients = U.field(spi, "clients"); + + for (int i = 0; i < 20; i++) { + GridCommunicationClient client0 = null; + + for (GridCommunicationClient[] clients0 : clients.values()) { + for (GridCommunicationClient client : clients0) { + if (client != null) { + client0 = client; + + break; + } + } + + if (client0 != null) + break; + } + + if (client0 == null) + return; - for (int i = 0; i < 20 && !clients.isEmpty(); i++) { info("Check failed for SPI [grid=" + - GridTestUtils.getFieldValue(spi, IgniteSpiAdapter.class, "gridName") + ", spi=" + spi + ']'); + GridTestUtils.getFieldValue(spi, IgniteSpiAdapter.class, "gridName") + + ", client=" + client0 + + ", spi=" + spi + ']'); U.sleep(1000); } - assert clients.isEmpty() : "Clients: " + clients; + fail("Failed to wait when clients are closed."); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/c604e8cb/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSelfTest.java index bd66319..ed047fa 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSelfTest.java @@ -31,6 +31,7 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.IgniteInternalFuture; @@ -253,7 +254,7 @@ public class GridTcpCommunicationSpiConcurrentConnectSelfTest<T extends Communic final AtomicInteger idx = new AtomicInteger(); try { - GridTestUtils.runMultiThreaded(new Callable<Void>() { + final Callable<Void> c = new Callable<Void>() { @Override public Void call() throws Exception { int idx0 = idx.getAndIncrement(); @@ -279,7 +280,40 @@ public class GridTcpCommunicationSpiConcurrentConnectSelfTest<T extends Communic return null; } - }, threads, "test"); + }; + + List<Thread> threadsList = new ArrayList<>(); + + final AtomicBoolean fail = new AtomicBoolean(); + + final AtomicLong tId = new AtomicLong(); + + for (int t = 0; t < threads; t++) { + Thread t0 = new Thread(new Runnable() { + @Override public void run() { + try { + c.call(); + } + catch (Throwable e) { + log.error("Unexpected error: " + e, e); + + fail.set(true); + } + } + }) { + @Override public long getId() { + // Override getId to use all connections. + return tId.getAndIncrement(); + } + }; + + threadsList.add(t0); + + t0.start(); + } + + for (Thread t0 : threadsList) + t0.join(); assertTrue(latch.await(10, TimeUnit.SECONDS)); @@ -294,7 +328,7 @@ public class GridTcpCommunicationSpiConcurrentConnectSelfTest<T extends Communic @Override public boolean apply() { Collection sessions = U.field(srv, "sessions"); - return sessions.size() == 2; + return sessions.size() == 2 * connectionsPerNode; } }, 5000);