source: proiecte/HadoopJUnit/hadoop-0.20.1/src/test/org/apache/hadoop/mapred/TestLimitTasksPerJobTaskScheduler.java @ 120

Last change on this file since 120 was 120, checked in by (none), 14 years ago

Added the mail files for the Hadoop JUNit Project

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1/**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18package org.apache.hadoop.mapred;
19
20import java.io.IOException;
21
22import junit.framework.TestCase;
23
24import org.apache.hadoop.mapred.TestJobQueueTaskScheduler.FakeTaskTrackerManager;
25
26public class TestLimitTasksPerJobTaskScheduler extends TestCase {
27  protected JobConf jobConf;
28  protected TaskScheduler scheduler;
29  private FakeTaskTrackerManager taskTrackerManager;
30
31  @Override
32  protected void setUp() throws Exception {
33    TestJobQueueTaskScheduler.resetCounters();
34    jobConf = new JobConf();
35    jobConf.setNumMapTasks(10);
36    jobConf.setNumReduceTasks(10);
37    taskTrackerManager = new FakeTaskTrackerManager();
38    scheduler = createTaskScheduler();
39    scheduler.setConf(jobConf);
40    scheduler.setTaskTrackerManager(taskTrackerManager);
41    scheduler.start();
42  }
43 
44  @Override
45  protected void tearDown() throws Exception {
46    if (scheduler != null) {
47      scheduler.terminate();
48    }
49  }
50
51  protected TaskScheduler createTaskScheduler() {
52    return new LimitTasksPerJobTaskScheduler();
53  }
54
55  public void testMaxRunningTasksPerJob() throws IOException {
56    jobConf.setLong(LimitTasksPerJobTaskScheduler.MAX_TASKS_PER_JOB_PROPERTY,
57        4L);
58    scheduler.setConf(jobConf);
59    TestJobQueueTaskScheduler.submitJobs(taskTrackerManager, jobConf, 
60                                         2, JobStatus.RUNNING);
61   
62    // First 4 slots are filled with job 1, second 4 with job 2
63    TestJobQueueTaskScheduler.checkAssignment(
64        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
65        new String[] {"attempt_test_0001_m_000001_0 on tt1"});
66    TestJobQueueTaskScheduler.checkAssignment(
67        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
68        new String[] {"attempt_test_0001_m_000002_0 on tt1"});
69    TestJobQueueTaskScheduler.checkAssignment(
70        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
71        new String[] {"attempt_test_0001_r_000003_0 on tt1"});
72    TestJobQueueTaskScheduler.checkAssignment(
73        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
74        new String[] {"attempt_test_0001_r_000004_0 on tt1"});
75    TestJobQueueTaskScheduler.checkAssignment(
76        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
77        new String[] {"attempt_test_0002_m_000005_0 on tt2"});
78    TestJobQueueTaskScheduler.checkAssignment(
79        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
80        new String[] {"attempt_test_0002_m_000006_0 on tt2"});
81    TestJobQueueTaskScheduler.checkAssignment(
82        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
83        new String[] {"attempt_test_0002_r_000007_0 on tt2"});
84    TestJobQueueTaskScheduler.checkAssignment(
85        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
86        new String[] {"attempt_test_0002_r_000008_0 on tt2"});
87  }
88 
89  public void testMaxRunningTasksPerJobWithInterleavedTrackers()
90      throws IOException {
91    jobConf.setLong(LimitTasksPerJobTaskScheduler.MAX_TASKS_PER_JOB_PROPERTY,
92        4L);
93    scheduler.setConf(jobConf);
94    TestJobQueueTaskScheduler.submitJobs(taskTrackerManager, jobConf, 2, JobStatus.RUNNING);
95   
96    // First 4 slots are filled with job 1, second 4 with job 2
97    // even when tracker requests are interleaved
98    TestJobQueueTaskScheduler.checkAssignment(
99        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
100        new String[] {"attempt_test_0001_m_000001_0 on tt1"});
101    TestJobQueueTaskScheduler.checkAssignment(
102        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
103        new String[] {"attempt_test_0001_m_000002_0 on tt1"});
104    TestJobQueueTaskScheduler.checkAssignment(
105        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
106        new String[] {"attempt_test_0001_m_000003_0 on tt2"});
107    TestJobQueueTaskScheduler.checkAssignment(
108        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
109        new String[] {"attempt_test_0001_r_000004_0 on tt1"});
110    TestJobQueueTaskScheduler.checkAssignment(
111        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
112        new String[] {"attempt_test_0002_m_000005_0 on tt2"});
113    TestJobQueueTaskScheduler.checkAssignment(
114        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt1"), 
115        new String[] {"attempt_test_0002_r_000006_0 on tt1"});
116    TestJobQueueTaskScheduler.checkAssignment(
117        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
118        new String[] {"attempt_test_0002_r_000007_0 on tt2"});
119    TestJobQueueTaskScheduler.checkAssignment(
120        scheduler, TestJobQueueTaskScheduler.tracker(taskTrackerManager, "tt2"), 
121        new String[] {"attempt_test_0002_r_000008_0 on tt2"});
122  }
123 
124}
Note: See TracBrowser for help on using the repository browser.