|
17 | 17 | */ |
18 | 18 | package org.apache.hadoop.mapred; |
19 | 19 |
|
20 | | -import java.util.function.Supplier; |
21 | | -import org.apache.hadoop.mapred.Counters.Counter; |
22 | | -import org.apache.hadoop.mapreduce.checkpoint.EnumCounter; |
23 | | - |
24 | 20 | import java.io.IOException; |
25 | 21 | import java.util.ArrayList; |
26 | 22 | import java.util.Arrays; |
27 | 23 | import java.util.List; |
28 | 24 | import java.util.concurrent.ConcurrentMap; |
29 | 25 | import java.util.concurrent.atomic.AtomicReference; |
| 26 | +import java.util.function.Supplier; |
| 27 | + |
| 28 | +import org.junit.After; |
| 29 | +import org.junit.Test; |
| 30 | +import org.junit.runner.RunWith; |
| 31 | +import org.mockito.ArgumentCaptor; |
| 32 | +import org.mockito.Captor; |
| 33 | +import org.mockito.Mock; |
| 34 | +import org.mockito.junit.MockitoJUnitRunner; |
30 | 35 |
|
31 | 36 | import org.apache.hadoop.conf.Configuration; |
32 | 37 | import org.apache.hadoop.fs.Path; |
| 38 | +import org.apache.hadoop.mapred.Counters.Counter; |
33 | 39 | import org.apache.hadoop.mapreduce.MRJobConfig; |
34 | 40 | import org.apache.hadoop.mapreduce.TaskType; |
35 | 41 | import org.apache.hadoop.mapreduce.TypeConverter; |
36 | 42 | import org.apache.hadoop.mapreduce.checkpoint.CheckpointID; |
| 43 | +import org.apache.hadoop.mapreduce.checkpoint.EnumCounter; |
37 | 44 | import org.apache.hadoop.mapreduce.checkpoint.FSCheckpointID; |
38 | 45 | import org.apache.hadoop.mapreduce.checkpoint.TaskCheckpointID; |
39 | 46 | import org.apache.hadoop.mapreduce.security.token.JobTokenSecretManager; |
|
48 | 55 | import org.apache.hadoop.mapreduce.v2.app.job.Job; |
49 | 56 | import org.apache.hadoop.mapreduce.v2.app.job.event.TaskAttemptStatusUpdateEvent; |
50 | 57 | import org.apache.hadoop.mapreduce.v2.app.job.event.TaskAttemptStatusUpdateEvent.TaskAttemptStatus; |
| 58 | +import org.apache.hadoop.mapreduce.v2.app.rm.RMHeartbeatHandler; |
51 | 59 | import org.apache.hadoop.mapreduce.v2.app.rm.preemption.AMPreemptionPolicy; |
52 | 60 | import org.apache.hadoop.mapreduce.v2.app.rm.preemption.CheckpointAMPreemptionPolicy; |
53 | | -import org.apache.hadoop.mapreduce.v2.app.rm.RMHeartbeatHandler; |
54 | 61 | import org.apache.hadoop.mapreduce.v2.util.MRBuilderUtils; |
55 | 62 | import org.apache.hadoop.test.GenericTestUtils; |
56 | 63 | import org.apache.hadoop.yarn.event.Dispatcher; |
|
60 | 67 | import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; |
61 | 68 | import org.apache.hadoop.yarn.util.ControlledClock; |
62 | 69 | import org.apache.hadoop.yarn.util.SystemClock; |
63 | | -import org.junit.After; |
64 | | -import org.junit.Test; |
65 | | -import org.junit.runner.RunWith; |
66 | | -import org.mockito.ArgumentCaptor; |
67 | | -import org.mockito.Captor; |
68 | | -import org.mockito.Mock; |
69 | | -import org.mockito.junit.MockitoJUnitRunner; |
70 | 70 |
|
71 | 71 | import static org.assertj.core.api.Assertions.assertThat; |
72 | | -import static org.junit.Assert.*; |
73 | | -import static org.mockito.Mockito.*; |
| 72 | +import static org.junit.Assert.assertEquals; |
| 73 | +import static org.junit.Assert.assertFalse; |
| 74 | +import static org.junit.Assert.assertNotNull; |
| 75 | +import static org.junit.Assert.assertNull; |
| 76 | +import static org.junit.Assert.assertTrue; |
| 77 | +import static org.junit.Assert.fail; |
| 78 | +import static org.mockito.Mockito.any; |
| 79 | +import static org.mockito.Mockito.doReturn; |
| 80 | +import static org.mockito.Mockito.eq; |
| 81 | +import static org.mockito.Mockito.mock; |
| 82 | +import static org.mockito.Mockito.never; |
| 83 | +import static org.mockito.Mockito.times; |
| 84 | +import static org.mockito.Mockito.verify; |
| 85 | +import static org.mockito.Mockito.when; |
74 | 86 |
|
75 | 87 | /** |
76 | 88 | * Tests the behavior of TaskAttemptListenerImpl. |
@@ -417,6 +429,23 @@ public void testStatusUpdateProgress() |
417 | 429 | verify(hbHandler).progressing(eq(attemptId)); |
418 | 430 | } |
419 | 431 |
|
| 432 | + @Test |
| 433 | + public void testPingUpdateProgress() throws IOException, InterruptedException { |
| 434 | + configureMocks(); |
| 435 | + Configuration conf = new Configuration(); |
| 436 | + conf.setBoolean(MRJobConfig.MR_TASK_ENABLE_PING_FOR_LIVELINESS_CHECK, true); |
| 437 | + listener.init(conf); |
| 438 | + listener.start(); |
| 439 | + listener.registerPendingTask(task, wid); |
| 440 | + listener.registerLaunchedTask(attemptId, wid); |
| 441 | + verify(hbHandler).register(attemptId); |
| 442 | + |
| 443 | + // make sure a ping does report progress |
| 444 | + AMFeedback feedback = listener.statusUpdate(attemptID, null); |
| 445 | + assertTrue(feedback.getTaskFound()); |
| 446 | + verify(hbHandler, times(1)).progressing(eq(attemptId)); |
| 447 | + } |
| 448 | + |
420 | 449 | @Test |
421 | 450 | public void testSingleStatusUpdate() |
422 | 451 | throws IOException, InterruptedException { |
|
0 commit comments