You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2017/05/15 16:38:30 UTC
[1/3] mina-sshd git commit: Using
JUnit4ClassRunnerWithParametersFactory to avoid repeated instantions in case
of parameterized tests
Repository: mina-sshd
Updated Branches:
refs/heads/master 376d1aee5 -> 6256245da
Using JUnit4ClassRunnerWithParametersFactory to avoid repeated instantions in case of parameterized tests
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/f2798ec0
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/f2798ec0
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/f2798ec0
Branch: refs/heads/master
Commit: f2798ec05ebd8bf3e0b92e076d12ce11cd4ee8a9
Parents: 376d1ae
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Sun May 14 09:41:26 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Mon May 15 19:38:21 2017 +0300
----------------------------------------------------------------------
.../keys/loader/putty/PuttyKeyUtilsTest.java | 3 +
.../auth/BuiltinUserAuthFactoriesTest.java | 3 +
.../org/apache/sshd/client/kex/KexTest.java | 3 +
.../client/subsystem/sftp/SftpVersionsTest.java | 3 +
.../helpers/AbstractCheckFileExtensionTest.java | 3 +
.../helpers/AbstractMD5HashExtensionTest.java | 3 +
.../helpers/CopyDataExtensionImplTest.java | 3 +
.../sshd/common/channel/WindowInitTest.java | 3 +
.../apache/sshd/common/cipher/CipherTest.java | 3 +
.../common/compression/CompressionTest.java | 3 +
.../config/keys/BuiltinIdentitiesTest.java | 3 +
.../common/config/keys/KeyRandomArtTest.java | 6 ++
.../common/config/keys/KeyUtilsCloneTest.java | 3 +
.../KeyUtilsFingerprintCaseSensitivityTest.java | 3 +
.../keys/KeyUtilsFingerprintGenerationTest.java | 15 +++--
.../loader/AESPrivateKeyObfuscatorTest.java | 3 +
.../OpenSSHKeyPairResourceParserTest.java | 3 +
.../org/apache/sshd/common/mac/MacTest.java | 3 +
.../apache/sshd/common/mac/MacVectorsTest.java | 3 +
.../sshd/common/random/RandomFactoryTest.java | 3 +
.../signature/SignatureFactoriesTest.java | 3 +
.../sshd/common/util/io/der/ASN1ClassTest.java | 3 +
.../sshd/common/util/io/der/ASN1TypeTest.java | 3 +
...SecurityProviderRegistrarCipherNameTest.java | 3 +
.../util/security/eddsa/Ed25519VectorsTest.java | 3 +
.../auth/BuiltinUserAuthFactoriesTest.java | 3 +
.../server/auth/WelcomeBannerPhaseTest.java | 3 +
.../server/shell/TtyFilterInputStreamTest.java | 3 +
.../server/shell/TtyFilterOutputStreamTest.java | 3 +
.../test/JUnit4ClassRunnerWithParameters.java | 48 ++++++++++++++++
.../JUnit4ClassRunnerWithParametersFactory.java | 58 ++++++++++++++++++++
31 files changed, 202 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-contrib/src/test/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-contrib/src/test/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyUtilsTest.java b/sshd-contrib/src/test/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyUtilsTest.java
index aea094f..e8208d1 100644
--- a/sshd-contrib/src/test/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyUtilsTest.java
+++ b/sshd-contrib/src/test/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyUtilsTest.java
@@ -33,6 +33,7 @@ import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.Assume;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -40,12 +41,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class PuttyKeyUtilsTest extends BaseTestSupport {
public static final String PASSWORD = "super secret passphrase";
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/auth/BuiltinUserAuthFactoriesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/auth/BuiltinUserAuthFactoriesTest.java b/sshd-core/src/test/java/org/apache/sshd/client/auth/BuiltinUserAuthFactoriesTest.java
index ee81a0b..17f9fa2 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/auth/BuiltinUserAuthFactoriesTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/auth/BuiltinUserAuthFactoriesTest.java
@@ -29,6 +29,7 @@ import org.apache.sshd.client.auth.BuiltinUserAuthFactories.ParseResult;
import org.apache.sshd.common.auth.UserAuthMethodFactory;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -36,12 +37,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class BuiltinUserAuthFactoriesTest extends BaseTestSupport {
private final BuiltinUserAuthFactories factory;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
index b9e47f3..5509799 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/kex/KexTest.java
@@ -41,6 +41,7 @@ import org.apache.sshd.common.kex.KeyExchange;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.TeeOutputStream;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
@@ -52,6 +53,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* Test client key exchange algorithms.
@@ -60,6 +62,7 @@ import org.junit.runners.Parameterized.Parameters;
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KexTest extends BaseTestSupport {
private static SshServer sshd;
private static int port;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/SftpVersionsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/SftpVersionsTest.java b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/SftpVersionsTest.java
index 4ae153a..5c53825 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/SftpVersionsTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/SftpVersionsTest.java
@@ -57,6 +57,7 @@ import org.apache.sshd.server.subsystem.sftp.DefaultGroupPrincipal;
import org.apache.sshd.server.subsystem.sftp.SftpEventListener;
import org.apache.sshd.server.subsystem.sftp.SftpSubsystem;
import org.apache.sshd.server.subsystem.sftp.SftpSubsystemFactory;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.Before;
import org.junit.FixMethodOrder;
@@ -65,12 +66,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class SftpVersionsTest extends AbstractSftpClientTestSupport {
private static final List<Integer> VERSIONS =
Collections.unmodifiableList(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractCheckFileExtensionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractCheckFileExtensionTest.java b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractCheckFileExtensionTest.java
index d337244..d636096 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractCheckFileExtensionTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractCheckFileExtensionTest.java
@@ -49,6 +49,7 @@ import org.apache.sshd.common.util.NumberUtils;
import org.apache.sshd.common.util.Pair;
import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.common.util.io.IoUtils;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.Before;
import org.junit.FixMethodOrder;
@@ -57,12 +58,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class AbstractCheckFileExtensionTest extends AbstractSftpClientTestSupport {
private static final Collection<Integer> DATA_SIZES =
Collections.unmodifiableList(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractMD5HashExtensionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractMD5HashExtensionTest.java b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractMD5HashExtensionTest.java
index 12ebf4b..fc3c607 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractMD5HashExtensionTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/AbstractMD5HashExtensionTest.java
@@ -43,6 +43,7 @@ import org.apache.sshd.common.subsystem.sftp.SftpException;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.common.util.io.IoUtils;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.Assume;
import org.junit.Before;
@@ -53,12 +54,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class AbstractMD5HashExtensionTest extends AbstractSftpClientTestSupport {
private static final List<Integer> DATA_SIZES =
Collections.unmodifiableList(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/CopyDataExtensionImplTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/CopyDataExtensionImplTest.java b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/CopyDataExtensionImplTest.java
index 16f49ba..1c04c32 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/CopyDataExtensionImplTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/subsystem/sftp/extensions/helpers/CopyDataExtensionImplTest.java
@@ -43,6 +43,7 @@ import org.apache.sshd.common.Factory;
import org.apache.sshd.common.random.Random;
import org.apache.sshd.common.subsystem.sftp.SftpConstants;
import org.apache.sshd.common.util.io.IoUtils;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.Before;
import org.junit.FixMethodOrder;
@@ -51,12 +52,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class CopyDataExtensionImplTest extends AbstractSftpClientTestSupport {
private static final List<Object[]> PARAMETERS =
Collections.unmodifiableList(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/channel/WindowInitTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/channel/WindowInitTest.java b/sshd-core/src/test/java/org/apache/sshd/common/channel/WindowInitTest.java
index cfd982e..dfa279c 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/channel/WindowInitTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/channel/WindowInitTest.java
@@ -29,18 +29,21 @@ import org.apache.sshd.common.PropertyResolver;
import org.apache.sshd.common.util.buffer.Buffer;
import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class WindowInitTest extends BaseTestSupport {
private static final AbstractChannel MOCK_CHANNEL = new AbstractChannel(true) {
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java
index 92828cc..54b4ca3 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/cipher/CipherTest.java
@@ -38,6 +38,7 @@ import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
import org.apache.sshd.util.test.JSchLogger;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.SimpleUserInfo;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
@@ -49,6 +50,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* Test Cipher algorithms.
@@ -57,6 +59,7 @@ import org.junit.runners.Parameterized.Parameters;
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class CipherTest extends BaseTestSupport {
private static final Integer NUM_LOADTEST_ROUNDS = 100000;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java b/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
index 135261c..87fb973 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
@@ -36,6 +36,7 @@ import org.apache.sshd.common.session.SessionListener;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
import org.apache.sshd.util.test.JSchLogger;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.SimpleUserInfo;
import org.apache.sshd.util.test.Utils;
import org.junit.After;
@@ -49,6 +50,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* Test compression algorithms.
@@ -57,6 +59,7 @@ import org.junit.runners.Parameterized.Parameters;
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class CompressionTest extends BaseTestSupport {
private static final Collection<KexProposalOption> COMPRESSION_OPTIONS =
Collections.unmodifiableSet(EnumSet.of(KexProposalOption.C2SCOMP, KexProposalOption.S2CCOMP));
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
index 2fa299a..9f7a981 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
@@ -28,6 +28,7 @@ import java.util.List;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
@@ -36,12 +37,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class BuiltinIdentitiesTest extends BaseTestSupport {
private final BuiltinIdentities expected;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
index b3ff78f..a272cb1 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
@@ -29,17 +29,23 @@ import org.apache.sshd.common.cipher.ECCurves;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
+import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KeyRandomArtTest extends BaseTestSupport {
private static final Collection<KeyPair> KEYS = new LinkedList<>();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
index b8b46d8..4939584 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
@@ -33,18 +33,21 @@ import org.apache.sshd.common.keyprovider.KeyPairProvider;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KeyUtilsCloneTest extends BaseTestSupport {
private final String keyType;
private final int keySize;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
index a100aa9..ebc8752 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
@@ -27,6 +27,7 @@ import java.util.Collection;
import org.apache.sshd.common.util.Pair;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -34,12 +35,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KeyUtilsFingerprintCaseSensitivityTest extends BaseTestSupport {
// CHECKSTYLE:OFF
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
index b360cb7..c43a64f 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
@@ -33,18 +33,21 @@ import org.apache.sshd.common.digest.BuiltinDigests;
import org.apache.sshd.common.digest.DigestFactory;
import org.apache.sshd.common.util.Pair;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KeyUtilsFingerprintGenerationTest extends BaseTestSupport {
private final PublicKey key;
private final DigestFactory digestFactory;
@@ -66,11 +69,11 @@ public class KeyUtilsFingerprintGenerationTest extends BaseTestSupport {
// CHECKSTYLE:ON
Arrays.asList(
new Pair<>(
- (DigestFactory)BuiltinDigests.md5,
+ BuiltinDigests.md5,
"MD5:24:32:3c:80:01:b3:e1:fa:7c:53:ca:e3:e8:4e:c6:8e"
),
new Pair<>(
- (DigestFactory)BuiltinDigests.sha256,
+ BuiltinDigests.sha256,
"SHA256:1wNOZO+/XgNGJMx8UUJst33V+bBMTz5EcL0B6y2iRv0"
)
)
@@ -81,11 +84,11 @@ public class KeyUtilsFingerprintGenerationTest extends BaseTestSupport {
// CHECKSTYLE:ON
Arrays.asList(
new Pair<>(
- (DigestFactory)BuiltinDigests.md5,
+ BuiltinDigests.md5,
"MD5:fb:29:14:8d:94:f9:1d:cf:6b:0e:a4:35:1d:83:44:2f"
),
new Pair<>(
- (DigestFactory)BuiltinDigests.sha256,
+ BuiltinDigests.sha256,
"SHA256:grxw4KhY1cK6eOczBWs7tDVvo9V0PQw4E1wN1gJvHlw"
)
)
@@ -96,11 +99,11 @@ public class KeyUtilsFingerprintGenerationTest extends BaseTestSupport {
// CHECKSTYLE:ON
Arrays.asList(
new Pair<>(
- (DigestFactory)BuiltinDigests.md5,
+ BuiltinDigests.md5,
"MD5:e6:dc:a2:4f:5b:11:b2:3c:0f:e8:f6:d8:d1:01:e9:d3"
),
new Pair<>(
- (DigestFactory)BuiltinDigests.sha512,
+ BuiltinDigests.sha512,
"SHA512:4w6ZB78tmFWhpN2J50Ok6WeMJhZp1X0xN0EKWxZmRLcYDbCWhyJDe8lgrQKWqdTCMZ5aNEBl9xQUklcC5Gt2jg"
)
)
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
index 352283a..63fab33 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
@@ -29,18 +29,21 @@ import javax.crypto.spec.SecretKeySpec;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class AESPrivateKeyObfuscatorTest extends BaseTestSupport {
private static final Random RANDOMIZER = new Random(System.currentTimeMillis());
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
index 9c54638..b18564a 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
@@ -33,6 +33,7 @@ import org.apache.sshd.common.config.keys.PublicKeyEntryResolver;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.Assume;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -40,12 +41,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class OpenSSHKeyPairResourceParserTest extends BaseTestSupport {
private static final OpenSSHKeyPairResourceParser PARSER = OpenSSHKeyPairResourceParser.INSTANCE;
private final BuiltinIdentities identity;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
index c4eb730..e92a5c5 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacTest.java
@@ -35,6 +35,7 @@ import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
import org.apache.sshd.util.test.JSchLogger;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.SimpleUserInfo;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
@@ -47,6 +48,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.ConnectionInfo;
@@ -58,6 +60,7 @@ import ch.ethz.ssh2.ConnectionInfo;
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class MacTest extends BaseTestSupport {
private static final Collection<String> GANYMEDE_MACS =
Collections.unmodifiableSet(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/mac/MacVectorsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacVectorsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacVectorsTest.java
index cc41c86..8ebed89 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/mac/MacVectorsTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/mac/MacVectorsTest.java
@@ -33,18 +33,21 @@ import org.apache.sshd.common.util.Pair;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class MacVectorsTest extends BaseTestSupport {
private final VectorSeed seed;
private final Factory<? extends Mac> macFactory;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/random/RandomFactoryTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/random/RandomFactoryTest.java b/sshd-core/src/test/java/org/apache/sshd/common/random/RandomFactoryTest.java
index af471e4..dd6a043 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/random/RandomFactoryTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/random/RandomFactoryTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.Assume;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -31,12 +32,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class RandomFactoryTest extends BaseTestSupport {
private final RandomFactory factory;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
index 9c21f33..8b2943b 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
@@ -43,6 +43,7 @@ import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
import org.junit.Assume;
@@ -53,12 +54,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class SignatureFactoriesTest extends BaseTestSupport implements OptionalFeature {
private static SshServer sshd;
private static SshClient client;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1ClassTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1ClassTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1ClassTest.java
index c70d250..7b6c1d1 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1ClassTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1ClassTest.java
@@ -21,18 +21,21 @@ package org.apache.sshd.common.util.io.der;
import java.util.List;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class ASN1ClassTest extends BaseTestSupport {
private final ASN1Class expected;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1TypeTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1TypeTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1TypeTest.java
index ce24b66..d997194 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1TypeTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/util/io/der/ASN1TypeTest.java
@@ -21,18 +21,21 @@ package org.apache.sshd.common.util.io.der;
import java.util.List;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class ASN1TypeTest extends BaseTestSupport {
private final ASN1Type expected;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/util/security/SecurityProviderRegistrarCipherNameTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/security/SecurityProviderRegistrarCipherNameTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/security/SecurityProviderRegistrarCipherNameTest.java
index a256552..f7d0f1a 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/security/SecurityProviderRegistrarCipherNameTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/util/security/SecurityProviderRegistrarCipherNameTest.java
@@ -27,18 +27,21 @@ import javax.crypto.Cipher;
import org.apache.sshd.common.cipher.BuiltinCiphers;
import org.apache.sshd.common.cipher.CipherInformation;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class SecurityProviderRegistrarCipherNameTest extends BaseTestSupport {
private final CipherInformation cipherInfo;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java
index b58aad3..5bda71a 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java
@@ -33,6 +33,7 @@ import org.apache.sshd.common.signature.Signature;
import org.apache.sshd.common.util.buffer.BufferUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
@@ -41,6 +42,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
@@ -49,6 +51,7 @@ import org.junit.runners.Parameterized.Parameters;
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class Ed25519VectorsTest extends BaseTestSupport {
private final byte[] prvBytes;
private final PrivateKey privateKey;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/server/auth/BuiltinUserAuthFactoriesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/auth/BuiltinUserAuthFactoriesTest.java b/sshd-core/src/test/java/org/apache/sshd/server/auth/BuiltinUserAuthFactoriesTest.java
index df6ed4c..b26e0e8 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/auth/BuiltinUserAuthFactoriesTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/auth/BuiltinUserAuthFactoriesTest.java
@@ -30,6 +30,7 @@ import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.server.auth.BuiltinUserAuthFactories.ParseResult;
import org.apache.sshd.server.auth.gss.UserAuthGSSFactory;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -37,12 +38,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class BuiltinUserAuthFactoriesTest extends BaseTestSupport {
private final BuiltinUserAuthFactories factory;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
index 2541558..bc5b2b2 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerPhaseTest.java
@@ -30,6 +30,7 @@ import org.apache.sshd.common.PropertyResolverUtils;
import org.apache.sshd.server.ServerAuthenticationManager;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.Utils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -39,12 +40,14 @@ import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class WelcomeBannerPhaseTest extends BaseTestSupport {
private static SshServer sshd;
private static SshClient client;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterInputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterInputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterInputStreamTest.java
index eff05da..f733273 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterInputStreamTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterInputStreamTest.java
@@ -38,18 +38,21 @@ import org.apache.sshd.common.channel.PtyMode;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class TtyFilterInputStreamTest extends BaseTestSupport {
private static final List<PtyMode> MODES =
Collections.unmodifiableList(
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterOutputStreamTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterOutputStreamTest.java b/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterOutputStreamTest.java
index 7271813..24d4004 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterOutputStreamTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/shell/TtyFilterOutputStreamTest.java
@@ -35,18 +35,21 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.sshd.common.channel.PtyMode;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class TtyFilterOutputStreamTest extends BaseTestSupport {
private final PtyMode mode;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParameters.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParameters.java b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParameters.java
new file mode 100644
index 0000000..acf44a5
--- /dev/null
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParameters.java
@@ -0,0 +1,48 @@
+/*
+ * 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.sshd.util.test;
+
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters;
+import org.junit.runners.parameterized.TestWithParameters;
+
+/**
+ * Uses a cached created instance instead of a new one on every call of {@code #createTest()}
+ *
+ * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
+ */
+public class JUnit4ClassRunnerWithParameters extends BlockJUnit4ClassRunnerWithParameters {
+ private volatile Object testInstance;
+
+ public JUnit4ClassRunnerWithParameters(TestWithParameters test) throws InitializationError {
+ super(test);
+ }
+
+ @Override
+ public Object createTest() throws Exception {
+ synchronized (this) {
+ if (testInstance == null) {
+ testInstance = super.createTest();
+ }
+ }
+
+ return testInstance;
+ }
+}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/f2798ec0/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
new file mode 100644
index 0000000..9dc2308
--- /dev/null
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
@@ -0,0 +1,58 @@
+/*
+ * 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.sshd.util.test;
+
+import org.junit.runner.Runner;
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.parameterized.ParametersRunnerFactory;
+import org.junit.runners.parameterized.TestWithParameters;
+
+/**
+ * Avoids re-creating a test class instance for each parameterized test method. Usage:
+ *
+ * <PRE>{@code
+ * @FixMethodOrder(MethodSorters.NAME_ASCENDING)
+ * @RunWith(Parameterized.class)
+ * @UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
+ * public class MyParameterizedTest {
+ * public MyParameterizedTest(...params...) {
+ * ....
+ * }
+ *
+ * @Parameters(...)
+ * public static List<Object[]> parameters() {
+ * ...
+ * }
+ * }
+ * }</PRE>
+ *
+ * @see JUnit4ClassRunnerWithParameters
+ * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
+ */
+public class JUnit4ClassRunnerWithParametersFactory implements ParametersRunnerFactory {
+ public JUnit4ClassRunnerWithParametersFactory() {
+ super();
+ }
+
+ @Override
+ public Runner createRunnerForTestWithParameters(TestWithParameters test) throws InitializationError {
+ return new JUnit4ClassRunnerWithParameters(test);
+ }
+}
[2/3] mina-sshd git commit: [SSHD-747] Add support for non-standard
port specification in known_hosts file
Posted by lg...@apache.org.
[SSHD-747] Add support for non-standard port specification in known_hosts file
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/2119f798
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/2119f798
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/2119f798
Branch: refs/heads/master
Commit: 2119f7984ac0eceaca10c6ace8321ab506490657
Parents: f2798ec
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Sun May 14 12:17:02 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Mon May 15 19:38:22 2017 +0300
----------------------------------------------------------------------
.../client/config/hosts/HostPatternValue.java | 97 ++++++++++++++++++++
.../client/config/hosts/HostPatternsHolder.java | 70 ++++++++++----
.../client/config/hosts/KnownHostEntry.java | 4 +-
.../KnownHostsServerKeyVerifier.java | 46 ++++++----
.../apache/sshd/common/util/GenericUtils.java | 24 +++++
.../sshd/common/util/net/SshdSocketAddress.java | 65 +++++++++++--
.../config/hosts/HostConfigEntryTest.java | 17 ++--
.../config/hosts/KnownHostHashValueTest.java | 3 +
.../KnownHostsServerKeyVerifierTest.java | 96 ++++++++++---------
.../apache/sshd/client/keyverifier/known_hosts | 5 +-
10 files changed, 329 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternValue.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternValue.java b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternValue.java
new file mode 100644
index 0000000..20d682f
--- /dev/null
+++ b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternValue.java
@@ -0,0 +1,97 @@
+/*
+ * 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.sshd.client.config.hosts;
+
+import java.util.regex.Pattern;
+
+import org.apache.sshd.common.util.GenericUtils;
+
+/**
+ * Represents a pattern definition in the <U>known_hosts</U> file
+ * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
+ * @see <A HREF="https://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#About_the_Contents_of_the_known_hosts_Files">
+ * OpenSSH cookbook - About the Contents of the known hosts Files</A>
+ */
+public class HostPatternValue {
+ private Pattern pattern;
+ private int port;
+ private boolean negated;
+
+ public HostPatternValue() {
+ super();
+ }
+
+ public HostPatternValue(Pattern pattern, boolean negated) {
+ this(pattern, 0, negated);
+ }
+
+ public HostPatternValue(Pattern pattern, int port, boolean negated) {
+ this.pattern = pattern;
+ this.port = port;
+ this.negated = negated;
+ }
+
+ public Pattern getPattern() {
+ return pattern;
+ }
+
+ public void setPattern(Pattern pattern) {
+ this.pattern = pattern;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public boolean isNegated() {
+ return negated;
+ }
+
+ public void setNegated(boolean negated) {
+ this.negated = negated;
+ }
+
+ @Override
+ public String toString() {
+ Pattern p = getPattern();
+ String purePattern = (p == null) ? null : p.pattern();
+ StringBuilder sb = new StringBuilder(GenericUtils.length(purePattern) + Short.SIZE);
+ if (isNegated()) {
+ sb.append(HostPatternsHolder.NEGATION_CHAR_PATTERN);
+ }
+
+ int portValue = getPort();
+ if (portValue > 0) {
+ sb.append(HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM);
+ }
+ sb.append(purePattern);
+ if (portValue > 0) {
+ sb.append(HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM);
+ sb.append(HostPatternsHolder.PORT_VALUE_DELIMITER);
+ sb.append(portValue);
+ }
+
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
index a3e20ab..eff34d9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
@@ -29,7 +29,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.Pair;
import org.apache.sshd.common.util.ValidateUtils;
/**
@@ -58,17 +57,26 @@ public abstract class HostPatternsHolder {
*/
public static final String PATTERN_CHARS = new String(new char[]{WILDCARD_PATTERN, SINGLE_CHAR_PATTERN, NEGATION_CHAR_PATTERN});
- private Collection<Pair<Pattern, Boolean>> patterns = new LinkedList<>();
+ /** Port value separator if non-standard port pattern used */
+ public static final char PORT_VALUE_DELIMITER = ':';
+
+ /** Non-standard port specification host pattern enclosure start delimiter */
+ public static final char NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM = '[';
+
+ /** Non-standard port specification host pattern enclosure end delimiter */
+ public static final char NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM = ']';
+
+ private Collection<HostPatternValue> patterns = new LinkedList<>();
protected HostPatternsHolder() {
super();
}
- public Collection<Pair<Pattern, Boolean>> getPatterns() {
+ public Collection<HostPatternValue> getPatterns() {
return patterns;
}
- public void setPatterns(Collection<Pair<Pattern, Boolean>> patterns) {
+ public void setPatterns(Collection<HostPatternValue> patterns) {
this.patterns = patterns;
}
@@ -76,11 +84,12 @@ public abstract class HostPatternsHolder {
* Checks if a given host name / address matches the entry's host pattern(s)
*
* @param host The host name / address - ignored if {@code null}/empty
+ * @param port The connection port
* @return {@code true} if the name / address matches the pattern(s)
* @see #isHostMatch(String, Pattern)
*/
- public boolean isHostMatch(String host) {
- return isHostMatch(host, getPatterns());
+ public boolean isHostMatch(String host, int port) {
+ return isHostMatch(host, port, getPatterns());
}
/**
@@ -138,7 +147,7 @@ public abstract class HostPatternsHolder {
List<HostConfigEntry> matches = null;
for (HostConfigEntry entry : entries) {
- if (!entry.isHostMatch(host)) {
+ if (!entry.isHostMatch(host, 0 /* any port */)) {
continue; // debug breakpoint
}
@@ -156,14 +165,14 @@ public abstract class HostPatternsHolder {
}
}
- public static boolean isHostMatch(String host, Collection<Pair<Pattern, Boolean>> patterns) {
+ public static boolean isHostMatch(String host, int port, Collection<HostPatternValue> patterns) {
if (GenericUtils.isEmpty(patterns)) {
return false;
}
boolean matchFound = false;
- for (Pair<Pattern, Boolean> pp : patterns) {
- Boolean negated = pp.getSecond();
+ for (HostPatternValue pv : patterns) {
+ boolean negated = pv.isNegated();
/*
* If already found a match we are interested only in negations
*/
@@ -171,7 +180,7 @@ public abstract class HostPatternsHolder {
continue;
}
- if (!isHostMatch(host, pp.getFirst())) {
+ if (!isHostMatch(host, pv.getPattern())) {
continue;
}
@@ -185,6 +194,11 @@ public abstract class HostPatternsHolder {
return false;
}
+ int pvPort = pv.getPort();
+ if ((pvPort != 0) && (port != 0) && (pvPort != port)) {
+ continue;
+ }
+
matchFound = true;
}
@@ -207,16 +221,16 @@ public abstract class HostPatternsHolder {
return m.matches();
}
- public static List<Pair<Pattern, Boolean>> parsePatterns(CharSequence... patterns) {
+ public static List<HostPatternValue> parsePatterns(CharSequence... patterns) {
return parsePatterns(GenericUtils.isEmpty(patterns) ? Collections.emptyList() : Arrays.asList(patterns));
}
- public static List<Pair<Pattern, Boolean>> parsePatterns(Collection<? extends CharSequence> patterns) {
+ public static List<HostPatternValue> parsePatterns(Collection<? extends CharSequence> patterns) {
if (GenericUtils.isEmpty(patterns)) {
return Collections.emptyList();
}
- List<Pair<Pattern, Boolean>> result = new ArrayList<>(patterns.size());
+ List<HostPatternValue> result = new ArrayList<>(patterns.size());
for (CharSequence p : patterns) {
result.add(ValidateUtils.checkNotNull(toPattern(p), "No pattern for %s", p));
}
@@ -231,18 +245,38 @@ public abstract class HostPatternsHolder {
* @param pattern The original pattern string - ignored if {@code null}/empty
* @return The regular expression matcher {@link Pattern} and the indication
* whether it is a negating pattern or not - {@code null} if no original string
+ * @see #NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM
+ * @see #NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM
* @see #WILDCARD_PATTERN
* @see #SINGLE_CHAR_PATTERN
* @see #NEGATION_CHAR_PATTERN
*/
- public static Pair<Pattern, Boolean> toPattern(CharSequence pattern) {
+ public static HostPatternValue toPattern(CharSequence pattern) {
if (GenericUtils.isEmpty(pattern)) {
return null;
}
- StringBuilder sb = new StringBuilder(pattern.length());
+ int patternLen = pattern.length();
+ int port = 0;
+ // Check if non-standard port value used
+ StringBuilder sb = new StringBuilder(patternLen);
+ if (pattern.charAt(0) == HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM) {
+ int pos = GenericUtils.lastIndexOf(pattern, HostPatternsHolder.PORT_VALUE_DELIMITER);
+ ValidateUtils.checkTrue(pos > 0, "Missing non-standard port value delimiter in %s", pattern);
+ ValidateUtils.checkTrue(pos < (patternLen - 1), "Missing non-standard port value number in %s", pattern);
+ ValidateUtils.checkTrue(pattern.charAt(pos - 1) == HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM,
+ "Invalid non-standard port value host pattern enclosure delimiters in %s", pattern);
+
+ CharSequence csPort = pattern.subSequence(pos + 1, patternLen);
+ port = Integer.parseInt(csPort.toString());
+ ValidateUtils.checkTrue((port > 0) && (port <= 0xFFFF), "Invalid non-start port value (%d) in %s", port, pattern);
+
+ pattern = pattern.subSequence(1, pos - 1);
+ patternLen = pattern.length();
+ }
+
boolean negated = false;
- for (int curPos = 0; curPos < pattern.length(); curPos++) {
+ for (int curPos = 0; curPos < patternLen; curPos++) {
char ch = pattern.charAt(curPos);
ValidateUtils.checkTrue(isValidPatternChar(ch), "Invalid host pattern char in %s", pattern);
@@ -266,7 +300,7 @@ public abstract class HostPatternsHolder {
}
}
- return new Pair<>(Pattern.compile(sb.toString(), Pattern.CASE_INSENSITIVE), negated);
+ return new HostPatternValue(Pattern.compile(sb.toString(), Pattern.CASE_INSENSITIVE), port, negated);
}
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/KnownHostEntry.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/KnownHostEntry.java b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/KnownHostEntry.java
index da77bac..bf56ddf 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/KnownHostEntry.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/KnownHostEntry.java
@@ -118,8 +118,8 @@ public class KnownHostEntry extends HostPatternsHolder {
}
@Override
- public boolean isHostMatch(String host) {
- if (super.isHostMatch(host)) {
+ public boolean isHostMatch(String host, int port) {
+ if (super.isHostMatch(host, port)) {
return true;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
index 48f01bf..8dd6ca6 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
@@ -39,6 +39,7 @@ import java.util.Objects;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.sshd.client.config.hosts.HostPatternsHolder;
import org.apache.sshd.client.config.hosts.KnownHostEntry;
import org.apache.sshd.client.config.hosts.KnownHostHashValue;
import org.apache.sshd.client.session.ClientSession;
@@ -490,7 +491,7 @@ public class KnownHostsServerKeyVerifier
return null;
}
- Collection<String> candidates = resolveHostNetworkIdentities(clientSession, remoteAddress);
+ Collection<SshdSocketAddress> candidates = resolveHostNetworkIdentities(clientSession, remoteAddress);
if (log.isDebugEnabled()) {
log.debug("findKnownHostEntry({})[{}] host network identities: {}",
clientSession, remoteAddress, candidates);
@@ -502,9 +503,9 @@ public class KnownHostsServerKeyVerifier
for (HostEntryPair match : knownHosts) {
KnownHostEntry entry = match.getHostEntry();
- for (String host : candidates) {
+ for (SshdSocketAddress host : candidates) {
try {
- if (entry.isHostMatch(host)) {
+ if (entry.isHostMatch(host.getHostName(), host.getPort())) {
if (log.isDebugEnabled()) {
log.debug("findKnownHostEntry({})[{}] matched host={} for entry={}",
clientSession, remoteAddress, host, entry);
@@ -620,8 +621,9 @@ public class KnownHostsServerKeyVerifier
* will be called in order to enable recovery of its data
* @see #resetReloadAttributes()
*/
- protected KnownHostEntry updateKnownHostsFile(ClientSession clientSession, SocketAddress remoteAddress, PublicKey serverKey,
- Path file, Collection<HostEntryPair> knownHosts) throws Exception {
+ protected KnownHostEntry updateKnownHostsFile(
+ ClientSession clientSession, SocketAddress remoteAddress, PublicKey serverKey, Path file, Collection<HostEntryPair> knownHosts)
+ throws Exception {
KnownHostEntry entry = prepareKnownHostEntry(clientSession, remoteAddress, serverKey);
if (entry == null) {
if (log.isDebugEnabled()) {
@@ -665,14 +667,14 @@ public class KnownHostsServerKeyVerifier
* @see KnownHostEntry#getConfigLine()
*/
protected KnownHostEntry prepareKnownHostEntry(ClientSession clientSession, SocketAddress remoteAddress, PublicKey serverKey) throws Exception {
- Collection<String> patterns = resolveHostNetworkIdentities(clientSession, remoteAddress);
+ Collection<SshdSocketAddress> patterns = resolveHostNetworkIdentities(clientSession, remoteAddress);
if (GenericUtils.isEmpty(patterns)) {
return null;
}
StringBuilder sb = new StringBuilder(Byte.MAX_VALUE);
Random rnd = null;
- for (String hostIdentity : patterns) {
+ for (SshdSocketAddress hostIdentity : patterns) {
if (sb.length() > 0) {
sb.append(',');
}
@@ -692,10 +694,20 @@ public class KnownHostsServerKeyVerifier
byte[] salt = new byte[blockSize];
rnd.fill(salt);
- byte[] digestValue = KnownHostHashValue.calculateHashValue(hostIdentity, mac, salt);
+ byte[] digestValue = KnownHostHashValue.calculateHashValue(hostIdentity.getHostName(), mac, salt);
KnownHostHashValue.append(sb, digester, salt, digestValue);
} else {
- sb.append(hostIdentity);
+ int portValue = hostIdentity.getPort();
+ boolean nonDefaultPort = (portValue > 0) && (portValue != SshConfigFileReader.DEFAULT_PORT);
+ if (nonDefaultPort) {
+ sb.append(HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM);
+ }
+ sb.append(hostIdentity.getHostName());
+ if (nonDefaultPort) {
+ sb.append(HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM);
+ sb.append(HostPatternsHolder.PORT_VALUE_DELIMITER);
+ sb.append(portValue);
+ }
}
}
@@ -713,7 +725,7 @@ public class KnownHostsServerKeyVerifier
* @param hostIdentity The entry's host name/address
* @return The digester {@link NamedFactory} - {@code null} if no hashing is to be made
*/
- protected NamedFactory<Mac> getHostValueDigester(ClientSession clientSession, SocketAddress remoteAddress, String hostIdentity) {
+ protected NamedFactory<Mac> getHostValueDigester(ClientSession clientSession, SocketAddress remoteAddress, SshdSocketAddress hostIdentity) {
return null;
}
@@ -724,20 +736,20 @@ public class KnownHostsServerKeyVerifier
*
* @param clientSession The {@link ClientSession}
* @param remoteAddress The remote host address
- * @return A {@link Collection} of the names/addresses to use - if {@code null}/empty
- * then ignored (i.e., no matching is done or no entry is generated)
+ * @return A {@link Collection} of the {@code InetSocketAddress}-es to use - if
+ * {@code null}/empty then ignored (i.e., no matching is done or no entry is generated)
* @see ClientSession#getConnectAddress()
- * @see SshdSocketAddress#toAddressString(SocketAddress)
+ * @see SshdSocketAddress#toSshdSocketAddress(SocketAddress)
*/
- protected Collection<String> resolveHostNetworkIdentities(ClientSession clientSession, SocketAddress remoteAddress) {
+ protected Collection<SshdSocketAddress> resolveHostNetworkIdentities(ClientSession clientSession, SocketAddress remoteAddress) {
/*
* NOTE !!! we do not resolve the fully-qualified name to avoid long DNS timeouts.
* Instead we use the reported peer address and the original connection target host
*/
- Collection<String> candidates = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
- candidates.add(SshdSocketAddress.toAddressString(remoteAddress));
+ Collection<SshdSocketAddress> candidates = new TreeSet<>(SshdSocketAddress.BY_HOST_AND_PORT);
+ candidates.add(SshdSocketAddress.toSshdSocketAddress(remoteAddress));
SocketAddress connectAddress = clientSession.getConnectAddress();
- candidates.add(SshdSocketAddress.toAddressString(connectAddress));
+ candidates.add(SshdSocketAddress.toSshdSocketAddress(connectAddress));
return candidates;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
index e2f8733..1f56fec 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java
@@ -156,6 +156,30 @@ public final class GenericUtils {
return !isEmpty(cs);
}
+ public static int indexOf(CharSequence cs, char c) {
+ int len = length(cs);
+ for (int pos = 0; pos < len; pos++) {
+ char ch = cs.charAt(pos);
+ if (ch == c) {
+ return pos;
+ }
+ }
+
+ return -1;
+ }
+
+ public static int lastIndexOf(CharSequence cs, char c) {
+ int len = length(cs);
+ for (int pos = len - 1; pos >= 0; pos--) {
+ char ch = cs.charAt(pos);
+ if (ch == c) {
+ return pos;
+ }
+ }
+
+ return -1;
+ }
+
// a List would be better, but we want to be compatible with String.split(...)
public static String[] split(String s, char ch) {
if (isEmpty(s)) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/main/java/org/apache/sshd/common/util/net/SshdSocketAddress.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/net/SshdSocketAddress.java b/sshd-core/src/main/java/org/apache/sshd/common/util/net/SshdSocketAddress.java
index c853e88..4919966 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/net/SshdSocketAddress.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/net/SshdSocketAddress.java
@@ -78,6 +78,8 @@ public class SshdSocketAddress extends SocketAddress {
/**
* Compares {@link InetAddress}-es according to their {@link InetAddress#getHostAddress()}
* value case <U>insensitive</U>
+ *
+ * @see #toAddressString(InetAddress)
*/
public static final Comparator<InetAddress> BY_HOST_ADDRESS = (a1, a2) -> {
String n1 = GenericUtils.trimToEmpty(toAddressString(a1));
@@ -85,6 +87,31 @@ public class SshdSocketAddress extends SocketAddress {
return String.CASE_INSENSITIVE_ORDER.compare(n1, n2);
};
+ /**
+ * Compares {@link SocketAddress}-es according to their host case <U>insensitive</U>
+ * and if equals, then according to their port value (if any)
+ *
+ * @see #toAddressString(SocketAddress)
+ * @see #toAddressPort(SocketAddress)
+ */
+ public static final Comparator<SocketAddress> BY_HOST_AND_PORT = (a1, a2) -> {
+ String n1 = GenericUtils.trimToEmpty(toAddressString(a1));
+ String n2 = GenericUtils.trimToEmpty(toAddressString(a2));
+ int nRes = String.CASE_INSENSITIVE_ORDER.compare(n1, n2);
+ if (nRes != 0) {
+ return nRes;
+ }
+
+ int p1 = toAddressPort(a1);
+ int p2 = toAddressPort(a2);
+ nRes = Integer.compare(p1, p2);
+ if (nRes != 0) {
+ return nRes;
+ }
+
+ return 0;
+ };
+
private static final long serialVersionUID = 6461645947151952729L;
private final String hostName;
@@ -283,20 +310,46 @@ public class SshdSocketAddress extends SocketAddress {
return true;
}
- public static String toAddressString(SocketAddress addr) {
+ public static SshdSocketAddress toSshdSocketAddress(SocketAddress addr) {
if (addr == null) {
return null;
+ } else if (addr instanceof SshdSocketAddress) {
+ return (SshdSocketAddress) addr;
+ } else if (addr instanceof InetSocketAddress) {
+ InetSocketAddress isockAddress = (InetSocketAddress) addr;
+ return new SshdSocketAddress(isockAddress.getHostName(), isockAddress.getPort());
+ } else {
+ throw new UnsupportedOperationException("Cannot convert " + addr.getClass().getSimpleName()
+ + "=" + addr + " to " + SshdSocketAddress.class.getSimpleName());
}
+ }
- if (addr instanceof InetSocketAddress) {
+ public static String toAddressString(SocketAddress addr) {
+ if (addr == null) {
+ return null;
+ } else if (addr instanceof InetSocketAddress) {
return ((InetSocketAddress) addr).getHostString();
- }
-
- if (addr instanceof SshdSocketAddress) {
+ } else if (addr instanceof SshdSocketAddress) {
return ((SshdSocketAddress) addr).getHostName();
+ } else {
+ return addr.toString();
}
+ }
- return addr.toString();
+ /**
+ * Attempts to resolve the port value
+ *
+ * @param addr The {@link SocketAddress} to examine
+ * @return The associated port value - negative if failed to resolve
+ */
+ public static int toAddressPort(SocketAddress addr) {
+ if (addr instanceof InetSocketAddress) {
+ return ((InetSocketAddress) addr).getPort();
+ } else if (addr instanceof SshdSocketAddress) {
+ return ((SshdSocketAddress) addr).getPort();
+ } else {
+ return -1;
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
index 814deb6..3eeb6d4 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryTest.java
@@ -28,7 +28,6 @@ import java.util.List;
import java.util.regex.Pattern;
import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.Pair;
import org.apache.sshd.util.test.BaseTestSupport;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -48,7 +47,7 @@ public class HostConfigEntryTest extends BaseTestSupport {
String testHost = "37.77.34.7";
String[] elements = GenericUtils.split(testHost, '.');
StringBuilder sb = new StringBuilder(testHost.length() + Byte.SIZE);
- List<Pair<Pattern, Boolean>> patterns = new ArrayList<>(elements.length + 1);
+ List<HostPatternValue> patterns = new ArrayList<>(elements.length + 1);
// all wildcard patterns are not negated - only the actual host
patterns.add(HostPatternsHolder.toPattern(String.valueOf(HostPatternsHolder.NEGATION_CHAR_PATTERN) + testHost));
@@ -70,7 +69,7 @@ public class HostConfigEntryTest extends BaseTestSupport {
}
for (int index = 0; index < patterns.size(); index++) {
- assertFalse("Unexpected match for " + patterns, HostPatternsHolder.isHostMatch(testHost, patterns));
+ assertFalse("Unexpected match for " + patterns, HostPatternsHolder.isHostMatch(testHost, 0, patterns));
Collections.shuffle(patterns);
}
}
@@ -85,8 +84,8 @@ public class HostConfigEntryTest extends BaseTestSupport {
}
String value = sb.toString();
- Pair<Pattern, Boolean> pp = HostPatternsHolder.toPattern(value);
- Pattern pattern = pp.getFirst();
+ HostPatternValue pp = HostPatternsHolder.toPattern(value);
+ Pattern pattern = pp.getPattern();
String domain = value.substring(1); // chomp the wildcard prefix
for (String host : new String[] {
getClass().getSimpleName(),
@@ -106,7 +105,7 @@ public class HostConfigEntryTest extends BaseTestSupport {
StringBuilder sb = new StringBuilder().append("10.0.0.");
int sbLen = sb.length();
- Pattern pattern = HostPatternsHolder.toPattern(sb.append(HostPatternsHolder.WILDCARD_PATTERN)).getFirst();
+ Pattern pattern = HostPatternsHolder.toPattern(sb.append(HostPatternsHolder.WILDCARD_PATTERN)).getPattern();
for (int v = 0; v <= 255; v++) {
sb.setLength(sbLen); // start from scratch
sb.append(v);
@@ -123,7 +122,7 @@ public class HostConfigEntryTest extends BaseTestSupport {
for (boolean restoreOriginal : new boolean[] {true, false}) {
for (int index = 0; index < value.length(); index++) {
sb.setCharAt(index, HostPatternsHolder.SINGLE_CHAR_PATTERN);
- testCaseInsensitivePatternMatching(value, HostPatternsHolder.toPattern(sb.toString()).getFirst(), true);
+ testCaseInsensitivePatternMatching(value, HostPatternsHolder.toPattern(sb.toString()).getPattern(), true);
if (restoreOriginal) {
sb.setCharAt(index, value.charAt(index));
}
@@ -147,8 +146,8 @@ public class HostConfigEntryTest extends BaseTestSupport {
}
String pattern = sb.toString();
- Pair<Pattern, Boolean> pp = HostPatternsHolder.toPattern(pattern);
- assertTrue("No match for " + address + " on pattern=" + pattern, HostPatternsHolder.isHostMatch(address, Collections.singletonList(pp)));
+ HostPatternValue pp = HostPatternsHolder.toPattern(pattern);
+ assertTrue("No match for " + address + " on pattern=" + pattern, HostPatternsHolder.isHostMatch(address, 0, Collections.singletonList(pp)));
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java
index 4fa4943..9deed93 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/KnownHostHashValueTest.java
@@ -23,18 +23,21 @@ import java.util.Arrays;
import java.util.Collection;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
+@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
public class KnownHostHashValueTest extends BaseTestSupport {
private final String hostName;
private final String hashValue;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java b/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java
index fff5c4b..8d11f93 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifierTest.java
@@ -35,6 +35,7 @@ import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.sshd.client.ClientFactoryManager;
+import org.apache.sshd.client.config.hosts.HostPatternsHolder;
import org.apache.sshd.client.config.hosts.KnownHostEntry;
import org.apache.sshd.client.config.hosts.KnownHostHashValue;
import org.apache.sshd.client.keyverifier.KnownHostsServerKeyVerifier.HostEntryPair;
@@ -63,8 +64,8 @@ import org.mockito.Mockito;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
private static final String HASHED_HOST = "192.168.1.61";
- private static final Map<String, PublicKey> HOST_KEYS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- private static Map<String, KnownHostEntry> hostsEntries;
+ private static final Map<SshdSocketAddress, PublicKey> HOST_KEYS = new TreeMap<>(SshdSocketAddress.BY_HOST_AND_PORT);
+ private static Map<SshdSocketAddress, KnownHostEntry> hostsEntries;
private static Path entriesFile;
public KnownHostsServerKeyVerifierTest() {
@@ -80,12 +81,12 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
hostsEntries = loadEntries(entriesFile);
// Cannot use forEach because of the potential IOException/GeneralSecurityException being thrown
- for (Map.Entry<String, KnownHostEntry> ke : hostsEntries.entrySet()) {
- String host = ke.getKey();
+ for (Map.Entry<SshdSocketAddress, KnownHostEntry> ke : hostsEntries.entrySet()) {
+ SshdSocketAddress hostIdentity = ke.getKey();
KnownHostEntry entry = ke.getValue();
AuthorizedKeyEntry authEntry = ValidateUtils.checkNotNull(entry.getKeyEntry(), "No key extracted from %s", entry);
PublicKey key = authEntry.resolvePublicKey(PublicKeyEntryResolver.FAILING);
- assertNull("Multiple keys for host=" + host, HOST_KEYS.put(host, key));
+ assertNull("Multiple keys for host=" + hostIdentity, HOST_KEYS.put(hostIdentity, key));
}
}
@@ -112,10 +113,10 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
};
- HOST_KEYS.forEach((host, serverKey) -> {
- KnownHostEntry entry = hostsEntries.get(host);
+ HOST_KEYS.forEach((hostIdentity, serverKey) -> {
+ KnownHostEntry entry = hostsEntries.get(hostIdentity);
outputDebugMessage("Verify host=%s", entry);
- assertTrue("Failed to verify server=" + entry, invokeVerifier(verifier, host, serverKey));
+ assertTrue("Failed to verify server=" + entry, invokeVerifier(verifier, hostIdentity, serverKey));
assertEquals("Unexpected delegate invocation for host=" + entry, 0, delegateCount.get());
assertEquals("Unexpected update invocation for host=" + entry, 0, updateCount.get());
});
@@ -146,28 +147,28 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
int verificationCount = 0;
// Cannot use forEach because the verification count variable is not effectively final
- for (Map.Entry<String, PublicKey> ke : HOST_KEYS.entrySet()) {
- String host = ke.getKey();
+ for (Map.Entry<SshdSocketAddress, PublicKey> ke : HOST_KEYS.entrySet()) {
+ SshdSocketAddress hostIdentity = ke.getKey();
PublicKey serverKey = ke.getValue();
- KnownHostEntry entry = hostsEntries.get(host);
+ KnownHostEntry entry = hostsEntries.get(hostIdentity);
outputDebugMessage("Verify host=%s", entry);
- assertTrue("Failed to verify server=" + entry, invokeVerifier(verifier, host, serverKey));
+ assertTrue("Failed to verify server=" + entry, invokeVerifier(verifier, hostIdentity, serverKey));
verificationCount++;
assertEquals("Mismatched number of delegate counts for server=" + entry, verificationCount, delegateCount.get());
assertEquals("Mismatched number of update counts for server=" + entry, verificationCount, updateCount.get());
}
// make sure we have all the original entries and ONLY them
- Map<String, KnownHostEntry> updatedEntries = loadEntries(path);
- hostsEntries.forEach((host, expected) -> {
- KnownHostEntry actual = updatedEntries.remove(host);
- assertNotNull("No updated entry for host=" + host, actual);
+ Map<SshdSocketAddress, KnownHostEntry> updatedEntries = loadEntries(path);
+ hostsEntries.forEach((hostIdentity, expected) -> {
+ KnownHostEntry actual = updatedEntries.remove(hostIdentity);
+ assertNotNull("No updated entry for host=" + hostIdentity, actual);
String expLine = expected.getConfigLine();
// if original is a list or hashed then replace them with the expected host
if ((expLine.indexOf(',') > 0) || (expLine.indexOf(KnownHostHashValue.HASHED_HOST_DELIMITER) >= 0)) {
int pos = expLine.indexOf(' ');
- expLine = host + expLine.substring(pos);
+ expLine = hostIdentity.getHostName() + expLine.substring(pos);
}
int pos = expLine.indexOf("comment-");
@@ -175,7 +176,7 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
expLine = expLine.substring(0, pos).trim();
}
- assertEquals("Mismatched entry data for host=" + host, expLine, actual.getConfigLine());
+ assertEquals("Mismatched entry data for host=" + hostIdentity, expLine, actual.getConfigLine());
});
assertTrue("Unexpected extra updated hosts: " + updatedEntries, updatedEntries.isEmpty());
@@ -188,7 +189,7 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
KnownHostsServerKeyVerifier verifier = new KnownHostsServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE, path) {
@Override
- protected NamedFactory<Mac> getHostValueDigester(ClientSession clientSession, SocketAddress remoteAddress, String hostIdentity) {
+ protected NamedFactory<Mac> getHostValueDigester(ClientSession clientSession, SocketAddress remoteAddress, SshdSocketAddress hostIdentity) {
return KnownHostHashValue.DEFAULT_DIGEST;
}
};
@@ -198,13 +199,12 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
ClientSession session = Mockito.mock(ClientSession.class);
Mockito.when(session.getFactoryManager()).thenReturn(manager);
- HOST_KEYS.forEach((host, serverKey) -> {
- KnownHostEntry entry = hostsEntries.get(host);
+ HOST_KEYS.forEach((hostIdentity, serverKey) -> {
+ KnownHostEntry entry = hostsEntries.get(hostIdentity);
outputDebugMessage("Write host=%s", entry);
- SocketAddress address = new SshdSocketAddress(host, 7365);
- Mockito.when(session.getConnectAddress()).thenReturn(address);
- assertTrue("Failed to validate server=" + entry, verifier.verifyServerKey(session, address, serverKey));
+ Mockito.when(session.getConnectAddress()).thenReturn(hostIdentity);
+ assertTrue("Failed to validate server=" + entry, verifier.verifyServerKey(session, hostIdentity, serverKey));
});
// force re-read to ensure all values are hashed
@@ -216,13 +216,12 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
verifier.setLoadedHostsEntries(keys);
// make sure can still validate the original hosts
- HOST_KEYS.forEach((host, serverKey) -> {
- KnownHostEntry entry = hostsEntries.get(host);
+ HOST_KEYS.forEach((hostIdentity, serverKey) -> {
+ KnownHostEntry entry = hostsEntries.get(hostIdentity);
outputDebugMessage("Re-validate host=%s", entry);
- SocketAddress address = new SshdSocketAddress(host, 7365);
- Mockito.when(session.getConnectAddress()).thenReturn(address);
- assertTrue("Failed to re-validate server=" + entry, verifier.verifyServerKey(session, address, serverKey));
+ Mockito.when(session.getConnectAddress()).thenReturn(hostIdentity);
+ assertTrue("Failed to re-validate server=" + entry, verifier.verifyServerKey(session, hostIdentity, serverKey));
});
}
@@ -244,11 +243,11 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
int validationCount = 0;
// Cannot use forEach because the validation count variable is not effectively final
- for (Map.Entry<String, KnownHostEntry> ke : hostsEntries.entrySet()) {
- String host = ke.getKey();
+ for (Map.Entry<SshdSocketAddress, KnownHostEntry> ke : hostsEntries.entrySet()) {
+ SshdSocketAddress hostIdentity = ke.getKey();
KnownHostEntry entry = ke.getValue();
outputDebugMessage("Verify host=%s", entry);
- assertFalse("Unexpected to verification success for " + entry, invokeVerifier(verifier, host, modifiedKey));
+ assertFalse("Unexpected to verification success for " + entry, invokeVerifier(verifier, hostIdentity, modifiedKey));
validationCount++;
assertEquals("Mismatched invocation count for host=" + entry, validationCount, acceptCount.get());
}
@@ -275,9 +274,9 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
});
String expected = PublicKeyEntry.toString(modifiedKey);
- Map<String, KnownHostEntry> updatedKeys = loadEntries(path);
- hostsEntries.forEach((host, original) -> {
- KnownHostEntry updated = updatedKeys.remove(host);
+ Map<SshdSocketAddress, KnownHostEntry> updatedKeys = loadEntries(path);
+ hostsEntries.forEach((hostIdentity, original) -> {
+ KnownHostEntry updated = updatedKeys.remove(hostIdentity);
assertNotNull("No updated entry for " + original, updated);
String actual = updated.getConfigLine();
@@ -292,7 +291,7 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
}
actual = GenericUtils.trimToEmpty(actual.substring(pos + 1));
- assertEquals("Mismatched updated value for host=" + host, expected, actual);
+ assertEquals("Mismatched updated value for host=" + hostIdentity, expected, actual);
});
assertTrue("Unexpected extra updated entries: " + updatedKeys, updatedKeys.isEmpty());
@@ -310,21 +309,20 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
return file;
}
- private boolean invokeVerifier(ServerKeyVerifier verifier, String host, PublicKey serverKey) {
- SocketAddress address = new SshdSocketAddress(host, 7365);
+ private boolean invokeVerifier(ServerKeyVerifier verifier, SshdSocketAddress hostIdentity, PublicKey serverKey) {
ClientSession session = Mockito.mock(ClientSession.class);
- Mockito.when(session.getConnectAddress()).thenReturn(address);
- Mockito.when(session.toString()).thenReturn(getCurrentTestName() + "[" + host + "]");
- return verifier.verifyServerKey(session, address, serverKey);
+ Mockito.when(session.getConnectAddress()).thenReturn(hostIdentity);
+ Mockito.when(session.toString()).thenReturn(getCurrentTestName() + "[" + hostIdentity + "]");
+ return verifier.verifyServerKey(session, hostIdentity, serverKey);
}
- private static Map<String, KnownHostEntry> loadEntries(Path file) throws IOException {
+ private static Map<SshdSocketAddress, KnownHostEntry> loadEntries(Path file) throws IOException {
Collection<KnownHostEntry> entries = KnownHostEntry.readKnownHostEntries(file);
if (GenericUtils.isEmpty(entries)) {
return Collections.emptyMap();
}
- Map<String, KnownHostEntry> hostsMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ Map<SshdSocketAddress, KnownHostEntry> hostsMap = new TreeMap<>(SshdSocketAddress.BY_HOST_AND_PORT);
for (KnownHostEntry entry : entries) {
String line = entry.getConfigLine();
outputDebugMessage("loadTestLines(%s) processing %s", file, line);
@@ -332,11 +330,19 @@ public class KnownHostsServerKeyVerifierTest extends BaseTestSupport {
int pos = line.indexOf(' ');
String patterns = line.substring(0, pos);
if (entry.getHashedEntry() != null) {
- assertNull("Multiple hashed entries in file", hostsMap.put(HASHED_HOST, entry));
+ assertNull("Multiple hashed entries in file", hostsMap.put(new SshdSocketAddress(HASHED_HOST, 0), entry));
} else {
String[] addrs = GenericUtils.split(patterns, ',');
for (String a : addrs) {
- assertNull("Multiple entries for address=" + a, hostsMap.put(a, entry));
+ int port = 0;
+ if (a.charAt(0) == HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_START_DELIM) {
+ pos = a.indexOf(HostPatternsHolder.NON_STANDARD_PORT_PATTERN_ENCLOSURE_END_DELIM, 1);
+ assertTrue("Missing non-standard port host pattern enclosure: " + a, pos > 0);
+
+ port = Integer.parseInt(a.substring(pos + 2));
+ a = a.substring(1, pos);
+ }
+ assertNull("Multiple entries for address=" + a, hostsMap.put(new SshdSocketAddress(a, port), entry));
}
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/2119f798/sshd-core/src/test/resources/org/apache/sshd/client/keyverifier/known_hosts
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/resources/org/apache/sshd/client/keyverifier/known_hosts b/sshd-core/src/test/resources/org/apache/sshd/client/keyverifier/known_hosts
index 2f8034b..f842391 100644
--- a/sshd-core/src/test/resources/org/apache/sshd/client/keyverifier/known_hosts
+++ b/sshd-core/src/test/resources/org/apache/sshd/client/keyverifier/known_hosts
@@ -9,4 +9,7 @@ server.sshd.apache.org,10.23.222.240 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbml
192.168.174.129 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJvwXQ0Wc7TdhmjaTdkrHJvatWrw/6t6W1Hgh2nTauN+rhsMKYbmQeFTnzsP1NctWzQXwsqIOGcXIMNVhT92jgQ=
# hash of 192.168.1.61 - DO NOT CHANGE IT !!!
-|1|F1E1KeoE/eEWhi10WpGv4OdiO6Y=|3988QV0VE8wmZL7suNrYQLITLCg= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2KFr3GqL/3yXY2bAwRGGDxl/qLuE9qdx20+DMh5oAZPpwprlUnlxLm+ikimwn65Z0KeUyfofYKt+vc3rl1k2mDqyG8DqHeH0C+uFBbom0fthX7PRiQr2T9SOzSodjowZuBHlWIfgtcZI0bygX+GlKaAq00l4yCoe1xUTCRd2ZVyNuB1nozcFI+sUzdeKfaxvuyvbccG4tOx06HDryNdxW2e99bsAhLAg7d8xciOeb4PCAI1USg83dt0wVZE9VJbnRnoZ2y/DaQCJtBJ8t8uNLVdggakydDzQuglyd4dYRxeU7t4TEw6wsfXPB0kqdecd0Llspjx0ciEY/BbycdiApw== comment-hashed-host
\ No newline at end of file
+|1|F1E1KeoE/eEWhi10WpGv4OdiO6Y=|3988QV0VE8wmZL7suNrYQLITLCg= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2KFr3GqL/3yXY2bAwRGGDxl/qLuE9qdx20+DMh5oAZPpwprlUnlxLm+ikimwn65Z0KeUyfofYKt+vc3rl1k2mDqyG8DqHeH0C+uFBbom0fthX7PRiQr2T9SOzSodjowZuBHlWIfgtcZI0bygX+GlKaAq00l4yCoe1xUTCRd2ZVyNuB1nozcFI+sUzdeKfaxvuyvbccG4tOx06HDryNdxW2e99bsAhLAg7d8xciOeb4PCAI1USg83dt0wVZE9VJbnRnoZ2y/DaQCJtBJ8t8uNLVdggakydDzQuglyd4dYRxeU7t4TEw6wsfXPB0kqdecd0Llspjx0ciEY/BbycdiApw== comment-hashed-host
+
+# non-standard port overrides
+[issues.apache.org]:5637 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCWDHD00Ltb5fmmL9cFLTqWqxgJHwsxbiZgL632CXqbDmf69wA+8GSP96rtIix2d5aGXyh/kXMbSMjPgIx+n7p0=
\ No newline at end of file
[3/3] mina-sshd git commit: Add EOL at end of appended known-hosts
file entry
Posted by lg...@apache.org.
Add EOL at end of appended known-hosts file entry
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/6256245d
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/6256245d
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/6256245d
Branch: refs/heads/master
Commit: 6256245da6308a0aa4f94c9a3813a4d5d38b2c9e
Parents: 2119f79
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Mon May 15 16:51:21 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Mon May 15 19:38:22 2017 +0300
----------------------------------------------------------------------
.../sshd/client/keyverifier/KnownHostsServerKeyVerifier.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/6256245d/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
index 8dd6ca6..1fc9429 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/KnownHostsServerKeyVerifier.java
@@ -637,12 +637,15 @@ public class KnownHostsServerKeyVerifier
String line = entry.getConfigLine();
byte[] lineData = line.getBytes(StandardCharsets.UTF_8);
boolean reuseExisting = Files.exists(file) && (Files.size(file) > 0);
+ byte[] eolBytes = IoUtils.getEOLBytes();
synchronized (updateLock) {
try (OutputStream output = reuseExisting ? Files.newOutputStream(file, StandardOpenOption.APPEND) : Files.newOutputStream(file)) {
if (reuseExisting) {
- output.write(IoUtils.getEOLBytes()); // separate from previous lines
+ output.write(eolBytes); // separate from previous lines
}
+
output.write(lineData);
+ output.write(eolBytes); // add another separator for trailing lines - in case regular SSH client appends to it
}
}