HDFS-13886. HttpFSFileSystem.getFileStatus() doesn't return "snapshot enabled" bit. Contributed by Siyao Meng.
This commit is contained in:
parent
8382b860d4
commit
44857476fa
@ -199,7 +199,7 @@ public static FILE_TYPE getType(FileStatus fileStatus) {
|
||||
|
||||
public static final String ENC_BIT_JSON = "encBit";
|
||||
public static final String EC_BIT_JSON = "ecBit";
|
||||
public static final String SNAPSHOT_BIT_JSON = "seBit";
|
||||
public static final String SNAPSHOT_BIT_JSON = "snapshotEnabled";
|
||||
|
||||
public static final String DIRECTORY_LISTING_JSON = "DirectoryListing";
|
||||
public static final String PARTIAL_LISTING_JSON = "partialListing";
|
||||
|
@ -120,6 +120,9 @@ private static Map<String, Object> toJsonInner(FileStatus fileStatus,
|
||||
if (fileStatus.getPermission().getErasureCodedBit()) {
|
||||
json.put(HttpFSFileSystem.EC_BIT_JSON, true);
|
||||
}
|
||||
if (fileStatus.isSnapshotEnabled()) {
|
||||
json.put(HttpFSFileSystem.SNAPSHOT_BIT_JSON, true);
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
|
@ -376,6 +376,35 @@ private void testListStatus() throws Exception {
|
||||
Assert.assertEquals(stati[0].getPath(), statl[0].getPath());
|
||||
}
|
||||
|
||||
private void testFileStatusAttr() throws Exception {
|
||||
if (!this.isLocalFS()) {
|
||||
// Create a directory
|
||||
Path path = new Path("/tmp/tmp-snap-test");
|
||||
DistributedFileSystem distributedFs = (DistributedFileSystem) FileSystem
|
||||
.get(path.toUri(), this.getProxiedFSConf());
|
||||
distributedFs.mkdirs(path);
|
||||
// Get the FileSystem instance that's being tested
|
||||
FileSystem fs = this.getHttpFSFileSystem();
|
||||
// Check FileStatus
|
||||
assertFalse("Snapshot should be disallowed by default",
|
||||
fs.getFileStatus(path).isSnapshotEnabled());
|
||||
// Allow snapshot
|
||||
distributedFs.allowSnapshot(path);
|
||||
// Check FileStatus
|
||||
assertTrue("Snapshot enabled bit is not set in FileStatus",
|
||||
fs.getFileStatus(path).isSnapshotEnabled());
|
||||
// Disallow snapshot
|
||||
distributedFs.disallowSnapshot(path);
|
||||
// Check FileStatus
|
||||
assertFalse("Snapshot enabled bit is not cleared in FileStatus",
|
||||
fs.getFileStatus(path).isSnapshotEnabled());
|
||||
// Cleanup
|
||||
fs.delete(path, true);
|
||||
fs.close();
|
||||
distributedFs.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static void assertSameListing(FileSystem expected, FileSystem
|
||||
actual, Path p) throws IOException {
|
||||
// Consume all the entries from both iterators
|
||||
@ -1041,7 +1070,8 @@ protected enum Operation {
|
||||
SET_REPLICATION, CHECKSUM, CONTENT_SUMMARY, FILEACLS, DIRACLS, SET_XATTR,
|
||||
GET_XATTRS, REMOVE_XATTR, LIST_XATTRS, ENCRYPTION, LIST_STATUS_BATCH,
|
||||
GETTRASHROOT, STORAGEPOLICY, ERASURE_CODING,
|
||||
CREATE_SNAPSHOT, RENAME_SNAPSHOT, DELETE_SNAPSHOT
|
||||
CREATE_SNAPSHOT, RENAME_SNAPSHOT, DELETE_SNAPSHOT,
|
||||
FILE_STATUS_ATTR
|
||||
}
|
||||
|
||||
private void operation(Operation op) throws Exception {
|
||||
@ -1139,6 +1169,9 @@ private void operation(Operation op) throws Exception {
|
||||
case DELETE_SNAPSHOT:
|
||||
testDeleteSnapshot();
|
||||
break;
|
||||
case FILE_STATUS_ATTR:
|
||||
testFileStatusAttr();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user