HADOOP-17310. Touch command with -c option is broken. (#2393). Contributed by Ayush Saxena.
This commit is contained in:
parent
0e37da334b
commit
27944772d3
|
@ -138,7 +138,7 @@ public class TouchCommands extends FsCommand {
|
|||
|
||||
CommandFormat cf = new CommandFormat(1, Integer.MAX_VALUE,
|
||||
OPTION_USE_TIMESTAMP, OPTION_CHANGE_ONLY_ACCESS_TIME,
|
||||
OPTION_CHANGE_ONLY_MODIFICATION_TIME);
|
||||
OPTION_CHANGE_ONLY_MODIFICATION_TIME, OPTION_DO_NOT_CREATE_FILE);
|
||||
cf.parse(args);
|
||||
this.changeModTime = cf.getOpt(OPTION_CHANGE_ONLY_MODIFICATION_TIME);
|
||||
this.changeAccessTime = cf.getOpt(OPTION_CHANGE_ONLY_ACCESS_TIME);
|
||||
|
|
|
@ -101,7 +101,7 @@ public class TestFsShellTouch {
|
|||
{
|
||||
assertThat(
|
||||
"Expected successful touch on a non-existent file with -c option",
|
||||
shellRun("-touch", "-c", newFileName), is(not(0)));
|
||||
shellRun("-touch", "-c", newFileName), is(0));
|
||||
assertThat(lfs.exists(newFile), is(false));
|
||||
}
|
||||
|
||||
|
@ -140,7 +140,7 @@ public class TestFsShellTouch {
|
|||
Date dateObj = parseTimestamp(strTime);
|
||||
|
||||
assertThat(
|
||||
"Expected successful touch with a specified modificatiom time",
|
||||
"Expected successful touch with a specified modification time",
|
||||
shellRun("-touch", "-m", "-t", strTime, newFileName), is(0));
|
||||
// Verify if modification time is recorded correctly (and access time
|
||||
// remains unchanged).
|
||||
|
@ -179,6 +179,16 @@ public class TestFsShellTouch {
|
|||
assertThat("Expected failed touch with a missing timestamp",
|
||||
shellRun("-touch", "-t", newFileName), is(not(0)));
|
||||
}
|
||||
|
||||
// Verify -c option when file exists.
|
||||
String strTime = formatTimestamp(System.currentTimeMillis());
|
||||
Date dateObj = parseTimestamp(strTime);
|
||||
assertThat(
|
||||
"Expected successful touch on a non-existent file with -c option",
|
||||
shellRun("-touch", "-c", "-t", strTime, newFileName), is(0));
|
||||
FileStatus fileStatus = lfs.getFileStatus(newFile);
|
||||
assertThat(fileStatus.getAccessTime(), is(dateObj.getTime()));
|
||||
assertThat(fileStatus.getModificationTime(), is(dateObj.getTime()));
|
||||
}
|
||||
|
||||
private String formatTimestamp(long timeInMillis) {
|
||||
|
|
Loading…
Reference in New Issue