svn merge -c 1413776 FIXES: HADOOP-9038. unit-tests for AllocatorPerContext.PathIterator (Ivan A. Veselovsky via bobby)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1413778 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6fef82baad
commit
e192a00f15
|
@ -863,6 +863,9 @@ Release 0.23.6 - UNRELEASED
|
||||||
HADOOP-8992. Enhance unit-test coverage of class HarFileSystem (Ivan A.
|
HADOOP-8992. Enhance unit-test coverage of class HarFileSystem (Ivan A.
|
||||||
Veselovsky via bobby)
|
Veselovsky via bobby)
|
||||||
|
|
||||||
|
HADOOP-9038. unit-tests for AllocatorPerContext.PathIterator (Ivan A.
|
||||||
|
Veselovsky via bobby)
|
||||||
|
|
||||||
Release 0.23.5 - UNRELEASED
|
Release 0.23.5 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -478,12 +478,15 @@ public class LocalDirAllocator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path next() {
|
public Path next() {
|
||||||
Path result = next;
|
final Path result = next;
|
||||||
try {
|
try {
|
||||||
advance();
|
advance();
|
||||||
} catch (IOException ie) {
|
} catch (IOException ie) {
|
||||||
throw new RuntimeException("Can't check existance of " + next, ie);
|
throw new RuntimeException("Can't check existance of " + next, ie);
|
||||||
}
|
}
|
||||||
|
if (result == null) {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.util.Shell;
|
import org.apache.hadoop.util.Shell;
|
||||||
|
@ -32,6 +34,7 @@ import org.junit.runners.Parameterized.Parameters;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
import static org.junit.Assume.*;
|
||||||
|
|
||||||
/** This test LocalDirAllocator works correctly;
|
/** This test LocalDirAllocator works correctly;
|
||||||
* Every test case uses different buffer dirs to
|
* Every test case uses different buffer dirs to
|
||||||
|
@ -301,7 +304,7 @@ public class TestLocalDirAllocator {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testNoSideEffects() throws IOException {
|
public void testNoSideEffects() throws IOException {
|
||||||
if (isWindows) return;
|
assumeTrue(!isWindows);
|
||||||
String dir = buildBufferDir(ROOT, 0);
|
String dir = buildBufferDir(ROOT, 0);
|
||||||
try {
|
try {
|
||||||
conf.set(CONTEXT, dir);
|
conf.set(CONTEXT, dir);
|
||||||
|
@ -322,8 +325,7 @@ public class TestLocalDirAllocator {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testGetLocalPathToRead() throws IOException {
|
public void testGetLocalPathToRead() throws IOException {
|
||||||
if (isWindows)
|
assumeTrue(!isWindows);
|
||||||
return;
|
|
||||||
String dir = buildBufferDir(ROOT, 0);
|
String dir = buildBufferDir(ROOT, 0);
|
||||||
try {
|
try {
|
||||||
conf.set(CONTEXT, dir);
|
conf.set(CONTEXT, dir);
|
||||||
|
@ -337,7 +339,60 @@ public class TestLocalDirAllocator {
|
||||||
Shell.execCommand(new String[] { "chmod", "u+w", BUFFER_DIR_ROOT });
|
Shell.execCommand(new String[] { "chmod", "u+w", BUFFER_DIR_ROOT });
|
||||||
rmBufferDirs();
|
rmBufferDirs();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that {@link LocalDirAllocator#getAllLocalPathsToRead(String, Configuration)}
|
||||||
|
* returns correct filenames and "file" schema.
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testGetAllLocalPathsToRead() throws IOException {
|
||||||
|
assumeTrue(!isWindows);
|
||||||
|
|
||||||
|
String dir0 = buildBufferDir(ROOT, 0);
|
||||||
|
String dir1 = buildBufferDir(ROOT, 1);
|
||||||
|
try {
|
||||||
|
conf.set(CONTEXT, dir0 + "," + dir1);
|
||||||
|
assertTrue(localFs.mkdirs(new Path(dir0)));
|
||||||
|
assertTrue(localFs.mkdirs(new Path(dir1)));
|
||||||
|
|
||||||
|
localFs.create(new Path(dir0 + Path.SEPARATOR + FILENAME));
|
||||||
|
localFs.create(new Path(dir1 + Path.SEPARATOR + FILENAME));
|
||||||
|
|
||||||
|
// check both the paths are returned as paths to read:
|
||||||
|
final Iterable<Path> pathIterable = dirAllocator.getAllLocalPathsToRead(FILENAME, conf);
|
||||||
|
int count = 0;
|
||||||
|
for (final Path p: pathIterable) {
|
||||||
|
count++;
|
||||||
|
assertEquals(FILENAME, p.getName());
|
||||||
|
assertEquals("file", p.getFileSystem(conf).getUri().getScheme());
|
||||||
|
}
|
||||||
|
assertEquals(2, count);
|
||||||
|
|
||||||
|
// test #next() while no element to iterate any more:
|
||||||
|
try {
|
||||||
|
Path p = pathIterable.iterator().next();
|
||||||
|
assertFalse("NoSuchElementException must be thrown, but returned ["+p
|
||||||
|
+"] instead.", true); // exception expected
|
||||||
|
} catch (NoSuchElementException nsee) {
|
||||||
|
// okay
|
||||||
|
}
|
||||||
|
|
||||||
|
// test modification not allowed:
|
||||||
|
final Iterable<Path> pathIterable2 = dirAllocator.getAllLocalPathsToRead(FILENAME, conf);
|
||||||
|
final Iterator<Path> it = pathIterable2.iterator();
|
||||||
|
try {
|
||||||
|
it.remove();
|
||||||
|
assertFalse(true); // exception expected
|
||||||
|
} catch (UnsupportedOperationException uoe) {
|
||||||
|
// okay
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
Shell.execCommand(new String[] { "chmod", "u+w", BUFFER_DIR_ROOT });
|
||||||
|
rmBufferDirs();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue