You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/06/14 07:24:14 UTC
[james-project] 02/04: [CLEAN CODE] Replace dinkel/openldap -> osixia/openldap in test (no maintained long time)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 207d9cb7f48aeb4e6ad26307396822ef81e7d1e7
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Wed Jun 7 16:06:56 2023 +0700
[CLEAN CODE] Replace dinkel/openldap -> osixia/openldap in test (no maintained long time)
---
.../src/test/resources/ldif-files/Dockerfile | 3 --
.../james/user/ldap/LdapGenericContainer.java | 48 +++++++++++++---------
.../user/ldap/ReadOnlyUsersLDAPRepositoryTest.java | 4 +-
.../test/resources/invalid/ldif-files/Dockerfile | 3 --
.../src/test/resources/ldif-files/Dockerfile | 3 --
.../apache/james/util/docker/DockerContainer.java | 18 +++++++-
.../java/org/apache/james/util/docker/Images.java | 1 +
7 files changed, 48 insertions(+), 32 deletions(-)
diff --git a/server/apps/cassandra-app/src/test/resources/ldif-files/Dockerfile b/server/apps/cassandra-app/src/test/resources/ldif-files/Dockerfile
deleted file mode 100644
index d889a35fb7..0000000000
--- a/server/apps/cassandra-app/src/test/resources/ldif-files/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM dinkel/openldap:latest
-
-COPY populate.ldif /etc/ldap/prepopulate/prepop.ldif
diff --git a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
index 2182311b12..335e2d65a6 100644
--- a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
+++ b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
@@ -18,16 +18,21 @@
****************************************************************/
package org.apache.james.user.ldap;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
+import java.time.Duration;
+import java.util.Optional;
+import java.util.UUID;
+
+import org.apache.http.client.utils.URIBuilder;
import org.apache.james.util.docker.DockerContainer;
-import org.apache.james.util.docker.RateLimiters;
+import org.apache.james.util.docker.Images;
import org.junit.rules.ExternalResource;
-import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
-import org.testcontainers.images.builder.ImageFromDockerfile;
+import org.testcontainers.containers.BindMode;
+import org.testcontainers.containers.startupcheck.MinimumDurationRunningStartupCheckStrategy;
+import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
-import java.util.Optional;
-import java.util.UUID;
+import com.github.fge.lambdas.Throwing;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
public class LdapGenericContainer extends ExternalResource {
@@ -67,17 +72,19 @@ public class LdapGenericContainer extends ExternalResource {
}
private DockerContainer createContainer() {
- return DockerContainer.fromDockerfile(
- new ImageFromDockerfile("openldap_" + UUID.randomUUID())
- .withFileFromClasspath("populate.ldif", dockerFilePrefix.orElse("") + "ldif-files/populate.ldif")
- .withFileFromClasspath("Dockerfile", dockerFilePrefix.orElse("") + "ldif-files/Dockerfile"))
+ return DockerContainer.fromName(Images.OPEN_LDAP)
+ .withClasspathResourceMapping(dockerFilePrefix.orElse("") + "ldif-files/populate.ldif",
+ "/container/service/slapd/assets/config/bootstrap/ldif/data.ldif", BindMode.READ_ONLY)
.withAffinityToContainer()
- .withEnv("SLAPD_DOMAIN", domain)
- .withEnv("SLAPD_PASSWORD", password)
- .withEnv("SLAPD_CONFIG_PASSWORD", password)
- .withExposedPorts(LdapGenericContainer.DEFAULT_LDAP_PORT)
+ .withEnv("LDAP_DOMAIN", domain)
+ .withEnv("LDAP_ADMIN_PASSWORD", password)
+ .withEnv("LDAP_CONFIG_PASSWORD", password)
+ .withExposedPorts(DEFAULT_LDAP_PORT)
+ .withCommands("--copy-service", "--loglevel", "debug")
.withName("james-testing-openldap-" + UUID.randomUUID())
- .waitingFor(new HostPortWaitStrategy().withRateLimiter(RateLimiters.TWENTIES_PER_SECOND));
+ .waitingFor(new LogMessageWaitStrategy().withRegEx(".*slapd starting\\n").withTimes(1)
+ .withStartupTimeout(Duration.ofMinutes(3)))
+ .withStartupCheckStrategy(new MinimumDurationRunningStartupCheckStrategy(Duration.ofSeconds(10)));
}
}
@@ -116,10 +123,11 @@ public class LdapGenericContainer extends ExternalResource {
}
public String getLdapHost() {
- return "ldap://" +
- container.getContainerIp() +
- ":" +
- LdapGenericContainer.DEFAULT_LDAP_PORT;
+ return Throwing.supplier(() -> new URIBuilder()
+ .setScheme("ldap")
+ .setHost(container.getContainer().getHost())
+ .setPort(container.getMappedPort(DEFAULT_LDAP_PORT))
+ .build()).get().toString();
}
/**
diff --git a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 7253854708..ab87a3b618 100644
--- a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -490,8 +490,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
configuration.addProperty("[@credentials]", ADMIN_PASSWORD);
configuration.addProperty("[@userBase]", "ou=people,dc=james,dc=org");
configuration.addProperty("[@userObjectClass]", "inetOrgPerson");
- configuration.addProperty("[@connectionTimeout]", "100");
- configuration.addProperty("[@readTimeout]", "100");
+ configuration.addProperty("[@connectionTimeout]", "2000");
+ configuration.addProperty("[@readTimeout]", "2000");
return configuration;
}
}
diff --git a/server/data/data-ldap/src/test/resources/invalid/ldif-files/Dockerfile b/server/data/data-ldap/src/test/resources/invalid/ldif-files/Dockerfile
deleted file mode 100644
index d889a35fb7..0000000000
--- a/server/data/data-ldap/src/test/resources/invalid/ldif-files/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM dinkel/openldap:latest
-
-COPY populate.ldif /etc/ldap/prepopulate/prepop.ldif
diff --git a/server/data/data-ldap/src/test/resources/ldif-files/Dockerfile b/server/data/data-ldap/src/test/resources/ldif-files/Dockerfile
deleted file mode 100644
index 7e3b0b473f..0000000000
--- a/server/data/data-ldap/src/test/resources/ldif-files/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM dinkel/openldap:latest
-
-COPY populate.ldif /etc/ldap.dist/prepopulate/prepop.ldif
diff --git a/server/testing/src/main/java/org/apache/james/util/docker/DockerContainer.java b/server/testing/src/main/java/org/apache/james/util/docker/DockerContainer.java
index 169ee804fc..c4c271e852 100644
--- a/server/testing/src/main/java/org/apache/james/util/docker/DockerContainer.java
+++ b/server/testing/src/main/java/org/apache/james/util/docker/DockerContainer.java
@@ -35,10 +35,12 @@ import org.junit.runners.model.Statement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.DockerClientFactory;
+import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.Container;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.output.OutputFrame;
+import org.testcontainers.containers.startupcheck.StartupCheckStrategy;
import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.testcontainers.images.builder.ImageFromDockerfile;
@@ -86,6 +88,16 @@ public class DockerContainer implements TestRule, BeforeAllCallback, AfterAllCal
return this;
}
+ public DockerContainer withClasspathResourceMapping(String resourcePath, String containerPath, BindMode mode) {
+ container.withClasspathResourceMapping(resourcePath, containerPath, mode);
+ return this;
+ }
+
+ public DockerContainer withStartupCheckStrategy(StartupCheckStrategy strategy) {
+ container.withStartupCheckStrategy(strategy);
+ return this;
+ }
+
public DockerContainer withNetwork(Network network) {
container.withNetwork(network);
return this;
@@ -137,7 +149,7 @@ public class DockerContainer implements TestRule, BeforeAllCallback, AfterAllCal
}
public Container.ExecResult exec(String... command) throws IOException, InterruptedException {
- return container.execInContainer(command);
+ return container.execInContainer(command);
}
public void start() {
@@ -164,6 +176,10 @@ public class DockerContainer implements TestRule, BeforeAllCallback, AfterAllCal
return container.getMappedPort(originalPort);
}
+ public GenericContainer<?> getContainer() {
+ return container;
+ }
+
@SuppressWarnings("deprecation")
public String getContainerIp() {
return container.getContainerInfo()
diff --git a/server/testing/src/main/java/org/apache/james/util/docker/Images.java b/server/testing/src/main/java/org/apache/james/util/docker/Images.java
index 13c11ad521..fd55e97646 100644
--- a/server/testing/src/main/java/org/apache/james/util/docker/Images.java
+++ b/server/testing/src/main/java/org/apache/james/util/docker/Images.java
@@ -28,4 +28,5 @@ public interface Images {
String OPENSEARCH = "opensearchproject/opensearch:2.4.0";
String TIKA = "apache/tika:1.28.2";
String MOCK_SMTP_SERVER = "linagora/mock-smtp-server:0.6";
+ String OPEN_LDAP = "osixia/openldap:1.5.0";
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org