From a628ab0863111c65e5fe5526176403177f63e698 Mon Sep 17 00:00:00 2001 From: Kihwal Lee Date: Wed, 5 Feb 2020 13:16:34 -0600 Subject: [PATCH] HADOOP-15787. TestIPC.testRTEDuringConnectionSetup fails with jdk8u242. Contributed by Zsolt Venczel. (cherry picked from commit a463cf75a0ab1f0dbb8cfa16c39a4e698bc1a625) (cherry picked from commit 0b19c8e0860bf558d995951ab9ac4cd8a1674759) --- .../java/org/apache/hadoop/ipc/TestIPC.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java index f275f9706df..830a8268ab3 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java @@ -23,7 +23,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; @@ -641,6 +640,16 @@ public class TestIPC { } } + /** + * Mock socket class to help inject an exception for HADOOP-7428. + */ + static class MockSocket extends Socket { + @Override + public synchronized void setSoTimeout(int timeout) { + throw new RuntimeException("Injected fault"); + } + } + /** * Test that, if a RuntimeException is thrown after creating a socket * but before successfully connecting to the IPC server, that the @@ -654,11 +663,8 @@ public class TestIPC { SocketFactory spyFactory = spy(NetUtils.getDefaultSocketFactory(conf)); Mockito.doAnswer(new Answer() { @Override - public Socket answer(InvocationOnMock invocation) throws Throwable { - Socket s = spy((Socket)invocation.callRealMethod()); - doThrow(new RuntimeException("Injected fault")).when(s) - .setSoTimeout(anyInt()); - return s; + public Socket answer(InvocationOnMock invocation) { + return new MockSocket(); } }).when(spyFactory).createSocket();