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 2020/08/18 05:49:05 UTC

[mina-sshd] 02/06: [SSHD-1020] Added a default NIO2-READ-TIMEOUT value for tests

This is an automated email from the ASF dual-hosted git repository.

lgoldstein pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git

commit 123140f2038bc8d00061126c6bce967e89bc210a
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Fri Aug 14 19:27:40 2020 +0300

    [SSHD-1020] Added a default NIO2-READ-TIMEOUT value for tests
---
 .../java/org/apache/sshd/KeyReExchangeTest.java    |  3 +-
 .../org/apache/sshd/util/test/BaseTestSupport.java | 33 ++++------------------
 .../sshd/util/test/CoreTestSupportUtils.java       | 30 ++++++++++++++++++++
 3 files changed, 37 insertions(+), 29 deletions(-)

diff --git a/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java b/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
index 18bef92..2724a8e 100644
--- a/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/KeyReExchangeTest.java
@@ -62,6 +62,7 @@ import org.apache.sshd.server.channel.ChannelSession;
 import org.apache.sshd.server.command.Command;
 import org.apache.sshd.server.subsystem.SubsystemFactory;
 import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.CoreTestSupportUtils;
 import org.apache.sshd.util.test.JSchLogger;
 import org.apache.sshd.util.test.OutputCountTrackingOutputStream;
 import org.apache.sshd.util.test.SimpleUserInfo;
