http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/main/java/org/jclouds/docker/suppliers/SSLContextBuilder.java
----------------------------------------------------------------------
diff --git 
a/docker/src/main/java/org/jclouds/docker/suppliers/SSLContextBuilder.java 
b/docker/src/main/java/org/jclouds/docker/suppliers/SSLContextBuilder.java
deleted file mode 100644
index 2933f78..0000000
--- a/docker/src/main/java/org/jclouds/docker/suppliers/SSLContextBuilder.java
+++ /dev/null
@@ -1,201 +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.jclouds.docker.suppliers;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Files;
-
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.bouncycastle.openssl.PEMKeyPair;
-import org.bouncycastle.openssl.PEMParser;
-import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
-
-import org.jclouds.crypto.Pems;
-import org.jclouds.util.Closeables2;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509ExtendedKeyManager;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.Socket;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.security.KeyPair;
-import java.security.KeyStore;
-import java.security.NoSuchAlgorithmException;
-import java.security.Principal;
-import java.security.PrivateKey;
-import java.security.SecureRandom;
-import java.security.Security;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-
-import static com.google.common.base.Throwables.propagate;
-
-public class SSLContextBuilder {
-
-    private KeyManager[] keyManagers;
-    private TrustManager[] trustManagers;
-
-    public static final boolean isClientKeyAndCertificateData(String key, 
String cert) {
-        return (key.startsWith(Pems.PRIVATE_PKCS1_MARKER) || 
key.startsWith(Pems.PRIVATE_PKCS8_MARKER)) &&
-                cert.startsWith(Pems.CERTIFICATE_X509_MARKER);
-    }
-
-    public SSLContextBuilder() { }
-
-    public SSLContextBuilder clientKeyAndCertificatePaths(String keyPath, 
String certPath) throws IOException, CertificateException {
-        X509Certificate certificate = getCertificate(loadFile(certPath));
-        PrivateKey privateKey = getKey(loadFile(keyPath));
-        keyManager(new InMemoryKeyManager(certificate, privateKey));
-        return this;
-    }
-
-    public SSLContextBuilder clientKeyAndCertificateData(String keyData, 
String certData) throws CertificateException {
-        X509Certificate certificate = getCertificate(certData);
-        PrivateKey privateKey = getKey(keyData);
-        keyManager(new InMemoryKeyManager(certificate, privateKey));
-        return this;
-    }
-
-    public SSLContextBuilder caCertificatePath(String caCertPath) {
-        try {
-            trustManagers = getTrustManagerWithCaCert(loadFile(caCertPath));
-        } catch (IOException e) {
-            throw propagate(e);
-        }
-        return this;
-    }
-
-    public SSLContextBuilder caCertificateData(String caCertPath) {
-        trustManagers = getTrustManagerWithCaCert(caCertPath);
-        return this;
-    }
-
-    public SSLContextBuilder keyManager(KeyManager keyManager) {
-        keyManagers = new KeyManager[] { keyManager };
-        return this;
-    }
-
-    public SSLContextBuilder trustManager(TrustManager trustManager) {
-        trustManagers = new TrustManager[] { trustManager };
-        return this;
-    }
-
-    public SSLContext build() throws NoSuchAlgorithmException, 
KeyManagementException {
-        SSLContext sslContext = SSLContext.getInstance("TLS");
-        sslContext.init(keyManagers, trustManagers, new SecureRandom());
-        return sslContext;
-    }
-
-    private TrustManager[] getTrustManagerWithCaCert(String caCertData) {
-        try {
-            X509Certificate caCert = getCertificate(caCertData);
-            KeyStore trustStore = 
KeyStore.getInstance(KeyStore.getDefaultType());
-            trustStore.load(null, null);
-            trustStore.setCertificateEntry("ca", caCert);
-            TrustManagerFactory tmf = 
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
-            tmf.init(trustStore);
-            return tmf.getTrustManagers();
-        } catch (GeneralSecurityException e) {
-            throw propagate(e);
-        } catch (IOException e) {
-            throw propagate(e);
-        }
-    }
-
-    private static X509Certificate getCertificate(String certificate) {
-        try {
-            return (X509Certificate) 
CertificateFactory.getInstance("X.509").generateCertificate(
-                    new 
ByteArrayInputStream(certificate.getBytes(Charsets.UTF_8)));
-        } catch (CertificateException ex) {
-            throw new RuntimeException("Invalid certificate", ex);
-        }
-    }
-
-    private static PrivateKey getKey(String privateKey) {
-        PEMParser pemParser = new PEMParser(new StringReader(privateKey));
-        try {
-            Object object = pemParser.readObject();
-            if (Security.getProvider("BC") == null) {
-                Security.addProvider(new BouncyCastleProvider());
-            }
-            JcaPEMKeyConverter converter = new 
JcaPEMKeyConverter().setProvider("BC");
-            KeyPair keyPair = converter.getKeyPair((PEMKeyPair) object);
-            return keyPair.getPrivate();
-        } catch (IOException ex) {
-            throw new RuntimeException("Invalid private key", ex);
-        } finally {
-            Closeables2.closeQuietly(pemParser);
-        }
-    }
-
-    private static String loadFile(final String filePath) throws IOException {
-        return Files.toString(new File(filePath), Charsets.UTF_8);
-    }
-
-    private static class InMemoryKeyManager extends X509ExtendedKeyManager {
-        private static final String DEFAULT_ALIAS = "docker";
-
-        private final X509Certificate certificate;
-
-        private final PrivateKey privateKey;
-
-        public InMemoryKeyManager(final X509Certificate certificate, final 
PrivateKey privateKey) throws CertificateException {
-            this.certificate = certificate;
-            this.privateKey = privateKey;
-        }
-
-        @Override
-        public String chooseClientAlias(final String[] keyType, final 
Principal[] issuers, final Socket socket) {
-            return DEFAULT_ALIAS;
-        }
-
-        @Override
-        public String chooseServerAlias(final String keyType, final 
Principal[] issuers, final Socket socket) {
-            return DEFAULT_ALIAS;
-        }
-
-        @Override
-        public X509Certificate[] getCertificateChain(final String alias) {
-            return new X509Certificate[] { certificate };
-        }
-
-        @Override
-        public String[] getClientAliases(final String keyType, final 
Principal[] issuers) {
-            return new String[] { DEFAULT_ALIAS };
-        }
-
-        @Override
-        public PrivateKey getPrivateKey(final String alias) {
-            return privateKey;
-        }
-
-        @Override
-        public String[] getServerAliases(final String keyType, final 
Principal[] issuers) {
-            return new String[] { DEFAULT_ALIAS };
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/main/java/org/jclouds/docker/util/DockerInputStream.java
----------------------------------------------------------------------
diff --git 
a/docker/src/main/java/org/jclouds/docker/util/DockerInputStream.java 
b/docker/src/main/java/org/jclouds/docker/util/DockerInputStream.java
deleted file mode 100644
index dacd7b7..0000000
--- a/docker/src/main/java/org/jclouds/docker/util/DockerInputStream.java
+++ /dev/null
@@ -1,73 +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.jclouds.docker.util;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Extension to {@link DataInputStream} which adds method
- * {@link #readStdStreamData()} to allow read multiplexed standard streams.
- */
-public final class DockerInputStream extends DataInputStream {
-
-   /**
-    * Ctor from superclass.
-    *
-    * @param in
-    * @see DataInputStream#DataInputStream(InputStream)
-    */
-   public DockerInputStream(InputStream in) {
-      super(in);
-   }
-
-   /**
-    * @return {@link StdStreamData} instance read from the input stream or
-    *         <code>null</code> if we reached end of the stream.
-    * @throws IOException
-    */
-   public StdStreamData readStdStreamData() throws IOException {
-      byte[] header = new byte[8];
-      // try to read first byte from the message header - just to check if we
-      // are at the end
-      // of stream
-      if (-1 == read(header, 0, 1)) {
-         return null;
-      }
-      // read the rest of the header
-      readFully(header, 1, 7);
-      // decode size as an unsigned int
-      long size = (long) (header[4] & 0xFF) << 24 | (header[5] & 0xFF) << 16 | 
(header[6] & 0xFF) << 8
-            | (header[7] & 0xFF);
-
-      byte[] payload;
-      // The size from the header is an unsigned int so it can happen the byte
-      // array has not a sufficient size and we'll have to truncate the frame
-      payload = new byte[(int) Math.min(Integer.MAX_VALUE, size)];
-      readFully(payload);
-      boolean truncated = false;
-      if (size > Integer.MAX_VALUE) {
-         truncated = true;
-         // skip the rest
-         readFully(new byte[(int) (size - Integer.MAX_VALUE)]);
-      }
-      return new StdStreamData(header[0], payload, truncated);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/main/java/org/jclouds/docker/util/StdStreamData.java
----------------------------------------------------------------------
diff --git a/docker/src/main/java/org/jclouds/docker/util/StdStreamData.java 
b/docker/src/main/java/org/jclouds/docker/util/StdStreamData.java
deleted file mode 100644
index f8f5f9a..0000000
--- a/docker/src/main/java/org/jclouds/docker/util/StdStreamData.java
+++ /dev/null
@@ -1,87 +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.jclouds.docker.util;
-
-import java.util.Arrays;
-
-/**
- * Representation of single message from docker-raw-stream. It holds stream
- * type, data (payload) and flag which says if the payload was truncated. The
- * truncation can occur when the frame size is greater than
- * {@link Integer#MAX_VALUE}.
- */
-public final class StdStreamData {
-
-   private final StdStreamType type;
-   private final byte[] payload;
-   private final boolean truncated;
-
-   /**
-    * Ctor.
-    *
-    * @param streamTypeId
-    *           standard stream type (0=stdIn, 1=stdOut, 2=stdErr)
-    * @param payload
-    *           message data - must not be <code>null</code>
-    * @param truncated
-    * @throws ArrayIndexOutOfBoundsException
-    *            if streamTypeId is not an index in {@link StdStreamType} enum.
-    * @throws NullPointerException
-    *            if provided payload is <code>null</code>
-    */
-   StdStreamData(byte streamTypeId, byte[] payload, boolean truncated)
-         throws ArrayIndexOutOfBoundsException, NullPointerException {
-      this.type = StdStreamType.values()[streamTypeId];
-      this.payload = Arrays.copyOf(payload, payload.length);
-      this.truncated = truncated;
-   }
-
-   /**
-    * Type of stream.
-    *
-    * @return
-    */
-   public StdStreamType getType() {
-      return type;
-   }
-
-   /**
-    * Data from this message.
-    *
-    * @return payload.
-    */
-   public byte[] getPayload() {
-      return payload;
-   }
-
-   /**
-    * Flag which says if the payload was truncated (because of size).
-    *
-    * @return true if truncated
-    */
-   public boolean isTruncated() {
-      return truncated;
-   }
-
-   /**
-    * Standard streams enum. The order of entries is important!
-    */
-   public static enum StdStreamType {
-      IN, OUT, ERR;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/DockerApiMetadataTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/DockerApiMetadataTest.java 
b/docker/src/test/java/org/jclouds/docker/DockerApiMetadataTest.java
deleted file mode 100644
index 41d0067..0000000
--- a/docker/src/test/java/org/jclouds/docker/DockerApiMetadataTest.java
+++ /dev/null
@@ -1,47 +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.jclouds.docker;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.apis.Apis;
-import org.jclouds.compute.internal.BaseComputeServiceApiMetadataTest;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link DockerApiMetadata} class.
- */
-@Test(groups = "unit", testName = "AbiquoApiMetadataTest")
-public class DockerApiMetadataTest extends BaseComputeServiceApiMetadataTest {
-
-   public DockerApiMetadataTest() {
-      super(new DockerApiMetadata());
-   }
-
-   public void testDockerApiRegistered() {
-      ApiMetadata api = Apis.withId("docker");
-
-      assertNotNull(api);
-      assertTrue(api instanceof DockerApiMetadata);
-      assertEquals(api.getId(), "docker");
-   }
-
-}
-

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/BaseDockerApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/BaseDockerApiLiveTest.java 
b/docker/src/test/java/org/jclouds/docker/compute/BaseDockerApiLiveTest.java
deleted file mode 100644
index 81324ef..0000000
--- a/docker/src/test/java/org/jclouds/docker/compute/BaseDockerApiLiveTest.java
+++ /dev/null
@@ -1,101 +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.jclouds.docker.compute;
-
-import static com.google.common.base.Charsets.UTF_8;
-import static org.jclouds.util.Closeables2.closeQuietly;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Properties;
-
-import org.jboss.shrinkwrap.api.GenericArchive;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
-import org.jboss.shrinkwrap.api.exporter.TarExporter;
-import org.jclouds.Constants;
-import org.jclouds.apis.BaseApiLiveTest;
-import org.jclouds.compute.config.ComputeServiceProperties;
-import org.jclouds.docker.DockerApi;
-import org.jclouds.docker.internal.DockerTestUtils;
-import org.jclouds.io.Payload;
-import org.jclouds.io.Payloads;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.io.CharStreams;
-import com.google.inject.Module;
-
-@Test(groups = "live")
-public class BaseDockerApiLiveTest extends BaseApiLiveTest<DockerApi> {
-
-   protected static final String DEFAULT_IMAGE = "alpine";
-   protected static final String DEFAULT_TAG = "3.3";
-   protected static final String ALPINE_IMAGE_TAG = String.format("%s:%s", 
DEFAULT_IMAGE, DEFAULT_TAG);
-
-
-   public BaseDockerApiLiveTest() {
-      provider = "docker";
-   }
-
-   /**
-    * Removes Docker image if it's present on the Docker host.
-    *
-    * @param imageName
-    *           image to be deleted (must be not-<code>null</code>)
-    * @see DockerTestUtils#removeImageIfExists(DockerApi, String)
-    */
-   protected void removeImageIfExists(String imageName) {
-      DockerTestUtils.removeImageIfExists(api, imageName);
-   }
-
-   @Override
-   protected Iterable<Module> setupModules() {
-      return ImmutableSet.<Module>of(getLoggingModule(), new 
SshjSshClientModule());
-   }
-
-   @Override
-   protected Properties setupProperties() {
-      Properties overrides = super.setupProperties();
-      overrides.setProperty(ComputeServiceProperties.IMAGE_LOGIN_USER, 
"root:password");
-      setIfTestSystemPropertyPresent(overrides,  provider + ".cacert.path");
-      setIfTestSystemPropertyPresent(overrides, 
Constants.PROPERTY_TRUST_ALL_CERTS);
-      return overrides;
-   }
-
-   protected String consumeStream(InputStream stream) {
-      try {
-         return CharStreams.toString(new InputStreamReader(stream, UTF_8));
-      } catch (IOException e) {
-         throw new AssertionError(e);
-      } finally {
-         closeQuietly(stream);
-      }
-   }
-
-   public static Payload tarredDockerfile() throws IOException {
-      ByteArrayOutputStream bytes = new ByteArrayOutputStream();
-      ShrinkWrap.create(GenericArchive.class, "archive.tar")
-            .add(new ClassLoaderAsset("Dockerfile"), "Dockerfile")
-            .as(TarExporter.class).exportTo(bytes);
-
-      return Payloads.newByteArrayPayload(bytes.toByteArray());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
deleted file mode 100644
index 72fc8d5..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
+++ /dev/null
@@ -1,178 +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.jclouds.docker.compute;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-
-import java.util.Properties;
-import java.util.Random;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import org.jclouds.compute.ComputeServiceAdapter.NodeAndInitialCredentials;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.docker.DockerApi;
-import org.jclouds.docker.compute.options.DockerTemplateOptions;
-import org.jclouds.docker.compute.strategy.DockerComputeServiceAdapter;
-import org.jclouds.docker.domain.Container;
-import org.jclouds.docker.domain.Image;
-import org.jclouds.docker.domain.Network;
-import org.jclouds.docker.features.NetworkApi;
-import org.jclouds.sshj.config.SshjSshClientModule;
-
-@Test(groups = "live", singleThreaded = true, testName = 
"DockerComputeServiceAdapterLiveTest")
-public class DockerComputeServiceAdapterLiveTest extends BaseDockerApiLiveTest 
{
-
-   private static final String SSHABLE_IMAGE = "kwart/alpine-ext";
-   private static final String SSHABLE_IMAGE_TAG = "3.3-ssh";
-   private Image defaultImage;
-   private Network network1;
-   private Network network2;
-
-   private DockerComputeServiceAdapter adapter;
-   private TemplateBuilder templateBuilder;
-   private NodeAndInitialCredentials<Container> guest;
-   private static final String CHUANWEN_COWSAY = "chuanwen/cowsay";
-
-   @BeforeClass
-   protected void init() {
-      super.initialize();
-      String imageName = SSHABLE_IMAGE + ":" + SSHABLE_IMAGE_TAG;
-      defaultImage = adapter.getImage(imageName);
-      network1 = createAndInspectNetwork("network1");
-      network2 = createAndInspectNetwork("network2");
-      assertNotNull(defaultImage);
-   }
-
-   @AfterClass(alwaysRun = true)
-   protected void tearDown() {
-      if (guest != null) {
-         adapter.destroyNode(guest.getNode().id() + "");
-      }
-      if (api.getImageApi().inspectImage(CHUANWEN_COWSAY) != null) {
-         api.getImageApi().deleteImage(CHUANWEN_COWSAY);
-      }
-      if (api.getNetworkApi().inspectNetwork("network1") != null) {
-         api.getNetworkApi().removeNetwork("network1");
-      }
-      if (api.getNetworkApi().inspectNetwork("network2") != null) {
-         api.getNetworkApi().removeNetwork("network2");
-      }
-      super.tearDown();
-   }
-
-   @Override
-   protected DockerApi create(Properties props, Iterable<Module> modules) {
-      Injector injector = 
newBuilder().modules(modules).overrides(props).buildInjector();
-      adapter = injector.getInstance(DockerComputeServiceAdapter.class);
-      templateBuilder = injector.getInstance(TemplateBuilder.class);
-      return injector.getInstance(DockerApi.class);
-   }
-
-   public void testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials() {
-      String name = "container" + new Random().nextInt();
-      Template template = templateBuilder.imageId(defaultImage.id()).build();
-      DockerTemplateOptions options = 
template.getOptions().as(DockerTemplateOptions.class);
-      options.env(ImmutableList.of("ROOT_PASSWORD=password"));
-      guest = adapter.createNodeWithGroupEncodedIntoName("test", name, 
template);
-      assertEquals(guest.getNodeId(), guest.getNode().id());
-   }
-
-   public void testListHardwareProfiles() {
-      Iterable<Hardware> profiles = adapter.listHardwareProfiles();
-      assertFalse(Iterables.isEmpty(profiles));
-
-      for (Hardware profile : profiles) {
-         assertNotNull(profile);
-      }
-   }
-
-   public void testGetImageNotHiddenByCache() {
-      // Ensure image to be tested is unknown to jclouds and docker and that
-      // cache is warm
-      assertNull(findImageFromListImages(CHUANWEN_COWSAY));
-      assertNull(api.getImageApi().inspectImage(CHUANWEN_COWSAY));
-
-      // Get new image
-      adapter.getImage(CHUANWEN_COWSAY);
-
-      assertNotNull(findImageFromListImages(CHUANWEN_COWSAY),
-            "New image is not available from listImages presumably due to 
caching");
-   }
-
-   public void testCreateNodeWithMultipleNetworks() {
-      String name = "container" + new Random().nextInt();
-      Template template = templateBuilder.imageId(defaultImage.id()).build();
-      DockerTemplateOptions options = 
template.getOptions().as(DockerTemplateOptions.class);
-      options.env(ImmutableList.of("ROOT_PASSWORD=password"));
-      options.networkMode("bridge");
-      options.networks(network1.name(), network2.name());
-      guest = adapter.createNodeWithGroupEncodedIntoName("test", name, 
template);
-
-      
assertTrue(guest.getNode().networkSettings().networks().containsKey("network1"));
-      
assertTrue(guest.getNode().networkSettings().networks().containsKey("network2"));
-      assertEquals(guest.getNode().networkSettings().networks().size(), 3);
-   }
-
-   private Image findImageFromListImages(final String image) {
-      return Iterables.find(adapter.listImages(), new Predicate<Image>() {
-         @Override
-         public boolean apply(Image input) {
-            for (String tag : input.repoTags()) {
-               if (tag.equals(CHUANWEN_COWSAY + 
DockerComputeServiceAdapter.SUFFIX_LATEST_VERSION)
-                     || 
tag.equals(DockerComputeServiceAdapter.PREFIX_DOCKER_HUB_HOST + CHUANWEN_COWSAY
-                           + 
DockerComputeServiceAdapter.SUFFIX_LATEST_VERSION)) {
-                  return true;
-               }
-            }
-            return false;
-         }
-      }, null);
-   }
-
-   @Override
-   protected Iterable<Module> setupModules() {
-      return ImmutableSet.<Module> of(getLoggingModule(), new 
SshjSshClientModule());
-   }
-
-   /**
-    * Creates network (driver="bridge") with given name and then inspects it to
-    * fully populate the returned {@link Network} object.
-    *
-    * @param networkName
-    */
-   private Network createAndInspectNetwork(final String networkName) {
-      final NetworkApi networkApi = api.getNetworkApi();
-      Network network = 
networkApi.createNetwork(Network.builder().name(networkName).driver("bridge").build());
-      return networkApi.inspectNetwork(network.id());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceLiveTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceLiveTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceLiveTest.java
deleted file mode 100644
index d02e215..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceLiveTest.java
+++ /dev/null
@@ -1,214 +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.jclouds.docker.compute;
-
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static java.lang.String.format;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static java.util.logging.Logger.getAnonymousLogger;
-import static org.jclouds.compute.options.RunScriptOptions.Builder.nameTask;
-import static org.jclouds.compute.options.TemplateOptions.Builder.runAsRoot;
-import static org.jclouds.util.Predicates2.retry;
-import static org.testng.Assert.assertNotNull;
-
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.concurrent.TimeUnit;
-
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.JettyStatements;
-import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ExecResponse;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
-import org.jclouds.compute.util.OpenSocketFinder;
-import org.jclouds.docker.DockerApi;
-import org.jclouds.docker.compute.options.DockerTemplateOptions;
-import org.jclouds.docker.domain.Container;
-import org.jclouds.docker.features.ImageApi;
-import org.jclouds.docker.options.CreateImageOptions;
-import org.jclouds.docker.options.DeleteImageOptions;
-import org.jclouds.domain.LoginCredentials;
-import org.jclouds.predicates.SocketOpen;
-import org.jclouds.scriptbuilder.domain.Statement;
-import org.jclouds.scriptbuilder.domain.Statements;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.net.HostAndPort;
-import com.google.inject.Module;
-
-/**
- * Live tests for the {@link org.jclouds.compute.ComputeService} integration.
- */
-@Test(groups = "live", singleThreaded = true, testName = 
"DockerComputeServiceLiveTest")
-public class DockerComputeServiceLiveTest extends 
BaseComputeServiceContextLiveTest {
-
-   private static final String SSHABLE_IMAGE = "tutum/ubuntu";
-   private static final String SSHABLE_IMAGE_TAG = "trusty";
-   private Image defaultImage;
-   protected Template template;
-   protected Predicate<HostAndPort> socketTester;
-   protected OpenSocketFinder openSocketFinder;
-
-   protected ComputeService client;
-
-   public DockerComputeServiceLiveTest() {
-      provider = "docker";
-   }
-
-   @Override
-   protected Module getSshModule() {
-      return new SshjSshClientModule();
-   }
-
-   @BeforeGroups(groups = { "integration", "live" })
-   @Override
-   public void setupContext() {
-      super.setupContext();
-      buildSocketTester();
-   }
-
-   @Override
-   protected void initializeContext() {
-      super.initializeContext();
-      client = view.getComputeService();
-
-      String imageName = SSHABLE_IMAGE + ":" + SSHABLE_IMAGE_TAG;
-      defaultImage = client.getImage(imageName);
-      assertNotNull(defaultImage);
-   }
-
-   @AfterClass
-   @Override
-   protected void tearDownContext() {
-      super.tearDownContext();
-      if (defaultImage != null) {
-         imageApi().deleteImage(SSHABLE_IMAGE + ":" + SSHABLE_IMAGE_TAG, 
DeleteImageOptions.Builder.force(true));
-      }
-   }
-
-   private ImageApi imageApi() {
-      return client.getContext().unwrapApi(DockerApi.class).getImageApi();
-   }
-
-   protected Template buildTemplate(TemplateBuilder templateBuilder) {
-
-      String imageName = SSHABLE_IMAGE + ":" + SSHABLE_IMAGE_TAG;
-      org.jclouds.docker.domain.Image image = 
imageApi().inspectImage(imageName);
-      if (image == null) {
-         CreateImageOptions options = 
CreateImageOptions.Builder.fromImage(SSHABLE_IMAGE).tag(SSHABLE_IMAGE_TAG);
-         imageApi().createImage(options);
-      }
-      image = imageApi().inspectImage(imageName);
-      defaultImage = client.getImage(image.id());
-
-
-      DockerTemplateOptions options = new DockerTemplateOptions();
-      options.env(ImmutableList.of("ROOT_PASS=password"));
-      
options.overrideLoginCredentials(LoginCredentials.builder().identity("root").credential("password").build());
-      template = 
templateBuilder.imageId(defaultImage.getId()).options(options).build();
-      return template;
-   }
-
-   protected void createAndRunAServiceInGroup(String group) throws 
RunNodesException {
-      // note that some cloud providers do not support mixed case tag names
-      ImmutableMap<String, String> userMetadata = ImmutableMap.of("test", 
group);
-      ImmutableSet<String> tags = ImmutableSet.of(group);
-      Stopwatch watch = Stopwatch.createStarted();
-      template = buildTemplate(client.templateBuilder());
-      template.getOptions().inboundPorts(22, 8080).blockOnPort(22, 
300).userMetadata(userMetadata).tags(tags);
-      NodeMetadata node = getOnlyElement(client.createNodesInGroup(group, 1, 
template));
-      long createSeconds = watch.elapsed(TimeUnit.SECONDS);
-      final String nodeId = node.getId();
-      //checkUserMetadataContains(node, userMetadata);
-      //checkTagsInNodeEquals(node, tags);
-      getAnonymousLogger().info(
-              format("<< available node(%s) os(%s) in %ss", node.getId(), 
node.getOperatingSystem(), createSeconds));
-      watch.reset().start();
-      client.runScriptOnNode(nodeId, JettyStatements.install(), 
nameTask("configure-jetty"));
-      long configureSeconds = watch.elapsed(TimeUnit.SECONDS);
-      getAnonymousLogger().info(
-              format(
-                      "<< configured node(%s) with %s and jetty %s in %ss",
-                      nodeId,
-                      exec(nodeId, "java -fullversion"),
-                      exec(nodeId, JettyStatements.version()), 
configureSeconds));
-      trackProcessOnNode(JettyStatements.start(), "start jetty", node);
-      client.runScriptOnNode(nodeId, JettyStatements.stop(), 
runAsRoot(false).wrapInInitScript(false));
-      trackProcessOnNode(JettyStatements.start(), "start jetty", node);
-   }
-
-   protected void trackProcessOnNode(Statement process, String processName, 
NodeMetadata node) {
-      ServiceStats stats = new ServiceStats();
-      Stopwatch watch = Stopwatch.createStarted();
-      ExecResponse exec = client.runScriptOnNode(node.getId(), process, 
runAsRoot(false).wrapInInitScript(false));
-      stats.backgroundProcessMilliseconds = 
watch.elapsed(TimeUnit.MILLISECONDS);
-
-      Container container = 
client.getContext().unwrapApi(DockerApi.class).getContainerApi().inspectContainer(node.getId());
-      Map<String, List<Map<String, String>>> ports = 
container.networkSettings().ports();
-      int port = 
Integer.parseInt(getOnlyElement(ports.get("8080/tcp")).get("HostPort"));
-
-      watch.reset().start();
-      HostAndPort socket;
-      try {
-         socket = openSocketFinder.findOpenSocketOnNode(node, port, 600, 
TimeUnit.SECONDS);
-      } catch (NoSuchElementException e) {
-         throw new NoSuchElementException(format("%s%n%s%s", e.getMessage(), 
exec.getOutput(), exec.getError()));
-      }
-      stats.socketOpenMilliseconds = watch.elapsed(TimeUnit.MILLISECONDS);
-      getAnonymousLogger().info(format("<< %s on node(%s)[%s] %s", 
processName, node.getId(), socket, stats));
-   }
-
-   static class ServiceStats {
-      long backgroundProcessMilliseconds;
-      long socketOpenMilliseconds;
-
-      @Override
-      public String toString() {
-         return format("[backgroundProcessMilliseconds=%s, 
socketOpenMilliseconds=%s]",
-                 backgroundProcessMilliseconds, socketOpenMilliseconds);
-      }
-   }
-
-   protected String exec(final String nodeId, String command) {
-      return exec(nodeId, Statements.exec(command));
-   }
-
-   protected String exec(final String nodeId, Statement command) {
-      return client.runScriptOnNode(nodeId, command, 
runAsRoot(false).wrapInInitScript(false)).getOutput().trim();
-   }
-
-   protected void buildSocketTester() {
-      SocketOpen socketOpen = 
view.utils().injector().getInstance(SocketOpen.class);
-      socketTester = retry(socketOpen, 60, 1, SECONDS);
-      // wait a maximum of 60 seconds for port 8080 to open.
-      openSocketFinder = 
context.utils().injector().getInstance(OpenSocketFinder.class);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java 
b/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
deleted file mode 100644
index 2e815a4..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/SshToCustomPortLiveTest.java
+++ /dev/null
@@ -1,245 +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.jclouds.docker.compute;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static 
org.jclouds.compute.options.RunScriptOptions.Builder.wrapInInitScript;
-import static 
org.jclouds.docker.internal.DockerTestUtils.consumeStreamSilently;
-import static org.jclouds.docker.internal.DockerTestUtils.removeImageIfExists;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ExecResponse;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
-import org.jclouds.docker.DockerApi;
-import org.jclouds.docker.compute.functions.LoginPortForContainer;
-import org.jclouds.docker.compute.options.DockerTemplateOptions;
-import org.jclouds.docker.domain.Config;
-import org.jclouds.docker.domain.Container;
-import org.jclouds.docker.domain.HostConfig;
-import org.jclouds.docker.domain.Image;
-import org.jclouds.docker.domain.ImageSummary;
-import org.jclouds.docker.options.BuildOptions;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-
-/**
- * This class tests configuring custom SSH port for Docker images.
- */
-@Test(groups = "live", testName = "SshToCustomPortLiveTest", singleThreaded = 
true)
-public class SshToCustomPortLiveTest extends BaseComputeServiceContextLiveTest 
{
-
-   private static final int SSH_PORT = 8822;
-   private static final int SSH_PORT_BRIDGE = 18822;
-   private static final String IMAGE_REPOSITORY = "jclouds/testrepo";
-   private static final String IMAGE_TAG_1 = "testtag";
-   private static final String IMAGE_TAG_2 = "second";
-
-   private Image image;
-
-   public SshToCustomPortLiveTest() {
-      provider = "docker";
-   }
-
-   /**
-    * Asserts that the new image exists and tags were created successfully in
-    * the test preparation phase ({@link #setupContext()} method).
-    */
-   @Test
-   public void testImageCreated() {
-      assertNotNull(image);
-
-      final String imageId = image.id();
-      assertNotNull(imageId);
-
-      List<ImageSummary> listImages = api().getImageApi().listImages();
-      assertNotNull(listImages);
-      ImageSummary testImage = Iterables.find(listImages, new 
Predicate<ImageSummary>() {
-         @Override
-         public boolean apply(ImageSummary input) {
-            return imageId.equals(input.id());
-         }
-      });
-
-      assertEquals(testImage.repoTags().size(), 2, "Unexpected number of tags 
on the image.");
-      assertThat(testImage.repoTags()).contains(toTag(IMAGE_REPOSITORY, 
IMAGE_TAG_1),
-            toTag(IMAGE_REPOSITORY, IMAGE_TAG_2));
-   }
-
-   /**
-    * Start a node from the newly created image. The dropbear SSH server 
running
-    * on custom port ( {@value #SSH_PORT}). The Docker networkMode used is
-    * "host". Execute a command through the SSH connection and check the 
result.
-    * Destroy the node when finished.
-    * 
-    * @throws RunNodesException
-    */
-   @Test(dependsOnMethods = "testImageCreated")
-   public void testCustomPortSsh() throws RunNodesException {
-      final DockerTemplateOptions options = DockerTemplateOptions.Builder
-            .env("SSH_PORT=" + SSH_PORT, "ROOT_PASSWORD=screencast")
-            .overrideLoginUser("root").overrideLoginPassword("screencast")
-            .blockOnPort(SSH_PORT, 30).networkMode("host");
-
-      final Template template = 
view.getComputeService().templateBuilder().imageId(image.id()).options(options).build();
-
-      String nodeId = null;
-      try {
-         NodeMetadata node = Iterables
-               
.getOnlyElement(view.getComputeService().createNodesInGroup("ssh-net-host", 1, 
template));
-
-         nodeId = node.getId();
-         ExecResponse response = 
view.getComputeService().runScriptOnNode(nodeId, "sh -c 'echo hello && sleep 
0.2'", wrapInInitScript(false));
-         assertThat(response.getOutput().trim()).endsWith("hello");
-      } finally {
-         if (nodeId != null)
-            view.getComputeService().destroyNode(nodeId);
-      }
-   }
-
-
-   @Test(dependsOnMethods = "testImageCreated")
-   public void testAdvancedConfig() throws RunNodesException {
-      final String portId = SSH_PORT + "/tcp";
-      final DockerTemplateOptions options = DockerTemplateOptions.Builder
-            .configBuilder(
-                  Config.builder().env(ImmutableList.<String> of("SSH_PORT=" + 
SSH_PORT, "ROOT_PASSWORD=jcloudsRulez"))
-                        .exposedPorts(ImmutableMap.<String, Object> of(portId, 
Maps.newHashMap()))
-                        .hostConfig(HostConfig.builder().networkMode("bridge")
-                              .portBindings(ImmutableMap.<String, 
List<Map<String, String>>> of(portId,
-                                    Lists.<Map<String, 
String>>newArrayList(ImmutableMap.of("HostPort", 
String.valueOf(SSH_PORT_BRIDGE)))))
-                              .build())
-                        .image("test-if-this-value-is-correctly-overriden"))
-            
.overrideLoginUser("root").overrideLoginPassword("jcloudsRulez").blockOnPort(SSH_PORT_BRIDGE,
 30);
-
-      final Template template = 
view.getComputeService().templateBuilder().imageId(image.id()).options(options).build();
-
-      String nodeId = null;
-      try {
-         NodeMetadata node = Iterables
-               
.getOnlyElement(view.getComputeService().createNodesInGroup("ssh-net-bridge", 
1, template));
-
-         nodeId = node.getId();
-         ExecResponse response = 
view.getComputeService().runScriptOnNode(nodeId, "sh -c 'true'",
-               wrapInInitScript(false));
-         assertEquals(response.getExitStatus(), 0);
-      } finally {
-         if (nodeId != null)
-            view.getComputeService().destroyNode(nodeId);
-      }
-   }
-   
-   /**
-    * Build a new image with 2 tags on it in the test preparation phase.
-    * 
-    * @see org.jclouds.apis.BaseContextLiveTest#setupContext()
-    */
-   @Override
-   @BeforeClass(groups = { "integration", "live" })
-   public void setupContext() {
-      super.setupContext();
-      final String tag = toTag(IMAGE_REPOSITORY, IMAGE_TAG_1);
-
-      removeImageIfExists(api(), tag);
-      removeImageIfExists(api(), toTag(IMAGE_REPOSITORY, IMAGE_TAG_2));
-
-      BuildOptions options = 
BuildOptions.Builder.tag(tag).verbose(false).nocache(false);
-      InputStream buildImageStream;
-      try {
-         buildImageStream = 
api().getMiscApi().build(BaseDockerApiLiveTest.tarredDockerfile(), options);
-         consumeStreamSilently(buildImageStream);
-      } catch (IOException e) {
-         throw new RuntimeException("Error occured during building Docker 
image.", e);
-      }
-      image = api().getImageApi().inspectImage(tag);
-      api().getImageApi().tagImage(image.id(), IMAGE_REPOSITORY, IMAGE_TAG_2, 
true);
-   }
-
-   /**
-    * After the test remove created image (with all tags).
-    * 
-    * @see #setupContext()
-    */
-   @AfterClass(alwaysRun = true)
-   protected void tearDown() {
-      removeImageIfExists(api(), toTag(IMAGE_REPOSITORY, IMAGE_TAG_1));
-      removeImageIfExists(api(), toTag(IMAGE_REPOSITORY, IMAGE_TAG_2));
-   }
-
-   /**
-    * Configure used modules. A custom {@link LoginPortForContainer} binding is
-    * added among logging and SSH module.
-    * 
-    * @see 
org.jclouds.compute.internal.BaseGenericComputeServiceContextLiveTest#setupModules()
-    */
-   @Override
-   protected Iterable<Module> setupModules() {
-      return ImmutableSet.<Module> of(getLoggingModule(), new 
SshjSshClientModule(), new AbstractModule() {
-         @Override
-         protected void configure() {
-            bind(LoginPortForContainer.class).toInstance(new 
LoginPortForContainer() {
-               @Override
-               public Optional<Integer> apply(Container container) {
-                  return 
Optional.of(container.name().contains("ssh-net-bridge") ? SSH_PORT_BRIDGE : 
SSH_PORT);
-               }
-            });
-         }
-      });
-   }
-
-   /**
-    * Return DockerApi for current Context.
-    * 
-    * @return
-    */
-   private DockerApi api() {
-      return view.unwrapApi(DockerApi.class);
-   }
-
-   /**
-    * Concatenate repository and tag name (if provided) in Docker format.
-    * 
-    * @param repo
-    * @param tag
-    * @return
-    */
-   private static String toTag(String repo, String tag) {
-      return repo + (tag != null ? ":" + tag : "");
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
deleted file mode 100644
index 5360097..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
+++ /dev/null
@@ -1,224 +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.jclouds.docker.compute.functions;
-
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.testng.Assert.assertEquals;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.easymock.EasyMock;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.domain.OsFamily;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.date.internal.SimpleDateFormatDateService;
-import org.jclouds.docker.domain.Config;
-import org.jclouds.docker.domain.Container;
-import org.jclouds.docker.domain.HostConfig;
-import org.jclouds.docker.domain.NetworkSettings;
-import org.jclouds.docker.domain.Port;
-import org.jclouds.docker.domain.State;
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LocationBuilder;
-import org.jclouds.domain.LocationScope;
-import org.jclouds.providers.ProviderMetadata;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Guice;
-
-/**
- * Unit tests for the {@link 
org.jclouds.docker.compute.functions.ContainerToNodeMetadata} class.
- */
-@Test(groups = "unit", testName = "ContainerToNodeMetadataTest")
-public class ContainerToNodeMetadataTest {
-
-   private ContainerToNodeMetadata function;
-
-   private Container container;
-
-   @BeforeMethod
-   public void setup() {
-      Config containerConfig = Config.builder()
-              .hostname("6d35806c1bd2")
-              .domainname("")
-              .user("")
-              .memory(0)
-              .memorySwap(0)
-              .cpuShares(0)
-              .attachStdin(false)
-              .attachStdout(false)
-              .attachStderr(false)
-              .exposedPorts(ImmutableMap.of("22/tcp", ImmutableMap.of()))
-              .tty(false)
-              .openStdin(false)
-              .stdinOnce(false)
-              .env(null)
-              .cmd(ImmutableList.of("/usr/sbin/sshd", "-D"))
-              .image("jclouds/ubuntu")
-              .workingDir("")
-              .entrypoint(null)
-              .networkDisabled(false)
-              .build();
-      State state = State.create( //
-            3626, // pid
-            true, // running
-            0, // exitCode
-            "2014-03-24T20:28:37.537659054Z", // startedAt
-            "0001-01-01T00:00:00Z", // finishedAt
-            false, // paused
-            false,  // restarting
-            "running", // Status
-            false, // OOMKilled
-            false, // Dead
-            ""     // Error
-      );
-      container = Container.builder()
-              
.id("6d35806c1bd2b25cd92bba2d2c2c5169dc2156f53ab45c2b62d76e2d2fee14a9")
-              .name("/hopeful_mclean")
-              .created(new 
SimpleDateFormatDateService().iso8601DateParse("2014-03-22T07:16:45.784120972Z"))
-              .path("/usr/sbin/sshd")
-              .args(Arrays.asList("-D"))
-              .config(containerConfig)
-              .state(state)
-              
.image("af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6")
-              .networkSettings(NetworkSettings.builder()
-                      .ipAddress("172.17.0.2")
-                      .ipPrefixLen(16)
-                      .gateway("172.17.42.1")
-                      .bridge("docker0")
-                      .ports(ImmutableMap.<String, List<Map<String, 
String>>>of("22/tcp",
-                              ImmutableList.<Map<String, 
String>>of(ImmutableMap.of("HostIp", "0.0.0.0", "HostPort",
-                                      "49199"))))
-                      .build())
-              .resolvConfPath("/etc/resolv.conf")
-              .driver("aufs")
-              .execDriver("native-0.1")
-              .volumes(ImmutableMap.<String, String>of())
-              .volumesRW(ImmutableMap.<String, Boolean>of())
-              .command("")
-              .status("")
-              .hostConfig(HostConfig.builder().publishAllPorts(true).build())
-              .ports(ImmutableList.<Port>of())
-              .node(null)
-              .build();
-      ProviderMetadata providerMetadata = 
EasyMock.createMock(ProviderMetadata.class);
-      
expect(providerMetadata.getEndpoint()).andReturn("http://127.0.0.1:4243";).atLeastOnce();
-      replay(providerMetadata);
-
-      GroupNamingConvention.Factory namingConvention = 
Guice.createInjector().getInstance(GroupNamingConvention.Factory.class);
-
-      Supplier<Map<String, ? extends Image>> images = new Supplier<Map<String, 
? extends Image>>() {
-         @Override
-         public Map<String, ? extends Image> get() {
-            OperatingSystem os = OperatingSystem.builder()
-                    .description("Ubuntu 12.04 64bit")
-                    .family(OsFamily.UBUNTU)
-                    .version("12.04")
-                    .is64Bit(true)
-                    .build();
-
-            return 
ImmutableMap.of("af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6",
-                    new ImageBuilder()
-                            
.ids("af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6")
-                            .name("ubuntu")
-                            .description("Ubuntu 12.04 64bit")
-                            .operatingSystem(os)
-                            .status(Image.Status.AVAILABLE)
-                            .build());
-         }
-      };
-
-      Supplier<Set<? extends Location>> locations = new Supplier<Set< ? 
extends Location>>() {
-         @Override
-         public Set<? extends Location> get() {
-
-            return ImmutableSet.of(
-                    new LocationBuilder()
-                            .id("docker")
-                            .description("http://localhost:2375";)
-                            .scope(LocationScope.PROVIDER)
-                            .build()
-            );
-         }
-      };
-
-      function = new ContainerToNodeMetadata(providerMetadata, new 
StateToStatus(), namingConvention, images, locations,
-            new LoginPortForContainer.LoginPortLookupChain(null));
-   }
-
-   public void testVirtualMachineToNodeMetadata() {
-      NodeMetadata node = function.apply(container);
-
-      assertEquals(node.getId(), 
"6d35806c1bd2b25cd92bba2d2c2c5169dc2156f53ab45c2b62d76e2d2fee14a9");
-      assertEquals(node.getGroup(), "hopeful_mclean");
-      assertEquals(node.getImageId(), 
"af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6");
-      assertEquals(node.getLoginPort(), 49199);
-      assertEquals(node.getStatus(), NodeMetadata.Status.RUNNING);
-      assertEquals(node.getImageId(), 
"af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6");
-      assertEquals(node.getPrivateAddresses(), ImmutableSet.of("172.17.0.2"));
-      assertEquals(node.getPublicAddresses(), ImmutableSet.of("127.0.0.1"));
-   }
-
-   public void testVirtualMachineWithNetworksToNodeMetadata() {
-      // Example networks taken from container.json
-      Container containerWithNetwork = container.toBuilder()
-            .networkSettings(container.networkSettings().toBuilder()
-                    .networks(ImmutableMap.<String, 
NetworkSettings.Details>builder()
-                          .put("JCLOUDS_NETWORK", 
NetworkSettings.Details.builder()
-                                   
.endpoint("1a10519f808faf1181cfdf3d1d6dd93e19ede2d1c8fed82562a4c17c297c4db3")
-                                   .gateway("172.19.0.1")
-                                   .ipAddress("172.19.0.2")
-                                   .ipPrefixLen(16)
-                                   .ipv6Gateway("")
-                                   .globalIPv6Address("")
-                                   .globalIPv6PrefixLen(0)
-                                   .macAddress("02:42:ac:13:00:02")
-                                   .build())
-                          .put("bridge", NetworkSettings.Details.builder()
-                                
.endpoint("9e8dcc0c8288938a923018fee0728cee8e6de7c01a5150738ee6e51c1caf8cf6")
-                                .gateway("172.17.0.1")
-                                .ipAddress("172.17.0.2")
-                                .ipPrefixLen(16)
-                                .ipv6Gateway("")
-                                .globalIPv6Address("")
-                                .globalIPv6PrefixLen(0)
-                                .macAddress("02:42:ac:11:00:02")
-                                .build())
-                          .build())
-                    .build())
-            .build();
-
-      NodeMetadata node = function.apply(containerWithNetwork);
-
-      // Only asserting network-related aspects; the rest is covered by 
testVirtualMachineToNodeMetadata
-      assertEquals(node.getLoginPort(), 49199);
-      assertEquals(node.getPrivateAddresses(), ImmutableSet.of("172.17.0.2", 
"172.19.0.2"));
-      assertEquals(node.getPublicAddresses(), ImmutableSet.of("127.0.0.1"));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/functions/CustomLoginPortFromImageTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/functions/CustomLoginPortFromImageTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/functions/CustomLoginPortFromImageTest.java
deleted file mode 100644
index 3e747d3..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/functions/CustomLoginPortFromImageTest.java
+++ /dev/null
@@ -1,106 +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.jclouds.docker.compute.functions;
-
-import static 
org.jclouds.docker.compute.config.LoginPortLookupModule.loginPortLookupBinder;
-import static org.testng.Assert.assertEquals;
-
-import org.jclouds.docker.compute.config.LoginPortLookupModule;
-import org.jclouds.docker.domain.Config;
-import org.jclouds.docker.domain.Container;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.multibindings.MapBinder;
-
-@Test(groups = "unit")
-public class CustomLoginPortFromImageTest {
-
-   private CustomLoginPortFromImage customLoginPortFromImage;
-
-   @BeforeClass
-   public void setup() {
-      Injector i = Guice.createInjector(new LoginPortLookupModule(), new 
AbstractModule() {
-         @Override
-         protected void configure() {
-            MapBinder<String, LoginPortForContainer> imageToFunction = 
loginPortLookupBinder(binder());
-            
imageToFunction.addBinding(".*alpine-ext.*").toInstance(LoginPortFromEnvVar);
-            imageToFunction.addBinding(".*ubuntu.*").toInstance(AlwaysPort22);
-            
imageToFunction.addBinding(".*ubuntu:12\\.04.*").toInstance(AlwaysPort8080);
-         }
-      });
-      customLoginPortFromImage = i.getInstance(CustomLoginPortFromImage.class);
-   }
-
-   public void testPortFromEnvironmentVariables() {
-      Config config = 
Config.builder().image("alpine-ext:3.2").env(ImmutableList.of("FOO=bar", 
"SSH_PORT=2345"))
-            .build();
-      Container container = 
Container.builder().id("id").config(config).build();
-
-      assertEquals(customLoginPortFromImage.apply(container).get().intValue(), 
2345);
-   }
-
-   public void testMostSpecificImageIsPicked() {
-      Config config = Config.builder().image("ubuntu:12.04").build();
-      Container container = 
Container.builder().id("id").config(config).build();
-
-      assertEquals(customLoginPortFromImage.apply(container).get().intValue(), 
8080);
-   }
-
-   public void testNoImageFoundInMap() {
-      Config config = Config.builder().image("unexisting").build();
-      Container container = 
Container.builder().id("id").config(config).build();
-
-      assertEquals(customLoginPortFromImage.apply(container), 
Optional.absent());
-   }
-
-   private static final LoginPortForContainer LoginPortFromEnvVar = new 
LoginPortForContainer() {
-      @Override
-      public Optional<Integer> apply(Container input) {
-         Optional<String> portVariable = 
Iterables.tryFind(input.config().env(), new Predicate<String>() {
-            @Override
-            public boolean apply(String input) {
-               String[] var = input.split("=");
-               return var[0].equals("SSH_PORT");
-            }
-         });
-         return portVariable.isPresent() ? 
Optional.of(Integer.valueOf(portVariable.get().split("=")[1])) : Optional
-               .<Integer> absent();
-      }
-   };
-
-   private static final LoginPortForContainer AlwaysPort22 = new 
LoginPortForContainer() {
-      @Override
-      public Optional<Integer> apply(Container input) {
-         return Optional.of(22);
-      }
-   };
-
-   private static final LoginPortForContainer AlwaysPort8080 = new 
LoginPortForContainer() {
-      @Override
-      public Optional<Integer> apply(Container input) {
-         return Optional.of(8080);
-      }
-   };
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
deleted file mode 100644
index 83c1c3b..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
+++ /dev/null
@@ -1,148 +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.jclouds.docker.compute.functions;
-
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.testng.Assert.assertEquals;
-
-import java.util.Date;
-
-import org.easymock.EasyMock;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.docker.domain.Config;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Unit tests for the {@link 
org.jclouds.docker.compute.functions.ImageToImage} class.
- */
-@Test(groups = "unit", testName = "ImageToImageTest")
-public class ImageToImageTest {
-
-   private static final org.jclouds.docker.domain.Image IMAGE_EMPTY_REPOTAGS = 
org.jclouds.docker.domain.Image.create(
-         "id", // id
-         "author",
-         "comment",
-         Config.builder()
-         .image("imageId")
-         .build(),
-         Config.builder()
-         .image("imageId")
-         .build(),
-         "parent", // parent
-         new Date(), // created
-         "containerId", // container
-         "1.3.1", // dockerVersion
-         "x86_64", // architecture
-         "os", // os
-         0l, // size
-         0l, // virtualSize
-         ImmutableList.<String> of() // repoTags
-         );
-
-   private static final org.jclouds.docker.domain.Image 
IMAGE_REPOTAG_WITH_PORT = org.jclouds.docker.domain.Image.create(
-         "id", // id
-         "author",
-         "comment",
-         Config.builder()
-         .image("imageId")
-         .build(),
-         Config.builder()
-         .image("imageId")
-         .build(),
-         "parent", // parent
-         new Date(), // created
-         "containerId", // container
-         "1.3.1", // dockerVersion
-         "x86_64", // architecture
-         "os", // os
-         0l, // size
-         0l, // virtualSize
-         ImmutableList.of("registry.company.example:8888/a/b/c/d:latest") // 
repoTags
-         );
-
-   private ImageToImage function;
-
-   private org.jclouds.docker.domain.Image image;
-
-   @BeforeMethod
-   public void setup() {
-      image = org.jclouds.docker.domain.Image.create(
-              "id", // id
-              "author",
-              "comment",
-              Config.builder()
-                      .image("imageId")
-                      .build(),
-              Config.builder()
-                      .image("imageId")
-                      .build(),
-              "parent", // parent
-              new Date(), // created
-              "containerId", // container
-              "1.3.1", // dockerVersion
-              "x86_64", // architecture
-              "os", // os
-              0l, // size
-              0l, // virtualSize
-              ImmutableList.of("repoTag1:version") // repoTags
-      );
-      function = new ImageToImage();
-   }
-
-   public void testImageToImage() {
-      org.jclouds.docker.domain.Image mockImage = mockImage();
-
-      Image image = function.apply(mockImage);
-
-      verify(mockImage);
-
-      assertEquals(mockImage.id(), image.getId().toString());
-   }
-
-   public void testEmptyRepoTags() {
-      Image image = function.apply(IMAGE_EMPTY_REPOTAGS);
-
-      assertEquals(image.getId(), "id");
-      assertEquals(image.getDescription(), "<none>");
-      assertEquals(image.getOperatingSystem().getVersion(), "<none>");
-      assertEquals(image.getName(), "<none>");
-   }
-
-   public void testRepoTagWithHostPort() {
-      Image image = function.apply(IMAGE_REPOTAG_WITH_PORT);
-
-      assertEquals(image.getDescription(), 
"registry.company.example:8888/a/b/c/d:latest");
-      assertEquals(image.getOperatingSystem().getVersion(), "latest");
-      assertEquals(image.getName(), "registry.company.example:8888/a/b/c/d");
-   }
-
-   private org.jclouds.docker.domain.Image mockImage() {
-      org.jclouds.docker.domain.Image mockImage = 
EasyMock.createMock(org.jclouds.docker.domain.Image.class);
-
-      expect(mockImage.id()).andReturn(image.id()).anyTimes();
-      expect(mockImage.repoTags()).andReturn(image.repoTags()).anyTimes();
-      
expect(mockImage.architecture()).andReturn(image.architecture()).anyTimes();
-      replay(mockImage);
-
-      return mockImage;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
deleted file mode 100644
index f66f040..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
+++ /dev/null
@@ -1,81 +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.jclouds.docker.compute.functions;
-
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.testng.Assert.assertEquals;
-
-import org.easymock.EasyMock;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.docker.domain.State;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link StateToStatus} class.
- */
-@Test(groups = "unit", testName = "StateToStatusTest")
-public class StateToStatusTest {
-   private StateToStatus function;
-
-   @BeforeMethod
-   public void setup() {
-      function = new StateToStatus();
-   }
-
-   public void testStateRunningToStatusRunning() {
-      State mockState = mockStateRunning();
-
-      NodeMetadata.Status status = function.apply(mockState);
-
-      verify(mockState);
-
-      assertEquals(mockState.running(), true);
-      assertEquals(status, NodeMetadata.Status.RUNNING);
-   }
-
-   public void testStateNotRunningToStatusTerminated() {
-      State mockState = mockStateNotRunning();
-
-      NodeMetadata.Status status = function.apply(mockState);
-
-      verify(mockState);
-
-      assertEquals(mockState.running(), false);
-      assertEquals(status, NodeMetadata.Status.TERMINATED);
-   }
-
-   private State mockStateRunning() {
-      State mockState = EasyMock.createMock(State.class);
-
-      expect(mockState.running()).andReturn(true).anyTimes();
-      replay(mockState);
-
-      return mockState;
-   }
-
-   private State mockStateNotRunning() {
-      State mockState = EasyMock.createMock(State.class);
-
-      expect(mockState.running()).andReturn(false).anyTimes();
-      replay(mockState);
-
-      return mockState;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
deleted file mode 100644
index 73ba44e..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
+++ /dev/null
@@ -1,159 +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.jclouds.docker.compute.options;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.docker.domain.Config;
-import org.jclouds.docker.domain.Config.Builder;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Unit tests for the {@link DockerTemplateOptions} class.
- */
-@Test(groups = "unit", testName = "DockerTemplateOptionsTest")
-public class DockerTemplateOptionsTest {
-
-   @Test
-   public void testHostname() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.hostname("hostname");
-      assertEquals(options.as(DockerTemplateOptions.class).getHostname(), 
"hostname");
-   }
-
-   @Test
-   public void testMemory() {
-      TemplateOptions options = DockerTemplateOptions.Builder.memory(1024);
-      assertEquals(options.as(DockerTemplateOptions.class).getMemory(), 
Integer.valueOf(1024));
-   }
-
-   @Test
-   public void testCpuShares() {
-      TemplateOptions options = DockerTemplateOptions.Builder.cpuShares(2);
-      assertEquals(options.as(DockerTemplateOptions.class).getCpuShares(), 
Integer.valueOf(2));
-   }
-
-   @Test
-   public void testVolumes() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.volumes(ImmutableMap.of("/tmp", "/tmp"));
-      assertEquals(options.as(DockerTemplateOptions.class).getVolumes(), 
ImmutableMap.of("/tmp", "/tmp"));
-   }
-
-   @Test
-   public void testDns() {
-      TemplateOptions options = DockerTemplateOptions.Builder.dns("8.8.8.8", 
"8.8.4.4");
-      assertEquals(options.as(DockerTemplateOptions.class).getDns(), 
ImmutableList.of("8.8.8.8", "8.8.4.4"));
-   }
-
-   @Test
-   public void testEntrypoint() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.entrypoint("/bin/sh", "-c");
-      assertEquals(options.as(DockerTemplateOptions.class).getEntrypoint(), 
ImmutableList.of("/bin/sh", "-c"));
-   }
-
-   @Test
-   public void testCommands() {
-      TemplateOptions options = DockerTemplateOptions.Builder.commands("chmod 
666 /etc/*", "rm -rf /var/run");
-      assertEquals(options.as(DockerTemplateOptions.class).getCommands(), 
ImmutableList.of("chmod 666 /etc/*", "rm -rf /var/run"));
-   }
-
-   @Test
-   public void testEnv() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.env(ImmutableList.of("HOST=abc", "PORT=1234"));
-      assertEquals(options.as(DockerTemplateOptions.class).getEnv(), 
ImmutableList.of("HOST=abc", "PORT=1234"));
-   }
-
-   @Test
-   public void testPortBindings() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.portBindings(ImmutableMap.<Integer, 
Integer>builder().put(8443,  443).put(8080, 80).build());
-      assertEquals(options.as(DockerTemplateOptions.class).getPortBindings(), 
ImmutableMap.<Integer, Integer>builder().put(8443,  443).put(8080, 80).build());
-   }
-
-
-   @Test
-   public void testNetworkMode() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.networkMode("host");
-      assertEquals(options.as(DockerTemplateOptions.class).getNetworkMode(), 
"host");
-   }
-
-   @Test
-   public void testPrivilegedDefaultFalse() {
-      TemplateOptions options = DockerTemplateOptions.Builder.memory(2);
-      assertEquals(options.as(DockerTemplateOptions.class).getPrivileged(), 
false);
-   }
-
-   @Test
-   public void testPrivileged() {
-      TemplateOptions options = DockerTemplateOptions.Builder.privileged(true);
-      assertEquals(options.as(DockerTemplateOptions.class).getPrivileged(), 
true);
-   }
-
-   @Test
-   public void testConfigBuilder() {
-      Builder builder = Config.builder().memory(1024)
-            .cpuShares(100).cmd(ImmutableList.<String> 
of("/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"))
-            .env(ImmutableList.<String> of("JAVA_HOME=/opt/jdk-1.8", 
"MGMT_USER=admin",
-                  "MGMT_PASSWORD=Schroedinger's Cat"));
-      TemplateOptions options = 
DockerTemplateOptions.Builder.configBuilder(builder);
-      Builder builderInOpts = 
options.as(DockerTemplateOptions.class).getConfigBuilder();
-      assertNotNull(builderInOpts);
-      Config configFromOptions = builderInOpts.build();
-      assertEquals(configFromOptions, builder.build());
-      assertEquals(configFromOptions.env(), ImmutableList.<String> 
of("JAVA_HOME=/opt/jdk-1.8", "MGMT_USER=admin",
-                  "MGMT_PASSWORD=Schroedinger's Cat"));
-   }
-
-   @Test
-   public void testNonDockerOptions() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.userMetadata(ImmutableMap.of("key", 
"value")).cpuShares(1);
-      assertEquals(options.as(DockerTemplateOptions.class).getUserMetadata(), 
ImmutableMap.of("key", "value"));
-      assertEquals(options.as(DockerTemplateOptions.class).getCpuShares(), 
Integer.valueOf(1));
-   }
-
-   @Test
-   public void testMultipleOptions() {
-      TemplateOptions options = 
DockerTemplateOptions.Builder.memory(512).cpuShares(4);
-      assertEquals(options.as(DockerTemplateOptions.class).getMemory(), 
Integer.valueOf(512));
-      assertEquals(options.as(DockerTemplateOptions.class).getCpuShares(), 
Integer.valueOf(4));
-   }
-
-   @Test
-   public void testCopyTo() {
-      DockerTemplateOptions options = DockerTemplateOptions.Builder
-            .memory(512)
-            .cpuShares(4)
-            .entrypoint("entry", "point")
-            .commands("test", "abc")
-            .portBindings(
-                  ImmutableMap.<Integer, Integer> builder()
-                        .put(8443, 443).build())
-            .hostname("hostname")
-            .networkMode("host")
-            .userMetadata(ImmutableMap.of("key", "value"))
-            .env(ImmutableList.of("HOST=abc", "PORT=1234"))
-            .dns("8.8.8.8", "8.8.4.4")
-            .volumes(ImmutableMap.of("/tmp", "/tmp"));
-      DockerTemplateOptions optionsCopy = new DockerTemplateOptions();
-      options.copyTo(optionsCopy);
-      assertEquals(optionsCopy, options);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/39cd6698/docker/src/test/java/org/jclouds/docker/compute/strategy/PredicateLocateImageByNameTest.java
----------------------------------------------------------------------
diff --git 
a/docker/src/test/java/org/jclouds/docker/compute/strategy/PredicateLocateImageByNameTest.java
 
b/docker/src/test/java/org/jclouds/docker/compute/strategy/PredicateLocateImageByNameTest.java
deleted file mode 100644
index dd8b654..0000000
--- 
a/docker/src/test/java/org/jclouds/docker/compute/strategy/PredicateLocateImageByNameTest.java
+++ /dev/null
@@ -1,111 +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.jclouds.docker.compute.strategy;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Date;
-
-import org.jclouds.docker.domain.Config;
-import org.jclouds.docker.domain.Image;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-
-/**
- * Unit tests for finding images logic used in
- * {@link DockerComputeServiceAdapter#getImage(String)} method. It's mainly a
- * regression test for issue
- * <a 
href="https://issues.apache.org/jira/browse/JCLOUDS-1158";>JCLOUDS-1158</a>
- * .
- */
-@Test(groups = "unit", testName = "PredicateLocateImageByNameTest")
-public class PredicateLocateImageByNameTest {
-
-   private static final Image IMAGE_REPO_TAGS_MULTI = Image.create("id", // id
-         "author", "comment", Config.builder().image("imageId").build(), 
Config.builder().image("imageId").build(),
-         "parent", // parent
-         new Date(), // created
-         "containerId", // container
-         "1.3.1", // dockerVersion
-         "x86_64", // architecture
-         "os", // os
-         0l, // size
-         0l, // virtualSize
-         ImmutableList.<String> of("kwart/alpine-ext:3.3-ssh", 
"kwart/alpine-ext:latest", "my-tag:latestdock") // repoTags
-   );
-
-   private static final Image IMAGE_REPO_TAGS_EMPTY = Image.create("id", // id
-         "author", "comment", Config.builder().image("imageId").build(), 
Config.builder().image("imageId").build(),
-         "parent", // parent
-         new Date(), // created
-         "containerId", // container
-         "1.3.1", // dockerVersion
-         "x86_64", // architecture
-         "os", // os
-         0l, // size
-         0l, // virtualSize
-         ImmutableList.<String> of() // repoTags
-   );
-
-   private static final Image IMAGE_REPO_TAGS_WITH_HOST = Image.create("id", 
// id
-         "author", "comment", Config.builder().image("imageId").build(), 
Config.builder().image("imageId").build(),
-         "parent", // parent
-         new Date(), // created
-         "containerId", // container
-         "1.3.1", // dockerVersion
-         "x86_64", // architecture
-         "os", // os
-         0l, // size
-         0l, // virtualSize
-         ImmutableList.<String> of("docker.io/kwart/alpine-ext:3.3-ssh", 
"docker.io/kwart/alpine-ext:latest") // repoTags
-   );
-
-   public void testRepoTagVersion() {
-      final Predicate<Image> predicate = DockerComputeServiceAdapter
-            .createPredicateMatchingRepoTags("kwart/alpine-ext:3.3-ssh");
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_MULTI));
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_EMPTY));
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_WITH_HOST));
-   }
-
-   public void testRepoTagLatest() {
-      final Predicate<Image> predicate = 
DockerComputeServiceAdapter.createPredicateMatchingRepoTags("kwart/alpine-ext");
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_MULTI));
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_EMPTY));
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_WITH_HOST));
-   }
-
-   public void testRepoTagVersionWithHost() {
-      final Predicate<Image> predicate = DockerComputeServiceAdapter
-            
.createPredicateMatchingRepoTags("docker.io/kwart/alpine-ext:3.3-ssh");
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_MULTI));
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_EMPTY));
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_WITH_HOST));
-   }
-
-   public void testRepoTagLatestWithHost() {
-      final Predicate<Image> predicate = DockerComputeServiceAdapter
-            .createPredicateMatchingRepoTags("docker.io/kwart/alpine-ext");
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_MULTI));
-      assertFalse(predicate.apply(IMAGE_REPO_TAGS_EMPTY));
-      assertTrue(predicate.apply(IMAGE_REPO_TAGS_WITH_HOST));
-   }
-
-}

Reply via email to