|
@@ -303,6 +303,7 @@ public class TestReservationInputValidator {
|
|
|
|
|
|
@Test
|
|
|
public void testSubmitReservationInvalidRecurrenceExpression() {
|
|
|
+ // first check recurrence expression
|
|
|
ReservationSubmissionRequest request =
|
|
|
createSimpleReservationSubmissionRequest(1, 1, 1, 5, 3, "123abc");
|
|
|
plan = null;
|
|
@@ -318,6 +319,23 @@ public class TestReservationInputValidator {
|
|
|
.startsWith("Invalid period "));
|
|
|
LOG.info(message);
|
|
|
}
|
|
|
+
|
|
|
+ // now check duration
|
|
|
+ request =
|
|
|
+ createSimpleReservationSubmissionRequest(1, 1, 1, 50, 3, "10");
|
|
|
+ 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
|
|
|
+ .startsWith("Duration of the requested reservation:"));
|
|
|
+ LOG.info(message);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Test
|
|
@@ -499,6 +517,73 @@ public class TestReservationInputValidator {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testUpdateReservationValidRecurrenceExpression() {
|
|
|
+ ReservationUpdateRequest request =
|
|
|
+ createSimpleReservationUpdateRequest(1, 1, 1, 5, 3, "600000");
|
|
|
+ plan = null;
|
|
|
+ try {
|
|
|
+ plan =
|
|
|
+ rrValidator.validateReservationUpdateRequest(rSystem, request);
|
|
|
+ } catch (YarnException e) {
|
|
|
+ Assert.fail(e.getMessage());
|
|
|
+ }
|
|
|
+ Assert.assertNotNull(plan);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testUpdateReservationNegativeRecurrenceExpression() {
|
|
|
+ ReservationUpdateRequest request =
|
|
|
+ createSimpleReservationUpdateRequest(1, 1, 1, 5, 3, "-1234");
|
|
|
+ plan = null;
|
|
|
+ try {
|
|
|
+ plan =
|
|
|
+ rrValidator.validateReservationUpdateRequest(rSystem, request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (YarnException e) {
|
|
|
+ Assert.assertNull(plan);
|
|
|
+ String message = e.getMessage();
|
|
|
+ Assert.assertTrue(message
|
|
|
+ .startsWith("Negative Period : "));
|
|
|
+ LOG.info(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testUpdateReservationInvalidRecurrenceExpression() {
|
|
|
+ // first check recurrence expression
|
|
|
+ ReservationUpdateRequest request =
|
|
|
+ createSimpleReservationUpdateRequest(1, 1, 1, 5, 3, "123abc");
|
|
|
+ plan = null;
|
|
|
+ try {
|
|
|
+ plan =
|
|
|
+ rrValidator.validateReservationUpdateRequest(rSystem, request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (YarnException e) {
|
|
|
+ Assert.assertNull(plan);
|
|
|
+ String message = e.getMessage();
|
|
|
+ Assert.assertTrue(message
|
|
|
+ .startsWith("Invalid period "));
|
|
|
+ LOG.info(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ // now check duration
|
|
|
+ request =
|
|
|
+ createSimpleReservationUpdateRequest(1, 1, 1, 50, 3, "10");
|
|
|
+ plan = null;
|
|
|
+ try {
|
|
|
+ plan =
|
|
|
+ rrValidator.validateReservationUpdateRequest(rSystem, request);
|
|
|
+ Assert.fail();
|
|
|
+ } catch (YarnException e) {
|
|
|
+ Assert.assertNull(plan);
|
|
|
+ String message = e.getMessage();
|
|
|
+ Assert.assertTrue(message
|
|
|
+ .startsWith("Duration of the requested reservation:"));
|
|
|
+ LOG.info(message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void testDeleteReservationNormal() {
|
|
|
ReservationDeleteRequest request = new ReservationDeleteRequestPBImpl();
|
|
@@ -710,11 +795,19 @@ public class TestReservationInputValidator {
|
|
|
private ReservationUpdateRequest createSimpleReservationUpdateRequest(
|
|
|
int numRequests, int numContainers, long arrival, long deadline,
|
|
|
long duration) {
|
|
|
+ return createSimpleReservationUpdateRequest(numRequests, numContainers,
|
|
|
+ arrival, deadline, duration, "0");
|
|
|
+ }
|
|
|
+
|
|
|
+ private ReservationUpdateRequest createSimpleReservationUpdateRequest(
|
|
|
+ int numRequests, int numContainers, long arrival, long deadline,
|
|
|
+ long duration, String recurrence) {
|
|
|
// create a request with a single atomic ask
|
|
|
ReservationUpdateRequest request = new ReservationUpdateRequestPBImpl();
|
|
|
ReservationDefinition rDef = new ReservationDefinitionPBImpl();
|
|
|
rDef.setArrival(arrival);
|
|
|
rDef.setDeadline(deadline);
|
|
|
+ rDef.setRecurrenceExpression(recurrence);
|
|
|
if (numRequests > 0) {
|
|
|
ReservationRequests reqs = new ReservationRequestsPBImpl();
|
|
|
rDef.setReservationRequests(reqs);
|