Search in sources :

Example 1 with KillAMPreemptionPolicy

use of org.apache.hadoop.mapreduce.v2.app.rm.preemption.KillAMPreemptionPolicy 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));
}
Also used : PreemptionMessage(org.apache.hadoop.yarn.api.records.PreemptionMessage) RunningAppContext(org.apache.hadoop.mapreduce.v2.app.MRAppMaster.RunningAppContext) ArrayList(java.util.ArrayList) KillAMPreemptionPolicy(org.apache.hadoop.mapreduce.v2.app.rm.preemption.KillAMPreemptionPolicy) TaskAttemptEvent(org.apache.hadoop.mapreduce.v2.app.job.event.TaskAttemptEvent) JobCounterUpdateEvent(org.apache.hadoop.mapreduce.v2.app.job.event.JobCounterUpdateEvent) PreemptionContainer(org.apache.hadoop.yarn.api.records.PreemptionContainer) Container(org.apache.hadoop.yarn.api.records.Container) ContainerId(org.apache.hadoop.yarn.api.records.ContainerId) TaskType(org.apache.hadoop.mapreduce.v2.api.records.TaskType) ApplicationId(org.apache.hadoop.yarn.api.records.ApplicationId) KillAMPreemptionPolicy(org.apache.hadoop.mapreduce.v2.app.rm.preemption.KillAMPreemptionPolicy) AMPreemptionPolicy(org.apache.hadoop.mapreduce.v2.app.rm.preemption.AMPreemptionPolicy) Test(org.junit.Test)

Aggregations

ArrayList (java.util.ArrayList)1 TaskType (org.apache.hadoop.mapreduce.v2.api.records.TaskType)1 RunningAppContext (org.apache.hadoop.mapreduce.v2.app.MRAppMaster.RunningAppContext)1 JobCounterUpdateEvent (org.apache.hadoop.mapreduce.v2.app.job.event.JobCounterUpdateEvent)1 TaskAttemptEvent (org.apache.hadoop.mapreduce.v2.app.job.event.TaskAttemptEvent)1 AMPreemptionPolicy (org.apache.hadoop.mapreduce.v2.app.rm.preemption.AMPreemptionPolicy)1 KillAMPreemptionPolicy (org.apache.hadoop.mapreduce.v2.app.rm.preemption.KillAMPreemptionPolicy)1 ApplicationId (org.apache.hadoop.yarn.api.records.ApplicationId)1 Container (org.apache.hadoop.yarn.api.records.Container)1 ContainerId (org.apache.hadoop.yarn.api.records.ContainerId)1 PreemptionContainer (org.apache.hadoop.yarn.api.records.PreemptionContainer)1 PreemptionMessage (org.apache.hadoop.yarn.api.records.PreemptionMessage)1 Test (org.junit.Test)1