|
@@ -23,6 +23,7 @@ import static org.apache.hadoop.fs.permission.FsAction.*;
|
|
|
import static org.apache.hadoop.hdfs.server.namenode.AclTestHelpers.*;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.util.EnumSet;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
@@ -40,8 +41,11 @@ import org.apache.hadoop.hdfs.DFSUtil;
|
|
|
import org.apache.hadoop.hdfs.DFSUtilClient;
|
|
|
import org.apache.hadoop.hdfs.XAttrHelper;
|
|
|
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
|
|
|
+import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicy;
|
|
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
|
|
import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
|
|
|
+import org.apache.hadoop.hdfs.protocol.HdfsFileStatus.Flags;
|
|
|
+import org.apache.hadoop.io.erasurecode.ECSchema;
|
|
|
import org.apache.hadoop.util.Time;
|
|
|
import org.junit.Assert;
|
|
|
import org.junit.Test;
|
|
@@ -66,9 +70,11 @@ public class TestJsonUtil {
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
- public void testHdfsFileStatus() throws IOException {
|
|
|
+ public void testHdfsFileStatusWithEcPolicy() throws IOException {
|
|
|
final long now = Time.now();
|
|
|
final String parent = "/dir";
|
|
|
+ ErasureCodingPolicy dummyEcPolicy = new ErasureCodingPolicy("ecPolicy1",
|
|
|
+ new ECSchema("EcSchema", 1, 1), 1024 * 2, (byte) 1);
|
|
|
final HdfsFileStatus status = new HdfsFileStatus.Builder()
|
|
|
.length(1001L)
|
|
|
.replication(3)
|
|
@@ -81,7 +87,46 @@ public class TestJsonUtil {
|
|
|
.symlink(DFSUtil.string2Bytes("bar"))
|
|
|
.path(DFSUtil.string2Bytes("foo"))
|
|
|
.fileId(HdfsConstants.GRANDFATHER_INODE_ID)
|
|
|
+ .ecPolicy(dummyEcPolicy)
|
|
|
+ .flags(EnumSet.allOf(Flags.class))
|
|
|
.build();
|
|
|
+
|
|
|
+ final FileStatus fstatus = toFileStatus(status, parent);
|
|
|
+ System.out.println("status = " + status);
|
|
|
+ System.out.println("fstatus = " + fstatus);
|
|
|
+ final String json = JsonUtil.toJsonString(status, true);
|
|
|
+ System.out.println("json = " + json.replace(",", ",\n "));
|
|
|
+ final HdfsFileStatus s2 =
|
|
|
+ JsonUtilClient.toFileStatus((Map<?, ?>) READER.readValue(json), true);
|
|
|
+ final FileStatus fs2 = toFileStatus(s2, parent);
|
|
|
+ System.out.println("s2 = " + s2);
|
|
|
+ System.out.println("fs2 = " + fs2);
|
|
|
+ Assert.assertEquals(status.getErasureCodingPolicy(),
|
|
|
+ s2.getErasureCodingPolicy());
|
|
|
+ Assert.assertEquals(fstatus, fs2);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testHdfsFileStatusWithoutEcPolicy() throws IOException {
|
|
|
+ final long now = Time.now();
|
|
|
+ final String parent = "/dir";
|
|
|
+ ErasureCodingPolicy dummyEcPolicy = new ErasureCodingPolicy("ecPolicy1",
|
|
|
+ new ECSchema("EcSchema", 1, 1), 1024 * 2, (byte) 1);
|
|
|
+ final HdfsFileStatus status = new HdfsFileStatus.Builder()
|
|
|
+ .length(1001L)
|
|
|
+ .replication(3)
|
|
|
+ .blocksize(1L << 26)
|
|
|
+ .mtime(now)
|
|
|
+ .atime(now + 10)
|
|
|
+ .perm(new FsPermission((short) 0644))
|
|
|
+ .owner("user")
|
|
|
+ .group("group")
|
|
|
+ .symlink(DFSUtil.string2Bytes("bar"))
|
|
|
+ .path(DFSUtil.string2Bytes("foo"))
|
|
|
+ .fileId(HdfsConstants.GRANDFATHER_INODE_ID)
|
|
|
+ .build();
|
|
|
+ Assert.assertTrue(status.getErasureCodingPolicy() == null);
|
|
|
+
|
|
|
final FileStatus fstatus = toFileStatus(status, parent);
|
|
|
System.out.println("status = " + status);
|
|
|
System.out.println("fstatus = " + fstatus);
|
|
@@ -92,6 +137,7 @@ public class TestJsonUtil {
|
|
|
final FileStatus fs2 = toFileStatus(s2, parent);
|
|
|
System.out.println("s2 = " + s2);
|
|
|
System.out.println("fs2 = " + fs2);
|
|
|
+
|
|
|
Assert.assertEquals(fstatus, fs2);
|
|
|
}
|
|
|
|