You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by av...@apache.org on 2016/10/17 17:59:30 UTC
[33/40] ignite git commit: IGNITE-1924 Incomplete marshaller cache
rebalancing causes Grid hangs under SSL
IGNITE-1924 Incomplete marshaller cache rebalancing causes Grid hangs under SSL
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/447e07c0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/447e07c0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/447e07c0
Branch: refs/heads/ignite-ssl-hotfix
Commit: 447e07c0bb5af75bce6a14612606904e4e3d9705
Parents: b1ec58f
Author: Anton Vinogradov <av...@apache.org>
Authored: Fri Oct 14 11:40:41 2016 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Fri Oct 14 11:40:41 2016 +0300
----------------------------------------------------------------------
.../dht/GridDhtAffinityAssignmentRequest.java | 2 +-
.../util/nio/GridNioSessionMetaKey.java | 7 +-
.../util/nio/ssl/BlockingSslHandler.java | 9 +-
.../internal/util/nio/ssl/GridNioSslFilter.java | 63 ++++++++++---
.../util/nio/ssl/GridNioSslHandler.java | 17 ++--
.../internal/util/nio/ssl/GridSslMeta.java | 94 ++++++++++++++++++++
.../communication/tcp/TcpCommunicationSpi.java | 49 ++++++----
...mmunicationSpiConcurrentConnectSelfTest.java | 14 +++
...nicationSpiConcurrentConnectSslSelfTest.java | 35 ++++++++
...GridTcpCommunicationSpiRecoverySelfTest.java | 14 +++
...dTcpCommunicationSpiRecoverySslSelfTest.java | 35 ++++++++
.../tcp/IgniteCacheSslStartStopSelfTest.java | 1 -
.../IgniteSpiCommunicationSelfTestSuite.java | 4 +
13 files changed, 301 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
index 0ef7606..6959906 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
@@ -130,6 +130,6 @@ public class GridDhtAffinityAssignmentRequest extends GridCacheMessage {
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridDhtAffinityAssignmentRequest.class, this);
+ return S.toString(GridDhtAffinityAssignmentRequest.class, this, super.toString());
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
index b5387d9..bdb3a29 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
@@ -26,8 +26,8 @@ public enum GridNioSessionMetaKey {
/** NIO parser state. */
PARSER_STATE,
- /** SSL handler. */
- SSL_HANDLER,
+ /** SSL Meta. */
+ SSL_META,
/** NIO operation (request type). */
NIO_OPERATION,
@@ -44,9 +44,6 @@ public enum GridNioSessionMetaKey {
/** Message writer. */
MSG_WRITER,
- /** SSL engine. */
- SSL_ENGINE,
-
/** Ack closure. */
ACK_CLOSURE;
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
index bb566cd..273df5d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
@@ -113,6 +113,13 @@ public class BlockingSslHandler {
}
/**
+ *
+ */
+ public ByteBuffer inputBuffer(){
+ return inNetBuf;
+ }
+
+ /**
* Performs handshake procedure with remote peer.
*
* @throws GridNioException If filter processing has thrown an exception.
@@ -255,7 +262,7 @@ public class BlockingSslHandler {
* @throws SSLException If failed to process SSL data.
*/
public ByteBuffer decode(ByteBuffer buf) throws IgniteCheckedException, SSLException {
- inNetBuf.clear();
+ appBuf.clear();
if (buf.limit() > inNetBuf.remaining()) {
inNetBuf = expandBuffer(inNetBuf, inNetBuf.capacity() + buf.limit() * 2);
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
index 63cdd83..d6f9d10 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
@@ -35,7 +35,7 @@ import org.apache.ignite.internal.util.nio.GridNioSession;
import org.apache.ignite.internal.util.nio.GridNioSessionMetaKey;
import org.apache.ignite.internal.util.typedef.internal.U;
-import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_HANDLER;
+import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META;
/**
* Implementation of SSL filter using {@link SSLEngine}
@@ -154,28 +154,61 @@ public class GridNioSslFilter extends GridNioFilterAdapter {
if (log.isDebugEnabled())
log.debug("Remote client connected, creating SSL handler and performing initial handshake: " + ses);
- SSLEngine engine = sslCtx.createSSLEngine();
+ SSLEngine engine;
- engine.setUseClientMode(clientMode);
+ boolean handshake;
- if (!clientMode) {
- engine.setWantClientAuth(wantClientAuth);
+ GridSslMeta sslMeta = ses.meta(SSL_META.ordinal());
- engine.setNeedClientAuth(needClientAuth);
+ if (sslMeta == null) {
+ engine = sslCtx.createSSLEngine();
+
+ engine.setUseClientMode(clientMode);
+
+ if (!clientMode) {
+ engine.setWantClientAuth(wantClientAuth);
+
+ engine.setNeedClientAuth(needClientAuth);
+ }
+
+ if (enabledCipherSuites != null)
+ engine.setEnabledCipherSuites(enabledCipherSuites);
+
+ if (enabledProtos != null)
+ engine.setEnabledProtocols(enabledProtos);
+
+ sslMeta = new GridSslMeta();
+
+ ses.addMeta(SSL_META.ordinal(), sslMeta);
+
+ handshake = true;
}
+ else {
+ engine = sslMeta.sslEngine();
- if (enabledCipherSuites != null)
- engine.setEnabledCipherSuites(enabledCipherSuites);
+ assert engine != null;
- if (enabledProtos != null)
- engine.setEnabledProtocols(enabledProtos);
+ handshake = false;
+ }
try {
- GridNioSslHandler hnd = new GridNioSslHandler(this, ses, engine, directBuf, order, log);
+ GridNioSslHandler hnd = new GridNioSslHandler(this,
+ ses,
+ engine,
+ directBuf,
+ order,
+ log,
+ handshake,
+ sslMeta.encodedBuffer());
- ses.addMeta(SSL_HANDLER.ordinal(), hnd);
+ sslMeta.handler(hnd);
hnd.handshake();
+
+ ByteBuffer alreadyDecoded = sslMeta.decodedBuffer();
+
+ if (alreadyDecoded != null)
+ proceedMessageReceived(ses, alreadyDecoded);
}
catch (SSLException e) {
U.error(log, "Failed to start SSL handshake (will close inbound connection): " + ses, e);
@@ -379,7 +412,11 @@ public class GridNioSslFilter extends GridNioFilterAdapter {
* @return SSL handler.
*/
private GridNioSslHandler sslHandler(GridNioSession ses) {
- GridNioSslHandler hnd = ses.meta(SSL_HANDLER.ordinal());
+ GridSslMeta sslMeta = ses.meta(SSL_META.ordinal());
+
+ assert sslMeta != null;
+
+ GridNioSslHandler hnd = sslMeta.handler();
if (hnd == null)
throw new IgniteException("Failed to process incoming message (received message before SSL handler " +
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
index 3272b8e..eb8dad4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
@@ -43,7 +43,6 @@ import static javax.net.ssl.SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING;
import static javax.net.ssl.SSLEngineResult.Status;
import static javax.net.ssl.SSLEngineResult.Status.BUFFER_UNDERFLOW;
import static javax.net.ssl.SSLEngineResult.Status.CLOSED;
-import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_ENGINE;
import static org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.HANDSHAKE_FUT_META_KEY;
/**
@@ -104,6 +103,8 @@ class GridNioSslHandler extends ReentrantLock {
* @param log Logger to use.
* @param directBuf Direct buffer flag.
* @param order Byte order.
+ * @param handshake is handshake required.
+ * @param encBuf encoded buffer to be used.
* @throws SSLException If exception occurred when starting SSL handshake.
*/
GridNioSslHandler(GridNioSslFilter parent,
@@ -111,7 +112,9 @@ class GridNioSslHandler extends ReentrantLock {
SSLEngine engine,
boolean directBuf,
ByteOrder order,
- IgniteLogger log) throws SSLException {
+ IgniteLogger log,
+ boolean handshake,
+ ByteBuffer encBuf) throws SSLException {
assert parent != null;
assert ses != null;
assert engine != null;
@@ -125,11 +128,9 @@ class GridNioSslHandler extends ReentrantLock {
sslEngine = engine;
- if (ses.meta(SSL_ENGINE.ordinal()) == null)
+ if (handshake)
sslEngine.beginHandshake();
else {
- sslEngine = ses.meta(SSL_ENGINE.ordinal());
-
handshakeFinished = true;
initHandshakeComplete = true;
}
@@ -147,6 +148,12 @@ class GridNioSslHandler extends ReentrantLock {
inNetBuf.order(order);
+ if (encBuf != null) {
+ encBuf.flip();
+
+ inNetBuf.put(encBuf); // Buffer contains bytes read but not handled by sslEngine at BlockingSslHandler.
+ }
+
// Initially buffer is empty.
outNetBuf.position(0);
outNetBuf.limit(0);
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
new file mode 100644
index 0000000..5ca68b7
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.util.nio.ssl;
+
+import java.nio.ByteBuffer;
+import javax.net.ssl.SSLEngine;
+
+/**
+ *
+ */
+public class GridSslMeta {
+ /** GridNioSslHandler. */
+ private GridNioSslHandler hnd;
+
+ /** Data already decoded by blocking ssl handler. */
+ private ByteBuffer decodedBuf;
+
+ /** Data read but not decoded by blocking ssl handler. */
+ private ByteBuffer encodedBuf;
+
+ /** Ssl engine. */
+ private SSLEngine sslEngine;
+
+ /**
+ *
+ */
+ public SSLEngine sslEngine() {
+ return sslEngine;
+ }
+
+ /**
+ * @param sslEngine Ssl engine.
+ */
+ public void sslEngine(SSLEngine sslEngine) {
+ this.sslEngine = sslEngine;
+ }
+
+ /**
+ *
+ */
+ public GridNioSslHandler handler() {
+ return hnd;
+ }
+
+ /**
+ * @param hnd Handler.
+ */
+ public void handler(GridNioSslHandler hnd) {
+ this.hnd = hnd;
+ }
+
+ /**
+ *
+ */
+ public ByteBuffer decodedBuffer() {
+ return decodedBuf;
+ }
+
+ /**
+ * @param decodedBuf Decoded buffer.
+ */
+ public void decodedBuffer(ByteBuffer decodedBuf) {
+ this.decodedBuf = decodedBuf;
+ }
+
+ /**
+ *
+ */
+ public ByteBuffer encodedBuffer() {
+ return encodedBuf;
+ }
+
+ /**
+ * @param encodedBuf Encoded buffer.
+ */
+ public void encodedBuffer(ByteBuffer encodedBuf) {
+ this.encodedBuf = encodedBuf;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index d61cee6..0bbb4d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -90,6 +90,7 @@ import org.apache.ignite.internal.util.nio.GridShmemCommunicationClient;
import org.apache.ignite.internal.util.nio.GridTcpNioCommunicationClient;
import org.apache.ignite.internal.util.nio.ssl.BlockingSslHandler;
import org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter;
+import org.apache.ignite.internal.util.nio.ssl.GridSslMeta;
import org.apache.ignite.internal.util.typedef.CI2;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.X;
@@ -131,6 +132,7 @@ import org.jsr166.LongAdder8;
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
+import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META;
/**
* <tt>TcpCommunicationSpi</tt> is default communication SPI which uses
@@ -2376,19 +2378,28 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
long rcvCnt = -1;
- SSLEngine sslEngine = null;
+ Map<Integer, Object> meta = new HashMap<>();
+
+ GridSslMeta sslMeta = null;
try {
ch.socket().connect(addr, (int)timeoutHelper.nextTimeoutChunk(connTimeout));
if (isSslEnabled()) {
- sslEngine = ignite.configuration().getSslContextFactory().create().createSSLEngine();
+ meta.put(SSL_META.ordinal(), sslMeta = new GridSslMeta());
+
+ SSLEngine sslEngine = ignite.configuration().getSslContextFactory().create().createSSLEngine();
sslEngine.setUseClientMode(true);
+
+ sslMeta.sslEngine(sslEngine);
}
- rcvCnt = safeHandshake(ch, recoveryDesc, node.id(),
- timeoutHelper.nextTimeoutChunk(connTimeout0), sslEngine);
+ rcvCnt = safeHandshake(ch,
+ recoveryDesc,
+ node.id(),
+ timeoutHelper.nextTimeoutChunk(connTimeout0),
+ sslMeta);
if (rcvCnt == -1)
return null;
@@ -2399,16 +2410,8 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
}
try {
- Map<Integer, Object> meta = new HashMap<>();
-
meta.put(NODE_ID_META, node.id());
- if (isSslEnabled()) {
- assert sslEngine != null;
-
- meta.put(GridNioSessionMetaKey.SSL_ENGINE.ordinal(), sslEngine);
- }
-
if (recoveryDesc != null) {
recoveryDesc.onHandshake(rcvCnt);
@@ -2560,7 +2563,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
* @param recovery Recovery descriptor if use recovery handshake, otherwise {@code null}.
* @param rmtNodeId Remote node.
* @param timeout Timeout for handshake.
- * @param ssl SSL engine if used cryptography, otherwise {@code null}.
+ * @param sslMeta Session meta.
* @throws IgniteCheckedException If handshake failed or wasn't completed withing timeout.
* @return Handshake response.
*/
@@ -2570,7 +2573,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
@Nullable GridNioRecoveryDescriptor recovery,
UUID rmtNodeId,
long timeout,
- @Nullable SSLEngine ssl
+ GridSslMeta sslMeta
) throws IgniteCheckedException {
HandshakeTimeoutObject<T> obj = new HandshakeTimeoutObject<>(client, U.currentTimeMillis() + timeout);
@@ -2592,7 +2595,9 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
ByteBuffer buf;
if (isSslEnabled()) {
- sslHnd = new BlockingSslHandler(ssl, ch, directBuf, ByteOrder.nativeOrder(), log);
+ assert sslMeta != null;
+
+ sslHnd = new BlockingSslHandler(sslMeta.sslEngine(), ch, directBuf, ByteOrder.nativeOrder(), log);
if (!sslHnd.handshake())
throw new IgniteCheckedException("SSL handshake is not completed.");
@@ -2710,11 +2715,21 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
i += decode.remaining();
- buf.flip();
- buf.compact();
+ buf.clear();
}
rcvCnt = decode.getLong(1);
+
+ if (decode.limit() > 9) {
+ decode.position(9);
+
+ sslMeta.decodedBuffer(decode);
+ }
+
+ ByteBuffer inBuf = sslHnd.inputBuffer();
+
+ if (inBuf.position() > 0)
+ sslMeta.encodedBuffer(inBuf);
}
else {
buf = ByteBuffer.allocate(9);
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/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 97eb34c..8635d94 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
@@ -33,6 +33,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.communication.GridIoMessageFactory;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -49,6 +50,7 @@ import org.apache.ignite.spi.communication.GridTestMessage;
import org.apache.ignite.testframework.GridSpiTestContext;
import org.apache.ignite.testframework.GridTestNode;
import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.IgniteMock;
import org.apache.ignite.testframework.junits.IgniteTestResources;
import org.apache.ignite.testframework.junits.spi.GridSpiAbstractTest;
import org.apache.ignite.testframework.junits.spi.GridSpiTest;
@@ -78,6 +80,9 @@ public class GridTcpCommunicationSpiConcurrentConnectSelfTest<T extends Communic
/** */
private static int port = 60_000;
+ /** Use ssl. */
+ protected boolean useSsl;
+
/**
*
*/
@@ -351,6 +356,15 @@ public class GridTcpCommunicationSpiConcurrentConnectSelfTest<T extends Communic
rsrcs.inject(spi);
+ if (useSsl) {
+ IgniteMock ignite = GridTestUtils.getFieldValue(spi, IgniteSpiAdapter.class, "ignite");
+
+ IgniteConfiguration cfg = ignite.configuration()
+ .setSslContextFactory(GridTestUtils.sslFactory());
+
+ ignite.setStaticCfg(cfg);
+ }
+
spi.setListener(lsnr);
node.setAttributes(spi.getNodeAttributes());
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSslSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSslSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSslSelfTest.java
new file mode 100644
index 0000000..f2b9a50
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConcurrentConnectSslSelfTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.communication.tcp;
+
+/**
+ *
+ */
+public class GridTcpCommunicationSpiConcurrentConnectSslSelfTest extends GridTcpCommunicationSpiConcurrentConnectSelfTest {
+ /**
+ * Default constructor.
+ */
+ public GridTcpCommunicationSpiConcurrentConnectSslSelfTest() {
+ useSsl = true;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long getTestTimeout() {
+ return super.getTestTimeout() * 4;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
index 94dc665..3234d74 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySelfTest.java
@@ -29,6 +29,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.communication.GridIoMessageFactory;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -46,6 +47,7 @@ import org.apache.ignite.spi.communication.GridTestMessage;
import org.apache.ignite.testframework.GridSpiTestContext;
import org.apache.ignite.testframework.GridTestNode;
import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.IgniteMock;
import org.apache.ignite.testframework.junits.IgniteTestResources;
import org.apache.ignite.testframework.junits.spi.GridSpiAbstractTest;
import org.apache.ignite.testframework.junits.spi.GridSpiTest;
@@ -74,6 +76,9 @@ public class GridTcpCommunicationSpiRecoverySelfTest<T extends CommunicationSpi>
/** */
protected static int port = 30_000;
+ /** Use ssl. */
+ protected boolean useSsl;
+
/**
*
*/
@@ -670,6 +675,15 @@ public class GridTcpCommunicationSpiRecoverySelfTest<T extends CommunicationSpi>
rsrcs.inject(spi);
+ if (useSsl) {
+ IgniteMock ignite = GridTestUtils.getFieldValue(spi, IgniteSpiAdapter.class, "ignite");
+
+ IgniteConfiguration cfg = ignite.configuration()
+ .setSslContextFactory(GridTestUtils.sslFactory());
+
+ ignite.setStaticCfg(cfg);
+ }
+
spi.setListener(new TestListener());
node.setAttributes(spi.getNodeAttributes());
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySslSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySslSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySslSelfTest.java
new file mode 100644
index 0000000..4182ea1
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiRecoverySslSelfTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.communication.tcp;
+
+/**
+ *
+ */
+public class GridTcpCommunicationSpiRecoverySslSelfTest extends GridTcpCommunicationSpiRecoverySelfTest {
+ /**
+ * Default constructor.
+ */
+ public GridTcpCommunicationSpiRecoverySslSelfTest() {
+ useSsl = true;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long getTestTimeout() {
+ return super.getTestTimeout() * 2;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteCacheSslStartStopSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteCacheSslStartStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteCacheSslStartStopSelfTest.java
index 12bd020..3324fcc 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteCacheSslStartStopSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/IgniteCacheSslStartStopSelfTest.java
@@ -32,7 +32,6 @@ public class IgniteCacheSslStartStopSelfTest extends IgniteCachePutRetryAbstract
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
- fail("https://issues.apache.org/jira/browse/IGNITE-1924");
cfg.setSslContextFactory(GridTestUtils.sslFactory());
return cfg;
http://git-wip-us.apache.org/repos/asf/ignite/blob/447e07c0/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
index d48c2c4..eb88524 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiCommunicationSelfTestSuite.java
@@ -19,12 +19,14 @@ package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiConcurrentConnectSelfTest;
+import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiConcurrentConnectSslSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiConfigSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiMultithreadedSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiMultithreadedShmemTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiRecoveryAckSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiRecoveryFailureDetectionSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiRecoverySelfTest;
+import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiRecoverySslSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiShmemSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiStartStopSelfTest;
import org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiTcpFailureDetectionSelfTest;
@@ -46,8 +48,10 @@ public class IgniteSpiCommunicationSelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(GridTcpCommunicationSpiRecoveryAckSelfTest.class));
suite.addTest(new TestSuite(IgniteTcpCommunicationRecoveryAckClosureSelfTest.class));
suite.addTest(new TestSuite(GridTcpCommunicationSpiRecoverySelfTest.class));
+ suite.addTest(new TestSuite(GridTcpCommunicationSpiRecoverySslSelfTest.class));
suite.addTest(new TestSuite(GridTcpCommunicationSpiConcurrentConnectSelfTest.class));
+ suite.addTest(new TestSuite(GridTcpCommunicationSpiConcurrentConnectSslSelfTest.class));
suite.addTest(new TestSuite(GridTcpCommunicationSpiTcpSelfTest.class));
suite.addTest(new TestSuite(GridTcpCommunicationSpiTcpNoDelayOffSelfTest.class));