From 566f3d591729afdc5e8504a48dda2b5bf67f37f8 Mon Sep 17 00:00:00 2001 From: Eli Collins Date: Tue, 21 Aug 2012 00:01:43 +0000 Subject: [PATCH] HDFS-3707. TestFSInputChecker: improper use of skip. Contributed by Colin Patrick McCabe git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1375338 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 ++ .../hadoop/hdfs/TestFSInputChecker.java | 32 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index b254740bd5b..25687eab074 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -479,6 +479,9 @@ Release 2.0.1-alpha - UNRELEASED HDFS-3816. Invalidate work percentage default value should be 0.32f instead of 32. (Jing Zhao via suresh) + HDFS-3707. TestFSInputChecker: improper use of skip. + (Colin Patrick McCabe via eli) + BREAKDOWN OF HDFS-3042 SUBTASKS HDFS-2185. HDFS portion of ZK-based FailoverController (todd) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFSInputChecker.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFSInputChecker.java index 1faff65727a..2f2c9a4fd6e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFSInputChecker.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestFSInputChecker.java @@ -20,7 +20,9 @@ package org.apache.hadoop.hdfs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import java.io.EOFException; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -159,8 +161,8 @@ public class TestFSInputChecker { private void testSkip1(int skippedBytes) throws Exception { long oldPos = stm.getPos(); - long nSkipped = stm.skip(skippedBytes); - long newPos = oldPos+nSkipped; + IOUtils.skipFully(stm, skippedBytes); + long newPos = oldPos + skippedBytes; assertEquals(stm.getPos(), newPos); stm.readFully(actual); checkAndEraseData(actual, (int)newPos, expected, "Read Sanity Test"); @@ -193,13 +195,31 @@ public class TestFSInputChecker { testSkip1(FILE_SIZE-1); stm.seek(0); - assertEquals(stm.skip(FILE_SIZE), FILE_SIZE); - assertEquals(stm.skip(10), 0); + IOUtils.skipFully(stm, FILE_SIZE); + try { + IOUtils.skipFully(stm, 10); + fail("expected to get a PrematureEOFException"); + } catch (EOFException e) { + assertEquals(e.getMessage(), "Premature EOF from inputStream " + + "after skipping 0 byte(s)."); + } stm.seek(0); - assertEquals(stm.skip(FILE_SIZE+10), FILE_SIZE); + try { + IOUtils.skipFully(stm, FILE_SIZE + 10); + fail("expected to get a PrematureEOFException"); + } catch (EOFException e) { + assertEquals(e.getMessage(), "Premature EOF from inputStream " + + "after skipping " + FILE_SIZE + " byte(s)."); + } stm.seek(10); - assertEquals(stm.skip(FILE_SIZE), FILE_SIZE-10); + try { + IOUtils.skipFully(stm, FILE_SIZE); + fail("expected to get a PrematureEOFException"); + } catch (EOFException e) { + assertEquals(e.getMessage(), "Premature EOF from inputStream " + + "after skipping " + (FILE_SIZE - 10) + " byte(s)."); + } } private void cleanupFile(FileSystem fileSys, Path name) throws IOException {