HADOOP-14864. FSDataInputStream#unbuffer UOE should include stream class name. Contributed by Bharat Viswanadham.

(cherry picked from commit 7ee02d1065)
This commit is contained in:
John Zhuge 2017-09-14 11:29:34 -07:00
parent b93a23f411
commit eaef8446f6
2 changed files with 23 additions and 2 deletions

View File

@ -230,8 +230,8 @@ public class FSDataInputStream extends DataInputStream
try {
((CanUnbuffer)in).unbuffer();
} catch (ClassCastException e) {
throw new UnsupportedOperationException("this stream does not " +
"support unbuffering.");
throw new UnsupportedOperationException("this stream " +
in.getClass().getName() + " does not " + "support unbuffering.");
}
}

View File

@ -27,12 +27,18 @@ import org.apache.hadoop.hdfs.PeerCache;
import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys;
import org.apache.hadoop.io.IOUtils;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mockito;
public class TestUnbuffer {
private static final Log LOG =
LogFactory.getLog(TestUnbuffer.class.getName());
@Rule
public ExpectedException exception = ExpectedException.none();
/**
* Test that calling Unbuffer closes sockets.
*/
@ -123,4 +129,19 @@ public class TestUnbuffer {
}
}
}
/**
* Test unbuffer method which throws an Exception with class name included.
*/
@Test
public void testUnbufferException() {
FSInputStream in = Mockito.mock(FSInputStream.class);
FSDataInputStream fs = new FSDataInputStream(in);
exception.expect(UnsupportedOperationException.class);
exception.expectMessage("this stream " + in.getClass().getName()
+ " does not support unbuffering");
fs.unbuffer();
}
}