From c40f0f1eb34df64449472f698d1d68355f109e9b Mon Sep 17 00:00:00 2001 From: Akira Ajisaka Date: Fri, 23 Oct 2020 04:34:49 +0900 Subject: [PATCH] MAPREDUCE-7303. Fix TestJobResourceUploader failures after HADOOP-16878. Contributed by Peter Bacsko. (cherry picked from commit 7bc305db5d5a50127dd7780534d6d7d0b7c683d1) --- .../hadoop/mapreduce/TestJobResourceUploader.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/TestJobResourceUploader.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/TestJobResourceUploader.java index bbfe2fb03c..c49d77108b 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/TestJobResourceUploader.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/TestJobResourceUploader.java @@ -399,6 +399,7 @@ private void testOriginalPathWithTrailingSlash(Path path, Path expectedRemotePath) throws IOException, URISyntaxException { Path dstPath = new Path("hdfs://localhost:1234/home/hadoop/"); DistributedFileSystem fs = mock(DistributedFileSystem.class); + when(fs.makeQualified(any(Path.class))).thenReturn(dstPath); // make sure that FileUtils.copy() doesn't try to copy anything when(fs.mkdirs(any(Path.class))).thenReturn(false); when(fs.getUri()).thenReturn(dstPath.toUri()); @@ -407,6 +408,7 @@ private void testOriginalPathWithTrailingSlash(Path path, JobConf jConf = new JobConf(); Path originalPath = spy(path); FileSystem localFs = mock(FileSystem.class); + when(localFs.makeQualified(any(Path.class))).thenReturn(path); FileStatus fileStatus = mock(FileStatus.class); when(localFs.getFileStatus(any(Path.class))).thenReturn(fileStatus); when(fileStatus.isDirectory()).thenReturn(true); @@ -420,8 +422,14 @@ private void testOriginalPathWithTrailingSlash(Path path, originalPath, jConf, (short) 1); ArgumentCaptor pathCaptor = ArgumentCaptor.forClass(Path.class); - verify(fs).makeQualified(pathCaptor.capture()); - Assert.assertEquals("Path", expectedRemotePath, pathCaptor.getValue()); + verify(fs, times(2)).makeQualified(pathCaptor.capture()); + List paths = pathCaptor.getAllValues(); + // first call is invoked on a path which was created by the test, + // but the second one is created in copyRemoteFiles() + Assert.assertEquals("Expected remote path", + expectedRemotePath, paths.get(0)); + Assert.assertEquals("Expected remote path", + expectedRemotePath, paths.get(1)); } private void testErasureCodingSetting(boolean defaultBehavior)