From 16333782c17d6c459019cf14682e5feee9968181 Mon Sep 17 00:00:00 2001 From: Giovanni Matteo Fumarola Date: Fri, 7 Sep 2018 14:19:10 -0700 Subject: [PATCH] HADOOP-15731. TestDistributedShell fails on Windows. Contributed by Botong Huang. --- .../yarn/applications/distributedshell/Client.java | 4 +++- .../distributedshell/TestDistributedShell.java | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java index c8a71b320c..9da92885ce 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java @@ -854,7 +854,9 @@ public boolean run() throws IOException, YarnException { // Set java executable command LOG.info("Setting up app master command"); - vargs.add(Environment.JAVA_HOME.$$() + "/bin/java"); + // Need extra quote here because JAVA_HOME might contain space on Windows, + // e.g. C:/Program Files/Java... + vargs.add("\"" + Environment.JAVA_HOME.$$() + "/bin/java\""); // Set Xmx based on am memory size vargs.add("-Xmx" + amMemory + "m"); // Set class name diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java index c7e1cf16ef..49d8f3d9db 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShell.java @@ -776,6 +776,12 @@ private boolean checkIPs(String hostname, String localIP, String appIP) } + private String getSleepCommand(int sec) { + // Windows doesn't have a sleep command, ping -n does the trick + return Shell.WINDOWS ? "ping -n " + (sec + 1) + " 127.0.0.1 >nul" + : "sleep " + sec; + } + @Test public void testDSRestartWithPreviousRunningContainers() throws Exception { String[] args = { @@ -784,7 +790,7 @@ public void testDSRestartWithPreviousRunningContainers() throws Exception { "--num_containers", "1", "--shell_command", - "sleep 8", + getSleepCommand(8), "--master_memory", "512", "--container_memory", @@ -819,7 +825,7 @@ public void testDSAttemptFailuresValidityIntervalSucess() throws Exception { "--num_containers", "1", "--shell_command", - "sleep 8", + getSleepCommand(8), "--master_memory", "512", "--container_memory", @@ -857,7 +863,7 @@ public void testDSAttemptFailuresValidityIntervalFailed() throws Exception { "--num_containers", "1", "--shell_command", - "sleep 8", + getSleepCommand(8), "--master_memory", "512", "--container_memory",