MockRM rm1 = createMockRM(conf); rm1.start(); MockNM nm1 = nm1.registerNode(); QueueMetrics qm1 = rm1.getResourceScheduler().getRootQueueMetrics(); resetQueueMetrics(qm1); assertQueueMetrics(qm1, 0, 0, 0, 0); ApplicationAttemptId attemptId1 = attempt1.getAppAttemptId(); rm1.waitForState(attemptId1, RMAppAttemptState.SCHEDULED); assertQueueMetrics(qm1, 1, 1, 0, 0); assertQueueMetrics(qm1, 1, 0, 1, 0); MockRM rm2 = createMockRM(conf, rm1.getRMStateStore()); QueueMetrics qm2 = rm2.getResourceScheduler().getRootQueueMetrics(); resetQueueMetrics(qm2); assertQueueMetrics(qm2, 0, 0, 0, 0); .createNMContainerStatus(loadedApp1.getCurrentAppAttempt() .getAppAttemptId(), 1, ContainerState.COMPLETE); nm1.registerNode(Arrays.asList(status), null); attemptId1 = attempt1.getAppAttemptId(); rm2.waitForState(attemptId1, RMAppAttemptState.SCHEDULED); assertQueueMetrics(qm2, 1, 1, 0, 0); nm1.nodeHeartbeat(true); rm2.waitForState(attemptId1, RMAppAttemptState.ALLOCATED);
@Before public void setup() throws IOException { conf = getConf(); Logger rootLogger = LogManager.getRootLogger(); rootLogger.setLevel(Level.DEBUG); UserGroupInformation.setConfiguration(conf); conf.setBoolean(YarnConfiguration.RECOVERY_ENABLED, true); conf.setBoolean(YarnConfiguration.RM_WORK_PRESERVING_RECOVERY_ENABLED, false); conf.set(YarnConfiguration.RM_STORE, MemoryRMStateStore.class.getName()); rmAddr = new InetSocketAddress("localhost", 8032); Assert.assertTrue(YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS > 1); }
MockRM rm1 = createMockRM(conf, memStore); rm1.start(); MockNM nm1 = MockAM am0 = launchAM(app0, rm1, nm1); finishApplicationMaster(app0, rm1, nm1, am0); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); nm1.setResourceTrackerService(rm2.getResourceTrackerService()); MockAM am1 = launchAM(app1, rm2, nm1); finishApplicationMaster(app1, rm2, nm1, am1);
conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 5); MockRM rm1 = createMockRM(conf); MemoryRMStateStore memStore = (MemoryRMStateStore) rm1.getRMStateStore(); .get(app0.getApplicationId()); MockAM am0 = launchAndFailAM(app0, rm1, nm1); MockAM am1 = launchAndFailAM(app0, rm1, nm1); MockAM am2 = launchAndFailAM(app0, rm1, nm1); MockAM am3 = launchAM(app0, rm1, nm1); MockRM rm2 = createMockRM(conf, memStore); rm2.start();
MockRM rm1 = createMockRM(conf, memStore); rm1.start(); MockNM nm1 = MockAM am0 = launchAM(app0, rm1, nm1); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); RMApp loadedApp0 = rm2.getRMContext().getRMApps().get(app0.getApplicationId()); verifyAppReportAfterRMRestart(app0, rm2); Assert.assertTrue(app0.getDiagnostics().toString() .contains("Failing the application."));
YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS); MockRM rm1 = createMockRM(conf); MockMemoryRMStateStore memStore = (MockMemoryRMStateStore) rm1.getRMStateStore(); MockAM am0 = launchAM(app0, rm1, nm1); FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "diagnostics", "trackingUrl"); finishApplicationMaster(app0, rm1, nm1, am0, req); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); ApplicationReport appReport = verifyAppReportAfterRMRestart(app0, rm2); Assert.assertEquals(FinalApplicationStatus.SUCCEEDED, appReport.getFinalApplicationStatus());
MockRM rm1 = createMockRM(conf); MemoryRMStateStore memStore = (MemoryRMStateStore) rm1.getRMStateStore(); Map<ApplicationId, ApplicationStateData> rmAppState = new HashMap<ApplicationAccessType, String>(), false, "default", -1, null, "MAPREDUCE", true, true); MockAM am0 = launchAM(app0, rm1, nm1); MockRM rm2 = createMockRM(conf, memStore); rm2.start();
final MockRM rm1 = createMockRM(conf, memStore); rm1.start(); MockNM nm1 = MockAM am1 = launchAM(app1, rm1, nm1); nm1.nodeHeartbeat(am1.getApplicationAttemptId(), 1, ContainerState.COMPLETE); MockAM am2 = launchAM(app1, rm1, nm1); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); TestRMRestart.createNMContainerStatus( am2.getApplicationAttemptId(), 1, ContainerState.COMPLETE); nm1.registerNode(Arrays.asList(status), null); rm2.waitForState(am2.getApplicationAttemptId(), RMAppAttemptState.FAILED); launchAM(rmApp, rm2, nm1); Assert.assertEquals(3, rmApp.getAppAttempts().size()); rm2.waitForState(rmApp.getCurrentAppAttempt().getAppAttemptId(), MockRM rm3 = createMockRM(conf, memStore); rm3.start(); .getAttemptCount()); MockRM rm4 = createMockRM(conf, memStore); rm4.start();
MockRM rm1 = createMockRM(conf); MockMemoryRMStateStore memStore = (MockMemoryRMStateStore) rm1.getRMStateStore(); MockAM am0 = rm1.sendAMLaunched(attempt0.getAppAttemptId()); am0.registerAppAttempt(); finishApplicationMaster(app0, rm1, nm1, am0); MockRM rm2 = createMockRM(conf, memStore); .createNMContainerStatus(loadedApp1.getCurrentAppAttempt() .getAppAttemptId(), 1, ContainerState.COMPLETE); nm1.registerNode(Arrays.asList(status), null); finishApplicationMaster(loadedApp1, rm2, am1Node, am1); finishApplicationMaster(loadedApp2, rm2, am2Node, am2);
public static NMContainerStatus createNMContainerStatus( ApplicationAttemptId appAttemptId, int id, ContainerState containerState) { return createNMContainerStatus(appAttemptId, id, containerState, RMNodeLabelsManager.NO_LABEL); }
@Test (timeout = 10000) public void testRMShutdown() throws Exception { MemoryRMStateStore memStore = new MemoryRMStateStore() { @Override public synchronized void checkVersion() throws Exception { throw new Exception("Invalid version."); } }; // start RM memStore.init(conf); MockRM rm1 = null; try { rm1 = createMockRM(conf, memStore); rm1.start(); Assert.fail(); } catch (Exception e) { Assert.assertTrue(e.getMessage().contains("Invalid version.")); } Assert.assertTrue(rm1.getServiceState() == STATE.STOPPED); }
@Test(timeout = 60000) public void testRMRestartAfterNodeLabelDisabled() throws Exception { if (getSchedulerType() != SchedulerType.CAPACITY) { return; addToCluserNodeLabelsWithDefaultExclusivity(clusterNodeLabels); nodeLabelManager.addLabelsToNode( ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"))); MockNM nm1 = rm1.registerNode("h1:1234", 8000); // label = x Assert.assertEquals("x", rm1.getRMContext().getScheduler(). getRMContainer(amContainerId1).getNodeLabelExpression()); finishApplicationMaster(app1, rm1, nm1, am1);
conf.set(YarnConfiguration.RM_NODES_EXCLUDE_FILE_PATH, hostFile.getAbsolutePath()); writeToHostsFile(""); MockRM rm1 = null, rm2 = null; try { String ip = NetUtils.normalizeHostName("localhost"); writeToHostsFile("host2", ip); .assertEquals(2, ClusterMetrics.getMetrics().getNumDecommisionedNMs()); verifyNodesAfterDecom(rm1, 2, expectedCapability, expectedVersion); rm1.stop(); rm1 = null; .assertEquals(2, ClusterMetrics.getMetrics().getNumDecommisionedNMs()); verifyNodesAfterDecom(rm2, 2, Resource.newInstance(0, 0), "unknown"); } finally { if (rm1 != null) {
MockAM am0 = launchAM(app0, rm1, nm1); finishApplicationMaster(app0, rm1, nm1, am0); MockAM am1 = launchAM(app1, rm1, nm1); MockAM am2 = launchAM(app2, rm1, nm1); rm1.killApp(app2.getApplicationId()); rm1.waitForState(app2.getApplicationId(), RMAppState.KILLED);
@Test(timeout = 60000) public void testAppReportNodeLabelRMRestart() throws Exception { if (getSchedulerType() != SchedulerType.CAPACITY) { return; MockRM rm1 = createMockRM(newConf); NodeLabel amLabel = NodeLabel.newInstance("AMLABEL"); NodeLabel appLabel = NodeLabel.newInstance("APPLABEL"); rm1.waitForState(app0.getApplicationId(), RMAppState.KILLED); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); Assert.assertEquals(1, rm2.getRMContext().getRMApps().size());
NodeId n2 = NodeId.newInstance("h1", 1235); NodeId nihost = NodeId.newInstance("h1", 0); nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("x"))); nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n2, toSet("x"))); nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(nihost, toSet("y"))); nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("x"))); MockRM rm2 = null; for (int i = 0; i < 2; i++) { nodeLabelManager.getLabelsToNodes(toSet("x")); Assert.assertEquals(1, null == labelsToNodes.get("x") ? 0 : labelsToNodes.get("x").size());
private void finishApplicationMaster(RMApp rmApp, MockRM rm, MockNM nm, MockAM am) throws Exception { final FinishApplicationMasterRequest req = FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "", ""); finishApplicationMaster(rmApp, rm, nm, am, req); }
private MockAM launchAndFailAM(RMApp app, MockRM rm, MockNM nm) throws Exception { MockAM am = launchAM(app, rm, nm); nm.nodeHeartbeat(am.getApplicationAttemptId(), 1, ContainerState.COMPLETE); rm.waitForState(am.getApplicationAttemptId(), RMAppAttemptState.FAILED); return am; }
conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 1); MockRM rm1 = createMockRM(conf); MockMemoryRMStateStore memStore = (MockMemoryRMStateStore) rm1.getRMStateStore(); MockAM am0 = launchAM(app0, rm1, nm1); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); RMApp loadedApp0 = rm2.getRMContext().getRMApps().get(app0.getApplicationId()); verifyAppReportAfterRMRestart(app0, rm2); Assert.assertTrue(app0.getDiagnostics().toString() .contains("Failing the application."));
MockRM rm1 = createMockRM(conf, memStore); rm1.start(); MockNM nm1 = MockAM am0 = launchAM(app0, rm1, nm1); FinishApplicationMasterRequest.newInstance( FinalApplicationStatus.SUCCEEDED, "diagnostics", "trackingUrl"); finishApplicationMaster(app0, rm1, nm1, am0, req); MockRM rm2 = createMockRM(conf, memStore); rm2.start(); ApplicationReport appReport = verifyAppReportAfterRMRestart(app0, rm2); Assert.assertEquals(FinalApplicationStatus.SUCCEEDED, appReport.getFinalApplicationStatus());