You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by ji...@apache.org on 2014/07/10 07:01:41 UTC
svn commit: r1609388 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java
Author: jing9
Date: Thu Jul 10 05:01:41 2014
New Revision: 1609388
URL: http://svn.apache.org/r1609388
Log:
HDFS-6645. Add test for successive Snapshots between XAttr modifications. Contributed by Stephen Chu.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1609388&r1=1609387&r2=1609388&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Jul 10 05:01:41 2014
@@ -275,6 +275,9 @@ Release 2.6.0 - UNRELEASED
HDFS-6627. Rename DataNode#checkWriteAccess to checkReadAccess.
(Liang Xie via cnauroth)
+ HDFS-6645. Add test for successive Snapshots between XAttr modifications.
+ (Stephen Chu via jing9)
+
OPTIMIZATIONS
BUG FIXES
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java?rev=1609388&r1=1609387&r2=1609388&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/snapshot/TestXAttrWithSnapshot.java Thu Jul 10 05:01:41 2014
@@ -57,8 +57,8 @@ public class TestXAttrWithSnapshot {
private static Configuration conf;
private static DistributedFileSystem hdfs;
private static int pathCount = 0;
- private static Path path, snapshotPath;
- private static String snapshotName;
+ private static Path path, snapshotPath, snapshotPath2, snapshotPath3;
+ private static String snapshotName, snapshotName2, snapshotName3;
private final int SUCCESS = 0;
// XAttrs
private static final String name1 = "user.a1";
@@ -90,7 +90,11 @@ public class TestXAttrWithSnapshot {
++pathCount;
path = new Path("/p" + pathCount);
snapshotName = "snapshot" + pathCount;
+ snapshotName2 = snapshotName + "-2";
+ snapshotName3 = snapshotName + "-3";
snapshotPath = new Path(path, new Path(".snapshot", snapshotName));
+ snapshotPath2 = new Path(path, new Path(".snapshot", snapshotName2));
+ snapshotPath3 = new Path(path, new Path(".snapshot", snapshotName3));
}
/**
@@ -261,6 +265,62 @@ public class TestXAttrWithSnapshot {
}
/**
+ * 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.
*/
@Test