This is an automated email from the ASF dual-hosted git repository. twolf pushed a commit to branch dev_3.0 in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit 528290b9a389b91102d4b81a347fdbf69b67b9ae Author: Thomas Wolf <[email protected]> AuthorDate: Sat Sep 20 16:31:33 2025 +0200 sshd-test: fix multiple executions with testcontainers testcontainers removes test container images asynchronously when the test JVM shuts down. Subsequent executions may then get into a situation where they want to re-use an image that just gets removed, and then fail to start the container. Prevent that by ensuring that the first layer in each of these containers is different for each JVM run. This is a stop-gap measure; it has the disadvantage that we'll re-build the container for each execution. Maybe a better approach is to not let testcontainers reap the containers except in the last execution. (This would be possible through ImageFromDockerfile(String, boolean), but we'd have to give the containers static names, and somehow figure out how to set the flag to true in the last run, which could become complicated if we want it to figure out which profiles are active at all.) Interestingly this problem only cropped up with failsafe, but not with multiple executions of surefire. --- sshd-test/pom.xml | 1 + .../org/apache/sshd/AbstractContainerTestBase.java | 51 ++++++++++++++++++++++ .../client/auth/ClientOpenSSHCertificatesTest.java | 7 ++- .../sshd/client/auth/HostBoundPubKeyAuthTest.java | 7 ++- .../forward/PortForwardingWithOpenSshTest.java | 7 ++- .../apache/sshd/client/kex/OpenSshMlKemTest.java | 7 ++- .../client/kex/StrictKexInteroperabilityTest.java | 8 ++-- .../client/proxy/ProxyHttpAuthIntegrationTest.java | 9 ++-- .../client/proxy/ProxyHttpIntegrationTest.java | 9 ++-- .../proxy/ProxySocksAuthIntegrationTest.java | 9 ++-- .../client/proxy/ProxySocksIntegrationTest.java | 9 ++-- .../sshd/common/cipher/OpenSshCipherTest.java | 9 ++-- 12 files changed, 88 insertions(+), 45 deletions(-) diff --git a/sshd-test/pom.xml b/sshd-test/pom.xml index 3ac83a5e1..cfbb2fd42 100644 --- a/sshd-test/pom.xml +++ b/sshd-test/pom.xml @@ -159,6 +159,7 @@ </configuration> <executions> <execution> + <id>multirelease</id> <goals> <goal>integration-test</goal> <goal>verify</goal> diff --git a/sshd-test/src/test/java/org/apache/sshd/AbstractContainerTestBase.java b/sshd-test/src/test/java/org/apache/sshd/AbstractContainerTestBase.java new file mode 100644 index 000000000..4475d256a --- /dev/null +++ b/sshd-test/src/test/java/org/apache/sshd/AbstractContainerTestBase.java @@ -0,0 +1,51 @@ +/* + * 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; + +import java.time.Instant; + +import org.apache.sshd.util.test.BaseTestSupport; +import org.testcontainers.junit.jupiter.Testcontainers; + +@Testcontainers(disabledWithoutDocker = true) +public abstract class AbstractContainerTestBase extends BaseTestSupport { + + // Running multiple executions of failsafe with testcontainers appears to run into a problem with + // containers from previous runs being cleaned up asynchronously while the next execution starts. + // The next execution then may try to use a parent image that just got removed by the cleanup of the + // previous execution. + // + // Symptom: + // + // org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage... + // Caused by: + // com.github.dockerjava.api.exception.DockerClientException: Could not build image: NotFound: parent snapshot + // (SHA256) does not exist: not found + // + // Try to prevent that by deliberately including a layer that contains a random value. + private static final String DISCRIMINATOR = "tmp" + Instant.now().toEpochMilli(); + + protected AbstractContainerTestBase() { + super(); + } + + protected static String discriminate() { + return "touch /" + DISCRIMINATOR; + } +} diff --git a/sshd-test/src/test/java/org/apache/sshd/client/auth/ClientOpenSSHCertificatesTest.java b/sshd-test/src/test/java/org/apache/sshd/client/auth/ClientOpenSSHCertificatesTest.java index 11ab545ec..c984f9f0e 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/auth/ClientOpenSSHCertificatesTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/auth/ClientOpenSSHCertificatesTest.java @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.config.keys.PublicKeyEntry; @@ -39,7 +40,6 @@ import org.apache.sshd.common.keyprovider.KeyIdentityProvider; import org.apache.sshd.common.session.SessionContext; 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.CommonTestSupportUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.jupiter.api.BeforeAll; @@ -52,11 +52,9 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; -@Testcontainers(disabledWithoutDocker = true) -public class ClientOpenSSHCertificatesTest extends BaseTestSupport { +public class ClientOpenSSHCertificatesTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(ClientOpenSSHCertificatesTest.class); @@ -88,6 +86,7 @@ public class ClientOpenSSHCertificatesTest extends BaseTestSupport { @Container static GenericContainer<?> sshdContainer = new GenericContainer<>( new ImageFromDockerfile().withDockerfileFromBuilder(builder -> builder.from("alpine:3.19") // + .run(discriminate()) // .run("apk --update add openssh openssh-server") // Install .run("rm -rf /var/cache/apk/*") // Clear cache .run("addgroup customusers") // Give our users a group diff --git a/sshd-test/src/test/java/org/apache/sshd/client/auth/HostBoundPubKeyAuthTest.java b/sshd-test/src/test/java/org/apache/sshd/client/auth/HostBoundPubKeyAuthTest.java index 6c0f17010..afe73ab9a 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/auth/HostBoundPubKeyAuthTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/auth/HostBoundPubKeyAuthTest.java @@ -26,13 +26,13 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.config.DefaultNewHostKeysHandler; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.config.keys.PublicKeyEntry; import org.apache.sshd.common.kex.extension.DefaultClientKexExtensionHandler; import org.apache.sshd.common.keyprovider.FileKeyPairProvider; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommonTestSupportUtils; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -43,11 +43,9 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; -@Testcontainers(disabledWithoutDocker = true) -public class HostBoundPubKeyAuthTest extends BaseTestSupport { +public class HostBoundPubKeyAuthTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(HostBoundPubKeyAuthTest.class); @@ -62,6 +60,7 @@ public class HostBoundPubKeyAuthTest extends BaseTestSupport { @Container static GenericContainer<?> sshdContainer = new GenericContainer<>( new ImageFromDockerfile().withDockerfileFromBuilder(builder -> builder.from("alpine:3.16") + .run(discriminate()) // .run("apk --update add openssh-server") // Installs OpenSSH 9.0 .run("ssh-keygen -A") // Generate multiple host keys .run("adduser -D bob") // Add a user diff --git a/sshd-test/src/test/java/org/apache/sshd/client/forward/PortForwardingWithOpenSshTest.java b/sshd-test/src/test/java/org/apache/sshd/client/forward/PortForwardingWithOpenSshTest.java index 04cd6d3e3..5623ef665 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/forward/PortForwardingWithOpenSshTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/forward/PortForwardingWithOpenSshTest.java @@ -32,6 +32,7 @@ import java.util.concurrent.CountDownLatch; import io.grpc.Server; import io.grpc.ServerBuilder; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.common.forward.DefaultForwarder; import org.apache.sshd.common.forward.DefaultForwarderFactory; import org.apache.sshd.common.forward.Forwarder; @@ -42,7 +43,6 @@ import org.apache.sshd.server.channel.ChannelSessionFactory; import org.apache.sshd.server.forward.AcceptAllForwardingFilter; import org.apache.sshd.server.forward.DirectTcpipFactory; import org.apache.sshd.server.forward.ForwardedTcpipFactory; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -55,7 +55,6 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** @@ -78,8 +77,7 @@ import org.testcontainers.utility.MountableFile; * @see <a href="https://issues.apache.org/jira/browse/SSHD-1055">SSHD-1055</a> * @see <a href="https://issues.apache.org/jira/browse/SSHD-1269">SSHD-1269</a> */ -@Testcontainers(disabledWithoutDocker = true) -class PortForwardingWithOpenSshTest extends BaseTestSupport { +class PortForwardingWithOpenSshTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(PortForwardingWithOpenSshTest.class); @@ -177,6 +175,7 @@ class PortForwardingWithOpenSshTest extends BaseTestSupport { @SuppressWarnings("resource") GenericContainer<?> sshdContainer = new GenericContainer<>( new ImageFromDockerfile().withDockerfileFromBuilder(builder -> builder.from("alpine:3.16") // + .run(discriminate()) // .run("apk --update add openssh openssh-server") // Installs OpenSSH 9.0 .run("mkdir -p /root/.ssh") // Create the SSH config directory .entryPoint("/entrypoint.sh") // diff --git a/sshd-test/src/test/java/org/apache/sshd/client/kex/OpenSshMlKemTest.java b/sshd-test/src/test/java/org/apache/sshd/client/kex/OpenSshMlKemTest.java index ccb459316..f9a715cd8 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/kex/OpenSshMlKemTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/kex/OpenSshMlKemTest.java @@ -21,13 +21,13 @@ package org.apache.sshd.client.kex; import java.security.Security; import java.util.Collections; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.ClientBuilder; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.future.AuthFuture; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.kex.BuiltinDHFactories; import org.apache.sshd.common.keyprovider.FileKeyPairProvider; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommonTestSupportUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.jupiter.api.Assumptions; @@ -40,7 +40,6 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** @@ -48,8 +47,7 @@ import org.testcontainers.utility.MountableFile; * * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> */ -@Testcontainers(disabledWithoutDocker = true) -class OpenSshMlKemTest extends BaseTestSupport { +class OpenSshMlKemTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(OpenSshMlKemTest.class); @@ -60,6 +58,7 @@ class OpenSshMlKemTest extends BaseTestSupport { @Container static GenericContainer<?> sshdContainer = new GenericContainer<>(new ImageFromDockerfile() .withDockerfileFromBuilder(builder -> builder.from("alpine:3.21") // + .run(discriminate()) // .run("apk --update add openssh-server") // Installs OpenSSH 9.9 .run("ssh-keygen -A") // Generate multiple host keys .run("adduser -D bob") // Add a user diff --git a/sshd-test/src/test/java/org/apache/sshd/client/kex/StrictKexInteroperabilityTest.java b/sshd-test/src/test/java/org/apache/sshd/client/kex/StrictKexInteroperabilityTest.java index 8c7136238..f101fef03 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/kex/StrictKexInteroperabilityTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/kex/StrictKexInteroperabilityTest.java @@ -23,6 +23,7 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.nio.charset.StandardCharsets; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.ClientFactoryManager; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.channel.ChannelShell; @@ -32,7 +33,6 @@ import org.apache.sshd.client.session.SessionFactory; import org.apache.sshd.common.channel.StreamingChannel; import org.apache.sshd.common.io.IoSession; import org.apache.sshd.common.keyprovider.FileKeyPairProvider; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommonTestSupportUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -44,7 +44,6 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.images.builder.dockerfile.DockerfileBuilder; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** @@ -55,8 +54,7 @@ import org.testcontainers.utility.MountableFile; * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> * @see <A HREF="https://github.com/apache/mina-sshd/issues/445">Terrapin Mitigation: "strict-kex"</A> */ -@Testcontainers(disabledWithoutDocker = true) -class StrictKexInteroperabilityTest extends BaseTestSupport { +class StrictKexInteroperabilityTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(StrictKexInteroperabilityTest.class); @@ -88,6 +86,7 @@ class StrictKexInteroperabilityTest extends BaseTestSupport { if (!withStrictKex) { return builder .from("alpine:3.9.2") // + .run(discriminate()) // .run("apk --update add openssh-server") // Installs OpenSSH 7.9_p1-r6 .run("echo 'PrintMotd no' >> /etc/ssh/sshd_config") // .run("ssh-keygen -A") // Generate multiple host keys @@ -96,6 +95,7 @@ class StrictKexInteroperabilityTest extends BaseTestSupport { } else { return builder .from("alpine:3.19") // + .run(discriminate()) // .run("apk --update add openssh-server") // Installs OpenSSH 9.6 .run("ssh-keygen -A") // Generate multiple host keys .run("adduser -D bob") // Add a user diff --git a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpAuthIntegrationTest.java b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpAuthIntegrationTest.java index 674b94fad..b7b815d66 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpAuthIntegrationTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpAuthIntegrationTest.java @@ -27,6 +27,7 @@ import java.net.Proxy; import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.auth.keyboard.UserInteraction; import org.apache.sshd.client.future.AuthFuture; @@ -34,7 +35,6 @@ import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.SshException; 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.CommandExecutionHelper; import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.jupiter.api.AfterAll; @@ -42,16 +42,15 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.Testcontainers; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** * Test client connection through tinyproxy (HTTP CONNECT), requiring authentication. */ -@Testcontainers(disabledWithoutDocker = true) -class ProxyHttpAuthIntegrationTest extends BaseTestSupport { +class ProxyHttpAuthIntegrationTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(ProxyHttpAuthIntegrationTest.class); @@ -78,7 +77,7 @@ class ProxyHttpAuthIntegrationTest extends BaseTestSupport { } }); server.start(); - org.testcontainers.Testcontainers.exposeHostPorts(server.getPort()); + Testcontainers.exposeHostPorts(server.getPort()); proxy.start(); } diff --git a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpIntegrationTest.java b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpIntegrationTest.java index 6e6287808..399ca7a55 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpIntegrationTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxyHttpIntegrationTest.java @@ -25,10 +25,10 @@ import java.net.InetSocketAddress; import java.net.Proxy; import java.nio.charset.StandardCharsets; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.server.SshServer; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommandExecutionHelper; import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.jupiter.api.AfterAll; @@ -36,16 +36,15 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.Testcontainers; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** * Test client connection through tinyproxy (HTTP CONNECT), anonymous. */ -@Testcontainers(disabledWithoutDocker = true) -class ProxyHttpIntegrationTest extends BaseTestSupport { +class ProxyHttpIntegrationTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(ProxyHttpIntegrationTest.class); @@ -72,7 +71,7 @@ class ProxyHttpIntegrationTest extends BaseTestSupport { } }); server.start(); - org.testcontainers.Testcontainers.exposeHostPorts(server.getPort()); + Testcontainers.exposeHostPorts(server.getPort()); proxy.start(); } diff --git a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksAuthIntegrationTest.java b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksAuthIntegrationTest.java index 2ea139340..c2e72aa91 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksAuthIntegrationTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksAuthIntegrationTest.java @@ -27,6 +27,7 @@ import java.net.Proxy; import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.auth.keyboard.UserInteraction; import org.apache.sshd.client.future.AuthFuture; @@ -34,7 +35,6 @@ import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.SshException; 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.CommandExecutionHelper; import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.jupiter.api.AfterAll; @@ -42,15 +42,14 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.Testcontainers; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; -import org.testcontainers.junit.jupiter.Testcontainers; /** * Test client connection through a SOCKS proxy requiring authentication. */ -@Testcontainers(disabledWithoutDocker = true) -class ProxySocksAuthIntegrationTest extends BaseTestSupport { +class ProxySocksAuthIntegrationTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(ProxySocksAuthIntegrationTest.class); @@ -77,7 +76,7 @@ class ProxySocksAuthIntegrationTest extends BaseTestSupport { } }); server.start(); - org.testcontainers.Testcontainers.exposeHostPorts(server.getPort()); + Testcontainers.exposeHostPorts(server.getPort()); proxy.start(); } diff --git a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksIntegrationTest.java b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksIntegrationTest.java index ab0b71093..a7f9f5542 100644 --- a/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksIntegrationTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/client/proxy/ProxySocksIntegrationTest.java @@ -25,10 +25,10 @@ import java.net.InetSocketAddress; import java.net.Proxy; import java.nio.charset.StandardCharsets; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.server.SshServer; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommandExecutionHelper; import org.apache.sshd.util.test.CoreTestSupportUtils; import org.junit.jupiter.api.AfterAll; @@ -36,15 +36,14 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testcontainers.Testcontainers; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; -import org.testcontainers.junit.jupiter.Testcontainers; /** * Test client connection through an anonymous SOCKS proxy. */ -@Testcontainers(disabledWithoutDocker = true) -class ProxySocksIntegrationTest extends BaseTestSupport { +class ProxySocksIntegrationTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(ProxySocksIntegrationTest.class); @@ -69,7 +68,7 @@ class ProxySocksIntegrationTest extends BaseTestSupport { } }); server.start(); - org.testcontainers.Testcontainers.exposeHostPorts(server.getPort()); + Testcontainers.exposeHostPorts(server.getPort()); proxy.start(); } diff --git a/sshd-test/src/test/java/org/apache/sshd/common/cipher/OpenSshCipherTest.java b/sshd-test/src/test/java/org/apache/sshd/common/cipher/OpenSshCipherTest.java index 98b023e0e..67c67542d 100644 --- a/sshd-test/src/test/java/org/apache/sshd/common/cipher/OpenSshCipherTest.java +++ b/sshd-test/src/test/java/org/apache/sshd/common/cipher/OpenSshCipherTest.java @@ -23,12 +23,12 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.apache.sshd.AbstractContainerTestBase; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.future.AuthFuture; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.common.keyprovider.FileKeyPairProvider; import org.apache.sshd.common.util.security.SecurityUtils; -import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommonTestSupportUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.jupiter.api.AfterEach; @@ -41,16 +41,14 @@ import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.MountableFile; /** - * Test ciphers against OpenSSH. Force resetting ciphers every time to verify that they are res-initialized correctly. + * Test ciphers against OpenSSH. Force resetting ciphers every time to verify that they are re-initialized correctly. * * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> */ -@Testcontainers(disabledWithoutDocker = true) -class OpenSshCipherTest extends BaseTestSupport { +class OpenSshCipherTest extends AbstractContainerTestBase { private static final Logger LOG = LoggerFactory.getLogger(OpenSshCipherTest.class); @@ -61,6 +59,7 @@ class OpenSshCipherTest extends BaseTestSupport { @Container static GenericContainer<?> sshdContainer = new GenericContainer<>(new ImageFromDockerfile() .withDockerfileFromBuilder(builder -> builder.from("alpine:3.19") // + .run(discriminate()) // .run("apk --update add openssh-server") // Installs OpenSSH // Enable deprecated ciphers .run("echo 'Ciphers +aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc' >> /etc/ssh/sshd_config")
