HADOOP-14506. Add create() contract test that verifies ancestor dir creation.

Contributed by Sean Mackrory.
This commit is contained in:
Steve Loughran 2017-06-15 14:49:34 +01:00
parent 315f07700d
commit d780a67864
No known key found for this signature in database
GPG Key ID: 950CC3E032B79CA2

View File

@ -32,6 +32,7 @@
import static org.apache.hadoop.fs.contract.ContractTestUtils.dataset;
import static org.apache.hadoop.fs.contract.ContractTestUtils.getFileStatusEventually;
import static org.apache.hadoop.fs.contract.ContractTestUtils.skip;
import static org.apache.hadoop.fs.contract.ContractTestUtils.touch;
import static org.apache.hadoop.fs.contract.ContractTestUtils.writeDataset;
import static org.apache.hadoop.fs.contract.ContractTestUtils.writeTextFile;
@ -272,4 +273,21 @@ private void validateBlockSize(FileSystem fs, Path path, int minValue)
defaultBlockSize >= minValue);
}
@Test
public void testCreateMakesParentDirs() throws Throwable {
describe("check that after creating a file its parent directories exist");
FileSystem fs = getFileSystem();
Path grandparent = path("testCreateCreatesAndPopulatesParents");
Path parent = new Path(grandparent, "parent");
Path child = new Path(parent, "child");
touch(fs, child);
assertEquals("List status of parent should include the 1 child file",
1, fs.listStatus(parent).length);
assertTrue("Parent directory does not appear to be a directory",
fs.getFileStatus(parent).isDirectory());
assertEquals("List status of grandparent should include the 1 parent dir",
1, fs.listStatus(grandparent).length);
assertTrue("Grandparent directory does not appear to be a directory",
fs.getFileStatus(grandparent).isDirectory());
}
}