private Queue createQueue(String name, Queue parent, float capacity) { QueueMetrics metrics = QueueMetrics.forQueue(name, parent, false, conf); QueueInfo queueInfo = QueueInfo.newInstance(name, capacity, 1.0f, 0, null, null, QueueState.RUNNING, null, "", null, false, null, false); ActiveUsersManager activeUsersManager = new ActiveUsersManager(metrics); Queue queue = mock(Queue.class); when(queue.getMetrics()).thenReturn(metrics); when(queue.getAbstractUsersManager()).thenReturn(activeUsersManager); when(queue.getQueueInfo(false, false)).thenReturn(queueInfo); return queue; }
@Test public void testAppPercentagesOnswitch() throws Exception { FifoScheduler scheduler = mock(FifoScheduler.class); when(scheduler.getClusterResource()).thenReturn(Resource.newInstance(0, 0)); when(scheduler.getResourceCalculator()) .thenReturn(new DefaultResourceCalculator()); ApplicationAttemptId appAttId = createAppAttemptId(0, 0); RMContext rmContext = mock(RMContext.class); when(rmContext.getEpoch()).thenReturn(3L); when(rmContext.getScheduler()).thenReturn(scheduler); final String user = "user1"; Queue queue = createQueue("test", null); SchedulerApplicationAttempt app = new SchedulerApplicationAttempt(appAttId, user, queue, queue.getAbstractUsersManager(), rmContext); // Resource request Resource requestedResource = Resource.newInstance(1536, 2); app.attemptResourceUsage.incUsed(requestedResource); assertEquals(0.0f, app.getResourceUsageReport().getQueueUsagePercentage(), 0.0f); assertEquals(0.0f, app.getResourceUsageReport().getClusterUsagePercentage(), 0.0f); }
when(rmContext.getEpoch()).thenReturn(3L); SchedulerApplicationAttempt app = new SchedulerApplicationAttempt(appAttId, user, queue1, queue1.getAbstractUsersManager(), rmContext); app.updateResourceRequests(Arrays.asList(request)); assertEquals(1, queue1.getAbstractUsersManager().getNumActiveUsers()); assertEquals(0, queue1.getAbstractUsersManager().getNumActiveUsers()); assertEquals(1, queue2.getAbstractUsersManager().getNumActiveUsers()); assertEquals(0, queue2.getAbstractUsersManager().getNumActiveUsers()); assertEquals(0, queue3.getAbstractUsersManager().getNumActiveUsers());
newMetrics.moveAppTo(this); abstractUsersManager.deactivateApplication(user, applicationId); abstractUsersManager = newQueue.getAbstractUsersManager(); if (!schedulerKeys.isEmpty()) { abstractUsersManager.activateApplication(user, applicationId);
FiCaSchedulerApp app = new FiCaSchedulerApp(appAttId, user, queue, queue.getAbstractUsersManager(), rmContext); Resources.divideAndCeil(dominantResourceCalculator, res, 2)); app = new FiCaSchedulerApp(appAttId, user, queue, queue.getAbstractUsersManager(), rmContext); app.getAppAttemptResourceUsage().incUsed(requestedResource);
when(rmContext.getEpoch()).thenReturn(3L); SchedulerApplicationAttempt app = new SchedulerApplicationAttempt( attemptId, "user", queue, queue.getAbstractUsersManager(), rmContext);
SchedulerApplicationAttempt app = new SchedulerApplicationAttempt(appAttId, user, queue, queue.getAbstractUsersManager(), rmContext); queue.getAbstractUsersManager(), rmContext); app.attemptResourceUsage.incUsed(requestedResource); assertEquals(30.0f, app.getResourceUsageReport().getQueueUsagePercentage(), queue.getAbstractUsersManager(), rmContext);
@Test public void testSchedulingOpportunityOverflow() throws Exception { ApplicationAttemptId attemptId = createAppAttemptId(0, 0); Queue queue = createQueue("test", null); RMContext rmContext = mock(RMContext.class); when(rmContext.getEpoch()).thenReturn(3L); SchedulerApplicationAttempt app = new SchedulerApplicationAttempt( attemptId, "user", queue, queue.getAbstractUsersManager(), rmContext); Priority priority = Priority.newInstance(1); SchedulerRequestKey schedulerKey = toSchedulerKey(priority); assertEquals(0, app.getSchedulingOpportunities(schedulerKey)); app.addSchedulingOpportunity(schedulerKey); assertEquals(1, app.getSchedulingOpportunities(schedulerKey)); // verify the count is capped at MAX_VALUE and does not overflow app.setSchedulingOpportunities(schedulerKey, Integer.MAX_VALUE - 1); assertEquals(Integer.MAX_VALUE - 1, app.getSchedulingOpportunities(schedulerKey)); app.addSchedulingOpportunity(schedulerKey); assertEquals(Integer.MAX_VALUE, app.getSchedulingOpportunities(schedulerKey)); app.addSchedulingOpportunity(schedulerKey); assertEquals(Integer.MAX_VALUE, app.getSchedulingOpportunities(schedulerKey)); }
when(rmContext.getEpoch()).thenReturn(3L); SchedulerApplicationAttempt app = new SchedulerApplicationAttempt(appAttId, user, oldQueue, oldQueue.getAbstractUsersManager(), rmContext); oldMetrics.submitApp(user);