package tap.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 tap.TAPJob; public class TestTAPExecutionDurationController { @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(){ ServiceConnectionOfTest service = new ServiceConnectionOfTest(); TAPExecutionDurationController controller = new TAPExecutionDurationController(service); try{ // A NULL duration will always return an unlimited duration: assertEquals(TAPJob.UNLIMITED_DURATION, controller.check(null)); assertEquals(TAPJob.UNLIMITED_DURATION, controller.check(0)); assertEquals(TAPJob.UNLIMITED_DURATION, controller.check(-1)); assertEquals(TAPJob.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 = 600000 milliseconds): service.setExecutionDuration(600000, -1); assertEquals(600L, controller.check(null)); assertEquals(TAPJob.UNLIMITED_DURATION, controller.check(-1)); assertEquals(TAPJob.UNLIMITED_DURATION, controller.check(TAPJob.UNLIMITED_DURATION)); // With just a maximum execution duration (of 1 hour = 3600000): service.setExecutionDuration(-1, 3600000); assertEquals(3600L, controller.check(null)); assertEquals(60L, controller.check(60)); assertEquals(3600L, controller.check(-1)); assertEquals(3600L, controller.check(TAPJob.UNLIMITED_DURATION)); assertEquals(3600L, controller.check(3601)); // With a default (10 minutes = 600000 ms) AND a maximum (1 hour = 3600000 ms) execution duration: service.setExecutionDuration(600000, 3600000); 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(TAPJob.UNLIMITED_DURATION)); assertEquals(3600L, controller.check(3601)); }catch(Exception t){ t.printStackTrace(); fail(); } } @Test public void testGetDefault(){ ServiceConnectionOfTest service = new ServiceConnectionOfTest(); TAPExecutionDurationController controller = new TAPExecutionDurationController(service); // By default, when nothing is set, the default execution duration is UNLIMITED: assertEquals(TAPJob.UNLIMITED_DURATION, controller.getDefault()); // With no duration, the default execution duration should remain UNLIMITED: service.setExecutionDuration((int)TAPJob.UNLIMITED_DURATION, -1); assertEquals(TAPJob.UNLIMITED_DURATION, controller.getDefault()); // With a negative duration, the execution duration should also be UNLIMITED: service.setExecutionDuration(-1, -1); assertEquals(TAPJob.UNLIMITED_DURATION, controller.getDefault()); // With an execution duration of 10 minutes (= 600000 ms): service.setExecutionDuration(600000, -1); assertEquals(600L, controller.getDefault()); // The default value must always be less than the maximum value: service.setExecutionDuration(600000, 300000); assertEquals(300L, controller.getDefault()); } @Test public void testGetMaxExecutionDuration(){ ServiceConnectionOfTest service = new ServiceConnectionOfTest(); TAPExecutionDurationController controller = new TAPExecutionDurationController(service); // By default, when nothing is set, the maximum execution duration is UNLIMITED: assertEquals(TAPJob.UNLIMITED_DURATION, controller.getMaxDuration()); // With no duration, the maximum execution duration should remain UNLIMITED: service.setExecutionDuration(-1, (int)TAPJob.UNLIMITED_DURATION); assertEquals(TAPJob.UNLIMITED_DURATION, controller.getMaxDuration()); // With a negative duration, the execution duration should also be UNLIMITED: service.setExecutionDuration(-1, -1); assertEquals(TAPJob.UNLIMITED_DURATION, controller.getMaxDuration()); // With an execution duration of 10 minutes (= 600000 ms): service.setExecutionDuration(-1, 600000); assertEquals(600L, controller.getMaxDuration()); } @Test public void testAllowModification(){ ServiceConnectionOfTest service = new ServiceConnectionOfTest(); TAPExecutionDurationController controller = new TAPExecutionDurationController(service); // 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()); } }