|
@@ -24,12 +24,14 @@ import org.apache.hadoop.fs.ContentSummary;
|
|
|
import org.apache.hadoop.fs.FileChecksum;
|
|
|
import org.apache.hadoop.fs.FileStatus;
|
|
|
import org.apache.hadoop.fs.FileSystem;
|
|
|
+import org.apache.hadoop.fs.FileSystemTestHelper;
|
|
|
import org.apache.hadoop.fs.Path;
|
|
|
import org.apache.hadoop.fs.http.server.HttpFSServerWebApp;
|
|
|
import org.apache.hadoop.fs.permission.AclEntry;
|
|
|
import org.apache.hadoop.fs.permission.AclStatus;
|
|
|
import org.apache.hadoop.fs.permission.FsAction;
|
|
|
import org.apache.hadoop.fs.permission.FsPermission;
|
|
|
+import org.apache.hadoop.hdfs.AppendTestUtil;
|
|
|
import org.apache.hadoop.hdfs.DFSConfigKeys;
|
|
|
import org.apache.hadoop.hdfs.DFSTestUtil;
|
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
@@ -192,7 +194,7 @@ public abstract class BaseTestHttpFSWith extends HFSTestCase {
|
|
|
Assert.fail("the create should have failed because the file exists " +
|
|
|
"and override is FALSE");
|
|
|
} catch (IOException ex) {
|
|
|
-System.out.println("#");
|
|
|
+ System.out.println("#");
|
|
|
} catch (Exception ex) {
|
|
|
Assert.fail(ex.toString());
|
|
|
}
|
|
@@ -222,6 +224,31 @@ System.out.println("#");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void testTruncate() throws Exception {
|
|
|
+ if (!isLocalFS()) {
|
|
|
+ final short repl = 3;
|
|
|
+ final int blockSize = 1024;
|
|
|
+ final int numOfBlocks = 2;
|
|
|
+ FileSystem fs = FileSystem.get(getProxiedFSConf());
|
|
|
+ fs.mkdirs(getProxiedFSTestDir());
|
|
|
+ Path file = new Path(getProxiedFSTestDir(), "foo.txt");
|
|
|
+ final byte[] data = FileSystemTestHelper.getFileData(
|
|
|
+ numOfBlocks, blockSize);
|
|
|
+ FileSystemTestHelper.createFile(fs, file, data, blockSize, repl);
|
|
|
+
|
|
|
+ final int newLength = blockSize;
|
|
|
+
|
|
|
+ boolean isReady = fs.truncate(file, newLength);
|
|
|
+ Assert.assertTrue("Recovery is not expected.", isReady);
|
|
|
+
|
|
|
+ FileStatus fileStatus = fs.getFileStatus(file);
|
|
|
+ Assert.assertEquals(fileStatus.getLen(), newLength);
|
|
|
+ AppendTestUtil.checkFullFile(fs, file, newLength, data, file.toString());
|
|
|
+
|
|
|
+ fs.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void testConcat() throws Exception {
|
|
|
Configuration config = getProxiedFSConf();
|
|
|
config.setLong(DFSConfigKeys.DFS_BLOCK_SIZE_KEY, 1024);
|
|
@@ -784,9 +811,10 @@ System.out.println("#");
|
|
|
}
|
|
|
|
|
|
protected enum Operation {
|
|
|
- GET, OPEN, CREATE, APPEND, CONCAT, RENAME, DELETE, LIST_STATUS, WORKING_DIRECTORY, MKDIRS,
|
|
|
- SET_TIMES, SET_PERMISSION, SET_OWNER, SET_REPLICATION, CHECKSUM, CONTENT_SUMMARY,
|
|
|
- FILEACLS, DIRACLS, SET_XATTR, GET_XATTRS, REMOVE_XATTR, LIST_XATTRS
|
|
|
+ GET, OPEN, CREATE, APPEND, TRUNCATE, CONCAT, RENAME, DELETE, LIST_STATUS,
|
|
|
+ WORKING_DIRECTORY, MKDIRS, SET_TIMES, SET_PERMISSION, SET_OWNER,
|
|
|
+ SET_REPLICATION, CHECKSUM, CONTENT_SUMMARY, FILEACLS, DIRACLS, SET_XATTR,
|
|
|
+ GET_XATTRS, REMOVE_XATTR, LIST_XATTRS
|
|
|
}
|
|
|
|
|
|
private void operation(Operation op) throws Exception {
|
|
@@ -803,8 +831,12 @@ System.out.println("#");
|
|
|
case APPEND:
|
|
|
testAppend();
|
|
|
break;
|
|
|
+ case TRUNCATE:
|
|
|
+ testTruncate();
|
|
|
+ break;
|
|
|
case CONCAT:
|
|
|
testConcat();
|
|
|
+ break;
|
|
|
case RENAME:
|
|
|
testRename();
|
|
|
break;
|