@@ -654,7 +655,7 @@ public class KeyReExchangeTest extends BaseTestSupport {
                     teeOut.write("exit\n".getBytes(StandardCharsets.UTF_8));
                     teeOut.flush();
 
-                    Duration timeout = getTimeout("KeyReExchangeTest", Duration.ofSeconds(15));
+                    Duration timeout = CoreTestSupportUtils.getTimeout("KeyReExchangeTest", Duration.ofSeconds(15));
 
                     Collection<ClientChannelEvent> result = channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), timeout);
                     assertFalse("Timeout while waiting for channel closure", result.contains(ClientChannelEvent.TIMEOUT));
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java b/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
index 69b2614..94765ef 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/BaseTestSupport.java
@@ -45,11 +45,11 @@ public abstract class BaseTestSupport extends JUnitTestSupport {
     public static final String TEST_LOCALHOST
             = System.getProperty("org.apache.sshd.test.localhost", SshdSocketAddress.LOCALHOST_IPV4);
 
-    public static final Duration CONNECT_TIMEOUT = getTimeout("connect", Duration.ofSeconds(7));
-    public static final Duration AUTH_TIMEOUT = getTimeout("auth", Duration.ofSeconds(5));
-    public static final Duration OPEN_TIMEOUT = getTimeout("open", Duration.ofSeconds(9));
-    public static final Duration DEFAULT_TIMEOUT = getTimeout("default", Duration.ofSeconds(5));
-    public static final Duration CLOSE_TIMEOUT = getTimeout("close", Duration.ofSeconds(15));
+    public static final Duration CONNECT_TIMEOUT = CoreTestSupportUtils.getTimeout("connect", Duration.ofSeconds(7));
+    public static final Duration AUTH_TIMEOUT = CoreTestSupportUtils.getTimeout("auth", Duration.ofSeconds(5));
+    public static final Duration OPEN_TIMEOUT = CoreTestSupportUtils.getTimeout("open", Duration.ofSeconds(9));
+    public static final Duration DEFAULT_TIMEOUT = CoreTestSupportUtils.getTimeout("default", Duration.ofSeconds(5));
+    public static final Duration CLOSE_TIMEOUT = CoreTestSupportUtils.getTimeout("close", Duration.ofSeconds(15));
 
     @Rule
     public final TestWatcher rule = new TestWatcher() {
@@ -98,29 +98,6 @@ public abstract class BaseTestSupport extends JUnitTestSupport {
         logger.setLevel(level);
     }
 
-    public static Duration getTimeout(String property, Duration defaultValue) {
-        // Do we have a specific timeout value ?
-        String str = System.getProperty("org.apache.sshd.test.timeout." + property);
-        if (GenericUtils.isNotEmpty(str)) {
-            return Duration.ofMillis(Long.parseLong(str));
-        }
-
-        // Do we have a specific factor ?
-        str = System.getProperty("org.apache.sshd.test.timeout.factor." + property);
-        if (GenericUtils.isEmpty(str)) {
-            // Do we have a global factor ?
-            str = System.getProperty("org.apache.sshd.test.timeout.factor");
-        }
-
-        if (GenericUtils.isNotEmpty(str)) {
-            double factor = Double.parseDouble(str);
-            long dur = Math.round(defaultValue.toMillis() * factor);
-            return Duration.ofMillis(dur);
-        }
-
-        return defaultValue;
-    }
-
     protected SshServer setupTestServer() {
         return CoreTestSupportUtils.setupTestServer(getClass());
     }
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/CoreTestSupportUtils.java b/sshd-core/src/test/java/org/apache/sshd/util/test/CoreTestSupportUtils.java
index 4ad8967..6e52784 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/CoreTestSupportUtils.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/CoreTestSupportUtils.java
@@ -21,6 +21,7 @@ package org.apache.sshd.util.test;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
+import java.time.Duration;
 import java.util.ArrayList;
 
 import org.apache.sshd.client.ClientBuilder;
@@ -32,12 +33,16 @@ import org.apache.sshd.common.helpers.AbstractFactoryManager;
 import org.apache.sshd.common.kex.BuiltinDHFactories;
 import org.apache.sshd.common.keyprovider.KeyIdentityProvider;
 import org.apache.sshd.common.signature.BuiltinSignatures;
+import org.apache.sshd.common.util.GenericUtils;
+import org.apache.sshd.core.CoreModuleProperties;
 import org.apache.sshd.server.ServerBuilder;
 import org.apache.sshd.server.SshServer;
 import org.apache.sshd.server.auth.pubkey.AcceptAllPublickeyAuthenticator;
 import org.apache.sshd.server.shell.UnknownCommandFactory;
 
 public final class CoreTestSupportUtils {
+    public static final Duration READ_TIMEOUT = getTimeout("read.nio2", Duration.ofSeconds(60));
+
     private CoreTestSupportUtils() {
         throw new UnsupportedOperationException("No instance");
     }
@@ -55,6 +60,7 @@ public final class CoreTestSupportUtils {
         client.setServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE);
         client.setHostConfigEntryResolver(HostConfigEntryResolver.EMPTY);
         client.setKeyIdentityProvider(KeyIdentityProvider.EMPTY_KEYS_PROVIDER);
+        CoreModuleProperties.NIO2_READ_TIMEOUT.set(client, READ_TIMEOUT);
         return client;
     }
 
@@ -77,6 +83,7 @@ public final class CoreTestSupportUtils {
         sshd.setPublickeyAuthenticator(AcceptAllPublickeyAuthenticator.INSTANCE);
         sshd.setShellFactory(EchoShellFactory.INSTANCE);
         sshd.setCommandFactory(UnknownCommandFactory.INSTANCE);
+        CoreModuleProperties.NIO2_READ_TIMEOUT.set(sshd, READ_TIMEOUT);
         return sshd;
     }
 
@@ -97,4 +104,27 @@ public final class CoreTestSupportUtils {
         manager.setSignatureFactories(new ArrayList<>(BuiltinSignatures.VALUES));
         return manager;
     }
+
+    public static Duration getTimeout(String property, Duration defaultValue) {
+        // Do we have a specific timeout value ?
+        String str = System.getProperty("org.apache.sshd.test.timeout." + property);
+        if (GenericUtils.isNotEmpty(str)) {
+            return Duration.ofMillis(Long.parseLong(str));
+        }
+
+        // Do we have a specific factor ?
+        str = System.getProperty("org.apache.sshd.test.timeout.factor." + property);
+        if (GenericUtils.isEmpty(str)) {
+            // Do we have a global factor ?
+            str = System.getProperty("org.apache.sshd.test.timeout.factor");
+        }
+
+        if (GenericUtils.isNotEmpty(str)) {
+            double factor = Double.parseDouble(str);
+            long dur = Math.round(defaultValue.toMillis() * factor);
+            return Duration.ofMillis(dur);
+        }
+
+        return defaultValue;
+    }
 }