From a2ef30cb2f4ebf3ec67cf9ff2900828122469036 Mon Sep 17 00:00:00 2001 From: Robert Kanter Date: Tue, 12 Jul 2016 15:51:18 -0700 Subject: [PATCH] MAPREDUCE-6625. TestCLI#testGetJob fails occasionally (haibochen via rkanter) (cherry picked from commit ad256beb50e8851d5e6e5e743b00e819e75e3549) --- .../hadoop/mapreduce/tools/TestCLI.java | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java index 112f5855b01..985eea3f652 100644 --- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java +++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapreduce/tools/TestCLI.java @@ -31,9 +31,10 @@ import org.apache.hadoop.mapreduce.JobPriority; import org.apache.hadoop.mapreduce.JobStatus; import org.apache.hadoop.mapreduce.JobStatus.State; -import org.apache.hadoop.util.Time; import org.junit.Assert; import org.junit.Test; + +import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mockito.Mockito.times; @@ -162,25 +163,33 @@ private Job mockJob(Cluster mockCluster, String jobId, State jobState) } @Test - public void testGetJob() throws Exception { + public void testGetJobWithoutRetry() throws Exception { Configuration conf = new Configuration(); - long sleepTime = 100; - conf.setLong(MRJobConfig.MR_CLIENT_JOB_RETRY_INTERVAL, sleepTime); - Cluster mockCluster = mock(Cluster.class); - JobID jobId1 = JobID.forName("job_1234654654_001"); - when(mockCluster.getJob(jobId1)).thenReturn(null); + conf.setInt(MRJobConfig.MR_CLIENT_JOB_MAX_RETRIES, 0); - for (int i = 0; i < 2; ++i) { - conf.setInt(MRJobConfig.MR_CLIENT_JOB_MAX_RETRIES, i); - CLI cli = spy(new CLI(conf)); - cli.cluster = mockCluster; - doReturn(mockCluster).when(cli).createCluster(); - long start = Time.monotonicNow(); - cli.getJob(jobId1); - long end = Time.monotonicNow(); - Assert.assertTrue(end - start > (i * sleepTime)); - Assert.assertTrue(end - start < ((i + 1) * sleepTime)); - } + final Cluster mockCluster = mock(Cluster.class); + when(mockCluster.getJob(any(JobID.class))).thenReturn(null); + CLI cli = new CLI(conf); + cli.cluster = mockCluster; + + Job job = cli.getJob(JobID.forName("job_1234654654_001")); + Assert.assertTrue("job is not null", job == null); + } + + @Test + public void testGetJobWithRetry() throws Exception { + Configuration conf = new Configuration(); + conf.setInt(MRJobConfig.MR_CLIENT_JOB_MAX_RETRIES, 1); + + final Cluster mockCluster = mock(Cluster.class); + final Job mockJob = Job.getInstance(conf); + when(mockCluster.getJob(any(JobID.class))).thenReturn( + null).thenReturn(mockJob); + CLI cli = new CLI(conf); + cli.cluster = mockCluster; + + Job job = cli.getJob(JobID.forName("job_1234654654_001")); + Assert.assertTrue("job is null", job != null); } @Test