HDFS-6645. Merge change r1609388 from trunk.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1609393 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
05f49b8e37
commit
f1e29d5800
|
@ -18,6 +18,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
HDFS-6627. Rename DataNode#checkWriteAccess to checkReadAccess.
|
HDFS-6627. Rename DataNode#checkWriteAccess to checkReadAccess.
|
||||||
(Liang Xie via cnauroth)
|
(Liang Xie via cnauroth)
|
||||||
|
|
||||||
|
HDFS-6645. Add test for successive Snapshots between XAttr modifications.
|
||||||
|
(Stephen Chu via jing9)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
|
@ -57,8 +57,8 @@ public class TestXAttrWithSnapshot {
|
||||||
private static Configuration conf;
|
private static Configuration conf;
|
||||||
private static DistributedFileSystem hdfs;
|
private static DistributedFileSystem hdfs;
|
||||||
private static int pathCount = 0;
|
private static int pathCount = 0;
|
||||||
private static Path path, snapshotPath;
|
private static Path path, snapshotPath, snapshotPath2, snapshotPath3;
|
||||||
private static String snapshotName;
|
private static String snapshotName, snapshotName2, snapshotName3;
|
||||||
private final int SUCCESS = 0;
|
private final int SUCCESS = 0;
|
||||||
// XAttrs
|
// XAttrs
|
||||||
private static final String name1 = "user.a1";
|
private static final String name1 = "user.a1";
|
||||||
|
@ -90,7 +90,11 @@ public class TestXAttrWithSnapshot {
|
||||||
++pathCount;
|
++pathCount;
|
||||||
path = new Path("/p" + pathCount);
|
path = new Path("/p" + pathCount);
|
||||||
snapshotName = "snapshot" + pathCount;
|
snapshotName = "snapshot" + pathCount;
|
||||||
|
snapshotName2 = snapshotName + "-2";
|
||||||
|
snapshotName3 = snapshotName + "-3";
|
||||||
snapshotPath = new Path(path, new Path(".snapshot", snapshotName));
|
snapshotPath = new Path(path, new Path(".snapshot", snapshotName));
|
||||||
|
snapshotPath2 = new Path(path, new Path(".snapshot", snapshotName2));
|
||||||
|
snapshotPath3 = new Path(path, new Path(".snapshot", snapshotName3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -260,6 +264,62 @@ public class TestXAttrWithSnapshot {
|
||||||
Assert.assertArrayEquals(value2, xattrs.get(name2));
|
Assert.assertArrayEquals(value2, xattrs.get(name2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test successive snapshots in between modifications of XAttrs.
|
||||||
|
* Also verify that snapshot XAttrs are not altered when a
|
||||||
|
* snapshot is deleted.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSuccessiveSnapshotXAttrChanges() throws Exception {
|
||||||
|
// First snapshot
|
||||||
|
FileSystem.mkdirs(hdfs, path, FsPermission.createImmutable((short) 0700));
|
||||||
|
hdfs.setXAttr(path, name1, value1);
|
||||||
|
SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName);
|
||||||
|
Map<String, byte[]> xattrs = hdfs.getXAttrs(snapshotPath);
|
||||||
|
Assert.assertEquals(1, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(value1, xattrs.get(name1));
|
||||||
|
|
||||||
|
// Second snapshot
|
||||||
|
hdfs.setXAttr(path, name1, newValue1);
|
||||||
|
hdfs.setXAttr(path, name2, value2);
|
||||||
|
SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName2);
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath2);
|
||||||
|
Assert.assertEquals(2, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(newValue1, xattrs.get(name1));
|
||||||
|
Assert.assertArrayEquals(value2, xattrs.get(name2));
|
||||||
|
|
||||||
|
// Third snapshot
|
||||||
|
hdfs.setXAttr(path, name1, value1);
|
||||||
|
hdfs.removeXAttr(path, name2);
|
||||||
|
SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName3);
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath3);
|
||||||
|
Assert.assertEquals(1, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(value1, xattrs.get(name1));
|
||||||
|
|
||||||
|
// Check that the first and second snapshots'
|
||||||
|
// XAttrs have stayed constant
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath);
|
||||||
|
Assert.assertEquals(1, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(value1, xattrs.get(name1));
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath2);
|
||||||
|
Assert.assertEquals(2, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(newValue1, xattrs.get(name1));
|
||||||
|
Assert.assertArrayEquals(value2, xattrs.get(name2));
|
||||||
|
|
||||||
|
// Remove the second snapshot and verify the first and
|
||||||
|
// third snapshots' XAttrs have stayed constant
|
||||||
|
hdfs.deleteSnapshot(path, snapshotName2);
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath);
|
||||||
|
Assert.assertEquals(1, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(value1, xattrs.get(name1));
|
||||||
|
xattrs = hdfs.getXAttrs(snapshotPath3);
|
||||||
|
Assert.assertEquals(1, xattrs.size());
|
||||||
|
Assert.assertArrayEquals(value1, xattrs.get(name1));
|
||||||
|
|
||||||
|
hdfs.deleteSnapshot(path, snapshotName);
|
||||||
|
hdfs.deleteSnapshot(path, snapshotName3);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assert exception of setting xattr on read-only snapshot.
|
* Assert exception of setting xattr on read-only snapshot.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue