You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2018/08/01 12:34:21 UTC
[03/14] james-project git commit: JAMES-2502 fix Eclipse Photon build
for mailets, utils and imap
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/protocols/imap/src/test/java/org/apache/james/imap/encode/FakeImapSession.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/FakeImapSession.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/FakeImapSession.java
deleted file mode 100644
index bd7d053..0000000
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/FakeImapSession.java
+++ /dev/null
@@ -1,145 +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.imap.encode;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.james.imap.api.ImapSessionState;
-import org.apache.james.imap.api.process.ImapLineHandler;
-import org.apache.james.imap.api.process.ImapSession;
-import org.apache.james.imap.api.process.SelectedMailbox;
-
-public class FakeImapSession implements ImapSession {
-
- private ImapSessionState state = ImapSessionState.NON_AUTHENTICATED;
-
- private SelectedMailbox selectedMailbox = null;
-
- private final Map<String, Object> attributesByKey;
-
- public FakeImapSession() {
- this.attributesByKey = new ConcurrentHashMap<>();
- }
-
- @Override
- public void logout() {
- closeMailbox();
- state = ImapSessionState.LOGOUT;
- }
-
- @Override
- public void authenticated() {
- this.state = ImapSessionState.AUTHENTICATED;
- }
-
- @Override
- public void deselect() {
- this.state = ImapSessionState.AUTHENTICATED;
- closeMailbox();
- }
-
- @Override
- public void selected(SelectedMailbox mailbox) {
- this.state = ImapSessionState.SELECTED;
- closeMailbox();
- this.selectedMailbox = mailbox;
- }
-
- @Override
- public SelectedMailbox getSelected() {
- return this.selectedMailbox;
- }
-
- @Override
- public ImapSessionState getState() {
- return this.state;
- }
-
- public void closeMailbox() {
- if (selectedMailbox != null) {
- selectedMailbox.deselect();
- selectedMailbox = null;
- }
- }
-
- @Override
- public Object getAttribute(String key) {
- return attributesByKey.get(key);
- }
-
- @Override
- public void setAttribute(String key, Object value) {
- if (value == null) {
- attributesByKey.remove(key);
- } else {
- attributesByKey.put(key, value);
- }
- }
-
- @Override
- public boolean startTLS() {
- return false;
- }
-
- @Override
- public boolean supportStartTLS() {
- return false;
- }
-
- @Override
- public boolean isCompressionSupported() {
- return false;
- }
-
- @Override
- public boolean startCompression() {
- return false;
- }
-
- @Override
- public void pushLineHandler(ImapLineHandler lineHandler) {
- }
-
- @Override
- public void popLineHandler() {
-
- }
-
- @Override
- public boolean isPlainAuthDisallowed() {
- return false;
- }
-
- @Override
- public boolean isTLSActive() {
- return false;
- }
-
- @Override
- public boolean supportMultipleNamespaces() {
- return false;
- }
-
- @Override
- public boolean isCompressionActive() {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/core/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/core/pom.xml b/server/container/core/pom.xml
index 6f64917..ef1d3d3 100644
--- a/server/container/core/pom.xml
+++ b/server/container/core/pom.xml
@@ -49,8 +49,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <classifier>tests</classifier>
+ <artifactId>apache-mailet-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/metrics/metrics-es-reporter/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/metrics/metrics-es-reporter/pom.xml b/server/container/metrics/metrics-es-reporter/pom.xml
index dc3d11d..89b5e4a 100644
--- a/server/container/metrics/metrics-es-reporter/pom.xml
+++ b/server/container/metrics/metrics-es-reporter/pom.xml
@@ -40,8 +40,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>james-server-util-java8</artifactId>
- <type>test-jar</type>
+ <artifactId>james-server-testing</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/util-java8/src/test/java/org/apache/james/util/docker/Images.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/docker/Images.java b/server/container/util-java8/src/test/java/org/apache/james/util/docker/Images.java
deleted file mode 100644
index c252f1a..0000000
--- a/server/container/util-java8/src/test/java/org/apache/james/util/docker/Images.java
+++ /dev/null
@@ -1,29 +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.util.docker;
-
-public interface Images {
- String FAKE_SMTP = "weave/rest-smtp-sink:latest";
- String RABBITMQ = "rabbitmq:3.7.7";
- String ELASTICSEARCH = "elasticsearch:2.4.6";
- String NGINX = "nginx:1.15.1";
- String TIKA = "linagora/docker-tikaserver:1.18-SNAPSHOT-plus-TIKA-2520";
- String SPAMASSASSIN = "dinkel/spamassassin:3.4.0";
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/util-java8/src/test/java/org/apache/james/util/docker/SwarmGenericContainer.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/docker/SwarmGenericContainer.java b/server/container/util-java8/src/test/java/org/apache/james/util/docker/SwarmGenericContainer.java
deleted file mode 100644
index 59488c0..0000000
--- a/server/container/util-java8/src/test/java/org/apache/james/util/docker/SwarmGenericContainer.java
+++ /dev/null
@@ -1,164 +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.util.docker;
-
-import java.net.Socket;
-import java.time.Duration;
-import java.util.List;
-
-import javax.net.SocketFactory;
-
-import org.junit.Assume;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testcontainers.DockerClientFactory;
-import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.wait.strategy.WaitStrategy;
-import org.testcontainers.images.builder.ImageFromDockerfile;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
-
-import com.github.dockerjava.api.command.InspectContainerResponse;
-import com.google.common.base.Strings;
-
-public class SwarmGenericContainer implements TestRule {
- private static final Logger LOGGER = LoggerFactory.getLogger(SwarmGenericContainer.class);
- private static final String DOCKER_CONTAINER = "DOCKER_CONTAINER";
- private static final String NO_DOCKER_ENVIRONMENT = "Could not find a valid Docker environment.";
- private static final String SKIPPING_TEST_CAUTION = "Skipping all docker tests as no Docker environment was found";
-
- private GenericContainer<?> container;
-
- public SwarmGenericContainer(String dockerImageName) {
- try {
- this.container = new GenericContainer<>(dockerImageName);
- } catch (IllegalStateException e) {
- logAndCheckSkipTest(e);
- }
- }
-
- public SwarmGenericContainer(ImageFromDockerfile imageFromDockerfile) {
- try {
- this.container = new GenericContainer<>(imageFromDockerfile);
- } catch (IllegalStateException e) {
- logAndCheckSkipTest(e);
- }
- }
-
- private void logAndCheckSkipTest(IllegalStateException e) {
- LOGGER.error("Cannot initial a docker container", e);
- if (e.getMessage().startsWith(NO_DOCKER_ENVIRONMENT)) {
- Assume.assumeTrue(SKIPPING_TEST_CAUTION, false);
- }
- }
-
- public SwarmGenericContainer withAffinityToContainer() {
- String containerEnv = System.getenv(DOCKER_CONTAINER);
- if (Strings.isNullOrEmpty(containerEnv)) {
- LOGGER.warn("'DOCKER_CONTAINER' environment variable not found, dockering without affinity");
- return this;
- }
- List<String> envVariables = container.getEnv();
- envVariables.add("affinity:container==" + container);
- container.setEnv(envVariables);
- return this;
- }
-
- public SwarmGenericContainer withEnv(String key, String value) {
- container.addEnv(key, value);
- return this;
- }
-
- public SwarmGenericContainer withExposedPorts(Integer... ports) {
- container.withExposedPorts(ports);
- return this;
- }
-
- public SwarmGenericContainer portBinding(int hostPort, int dockerPort) {
- container.setPortBindings(ImmutableList.of("0.0.0.0:" + hostPort + ":" + dockerPort));
- return this;
- }
-
- public SwarmGenericContainer waitingFor(WaitStrategy waitStrategy) {
- container.waitingFor(waitStrategy);
- return this;
- }
-
- public SwarmGenericContainer withStartupTimeout(Duration startupTimeout) {
- container.withStartupTimeout(startupTimeout);
- return this;
- }
-
- public SwarmGenericContainer withCommands(String... commands) {
- container.withCommand(commands);
- return this;
- }
-
- public void start() {
- container.start();
- }
-
- public void stop() {
- container.stop();
- }
-
- public void pause() {
- DockerClientFactory.instance().client().pauseContainerCmd(container.getContainerInfo().getId());
- }
-
- public void unpause() {
- DockerClientFactory.instance().client().unpauseContainerCmd(container.getContainerInfo().getId());
- }
-
- public Integer getMappedPort(int originalPort) {
- return container.getMappedPort(originalPort);
- }
-
- @SuppressWarnings("deprecation")
- public String getContainerIp() {
- return container.getContainerInfo().getNetworkSettings().getIpAddress();
- }
-
- public String getHostIp() {
- return container.getContainerIpAddress();
- }
-
- public InspectContainerResponse getContainerInfo() {
- return container.getContainerInfo();
- }
-
- public boolean tryConnect(int port) {
- try {
- Socket socket = SocketFactory.getDefault().createSocket(getContainerIp(), port);
- socket.close();
- return true;
- } catch (Exception e) {
- return false;
- }
- }
-
- @Override
- public Statement apply(Statement statement, Description description) {
- return container.apply(statement, description);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/util/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/util/pom.xml b/server/container/util/pom.xml
index fadfca7..a7af883 100644
--- a/server/container/util/pom.xml
+++ b/server/container/util/pom.xml
@@ -38,6 +38,10 @@
<artifactId>guava</artifactId>
</dependency>
<dependency>
+ <groupId>com.sun.mail</groupId>
+ <artifactId>javax.mail</artifactId>
+ </dependency>
+ <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
@@ -46,6 +50,11 @@
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
@@ -61,11 +70,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/container/util/src/main/java/org/apache/james/util/MimeMessageUtil.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/MimeMessageUtil.java b/server/container/util/src/main/java/org/apache/james/util/MimeMessageUtil.java
new file mode 100644
index 0000000..93715f8
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/MimeMessageUtil.java
@@ -0,0 +1,55 @@
+/****************************************************************
+ * 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.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+public class MimeMessageUtil {
+
+ public static String asString(MimeMessage mimeMessage) throws Exception {
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ mimeMessage.writeTo(byteArrayOutputStream);
+ return new String(byteArrayOutputStream.toByteArray(), StandardCharsets.UTF_8);
+ }
+
+ public static MimeMessage defaultMimeMessage() {
+ return new MimeMessage(Session.getDefaultInstance(new Properties()));
+ }
+
+ public static MimeMessage mimeMessageFromStream(InputStream inputStream) throws MessagingException {
+ return new MimeMessage(Session.getDefaultInstance(new Properties()), inputStream);
+ }
+
+ public static MimeMessage mimeMessageFromBytes(byte[] bytes) throws MessagingException {
+ return mimeMessageFromStream(new ByteArrayInputStream(bytes));
+ }
+
+ public static MimeMessage mimeMessageFromString(String string) throws MessagingException {
+ return mimeMessageFromBytes(string.getBytes(StandardCharsets.UTF_8));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/data/data-ldap-integration-testing/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/pom.xml b/server/data/data-ldap-integration-testing/pom.xml
index 63617e3..4b5919c 100644
--- a/server/data/data-ldap-integration-testing/pom.xml
+++ b/server/data/data-ldap-integration-testing/pom.xml
@@ -45,8 +45,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>james-server-util-java8</artifactId>
- <type>test-jar</type>
+ <artifactId>james-server-testing</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/mailet/integration-testing/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/pom.xml b/server/mailet/integration-testing/pom.xml
index 3670525..0af81e4 100644
--- a/server/mailet/integration-testing/pom.xml
+++ b/server/mailet/integration-testing/pom.xml
@@ -35,8 +35,7 @@
<dependencies>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <type>test-jar</type>
+ <artifactId>apache-mailet-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index b1b61e3..21c6e8a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -53,7 +53,6 @@
<module>container/metrics/metrics-es-reporter</module>
<module>container/spring</module>
<module>container/util</module>
- <module>container/util-java8</module>
<module>data/data-api</module>
<module>data/data-cassandra</module>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/protocols/jmap/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 31e1ec8..f8eebce 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -65,8 +65,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <type>test-jar</type>
+ <artifactId>apache-mailet-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/protocols/webadmin/webadmin-mailqueue/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailqueue/pom.xml b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
index 032fba8..5964a75 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
@@ -35,8 +35,7 @@
<dependencies>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <type>test-jar</type>
+ <artifactId>apache-mailet-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/protocols/webadmin/webadmin-mailrepository/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
index 2e27115..abc9d2f 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
@@ -35,8 +35,7 @@
<dependencies>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <type>test-jar</type>
+ <artifactId>apache-mailet-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/queue/queue-rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/pom.xml b/server/queue/queue-rabbitmq/pom.xml
index 3f7e708..7244a13 100644
--- a/server/queue/queue-rabbitmq/pom.xml
+++ b/server/queue/queue-rabbitmq/pom.xml
@@ -40,8 +40,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>james-server-util-java8</artifactId>
- <type>test-jar</type>
+ <artifactId>james-server-testing</artifactId>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/testing/pom.xml
----------------------------------------------------------------------
diff --git a/server/testing/pom.xml b/server/testing/pom.xml
index 50623d2..c689d7b 100644
--- a/server/testing/pom.xml
+++ b/server/testing/pom.xml
@@ -37,8 +37,7 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
- <artifactId>apache-mailet-base</artifactId>
- <type>test-jar</type>
+ <artifactId>apache-mailet-test</artifactId>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/testing/src/main/java/org/apache/james/util/docker/Images.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..c252f1a
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/util/docker/Images.java
@@ -0,0 +1,29 @@
+/****************************************************************
+ * 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.util.docker;
+
+public interface Images {
+ String FAKE_SMTP = "weave/rest-smtp-sink:latest";
+ String RABBITMQ = "rabbitmq:3.7.7";
+ String ELASTICSEARCH = "elasticsearch:2.4.6";
+ String NGINX = "nginx:1.15.1";
+ String TIKA = "linagora/docker-tikaserver:1.18-SNAPSHOT-plus-TIKA-2520";
+ String SPAMASSASSIN = "dinkel/spamassassin:3.4.0";
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/server/testing/src/main/java/org/apache/james/util/docker/SwarmGenericContainer.java
----------------------------------------------------------------------
diff --git a/server/testing/src/main/java/org/apache/james/util/docker/SwarmGenericContainer.java b/server/testing/src/main/java/org/apache/james/util/docker/SwarmGenericContainer.java
new file mode 100644
index 0000000..59488c0
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/util/docker/SwarmGenericContainer.java
@@ -0,0 +1,164 @@
+/****************************************************************
+ * 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.util.docker;
+
+import java.net.Socket;
+import java.time.Duration;
+import java.util.List;
+
+import javax.net.SocketFactory;
+
+import org.junit.Assume;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.DockerClientFactory;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.WaitStrategy;
+import org.testcontainers.images.builder.ImageFromDockerfile;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.github.dockerjava.api.command.InspectContainerResponse;
+import com.google.common.base.Strings;
+
+public class SwarmGenericContainer implements TestRule {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SwarmGenericContainer.class);
+ private static final String DOCKER_CONTAINER = "DOCKER_CONTAINER";
+ private static final String NO_DOCKER_ENVIRONMENT = "Could not find a valid Docker environment.";
+ private static final String SKIPPING_TEST_CAUTION = "Skipping all docker tests as no Docker environment was found";
+
+ private GenericContainer<?> container;
+
+ public SwarmGenericContainer(String dockerImageName) {
+ try {
+ this.container = new GenericContainer<>(dockerImageName);
+ } catch (IllegalStateException e) {
+ logAndCheckSkipTest(e);
+ }
+ }
+
+ public SwarmGenericContainer(ImageFromDockerfile imageFromDockerfile) {
+ try {
+ this.container = new GenericContainer<>(imageFromDockerfile);
+ } catch (IllegalStateException e) {
+ logAndCheckSkipTest(e);
+ }
+ }
+
+ private void logAndCheckSkipTest(IllegalStateException e) {
+ LOGGER.error("Cannot initial a docker container", e);
+ if (e.getMessage().startsWith(NO_DOCKER_ENVIRONMENT)) {
+ Assume.assumeTrue(SKIPPING_TEST_CAUTION, false);
+ }
+ }
+
+ public SwarmGenericContainer withAffinityToContainer() {
+ String containerEnv = System.getenv(DOCKER_CONTAINER);
+ if (Strings.isNullOrEmpty(containerEnv)) {
+ LOGGER.warn("'DOCKER_CONTAINER' environment variable not found, dockering without affinity");
+ return this;
+ }
+ List<String> envVariables = container.getEnv();
+ envVariables.add("affinity:container==" + container);
+ container.setEnv(envVariables);
+ return this;
+ }
+
+ public SwarmGenericContainer withEnv(String key, String value) {
+ container.addEnv(key, value);
+ return this;
+ }
+
+ public SwarmGenericContainer withExposedPorts(Integer... ports) {
+ container.withExposedPorts(ports);
+ return this;
+ }
+
+ public SwarmGenericContainer portBinding(int hostPort, int dockerPort) {
+ container.setPortBindings(ImmutableList.of("0.0.0.0:" + hostPort + ":" + dockerPort));
+ return this;
+ }
+
+ public SwarmGenericContainer waitingFor(WaitStrategy waitStrategy) {
+ container.waitingFor(waitStrategy);
+ return this;
+ }
+
+ public SwarmGenericContainer withStartupTimeout(Duration startupTimeout) {
+ container.withStartupTimeout(startupTimeout);
+ return this;
+ }
+
+ public SwarmGenericContainer withCommands(String... commands) {
+ container.withCommand(commands);
+ return this;
+ }
+
+ public void start() {
+ container.start();
+ }
+
+ public void stop() {
+ container.stop();
+ }
+
+ public void pause() {
+ DockerClientFactory.instance().client().pauseContainerCmd(container.getContainerInfo().getId());
+ }
+
+ public void unpause() {
+ DockerClientFactory.instance().client().unpauseContainerCmd(container.getContainerInfo().getId());
+ }
+
+ public Integer getMappedPort(int originalPort) {
+ return container.getMappedPort(originalPort);
+ }
+
+ @SuppressWarnings("deprecation")
+ public String getContainerIp() {
+ return container.getContainerInfo().getNetworkSettings().getIpAddress();
+ }
+
+ public String getHostIp() {
+ return container.getContainerIpAddress();
+ }
+
+ public InspectContainerResponse getContainerInfo() {
+ return container.getContainerInfo();
+ }
+
+ public boolean tryConnect(int port) {
+ try {
+ Socket socket = SocketFactory.getDefault().createSocket(getContainerIp(), port);
+ socket.close();
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @Override
+ public Statement apply(Statement statement, Description description) {
+ return container.apply(statement, description);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dddd7c5/third-party/spamassassin/pom.xml
----------------------------------------------------------------------
diff --git a/third-party/spamassassin/pom.xml b/third-party/spamassassin/pom.xml
index 4b1da22..9b1c7a6 100644
--- a/third-party/spamassassin/pom.xml
+++ b/third-party/spamassassin/pom.xml
@@ -31,6 +31,11 @@
<dependencies>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>james-server-testing</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>javax-mail-extension</artifactId>
<type>test-jar</type>
<scope>test</scope>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org