HDFS-14101. Fixing underflow error in test. Contributed by Zsolt Venczel.

This commit is contained in:
Sean Mackrory 2018-12-07 17:18:20 -07:00
parent ac578c0e82
commit 80e59e7876

View File

@ -80,10 +80,13 @@ public void testListCorruptFilesCorruptedBlock() throws Exception {
cluster = new MiniDFSCluster.Builder(conf).build();
FileSystem fs = cluster.getFileSystem();
// Files are corrupted with 2 bytes before the end of the file,
// so that's the minimum length.
final int corruptionLength = 2;
// create two files with one block each
DFSTestUtil util = new DFSTestUtil.Builder().
setName("testCorruptFilesCorruptedBlock").setNumFiles(2).
setMaxLevels(1).setMaxSize(512).build();
setMaxLevels(1).setMinSize(corruptionLength).setMaxSize(512).build();
util.createFiles(fs, "/srcdat10");
// fetch bad file list from namenode. There should be none.
@ -104,14 +107,13 @@ public void testListCorruptFilesCorruptedBlock() throws Exception {
File metaFile = metaFiles.get(0);
RandomAccessFile file = new RandomAccessFile(metaFile, "rw");
FileChannel channel = file.getChannel();
long position = channel.size() - 2;
int length = 2;
byte[] buffer = new byte[length];
long position = channel.size() - corruptionLength;
byte[] buffer = new byte[corruptionLength];
new Random(13L).nextBytes(buffer);
channel.write(ByteBuffer.wrap(buffer), position);
file.close();
LOG.info("Deliberately corrupting file " + metaFile.getName() +
" at offset " + position + " length " + length);
" at offset " + position + " length " + corruptionLength);
// read all files to trigger detection of corrupted replica
try {
@ -160,10 +162,13 @@ public void testListCorruptFileBlocksInSafeMode() throws Exception {
HdfsConstants.SafeModeAction.SAFEMODE_LEAVE, false);
FileSystem fs = cluster.getFileSystem();
// Files are corrupted with 2 bytes before the end of the file,
// so that's the minimum length.
final int corruptionLength = 2;
// create two files with one block each
DFSTestUtil util = new DFSTestUtil.Builder().
setName("testListCorruptFileBlocksInSafeMode").setNumFiles(2).
setMaxLevels(1).setMaxSize(512).build();
setMaxLevels(1).setMinSize(corruptionLength).setMaxSize(512).build();
util.createFiles(fs, "/srcdat10");
// fetch bad file list from namenode. There should be none.
@ -183,14 +188,13 @@ public void testListCorruptFileBlocksInSafeMode() throws Exception {
File metaFile = metaFiles.get(0);
RandomAccessFile file = new RandomAccessFile(metaFile, "rw");
FileChannel channel = file.getChannel();
long position = channel.size() - 2;
int length = 2;
byte[] buffer = new byte[length];
long position = channel.size() - corruptionLength;
byte[] buffer = new byte[corruptionLength];
new Random(13L).nextBytes(buffer);
channel.write(ByteBuffer.wrap(buffer), position);
file.close();
LOG.info("Deliberately corrupting file " + metaFile.getName() +
" at offset " + position + " length " + length);
" at offset " + position + " length " + corruptionLength);
// read all files to trigger detection of corrupted replica
try {