private Plan getPlanFromQueue(ReservationSystem reservationSystem, String queue, String auditConstant, String nullQueueErrorMessage, String nullPlanErrorMessage) throws YarnException { if (queue == null || queue.isEmpty()) { RMAuditLogger.logFailure("UNKNOWN", auditConstant, "validate reservation input", "ClientRMService", nullQueueErrorMessage); throw RPCUtil.getRemoteException(nullQueueErrorMessage); } // check if the associated plan is valid Plan plan = reservationSystem.getPlan(queue); if (plan == null) { RMAuditLogger.logFailure("UNKNOWN", auditConstant, "validate reservation input", "ClientRMService", nullPlanErrorMessage); throw RPCUtil.getRemoteException(nullPlanErrorMessage); } return plan; }
@Before public void setUp() { clock = mock(Clock.class); plan = mock(Plan.class); rSystem = mock(ReservationSystem.class); plans.put(PLAN_NAME, plan); rrValidator = new ReservationInputValidator(clock); when(clock.getTime()).thenReturn(1L); ResourceCalculator rCalc = new DefaultResourceCalculator(); Resource resource = Resource.newInstance(10240, 10); when(plan.getResourceCalculator()).thenReturn(rCalc); when(plan.getTotalCapacity()).thenReturn(resource); when(rSystem.getQueueForReservation(any(ReservationId.class))).thenReturn( PLAN_NAME); when(rSystem.getPlan(PLAN_NAME)).thenReturn(plan); }
@Before public void setUp() { clock = mock(Clock.class); plan = mock(Plan.class); rSystem = mock(ReservationSystem.class); plans.put(PLAN_NAME, plan); rrValidator = new ReservationInputValidator(clock); when(clock.getTime()).thenReturn(1L); ResourceCalculator rCalc = new DefaultResourceCalculator(); Resource resource = Resource.newInstance(10240, 10); when(plan.getResourceCalculator()).thenReturn(rCalc); when(plan.getTotalCapacity()).thenReturn(resource); when(plan.getMaximumPeriodicity()).thenReturn( YarnConfiguration.DEFAULT_RM_RESERVATION_SYSTEM_MAX_PERIODICITY); when(rSystem.getQueueForReservation(any(ReservationId.class))).thenReturn( PLAN_NAME); when(rSystem.getPlan(PLAN_NAME)).thenReturn(plan); }
@Test public void testUpdateReservationInvalidPlan() { ReservationUpdateRequest request = createSimpleReservationUpdateRequest(1, 1, 1, 5, 4); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationUpdateRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not associated with any valid plan. Please try again with a valid reservation.")); LOG.info(message); } }
@Test public void testUpdateReservationInvalidPlan() { ReservationUpdateRequest request = createSimpleReservationUpdateRequest(1, 1, 1, 5, 4); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationUpdateRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not associated with any valid plan. Please try again with a valid reservation.")); LOG.info(message); } }
throw RPCUtil.getRemoteException(errMsg); Plan plan = reservationSystem.getPlan(queueName); if (plan == null) { String errMsg =
@Test public void testSubmitReservationInvalidPlan() { ReservationSubmissionRequest request = createSimpleReservationSubmissionRequest(1, 1, 1, 5, 3); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationSubmissionRequest(rSystem, request, ReservationSystemTestUtil.getNewReservationId()); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not managed by reservation system. Please try again with a valid reservable queue.")); LOG.info(message); } }
@Test public void testSubmitReservationInvalidPlan() { ReservationSubmissionRequest request = createSimpleReservationSubmissionRequest(1, 1, 1, 5, 3); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationSubmissionRequest(rSystem, request, ReservationSystemTestUtil.getNewReservationId()); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not managed by reservation system. Please try again with a valid reservable queue.")); LOG.info(message); } }
@Test public void testListReservationsNullPlan() { ReservationListRequest request = new ReservationListRequestPBImpl(); request.setQueue(ReservationSystemTestUtil.reservationQ); when(rSystem.getPlan(ReservationSystemTestUtil.reservationQ)).thenReturn (null); Plan plan = null; try { plan = rrValidator.validateReservationListRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert.assertTrue(message.equals( "The specified queue: " + ReservationSystemTestUtil.reservationQ + " is not managed by reservation system." + " Please try again with a valid reservable queue." )); LOG.info(message); } }
@Test public void testDeleteReservationInvalidPlan() { ReservationDeleteRequest request = new ReservationDeleteRequestPBImpl(); ReservationId reservationID = ReservationSystemTestUtil.getNewReservationId(); request.setReservationId(reservationID); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationDeleteRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not associated with any valid plan. Please try again with a valid reservation.")); LOG.info(message); } }
@Test public void testDeleteReservationInvalidPlan() { ReservationDeleteRequest request = new ReservationDeleteRequestPBImpl(); ReservationId reservationID = ReservationSystemTestUtil.getNewReservationId(); request.setReservationId(reservationID); when(rSystem.getPlan(PLAN_NAME)).thenReturn(null); Plan plan = null; try { plan = rrValidator.validateReservationDeleteRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert .assertTrue(message .endsWith(" is not associated with any valid plan. Please try again with a valid reservation.")); LOG.info(message); } }
Plan plan = reservationSystem.getPlan(queueName); if (plan == null) { message =
Plan plan = reservationSystem.getPlan(queueName); if (plan == null) { message =
@Test public void testListReservationsInvalidTimeInterval() { ReservationListRequest request = new ReservationListRequestPBImpl(); request.setQueue(ReservationSystemTestUtil.reservationQ); request.setEndTime(1000); request.setStartTime(2000); when(rSystem.getPlan(ReservationSystemTestUtil.reservationQ)).thenReturn (this.plan); Plan plan = null; try { plan = rrValidator.validateReservationListRequest(rSystem, request); Assert.fail(); } catch (YarnException e) { Assert.assertNull(plan); String message = e.getMessage(); Assert.assertTrue(message.equals("The specified end time must be " + "greater than the specified start time.")); LOG.info(message); } }
@Test public void testListReservationsNormal() { ReservationListRequest request = new ReservationListRequestPBImpl(); request.setQueue(ReservationSystemTestUtil.reservationQ); request.setEndTime(1000); request.setStartTime(0); when(rSystem.getPlan(ReservationSystemTestUtil.reservationQ)).thenReturn (this.plan); Plan plan = null; try { plan = rrValidator.validateReservationListRequest(rSystem, request); } catch (YarnException e) { Assert.fail(e.getMessage()); } Assert.assertNotNull(plan); }
@Test public void testListReservationsInvalidTimeIntervalDefaults() { ReservationListRequest request = new ReservationListRequestPBImpl(); request.setQueue(ReservationSystemTestUtil.reservationQ); // Negative time gets converted to default values for Start Time and End // Time which are 0 and Long.MAX_VALUE respectively. request.setEndTime(-2); request.setStartTime(-1); when(rSystem.getPlan(ReservationSystemTestUtil.reservationQ)).thenReturn (this.plan); Plan plan = null; try { plan = rrValidator.validateReservationListRequest(rSystem, request); } catch (YarnException e) { Assert.fail(e.getMessage()); } Assert.assertNotNull(plan); }
private void addNodeCapacityToPlan(MockRM rm, int memory, int vCores) { try { rm.registerNode("127.0.0.1:1", memory, vCores); int attempts = 10; do { rm1.drainEvents(); rm.getRMContext().getReservationSystem() .synchronizePlan(ReservationSystemTestUtil.reservationQ, false); if (rm.getRMContext().getReservationSystem() .getPlan(ReservationSystemTestUtil.reservationQ).getTotalCapacity() .getMemorySize() > 0) { break; } LOG.info("Waiting for node capacity to be added to plan"); Thread.sleep(100); } while (attempts-- > 0); if (attempts <= 0) { Assert.fail("Exhausted attempts in checking if node capacity was " + "added to the plan"); } } catch (Exception e) { Assert.fail(e.getMessage()); } }
@Test public void testFailoverAndSubmitReservation() throws Exception { startRMs(); addNodeCapacityToPlan(rm1, 102400, 100); // Do the failover explicitFailover(); addNodeCapacityToPlan(rm2, 102400, 100); ClientRMService clientService = rm2.getClientRMService(); ReservationId reservationID = getNewReservation(clientService) .getReservationId(); // create a reservation ReservationSubmissionRequest request = createReservationSubmissionRequest( reservationID); ReservationSubmissionResponse response = null; try { response = clientService.submitReservation(request); } catch (Exception e) { Assert.fail(e.getMessage()); } Assert.assertNotNull(response); Assert.assertNotNull(reservationID); LOG.info("Submit reservation response: " + reservationID); ReservationDefinition reservationDefinition = request.getReservationDefinition(); // check if reservation is submitted successfully Plan plan = rm2.getRMContext().getReservationSystem() .getPlan(ReservationSystemTestUtil.reservationQ); validateReservation(plan, reservationID, reservationDefinition); }
.getPlan(ReservationSystemTestUtil.reservationQ); validateReservation(plan, reservationID, reservationDefinition);
.getPlan(ReservationSystemTestUtil.reservationQ); validateReservation(plan, reservationID, reservationDefinition);