use of org.apache.tez.dag.app.MockDAGAppMaster.MockContainerLauncher in project tez by apache.
the class TestMockDAGAppMaster method testBasicCounterMemory.
@Ignore
@Test(timeout = 60000)
public void testBasicCounterMemory() throws Exception {
Logger.getRootLogger().setLevel(Level.WARN);
TezConfiguration tezconf = new TezConfiguration(defaultConf);
MockTezClient tezClient = new MockTezClient("testMockAM", tezconf, true, null, null, null, null, false, false);
tezClient.start();
final String vAName = "A";
DAG dag = DAG.create("testBasicCounterMemory");
Vertex vA = Vertex.create(vAName, ProcessorDescriptor.create("Proc.class"), 10000);
dag.addVertex(vA);
MockDAGAppMaster mockApp = tezClient.getLocalClient().getMockApp();
MockContainerLauncher mockLauncher = mockApp.getContainerLauncher();
mockLauncher.startScheduling(false);
mockApp.countersDelegate = new CountersDelegate() {
@Override
public TezCounters getCounters(TaskSpec taskSpec) {
TezCounters counters = new TezCounters();
final String longName = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
final String shortName = "abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < 6; ++i) {
for (int j = 0; j < 15; ++j) {
counters.findCounter((i + longName), (i + (shortName))).increment(1);
}
}
return counters;
}
};
mockApp.doSleep = false;
DAGClient dagClient = tezClient.submitDAG(dag);
mockLauncher.waitTillContainersLaunched();
DAGImpl dagImpl = (DAGImpl) mockApp.getContext().getCurrentDAG();
mockLauncher.startScheduling(true);
DAGStatus status = dagClient.waitForCompletion();
Assert.assertEquals(DAGStatus.State.SUCCEEDED, status.getState());
TezCounters counters = dagImpl.getAllCounters();
Assert.assertNotNull(counters);
checkMemory(dag.getName(), mockApp);
tezClient.stop();
}
use of org.apache.tez.dag.app.MockDAGAppMaster.MockContainerLauncher in project tez by apache.
the class TestMockDAGAppMaster method testConcurrencyLimit.
@Test(timeout = 100000)
public void testConcurrencyLimit() throws Exception {
// the test relies on local mode behavior of launching a new container per task.
// so task concurrency == container concurrency
TezConfiguration tezconf = new TezConfiguration(defaultConf);
final int concurrencyLimit = 5;
MockTezClient tezClient = new MockTezClient("testMockAM", tezconf, true, null, null, null, null, false, false, concurrencyLimit * 4, 1000);
tezClient.start();
MockDAGAppMaster mockApp = tezClient.getLocalClient().getMockApp();
MockContainerLauncher mockLauncher = mockApp.getContainerLauncher();
mockLauncher.startScheduling(false);
final AtomicInteger concurrency = new AtomicInteger(0);
final AtomicBoolean exceededConcurrency = new AtomicBoolean(false);
mockApp.containerDelegate = new ContainerDelegate() {
@Override
public void stop(ContainerStopRequest event) {
concurrency.decrementAndGet();
}
@Override
public void launch(ContainerLaunchRequest event) {
int maxConc = concurrency.incrementAndGet();
if (maxConc > concurrencyLimit) {
exceededConcurrency.set(true);
}
System.out.println("Launched: " + maxConc);
}
};
DAG dag = DAG.create("testConcurrencyLimit");
Vertex vA = Vertex.create("A", ProcessorDescriptor.create("Proc.class"), 20).setConf(TezConfiguration.TEZ_AM_VERTEX_MAX_TASK_CONCURRENCY, String.valueOf(concurrencyLimit));
dag.addVertex(vA);
mockLauncher.startScheduling(true);
DAGClient dagClient = tezClient.submitDAG(dag);
dagClient.waitForCompletion();
Assert.assertEquals(DAGStatus.State.SUCCEEDED, dagClient.getDAGStatus(null).getState());
Assert.assertFalse(exceededConcurrency.get());
tezClient.stop();
}
Aggregations