Repository: hadoop Updated Branches: refs/heads/trunk 5009ad4a7 -> c97f32e7b
YARN-3302. TestDockerContainerExecutor should run automatically if it can detect docker in the usual place (Ravindra Kumar Naik via raviprak) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c97f32e7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c97f32e7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c97f32e7 Branch: refs/heads/trunk Commit: c97f32e7b9d9e1d4c80682cc01741579166174d1 Parents: 5009ad4 Author: Ravi Prakash <ravip...@altiscale.com> Authored: Tue May 19 10:28:11 2015 -0700 Committer: Ravi Prakash <ravip...@altiscale.com> Committed: Tue May 19 10:28:11 2015 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 +++ .../TestDockerContainerExecutor.java | 27 +++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c97f32e7/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index e17e9c7..34cd051 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -417,6 +417,9 @@ Release 2.8.0 - UNRELEASED YARN-2421. RM still allocates containers to an app in the FINISHING state (Chang Li via jlowe) + YARN-3302. TestDockerContainerExecutor should run automatically if it can + detect docker in the usual place (Ravindra Kumar Naik via raviprak) + Release 2.7.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/c97f32e7/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestDockerContainerExecutor.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestDockerContainerExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestDockerContainerExecutor.java index 65e381c..9386897 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestDockerContainerExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestDockerContainerExecutor.java @@ -51,10 +51,11 @@ import com.google.common.base.Strings; * This is intended to test the DockerContainerExecutor code, but it requires * docker to be installed. * <br><ol> - * <li>Install docker, and Compile the code with docker-service-url set to the - * host and port where docker service is running. + * <li>To run the tests, set the docker-service-url to the host and port where + * docker service is running (If docker-service-url is not specified then the + * local daemon will be used). * <br><pre><code> - * > mvn clean install -Ddocker-service-url=tcp://0.0.0.0:4243 -DskipTests + * mvn test -Ddocker-service-url=tcp://0.0.0.0:4243 -Dtest=TestDockerContainerExecutor * </code></pre> */ public class TestDockerContainerExecutor { @@ -98,10 +99,13 @@ public class TestDockerContainerExecutor { dockerUrl = System.getProperty("docker-service-url"); LOG.info("dockerUrl: " + dockerUrl); - if (Strings.isNullOrEmpty(dockerUrl)) { + if (!Strings.isNullOrEmpty(dockerUrl)) { + dockerUrl = " -H " + dockerUrl; + } else if(isDockerDaemonRunningLocally()) { + dockerUrl = ""; + } else { return; } - dockerUrl = " -H " + dockerUrl; dockerExec = "docker " + dockerUrl; conf.set( YarnConfiguration.NM_DOCKER_CONTAINER_EXECUTOR_IMAGE_NAME, yarnImage); @@ -136,6 +140,17 @@ public class TestDockerContainerExecutor { return exec != null; } + private boolean isDockerDaemonRunningLocally() { + boolean dockerDaemonRunningLocally = true; + try { + shellExec("docker info"); + } catch (Exception e) { + LOG.info("docker daemon is not running on local machine."); + dockerDaemonRunningLocally = false; + } + return dockerDaemonRunningLocally; + } + /** * Test that a docker container can be launched to run a command * @param cId a fake ContainerID @@ -200,7 +215,7 @@ public class TestDockerContainerExecutor { * Test that a touch command can be launched successfully in a docker * container */ - @Test + @Test(timeout=1000000) public void testLaunchContainer() throws IOException { if (!shouldRun()) { LOG.warn("Docker not installed, aborting test.");