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 2015/10/19 14:07:14 UTC

svn commit: r1709399 - in /james/project/trunk/mpt/impl/imap-mailbox/cyrus: pom.xml src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java

Author: matthieu
Date: Mon Oct 19 12:07:14 2015
New Revision: 1709399

URL: http://svn.apache.org/viewvc?rev=1709399&view=rev
Log:
MPT-31 make sure service is ok at container creation time

Modified:
    james/project/trunk/mpt/impl/imap-mailbox/cyrus/pom.xml
    james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
    james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java

Modified: james/project/trunk/mpt/impl/imap-mailbox/cyrus/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cyrus/pom.xml?rev=1709399&r1=1709398&r2=1709399&view=diff
==============================================================================
--- james/project/trunk/mpt/impl/imap-mailbox/cyrus/pom.xml (original)
+++ james/project/trunk/mpt/impl/imap-mailbox/cyrus/pom.xml Mon Oct 19 12:07:14 2015
@@ -130,6 +130,11 @@
             </activation>
             <dependencies>
                 <dependency>
+                    <groupId>com.jayway.awaitility</groupId>
+                    <artifactId>awaitility</artifactId>
+                    <version>1.6.5</version>
+                </dependency>
+                <dependency>
                     <groupId>com.spotify</groupId>
                     <artifactId>docker-client</artifactId>
                     <version>2.7.25</version>

Modified: james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java?rev=1709399&r1=1709398&r2=1709399&view=diff
==============================================================================
--- james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java (original)
+++ james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java Mon Oct 19 12:07:14 2015
@@ -122,6 +122,7 @@ public class CyrusHostSystem extends Ext
         try {
             Session session = newSession(null);
             try {
+                session.start();
                 protocolSession.runSessions(new Session[]{session});
             } finally {
                 session.stop();

Modified: james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java?rev=1709399&r1=1709398&r2=1709399&view=diff
==============================================================================
--- james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java (original)
+++ james/project/trunk/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java Mon Oct 19 12:07:14 2015
@@ -18,9 +18,15 @@
  ****************************************************************/
 package org.apache.james.mpt.imapmailbox.cyrus.host;
 
+import java.io.IOException;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.concurrent.TimeUnit;
+
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
+import com.jayway.awaitility.Awaitility;
 import com.spotify.docker.client.DefaultDockerClient;
 import com.spotify.docker.client.DockerException;
 import com.spotify.docker.client.messages.ContainerConfig;
@@ -57,9 +63,27 @@ public class Docker {
     public ContainerCreation start() throws Exception {
         ContainerCreation container = dockerClient.createContainer(containerConfig);
         dockerClient.startContainer(container.id(), ALL_PORTS_HOST_CONFIG);
+        waitingForSocketToBeReady(container);
         return container;
     }
 
+    private void waitingForSocketToBeReady(final ContainerCreation container) {
+        Awaitility
+            .await()
+            .atMost(30, TimeUnit.SECONDS)
+            .with()
+            .pollInterval(10, TimeUnit.MILLISECONDS)
+            .and()
+            .ignoreExceptions()
+            .until(() -> socketIsReady(container));
+    }
+
+    private boolean socketIsReady(ContainerCreation container) throws UnknownHostException, IOException {
+        try (Socket socket = new Socket(getHost(container), getIMAPPort(container))) {
+            return socket.getInputStream().read() >= 0;
+        }
+    }
+
     public void stop(ContainerCreation container) {
         try {
             dockerClient.killContainer(container.id());



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org