package uws.job.parameters; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import uws.job.UWSJob; public class TestExecutionDurationController { @BeforeClass public static void setUpBeforeClass() throws Exception{} @AfterClass public static void tearDownAfterClass() throws Exception{} @Before public void setUp() throws Exception{} @After public void tearDown() throws Exception{} @Test public void testCheck(){ ExecutionDurationController controller = new ExecutionDurationController(); try{ // A NULL duration will always return an unlimited duration: assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(null)); assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(0)); assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(-1)); assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(-123)); // By default, the controller has no limit on the execution duration, so let's try with a duration of 1e6 seconds: assertEquals(1000000L, controller.check(1000000)); // With just a default execution duration (of 10 minutes): controller.setDefaultExecutionDuration(600); assertEquals(600L, controller.check(null)); assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(-1)); assertEquals(UWSJob.UNLIMITED_DURATION, controller.check(UWSJob.UNLIMITED_DURATION)); // With just a maximum execution duration (of 1 hour): controller.setDefaultExecutionDuration(-1); controller.setMaxExecutionDuration(3600); assertEquals(3600L, controller.check(null)); assertEquals(60L, controller.check(60)); assertEquals(3600L, controller.check(-1)); assertEquals(3600L, controller.check(UWSJob.UNLIMITED_DURATION)); assertEquals(3600L, controller.check(3601)); // With a default (10 minutes) AND a maximum (1 hour) execution duration: controller.setDefaultExecutionDuration(600); controller.setMaxExecutionDuration(3600); assertEquals(600L, controller.check(null)); assertEquals(10L, controller.check(10)); assertEquals(600L, controller.check(600)); assertEquals(3600L, controller.check(3600)); assertEquals(3600L, controller.check(-1)); assertEquals(3600L, controller.check(UWSJob.UNLIMITED_DURATION)); assertEquals(3600L, controller.check(3601)); }catch(Exception t){ t.printStackTrace(); fail(); } } @Test public void testGetDefault(){ ExecutionDurationController controller = new ExecutionDurationController(); // By default, when nothing is set, the default execution duration is UNLIMITED: assertEquals(UWSJob.UNLIMITED_DURATION, controller.getDefault()); // With no duration, the default execution duration should remain UNLIMITED: controller.setDefaultExecutionDuration(UWSJob.UNLIMITED_DURATION); assertEquals(UWSJob.UNLIMITED_DURATION, controller.getDefault()); // With a negative duration, the execution duration should also be UNLIMITED: controller.setDefaultExecutionDuration(-1); assertEquals(UWSJob.UNLIMITED_DURATION, controller.getDefault()); // With an execution duration of 10 minutes: controller.setDefaultExecutionDuration(600); assertEquals(600L, controller.getDefault()); // The default value must always be less than the maximum value: controller.setMaxExecutionDuration(300); assertEquals(300L, controller.getDefault()); } @Test public void testGetMaxExecutionDuration(){ ExecutionDurationController controller = new ExecutionDurationController(); // By default, when nothing is set, the maximum execution duration is UNLIMITED: assertEquals(UWSJob.UNLIMITED_DURATION, controller.getMaxExecutionDuration()); // With no duration, the maximum execution duration should remain UNLIMITED: controller.setMaxExecutionDuration(UWSJob.UNLIMITED_DURATION); assertEquals(UWSJob.UNLIMITED_DURATION, controller.getMaxExecutionDuration()); // With a negative duration, the execution duration should also be UNLIMITED: controller.setMaxExecutionDuration(-1); assertEquals(UWSJob.UNLIMITED_DURATION, controller.getMaxExecutionDuration()); // With an execution duration of 10 minutes: controller.setMaxExecutionDuration(600); assertEquals(600L, controller.getMaxExecutionDuration()); } @Test public void testAllowModification(){ ExecutionDurationController controller = new ExecutionDurationController(); // By default, user modification of the execution duration is allowed: assertTrue(controller.allowModification()); controller.allowModification(true); assertTrue(controller.allowModification()); controller.allowModification(false); assertFalse(controller.allowModification()); } }