use of org.apache.hadoop.mapreduce.v2.app.MRAppMaster.RunningAppContext in project hadoop by apache.
the class TestStagingCleanup method testDeletionofStagingOnUnregistrationFailure.
@SuppressWarnings("resource")
private void testDeletionofStagingOnUnregistrationFailure(int maxAttempts, boolean shouldHaveDeleted) throws IOException {
conf.set(MRJobConfig.MAPREDUCE_JOB_DIR, stagingJobDir);
fs = mock(FileSystem.class);
when(fs.delete(any(Path.class), anyBoolean())).thenReturn(true);
//Staging Dir exists
String user = UserGroupInformation.getCurrentUser().getShortUserName();
Path stagingDir = MRApps.getStagingAreaDir(conf, user);
when(fs.exists(stagingDir)).thenReturn(true);
ApplicationId appId = ApplicationId.newInstance(0, 1);
ApplicationAttemptId attemptId = ApplicationAttemptId.newInstance(appId, 1);
JobId jobid = recordFactory.newRecordInstance(JobId.class);
jobid.setAppId(appId);
TestMRApp appMaster = new TestMRApp(attemptId, null, JobStateInternal.RUNNING, maxAttempts);
appMaster.crushUnregistration = true;
appMaster.init(conf);
appMaster.start();
appMaster.shutDownJob();
((RunningAppContext) appMaster.getContext()).resetIsLastAMRetry();
if (shouldHaveDeleted) {
Assert.assertEquals(new Boolean(true), appMaster.isLastAMRetry());
verify(fs).delete(stagingJobPath, true);
} else {
Assert.assertEquals(new Boolean(false), appMaster.isLastAMRetry());
verify(fs, never()).delete(stagingJobPath, true);
}
}
use of org.apache.hadoop.mapreduce.v2.app.MRAppMaster.RunningAppContext in project hadoop by apache.
the class TestKillAMPreemptionPolicy method testKillAMPreemptPolicy.
@SuppressWarnings("unchecked")
@Test
public void testKillAMPreemptPolicy() {
ApplicationId appId = ApplicationId.newInstance(123456789, 1);
ContainerId container = ContainerId.newContainerId(ApplicationAttemptId.newInstance(appId, 1), 1);
AMPreemptionPolicy.Context mPctxt = mock(AMPreemptionPolicy.Context.class);
when(mPctxt.getTaskAttempt(any(ContainerId.class))).thenReturn(MRBuilderUtils.newTaskAttemptId(MRBuilderUtils.newTaskId(MRBuilderUtils.newJobId(appId, 1), 1, TaskType.MAP), 0));
List<Container> p = new ArrayList<Container>();
p.add(Container.newInstance(container, null, null, null, null, null));
when(mPctxt.getContainers(any(TaskType.class))).thenReturn(p);
KillAMPreemptionPolicy policy = new KillAMPreemptionPolicy();
// strictContract is null & contract is null
RunningAppContext mActxt = getRunningAppContext();
policy.init(mActxt);
PreemptionMessage pM = getPreemptionMessage(false, false, container);
policy.preempt(mPctxt, pM);
verify(mActxt.getEventHandler(), times(0)).handle(any(TaskAttemptEvent.class));
verify(mActxt.getEventHandler(), times(0)).handle(any(JobCounterUpdateEvent.class));
// strictContract is not null & contract is null
mActxt = getRunningAppContext();
policy.init(mActxt);
pM = getPreemptionMessage(true, false, container);
policy.preempt(mPctxt, pM);
verify(mActxt.getEventHandler(), times(2)).handle(any(TaskAttemptEvent.class));
verify(mActxt.getEventHandler(), times(2)).handle(any(JobCounterUpdateEvent.class));
// strictContract is null & contract is not null
mActxt = getRunningAppContext();
policy.init(mActxt);
pM = getPreemptionMessage(false, true, container);
policy.preempt(mPctxt, pM);
verify(mActxt.getEventHandler(), times(2)).handle(any(TaskAttemptEvent.class));
verify(mActxt.getEventHandler(), times(2)).handle(any(JobCounterUpdateEvent.class));
// strictContract is not null & contract is not null
mActxt = getRunningAppContext();
policy.init(mActxt);
pM = getPreemptionMessage(true, true, container);
policy.preempt(mPctxt, pM);
verify(mActxt.getEventHandler(), times(4)).handle(any(TaskAttemptEvent.class));
verify(mActxt.getEventHandler(), times(4)).handle(any(JobCounterUpdateEvent.class));
}
Aggregations