Author: suresh
Date: Thu Jun 6 05:34:11 2013
New Revision: 1490151
URL: http://svn.apache.org/r1490151
Log:
Merge r1490115 for HADOOP-8957, r1490118 for HADOOP-9131, r1490121 for
HADOOP-9526, r1490125 for HADOOP-8982, r1490147 for HADOOP-8958 from branch-2
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/AbstractFileSystem.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FilterFs.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/local/RawLocalFs.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ChRootedFs.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFs.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystem.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFs.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemTestSetup.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
Thu Jun 6 05:34:11 2013
@@ -215,6 +215,13 @@ Release 2.1.0-beta - UNRELEASED
HADOOP-9593. stack trace printed at ERROR for all yarn clients without
hadoop.home set (stevel)
+ HADOOP-8957 AbstractFileSystem#IsValidName should be overridden for
+ embedded file systems like ViewFs (Chris Nauroth via Sanjay Radia)
+
+ HADOOP-9607. Fixes in Javadoc build (Timothy St. Clair via cos)
+
+ HADOOP-9605. Update junit dependency. (Timothy St. Clair via cos)
+
BREAKDOWN OF HADOOP-8562 SUBTASKS AND RELATED JIRAS
HADOOP-8924. Hadoop Common creating package-info.java must not depend on
@@ -389,9 +396,17 @@ Release 2.1.0-beta - UNRELEASED
HADOOP-9397. Incremental dist tar build fails. (Chris Nauroth via jlowe)
- HADOOP-9607. Fixes in Javadoc build (Timothy St. Clair via cos)
+ HADOOP-9131. Turn off TestLocalFileSystem#testListStatusWithColons on
+ Windows. (Chris Nauroth via suresh)
- HADOOP-9605. Update junit dependency. (Timothy St. Clair via cos)
+ HADOOP-9526. TestShellCommandFencer and TestShell fail on Windows.
+ (Arpit Agarwal via suresh)
+
+ HADOOP-8982. TestSocketIOWithTimeout fails on Windows.
+ (Chris Nauroth via suresh)
+
+ HADOOP-8958. ViewFs:Non absolute mount name failures when running
+ multiple tests on Windows. (Chris Nauroth via suresh)
Release 2.0.5-alpha - UNRELEASED
@@ -732,6 +747,9 @@ Release 2.0.3-alpha - 2013-02-06
HADOOP-9289. FsShell rm -f fails for non-matching globs. (Daryn Sharp via
suresh)
+ HADOOP-8958. ViewFs:Non absolute mount name failures when running
+ multiple tests on Windows. (Chris Nauroth via suresh)
+
Release 2.0.2-alpha - 2012-09-07
INCOMPATIBLE CHANGES
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/AbstractFileSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/AbstractFileSystem.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/AbstractFileSystem.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/AbstractFileSystem.java
Thu Jun 6 05:34:11 2013
@@ -85,14 +85,20 @@ public abstract class AbstractFileSystem
}
/**
- * Prohibits names which contain a ".", "..", ":" or "/"
+ * Returns true if the specified string is considered valid in the path part
+ * of a URI by this file system. The default implementation enforces the
rules
+ * of HDFS, but subclasses may override this method to implement specific
+ * validation rules for specific file systems.
+ *
+ * @param src String source filename to check, path part of the URI
+ * @return boolean true if the specified string is considered valid
*/
- private static boolean isValidName(String src) {
- // Check for ".." "." ":" "/"
+ public boolean isValidName(String src) {
+ // Prohibit ".." "." and anything containing ":"
StringTokenizer tokens = new StringTokenizer(src, Path.SEPARATOR);
while(tokens.hasMoreTokens()) {
String element = tokens.nextToken();
- if (element.equals("target/generated-sources") ||
+ if (element.equals("..") ||
element.equals(".") ||
(element.indexOf(":") >= 0)) {
return false;
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FilterFs.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FilterFs.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FilterFs.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FilterFs.java
Thu Jun 6 05:34:11 2013
@@ -278,4 +278,9 @@ public abstract class FilterFs extends A
public List<Token<?>> getDelegationTokens(String renewer) throws IOException
{
return myFs.getDelegationTokens(renewer);
}
+
+ @Override
+ public boolean isValidName(String src) {
+ return myFs.isValidName(src);
+ }
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/local/RawLocalFs.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/local/RawLocalFs.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/local/RawLocalFs.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/local/RawLocalFs.java
Thu Jun 6 05:34:11 2013
@@ -158,6 +158,14 @@ public class RawLocalFs extends Delegate
}
}
+ @Override
+ public boolean isValidName(String src) {
+ // Different local file systems have different validation rules. Skip
+ // validation here and just let the OS handle it. This is consistent with
+ // RawLocalFileSystem.
+ return true;
+ }
+
@Override
public Path getLinkTarget(Path f) throws IOException {
/* We should never get here. Valid local links are resolved transparently
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ChRootedFs.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ChRootedFs.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ChRootedFs.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ChRootedFs.java
Thu Jun 6 05:34:11 2013
@@ -83,7 +83,12 @@ class ChRootedFs extends AbstractFileSys
return new Path((chRootPathPart.isRoot() ? "" : chRootPathPartString)
+ path.toUri().getPath());
}
-
+
+ @Override
+ public boolean isValidName(String src) {
+ return myFs.isValidName(fullPath(new Path(src)).toUri().toString());
+ }
+
public ChRootedFs(final AbstractFileSystem fs, final Path theRoot)
throws URISyntaxException {
super(fs.getUri(), fs.getUri().getScheme(),
@@ -103,7 +108,7 @@ class ChRootedFs extends AbstractFileSys
// scheme:/// and scheme://authority/
myUri = new URI(myFs.getUri().toString() +
(myFs.getUri().getAuthority() == null ? "" : Path.SEPARATOR) +
- chRootPathPart.toString().substring(1));
+ chRootPathPart.toUri().getPath().substring(1));
super.checkPath(theRoot);
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFileSystem.java
Thu Jun 6 05:34:11 2013
@@ -64,6 +64,9 @@ import org.apache.hadoop.util.Time;
@InterfaceAudience.Public
@InterfaceStability.Evolving /*Evolving for a release,to be changed to Stable
*/
public class ViewFileSystem extends FileSystem {
+
+ private static final Path ROOT_PATH = new Path(Path.SEPARATOR);
+
static AccessControlException readOnlyMountTable(final String operation,
final String p) {
return new AccessControlException(
@@ -99,23 +102,6 @@ public class ViewFileSystem extends File
Path homeDir = null;
/**
- * Prohibits names which contain a ".", "..", ":" or "/"
- */
- private static boolean isValidName(final String src) {
- // Check for ".." "." ":" "/"
- final StringTokenizer tokens = new StringTokenizer(src, Path.SEPARATOR);
- while(tokens.hasMoreTokens()) {
- String element = tokens.nextToken();
- if (element.equals("..") ||
- element.equals(".") ||
- (element.indexOf(":") >= 0)) {
- return false;
- }
- }
- return true;
- }
-
- /**
* Make the path Absolute and get the path-part of a pathname.
* Checks that URI matches this file system
* and that the path-part is a valid name.
@@ -126,10 +112,6 @@ public class ViewFileSystem extends File
private String getUriPath(final Path p) {
checkPath(p);
String s = makeAbsolute(p).toUri().getPath();
- if (!isValidName(s)) {
- throw new InvalidPathException("Path part " + s + " from URI" + p
- + " is not a valid filename.");
- }
return s;
}
@@ -689,7 +671,7 @@ public class ViewFileSystem extends File
PERMISSION_RRR, ugi.getUserName(), ugi.getGroupNames()[0],
new Path(theInternalDir.fullPath).makeQualified(
- myUri, null));
+ myUri, ROOT_PATH));
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFs.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFs.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFs.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/viewfs/ViewFs.java
Thu Jun 6 05:34:11 2013
@@ -597,6 +597,12 @@ public class ViewFs extends AbstractFile
return result;
}
+ @Override
+ public boolean isValidName(String src) {
+ // Prefix validated at mount time and rest of path validated by mount
target.
+ return true;
+ }
+
/*
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystem.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystem.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestLocalFileSystem.java
Thu Jun 6 05:34:11 2013
@@ -20,6 +20,7 @@ package org.apache.hadoop.fs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem.Statistics;
import org.apache.hadoop.util.StringUtils;
+import org.apache.hadoop.util.Shell;
import static org.apache.hadoop.fs.FileSystemTestHelper.*;
@@ -28,6 +29,7 @@ import java.util.Arrays;
import java.util.Random;
import static org.junit.Assert.*;
+import static org.junit.Assume.assumeTrue;
import org.junit.After;
import org.junit.Before;
@@ -263,6 +265,7 @@ public class TestLocalFileSystem {
@Test(timeout = 1000)
public void testListStatusWithColons() throws IOException {
+ assumeTrue(!Shell.WINDOWS);
File colonFile = new File(TEST_ROOT_DIR, "foo:bar");
colonFile.mkdirs();
FileStatus[] stats = fileSys.listStatus(new Path(TEST_ROOT_DIR));
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFs.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFs.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFs.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFs.java
Thu Jun 6 05:34:11 2013
@@ -25,6 +25,7 @@ import java.util.EnumSet;
import static org.apache.hadoop.fs.FileContextTestHelper.*;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.AbstractFileSystem;
import org.apache.hadoop.fs.CreateFlag;
import org.apache.hadoop.fs.FileContext;
import org.apache.hadoop.fs.FileContextTestHelper;
@@ -36,6 +37,7 @@ import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
public class TestChRootedFs {
FileContextTestHelper fileContextTestHelper = new FileContextTestHelper();
@@ -308,4 +310,21 @@ public class TestChRootedFs {
fc.getDefaultFileSystem().resolvePath(new Path("/nonExisting"));
}
+ @Test
+ public void testIsValidNameValidInBaseFs() throws Exception {
+ AbstractFileSystem baseFs = Mockito.spy(fc.getDefaultFileSystem());
+ ChRootedFs chRootedFs = new ChRootedFs(baseFs, new Path("/chroot"));
+ Mockito.doReturn(true).when(baseFs).isValidName(Mockito.anyString());
+ Assert.assertTrue(chRootedFs.isValidName("/test"));
+ Mockito.verify(baseFs).isValidName("/chroot/test");
+ }
+
+ @Test
+ public void testIsValidNameInvalidInBaseFs() throws Exception {
+ AbstractFileSystem baseFs = Mockito.spy(fc.getDefaultFileSystem());
+ ChRootedFs chRootedFs = new ChRootedFs(baseFs, new Path("/chroot"));
+ Mockito.doReturn(false).when(baseFs).isValidName(Mockito.anyString());
+ Assert.assertFalse(chRootedFs.isValidName("/test"));
+ Mockito.verify(baseFs).isValidName("/chroot/test");
+ }
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemTestSetup.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemTestSetup.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemTestSetup.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemTestSetup.java
Thu Jun 6 05:34:11 2013
@@ -26,6 +26,7 @@ import org.apache.hadoop.fs.FileSystemTe
import org.apache.hadoop.fs.FsConstants;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.viewfs.ConfigUtil;
+import org.apache.hadoop.util.Shell;
import org.mortbay.log.Log;
@@ -130,8 +131,11 @@ public class ViewFileSystemTestSetup {
* in the target file system.
*/
static void linkUpFirstComponents(Configuration conf, String path,
FileSystem fsTarget, String info) {
- int indexOf2ndSlash = path.indexOf('/', 1);
- String firstComponent = path.substring(0, indexOf2ndSlash);
+ int indexOfEnd = path.indexOf('/', 1);
+ if (Shell.WINDOWS) {
+ indexOfEnd = path.indexOf('/', indexOfEnd + 1);
+ }
+ String firstComponent = path.substring(0, indexOfEnd);
URI linkTarget = fsTarget.makeQualified(new Path(firstComponent)).toUri();
ConfigUtil.addLink(conf, firstComponent, linkTarget);
Log.info("Added link for " + info + " "
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
Thu Jun 6 05:34:11 2013
@@ -25,6 +25,7 @@ import org.apache.hadoop.fs.FileContextT
import org.apache.hadoop.fs.FsConstants;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.viewfs.ConfigUtil;
+import org.apache.hadoop.util.Shell;
import org.mortbay.log.Log;
@@ -120,8 +121,11 @@ public class ViewFsTestSetup {
*/
static void linkUpFirstComponents(Configuration conf, String path,
FileContext fsTarget, String info) {
- int indexOf2ndSlash = path.indexOf('/', 1);
- String firstComponent = path.substring(0, indexOf2ndSlash);
+ int indexOfEnd = path.indexOf('/', 1);
+ if (Shell.WINDOWS) {
+ indexOfEnd = path.indexOf('/', indexOfEnd + 1);
+ }
+ String firstComponent = path.substring(0, indexOfEnd);
URI linkTarget = fsTarget.makeQualified(new Path(firstComponent)).toUri();
ConfigUtil.addLink(conf, firstComponent, linkTarget);
Log.info("Added link for " + info + " "
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestShellCommandFencer.java
Thu Jun 6 05:34:11 2013
@@ -23,6 +23,7 @@ import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;
+import org.apache.hadoop.util.Shell;
import org.apache.hadoop.util.StringUtils;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -110,9 +111,9 @@ public class TestShellCommandFencer {
*/
@Test
public void testStderrLogging() {
- assertTrue(fencer.tryFence(TEST_TARGET, "echo hello >&2"));
+ assertTrue(fencer.tryFence(TEST_TARGET, "echo hello>&2"));
Mockito.verify(ShellCommandFencer.LOG).warn(
- Mockito.endsWith("echo hello >&2: hello"));
+ Mockito.endsWith("echo hello>&2: hello"));
}
/**
@@ -121,9 +122,15 @@ public class TestShellCommandFencer {
*/
@Test
public void testConfAsEnvironment() {
- fencer.tryFence(TEST_TARGET, "echo $in_fencing_tests");
- Mockito.verify(ShellCommandFencer.LOG).info(
- Mockito.endsWith("echo $in...ing_tests: yessir"));
+ if (!Shell.WINDOWS) {
+ fencer.tryFence(TEST_TARGET, "echo $in_fencing_tests");
+ Mockito.verify(ShellCommandFencer.LOG).info(
+ Mockito.endsWith("echo $in...ing_tests: yessir"));
+ } else {
+ fencer.tryFence(TEST_TARGET, "echo %in_fencing_tests%");
+ Mockito.verify(ShellCommandFencer.LOG).info(
+ Mockito.endsWith("echo %in...ng_tests%: yessir"));
+ }
}
/**
@@ -132,9 +139,15 @@ public class TestShellCommandFencer {
*/
@Test
public void testTargetAsEnvironment() {
- fencer.tryFence(TEST_TARGET, "echo $target_host $target_port
$target_address");
- Mockito.verify(ShellCommandFencer.LOG).info(
- Mockito.endsWith("echo $ta...t_address: host 1234 host:1234"));
+ if (!Shell.WINDOWS) {
+ fencer.tryFence(TEST_TARGET, "echo $target_host $target_port
$target_address");
+ Mockito.verify(ShellCommandFencer.LOG).info(
+ Mockito.endsWith("echo $ta...t_address: host 1234 host:1234"));
+ } else {
+ fencer.tryFence(TEST_TARGET, "echo %target_host% %target_port%
%target_address%");
+ Mockito.verify(ShellCommandFencer.LOG).info(
+ Mockito.endsWith("echo %ta..._address%: host 1234 host:1234"));
+ }
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/TestSocketIOWithTimeout.java
Thu Jun 6 05:34:11 2013
@@ -32,6 +32,7 @@ import org.apache.hadoop.test.Multithrea
import org.apache.hadoop.test.MultithreadedTestUtil.TestContext;
import org.apache.hadoop.test.MultithreadedTestUtil.TestingThread;
import org.apache.hadoop.util.Time;
+import org.apache.hadoop.util.Shell;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -144,12 +145,20 @@ public class TestSocketIOWithTimeout {
// Nevertheless, the output stream is closed, because
// a partial write may have succeeded (see comment in
// SocketOutputStream#write(byte[]), int, int)
- try {
- out.write(1);
- fail("Did not throw");
- } catch (IOException ioe) {
- GenericTestUtils.assertExceptionContains(
- "stream is closed", ioe);
+ // This portion of the test cannot pass on Windows due to differences in
+ // behavior of partial writes. Windows appears to buffer large amounts
of
+ // written data and send it all atomically, thus making it impossible to
+ // simulate a partial write scenario. Attempts were made to switch the
+ // test from using a pipe to a network socket and also to use larger and
+ // larger buffers in doIO. Nothing helped the situation though.
+ if (!Shell.WINDOWS) {
+ try {
+ out.write(1);
+ fail("Did not throw");
+ } catch (IOException ioe) {
+ GenericTestUtils.assertExceptionContains(
+ "stream is closed", ioe);
+ }
}
out.close();
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java?rev=1490151&r1=1490150&r2=1490151&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
Thu Jun 6 05:34:11 2013
@@ -41,7 +41,12 @@ public class TestShell extends TestCase
@Override
protected String[] getExecString() {
- return new String[] {"echo", "hello"};
+ // There is no /bin/echo equivalent on Windows so just launch it as a
+ // shell built-in.
+ //
+ return Shell.WINDOWS ?
+ (new String[] {"cmd.exe", "/c", "echo", "hello"}) :
+ (new String[] {"echo", "hello"});
}
@Override