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

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 61b72522b2c3ec284d3c322f289e2a3cfc497bb4
Author: Tung Tran <[email protected]>
AuthorDate: Fri Jul 21 17:49:47 2023 +0700

    Refactor RspamdExtension
---
 third-party/rspamd/pom.xml                         |   6 -
 .../java/org/apache/james/rspamd/DockerClamAV.java |  53 -------
 .../java/org/apache/james/rspamd/DockerRspamd.java | 102 --------------
 .../apache/james/rspamd/DockerRspamdExtension.java |  66 ---------
 .../james/rspamd/DockerRspamdExtensionTest.java    |  22 +--
 .../org/apache/james/rspamd/RspamdExtension.java   | 156 +++++++++++++++++++++
 .../james/rspamd/client/RspamdHttpClientTest.java  |  10 +-
 .../rspamd/healthcheck/RspamdHealthcheckTest.java  |  14 +-
 .../james/rspamd/route/FeedMessageRouteTest.java   |   6 +-
 .../james/rspamd/task/FeedHamToRspamdTaskTest.java |   6 +-
 .../rspamd/task/FeedSpamToRspamdTaskTest.java      |   6 +-
 11 files changed, 188 insertions(+), 259 deletions(-)

diff --git a/third-party/rspamd/pom.xml b/third-party/rspamd/pom.xml
index ff91ce9356..e83aff71eb 100644
--- a/third-party/rspamd/pom.xml
+++ b/third-party/rspamd/pom.xml
@@ -106,12 +106,6 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-rate-limiter-redis</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-task-json</artifactId>
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerClamAV.java 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerClamAV.java
deleted file mode 100644
index 5b18644ec9..0000000000
--- a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerClamAV.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************
- * 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.james.rspamd;
-
-import java.time.Duration;
-import java.util.UUID;
-
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.Network;
-import org.testcontainers.containers.wait.strategy.Wait;
-import org.testcontainers.utility.DockerImageName;
-
-public class DockerClamAV {
-    private static final DockerImageName DEFAULT_IMAGE_NAME = 
DockerImageName.parse("clamav/clamav").withTag("1.1");
-    private static final int DEFAULT_PORT = 3310;
-
-    private final GenericContainer<?> container;
-
-    public DockerClamAV(Network network) {
-        this.container = new GenericContainer<>(DEFAULT_IMAGE_NAME)
-            .withExposedPorts(DEFAULT_PORT)
-            .withEnv("CLAMAV_NO_FRESHCLAMD", "true")
-            .withEnv("CLAMAV_NO_MILTERD", "true")
-            .withNetwork(network)
-            .withCreateContainerCmdModifier(createContainerCmd -> 
createContainerCmd.withName("james-clamav-test-" + UUID.randomUUID()))
-            .withNetworkAliases("clamav")
-            .waitingFor(Wait.forHealthcheck()
-                .withStartupTimeout(Duration.ofMinutes(2)));
-    }
-
-    public void start() {
-        if (!container.isRunning()) {
-            container.start();
-        }
-    }
-}
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamd.java 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamd.java
deleted file mode 100644
index 1be14bd554..0000000000
--- a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamd.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************
- * 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.james.rspamd;
-
-import java.time.Duration;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.apache.james.rate.limiter.DockerRedis;
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.Network;
-import org.testcontainers.containers.wait.strategy.Wait;
-import org.testcontainers.utility.DockerImageName;
-import org.testcontainers.utility.MountableFile;
-
-public class DockerRspamd {
-    public static final String PASSWORD = "admin";
-    private static final DockerImageName DEFAULT_IMAGE_NAME = 
DockerImageName.parse("a16bitsysop/rspamd");
-    private static final String DEFAULT_TAG = "3.5-r7-alpine3.18.2-r0";
-    private static final int DEFAULT_PORT = 11334;
-
-    private final DockerRedis dockerRedis;
-    private final DockerClamAV dockerClamAV;
-    private final GenericContainer<?> container;
-    private final Network network;
-
-    public DockerRspamd() {
-        this.network = Network.newNetwork();
-        this.dockerRedis = new DockerRedis(network);
-        this.dockerClamAV = new DockerClamAV(network);
-        this.container = createRspamd();
-    }
-
-    public boolean isRunning() {
-        return container.isRunning();
-    }
-
-    private GenericContainer<?> createRspamd() {
-        return new GenericContainer<>(DEFAULT_IMAGE_NAME.withTag(DEFAULT_TAG))
-            .withExposedPorts(DEFAULT_PORT)
-            .withEnv("REDIS", "redis")
-            .withEnv("CLAMAV", "clamav")
-            .withEnv("PASSWORD", PASSWORD)
-            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/antivirus.conf"),
 "/etc/rspamd/override.d/")
-            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/actions.conf"),
 "/etc/rspamd/")
