List<TaskAttemptContainerAssignedEvent> assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); rm.drainEvents(); assigned = allocator.schedule(); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); rm.drainEvents(); rm.drainEvents(); assigned = allocator.schedule(); rm.drainEvents(); assertBlacklistAdditionsAndRemovals(0, 0, rm); assigned = allocator.schedule(); rm.drainEvents(); assertBlacklistAdditionsAndRemovals(0, 0, rm);
allocator.schedule(); rm.drainEvents(); amNodeManager.nodeHeartbeat(true); rm.drainEvents(); allocator.schedule(); rm.drainEvents(); allocator.schedule(); // Send heartbeat rm.drainEvents(); Assert.assertEquals(0.05f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.095f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.41f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); amNodeManager.nodeHeartbeat(true); rm.drainEvents(); allocator.schedule(); rm.drainEvents(); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.59f, job.getProgress(), 0.001f);
List<TaskAttemptContainerAssignedEvent> assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); rm.drainEvents(); assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0, rm.getMyFifoScheduler().lastAsk.size()); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(5, rm.getMyFifoScheduler().lastAsk.size());
List<TaskAttemptContainerAssignedEvent> assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); rm.drainEvents(); assigned = allocator.schedule(); rm.drainEvents(); checkAssignments(new ContainerRequestEvent[] {event1, event2, event3},
allocator.schedule(); rm.drainEvents(); amNodeManager.nodeHeartbeat(true); rm.drainEvents(); allocator.schedule(); rm.drainEvents(); allocator.schedule(); // Send heartbeat rm.drainEvents(); Assert.assertEquals(0.05f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.14f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.59f, job.getProgress(), 0.001f); allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0.95f, job.getProgress(), 0.001f);
List<TaskAttemptContainerAssignedEvent> assigned = allocator.schedule(); rm.drainEvents(); allocator.getJobUpdatedNodeEvents().clear(); assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals(1, assigned.size()); assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0, assigned.size()); allocator.getTaskAttemptKillEvents().clear(); assigned = allocator.schedule(); rm.drainEvents(); Assert.assertEquals(0, assigned.size());
assignedContainer += allocator.schedule().size(); nm.nodeHeartbeat(true); rm.drainEvents();
new String[0], false, false); allocator.sendRequests(Arrays.asList(mapRequestEvt)); allocator.schedule();
@Test(expected = RMContainerAllocationException.class) public void testAttemptNotFoundCausesRMCommunicatorException() throws Exception { Configuration conf = new Configuration(); MyResourceManager rm = new MyResourceManager(conf); rm.start(); // Submit the application RMApp app = rm.submitApp(1024); rm.drainEvents(); MockNM amNodeManager = rm.registerNode("amNM:1234", 2048); amNodeManager.nodeHeartbeat(true); rm.drainEvents(); ApplicationAttemptId appAttemptId = app.getCurrentAppAttempt() .getAppAttemptId(); rm.sendAMLaunched(appAttemptId); rm.drainEvents(); JobId jobId = MRBuilderUtils.newJobId(appAttemptId.getApplicationId(), 0); Job mockJob = mock(Job.class); when(mockJob.getReport()).thenReturn( MRBuilderUtils.newJobReport(jobId, "job", "user", JobState.RUNNING, 0, 0, 0, 0, 0, 0, 0, "jobfile", null, false, "")); MyContainerAllocator allocator = new MyContainerAllocator(rm, conf, appAttemptId, mockJob); // Now kill the application rm.killApp(app.getApplicationId()); rm.waitForState(app.getApplicationId(), RMAppState.KILLED); allocator.schedule(); }
private List<TaskAttemptContainerAssignedEvent> getContainerOnHost(JobId jobId, int taskAttemptId, int memory, String[] hosts, MockNM mockNM, MyContainerAllocator allocator, int expectedAdditions1, int expectedRemovals1, int expectedAdditions2, int expectedRemovals2, MyResourceManager rm) throws Exception { ContainerRequestEvent reqEvent = ContainerRequestCreator.createRequest(jobId, taskAttemptId, Resource.newInstance(memory, 1), hosts); allocator.sendRequest(reqEvent); // Send the request to the RM List<TaskAttemptContainerAssignedEvent> assigned = allocator.schedule(); rm.drainEvents(); assertBlacklistAdditionsAndRemovals( expectedAdditions1, expectedRemovals1, rm); Assert.assertEquals("No of assignments must be 0", 0, assigned.size()); // Heartbeat from the required nodeManager mockNM.nodeHeartbeat(true); rm.drainEvents(); assigned = allocator.schedule(); rm.drainEvents(); assertBlacklistAdditionsAndRemovals( expectedAdditions2, expectedRemovals2, rm); return assigned; }
@Override public Token<AMRMTokenIdentifier> run() throws Exception { MyContainerAllocator allocator = new MyContainerAllocator(rm, conf, appAttemptId, mockJob); // Keep heartbeating until RM thinks the token has been updated Token<AMRMTokenIdentifier> currentToken = oldToken; long startTime = Time.monotonicNow(); while (currentToken == oldToken) { if (Time.monotonicNow() - startTime > 20000) { Assert.fail("Took to long to see AMRM token change"); } Thread.sleep(100); allocator.schedule(); currentToken = rm.getRMContext().getRMApps().get(appId) .getRMAppAttempt(appAttemptId).getAMRMToken(); } return currentToken; } });