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