-            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/statistic.conf"),
 "/etc/rspamd/")
-            .withCreateContainerCmdModifier(createContainerCmd -> 
createContainerCmd.withName("james-rspamd-test-" + UUID.randomUUID()))
-            .withNetwork(network)
-            .waitingFor(Wait.forHealthcheck()
-                .withStartupTimeout(Duration.ofMinutes(2)));
-    }
-
-    public Integer getPort() {
-        return container.getMappedPort(DEFAULT_PORT);
-    }
-
-    public void start() {
-        Stream.<Runnable>of(dockerClamAV::start, dockerRedis::start)
-            .parallel()
-            .forEach(Runnable::run);
-
-        if (!container.isRunning()) {
-            container.start();
-        }
-    }
-
-    public void pause() {
-        
container.getDockerClient().pauseContainerCmd(container.getContainerId()).exec();
-    }
-
-    public void unPause() {
-        
container.getDockerClient().unpauseContainerCmd(container.getContainerId()).exec();
-    }
-
-    public boolean isPaused() {
-        return 
container.getDockerClient().inspectContainerCmd(container.getContainerId())
-            .exec()
-            .getState()
-            .getPaused();
-    }
-
-    public void flushAll() {
-        dockerRedis.flushAll();
-    }
-}
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtension.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtension.java
deleted file mode 100644
index 92c2094893..0000000000
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtension.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************
- * 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.james.rspamd;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.james.GuiceModuleTestExtension;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.ParameterContext;
-import org.junit.jupiter.api.extension.ParameterResolutionException;
-
-public class DockerRspamdExtension implements GuiceModuleTestExtension {
-    private static final DockerRspamd DOCKER_RSPAMD_SINGLETON = new 
DockerRspamd();
-
-    @Override
-    public void beforeAll(ExtensionContext extensionContext) {
-        if (!DOCKER_RSPAMD_SINGLETON.isRunning()) {
-            DOCKER_RSPAMD_SINGLETON.start();
-        }
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext extensionContext) {
-        DOCKER_RSPAMD_SINGLETON.flushAll();
-    }
-
-    public DockerRspamd dockerRspamd() {
-        return DOCKER_RSPAMD_SINGLETON;
-    }
-
-    @Override
-    public boolean supportsParameter(ParameterContext parameterContext, 
ExtensionContext extensionContext) throws ParameterResolutionException {
-        return parameterContext.getParameter().getType() == DockerRspamd.class;
-    }
-
-    @Override
-    public Object resolveParameter(ParameterContext parameterContext, 
ExtensionContext extensionContext) throws ParameterResolutionException {
-        return dockerRspamd();
-    }
-
-    public URL getBaseUrl() {
-        try {
-            return new URL("http://127.0.0.1:"; + dockerRspamd().getPort());
-        } catch (MalformedURLException e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtensionTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtensionTest.java
index 4e51ac0bc3..f4166db072 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtensionTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/DockerRspamdExtensionTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.rspamd;
 
-import static org.apache.james.rspamd.DockerRspamd.PASSWORD;
+import static org.apache.james.rspamd.RspamdExtension.PASSWORD;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.core.Is.is;
 
@@ -41,11 +41,11 @@ import io.restassured.specification.RequestSpecification;
 @Tag(Unstable.TAG)
 class DockerRspamdExtensionTest {
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     @Test
     void dockerRspamdExtensionShouldWork() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         String response = rspamdApi
             .get("ping")
@@ -61,7 +61,7 @@ class DockerRspamdExtensionTest {
 
     @Test
     void checkSpamEmailWithExactPasswordHeaderShouldWork() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", PASSWORD))
@@ -74,7 +74,7 @@ class DockerRspamdExtensionTest {
 
     @Test
     void checkHamEmailWithExactPasswordHeaderShouldWork() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
         rspamdApi
             .header(new Header("Password", PASSWORD))
             .body(ClassLoader.getSystemResourceAsStream("mail/ham/ham1.eml"))
@@ -86,7 +86,7 @@ class DockerRspamdExtensionTest {
 
     @Test
     void learnSpamEmailWithExactPasswordHeaderShouldWork() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", PASSWORD))
@@ -99,7 +99,7 @@ class DockerRspamdExtensionTest {
 
     @Test
     void learnHamEmailWithExactPasswordHeaderShouldWork() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", PASSWORD))
@@ -113,20 +113,20 @@ class DockerRspamdExtensionTest {
     @ParameterizedTest
     @ValueSource(strings = {"checkv2", "learnspam", "learnham"})
     void endpointsWithWrongPasswordHeaderShouldReturnUnauthorized(String 
endpoint) {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", "wrongPassword"))
             .body("dummy")
             .post(endpoint)
         .then()
-            .statusCode(HttpStatus.FORBIDDEN_403)
+            .statusCode(HttpStatus.UNAUTHORIZED_401)
             .body("error", is("Unauthorized"));
     }
 
     @Test
     void checkVirusEmailWithExactPasswordHeaderShouldReturnClamVirusSymbol() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", PASSWORD))
@@ -140,7 +140,7 @@ class DockerRspamdExtensionTest {
 
     @Test
     void 
checkNonVirusEmailWithExactPasswordHeaderShouldNotReturnClamVirusSymbol() {
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
 
         rspamdApi
             .header(new Header("Password", PASSWORD))
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdExtension.java 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdExtension.java
new file mode 100644
index 0000000000..ab12fe54f1
--- /dev/null
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdExtension.java
@@ -0,0 +1,156 @@
+/****************************************************************
+ * 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.james.rspamd;
+
+import java.io.IOException;
+import java.net.URL;
+import java.time.Duration;
+import java.util.UUID;
+
+import org.apache.james.GuiceModuleTestExtension;
+import org.apache.james.util.Runnables;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.DockerImageName;
+import org.testcontainers.utility.MountableFile;
+
+import com.github.fge.lambdas.Throwing;
+
+public class RspamdExtension implements GuiceModuleTestExtension {
+    public static final Duration STARTUP_TIMEOUT = Duration.ofMinutes(5);
+    public static final String PASSWORD = "admin";
+
+    private static final DockerImageName RSPAMD_IMAGE = 
DockerImageName.parse("a16bitsysop/rspamd").withTag("3.5-r7-alpine3.18.2-r0");
+    private static final DockerImageName REDIS_IMAGE = 
DockerImageName.parse("redis").withTag("7.0.12");
+    private static final DockerImageName CLAMAV_IMAGE = 
DockerImageName.parse("clamav/clamav").withTag("1.1");
+    private static final int RSPAMD_DEFAULT_PORT = 11334;
+    private static final int REDIS_DEFAULT_PORT = 6379;
+    private static final int CLAMAV_DEFAULT_PORT = 3310;
+
+    private final GenericContainer<?> rspamdContainer;
+    private final GenericContainer<?> redisContainer;
+    private final GenericContainer<?> clamAVContainer;
+    private final Network network;
+
+    public RspamdExtension() {
+        this.network = Network.newNetwork();
+        this.redisContainer = redisContainer(network);
+        this.clamAVContainer = clamAVContainer(network);
+        this.rspamdContainer = rspamdContainer(network);
+    }
+
+    @Override
+    public void beforeAll(ExtensionContext extensionContext) {
+        if (!rspamdContainer.isRunning()) {
+            rspamdContainer.start();
+        }
+    }
+
+    @Override
+    public void afterAll(ExtensionContext extensionContext) {
+        rspamdContainer.stop();
+        Runnables.runParallel(redisContainer::stop, clamAVContainer::stop);
+    }
+
+    @Override
+    public void beforeEach(ExtensionContext extensionContext) {
+        redisFlushAll();
+    }
+
+    public GenericContainer<?> rspamdContainer(Network network) {
+        return new GenericContainer<>(RSPAMD_IMAGE)
+            .withExposedPorts(RSPAMD_DEFAULT_PORT)
+            .withEnv("REDIS", "redis")
+            .withEnv("CLAMAV", "clamav")
+            .withEnv("PASSWORD", PASSWORD)
+            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/antivirus.conf"),
 "/etc/rspamd/override.d/")
+            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/actions.conf"),
 "/etc/rspamd/")
+            
.withCopyFileToContainer(MountableFile.forClasspathResource("rspamd-config/statistic.conf"),
 "/etc/rspamd/")
+            .withCreateContainerCmdModifier(createContainerCmd -> 
createContainerCmd.withName("james-rspamd-test-" + UUID.randomUUID()))
+            .withNetwork(network)
+            .dependsOn(redisContainer, clamAVContainer)
+            .waitingFor(Wait.forHealthcheck())
+            .withStartupTimeout(STARTUP_TIMEOUT);
+    }
+
+
+    public GenericContainer<?> redisContainer(Network network) {
+        return new GenericContainer<>(REDIS_IMAGE)
+            .withExposedPorts(REDIS_DEFAULT_PORT)
+            .withNetwork(network)
+            .withCreateContainerCmdModifier(createContainerCmd -> 
createContainerCmd.withName("james-redis-test-" + UUID.randomUUID()))
+            .withNetworkAliases("redis");
+    }
+
+    public GenericContainer<?> clamAVContainer(Network network) {
+        return new GenericContainer<>(CLAMAV_IMAGE)
+            .withExposedPorts(CLAMAV_DEFAULT_PORT)
+            .withEnv("CLAMAV_NO_FRESHCLAMD", "true")
+            .withEnv("CLAMAV_NO_MILTERD", "true")
+            .withNetwork(network)
+            .withCreateContainerCmdModifier(createContainerCmd -> 
createContainerCmd.withName("james-clamav-test-" + UUID.randomUUID()))
+            .withNetworkAliases("clamav")
+            .waitingFor(Wait.forHealthcheck())
+            .withStartupTimeout(STARTUP_TIMEOUT);
+    }
+
+
+    public void redisFlushAll() {
+        try {
+            redisContainer.execInContainer("redis-cli", "flushall");
+        } catch (IOException | InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public URL rspamdURL() {
+        return Throwing.supplier(() -> new URL("http",
+            rspamdContainer.getHost(),
+            rspamdContainer.getMappedPort(RSPAMD_DEFAULT_PORT),
+            "/")).get();
+    }
+
+    public URL getBaseUrl() {
+        return rspamdURL();
+    }
+
+    public int rspamdPort() {
+        return rspamdContainer.getMappedPort(RSPAMD_DEFAULT_PORT);
+    }
+
+
+    public void pause() {
+        
rspamdContainer.getDockerClient().pauseContainerCmd(rspamdContainer.getContainerId()).exec();
+    }
+
+    public void unPause() {
+        
rspamdContainer.getDockerClient().unpauseContainerCmd(rspamdContainer.getContainerId()).exec();
+    }
+
+    public boolean isPaused() {
+        return 
rspamdContainer.getDockerClient().inspectContainerCmd(rspamdContainer.getContainerId())
+            .exec()
+            .getState()
+            .getPaused();
+    }
+
+}
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
index eff8966503..7d40490833 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
@@ -20,7 +20,7 @@
 package org.apache.james.rspamd.client;
 
 import static org.apache.james.mailbox.model.Content.BUFFER_SIZE;
-import static org.apache.james.rspamd.DockerRspamd.PASSWORD;
+import static org.apache.james.rspamd.RspamdExtension.PASSWORD;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -34,7 +34,7 @@ import javax.mail.MessagingException;
 
 import org.apache.james.core.Username;
 import org.apache.james.junit.categories.Unstable;
-import org.apache.james.rspamd.DockerRspamdExtension;
+import org.apache.james.rspamd.RspamdExtension;
 import org.apache.james.rspamd.exception.UnauthorizedException;
 import org.apache.james.rspamd.model.AnalysisResult;
 import org.apache.james.util.MimeMessageUtil;
@@ -64,7 +64,7 @@ class RspamdHttpClientTest {
     private final static Username ALICE = Username.of("[email protected]");
 
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     private Mail spamMessage;
     private Mail hamMessage;
@@ -134,7 +134,7 @@ class RspamdHttpClientTest {
         AnalysisResult analysisResult = client.checkV2(spamMessage).block();
         
assertThat(analysisResult.getAction()).isEqualTo(AnalysisResult.Action.ADD_HEADER);
 
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
         rspamdApi
             .header(new Header("Password", PASSWORD))
             .header(new Header("IP", spamMessage.getRemoteAddr()))
@@ -160,7 +160,7 @@ class RspamdHttpClientTest {
             softly.assertThat(analysisResult.hasVirus()).isEqualTo(false);
         });
 
-        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
+        RequestSpecification rspamdApi = 
WebAdminUtils.spec(Port.of(rspamdExtension.rspamdPort()));
         rspamdApi
             .header(new Header("Password", PASSWORD))
             .body(ClassLoader.getSystemResourceAsStream(HAM_MESSAGE_PATH))
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/healthcheck/RspamdHealthcheckTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/healthcheck/RspamdHealthcheckTest.java
index 3c7a367ee4..ee88c4293a 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/healthcheck/RspamdHealthcheckTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/healthcheck/RspamdHealthcheckTest.java
@@ -25,7 +25,7 @@ import java.net.URL;
 import java.util.Optional;
 
 import org.apache.james.core.healthcheck.Result;
-import org.apache.james.rspamd.DockerRspamdExtension;
+import org.apache.james.rspamd.RspamdExtension;
 import org.apache.james.rspamd.client.RspamdClientConfiguration;
 import org.apache.james.rspamd.client.RspamdHttpClient;
 import org.junit.jupiter.api.BeforeEach;
@@ -36,14 +36,14 @@ import reactor.core.publisher.Mono;
 
 class RspamdHealthcheckTest {
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     private RspamdHealthCheck rspamdHealthCheck;
 
     @BeforeEach
     void setUp() {
-        if (rspamdExtension.dockerRspamd().isPaused()) {
-            rspamdExtension.dockerRspamd().unPause();
+        if (rspamdExtension.isPaused()) {
+            rspamdExtension.unPause();
         }
 
         RspamdClientConfiguration configuration = new 
RspamdClientConfiguration(rspamdExtension.getBaseUrl(), 
"passwordDoesNotMatter", Optional.empty());
@@ -60,7 +60,7 @@ class RspamdHealthcheckTest {
 
     @Test
     void checkShouldReturnUnhealthyWhenRspamdIsDown() {
-        rspamdExtension.dockerRspamd().pause();
+        rspamdExtension.pause();
         Result check = Mono.from(rspamdHealthCheck.check()).block();
 
         assertThat(check.isUnHealthy()).isTrue();
@@ -79,8 +79,8 @@ class RspamdHealthcheckTest {
 
     @Test
     void checkShouldReturnHealthyWhenRspamdIsRecovered() {
-        rspamdExtension.dockerRspamd().pause();
-        rspamdExtension.dockerRspamd().unPause();
+        rspamdExtension.pause();
+        rspamdExtension.unPause();
         Result check = Mono.from(rspamdHealthCheck.check()).block();
 
         assertThat(check.isHealthy()).isTrue();
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/route/FeedMessageRouteTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/route/FeedMessageRouteTest.java
index f06f87fd1e..7a7d439f03 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/route/FeedMessageRouteTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/route/FeedMessageRouteTest.java
@@ -21,7 +21,7 @@ package org.apache.james.rspamd.route;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.http.ContentType.JSON;
-import static org.apache.james.rspamd.DockerRspamd.PASSWORD;
+import static org.apache.james.rspamd.RspamdExtension.PASSWORD;
 import static org.apache.james.rspamd.route.FeedMessageRoute.BASE_PATH;
 import static 
org.apache.james.rspamd.task.FeedHamToRspamdTaskTest.ALICE_INBOX_MAILBOX;
 import static 
org.apache.james.rspamd.task.FeedHamToRspamdTaskTest.BOB_INBOX_MAILBOX;
@@ -62,7 +62,7 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.rspamd.DockerRspamdExtension;
+import org.apache.james.rspamd.RspamdExtension;
 import org.apache.james.rspamd.client.RspamdClientConfiguration;
 import org.apache.james.rspamd.client.RspamdHttpClient;
 import org.apache.james.rspamd.task.FeedHamToRspamdTask;
@@ -98,7 +98,7 @@ import io.restassured.RestAssured;
 @Tag(Unstable.TAG)
 public class FeedMessageRouteTest {
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     private InMemoryMailboxManager mailboxManager;
     private WebAdminServer webAdminServer;
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedHamToRspamdTaskTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedHamToRspamdTaskTest.java
index 418799003f..5cc995d0d9 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedHamToRspamdTaskTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedHamToRspamdTaskTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.rspamd.task;
 
-import static org.apache.james.rspamd.DockerRspamd.PASSWORD;
+import static org.apache.james.rspamd.RspamdExtension.PASSWORD;
 import static 
org.apache.james.rspamd.task.FeedSpamToRspamdTaskTest.BOB_SPAM_MAILBOX;
 import static org.apache.james.rspamd.task.RunningOptions.ALL_MESSAGES;
 import static 
org.apache.james.rspamd.task.RunningOptions.DEFAULT_MESSAGES_PER_SECOND;
@@ -53,7 +53,7 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.rspamd.DockerRspamdExtension;
+import org.apache.james.rspamd.RspamdExtension;
 import org.apache.james.rspamd.client.RspamdClientConfiguration;
 import org.apache.james.rspamd.client.RspamdHttpClient;
 import org.apache.james.task.Task;
@@ -80,7 +80,7 @@ import reactor.core.publisher.Mono;
 @Tag(Unstable.TAG)
 public class FeedHamToRspamdTaskTest {
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     public static final String INBOX_MAILBOX_NAME = "INBOX";
     public static final Domain DOMAIN = Domain.of("domain.tld");
diff --git 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedSpamToRspamdTaskTest.java
 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedSpamToRspamdTaskTest.java
index 80260bf311..51887aeca2 100644
--- 
a/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedSpamToRspamdTaskTest.java
+++ 
b/third-party/rspamd/src/test/java/org/apache/james/rspamd/task/FeedSpamToRspamdTaskTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.rspamd.task;
 
-import static org.apache.james.rspamd.DockerRspamd.PASSWORD;
+import static org.apache.james.rspamd.RspamdExtension.PASSWORD;
 import static 
org.apache.james.rspamd.task.FeedSpamToRspamdTask.SPAM_MAILBOX_NAME;
 import static org.apache.james.rspamd.task.RunningOptions.ALL_MESSAGES;
 import static 
org.apache.james.rspamd.task.RunningOptions.DEFAULT_MESSAGES_PER_SECOND;
@@ -53,7 +53,7 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.rspamd.DockerRspamdExtension;
+import org.apache.james.rspamd.RspamdExtension;
 import org.apache.james.rspamd.client.RspamdClientConfiguration;
 import org.apache.james.rspamd.client.RspamdHttpClient;
 import org.apache.james.task.Task;
@@ -80,7 +80,7 @@ import reactor.core.publisher.Mono;
 @Tag(Unstable.TAG)
 public class FeedSpamToRspamdTaskTest {
     @RegisterExtension
-    static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
+    static RspamdExtension rspamdExtension = new RspamdExtension();
 
     public static final Domain DOMAIN = Domain.of("domain.tld");
     public static final Username CEDRIC = 
Username.fromLocalPartWithDomain("cedric", DOMAIN);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to