/*
* Copyright 2014 LinkedIn Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package azkaban.utils;
import org.joda.time.DateTimeZone;
import org.junit.Assert;
import org.junit.Test;
/**
* Test class for azkaban.utils.Utils
*/
public class UtilsTest {
/* Test negative port case */
@Test
public void testNegativePort() {
Assert.assertFalse(Utils.isValidPort(-1));
Assert.assertFalse(Utils.isValidPort(-10));
}
/* Test zero port case */
@Test
public void testZeroPort() {
Assert.assertFalse(Utils.isValidPort(0));
}
/* Test port beyond limit */
@Test
public void testOverflowPort() {
Assert.assertFalse(Utils.isValidPort(70000));
Assert.assertFalse(Utils.isValidPort(65536));
}
/* Test happy isValidPort case*/
@Test
public void testValidPort() {
Assert.assertTrue(Utils.isValidPort(1023));
Assert.assertTrue(Utils.isValidPort(10000));
Assert.assertTrue(Utils.isValidPort(3030));
Assert.assertTrue(Utils.isValidPort(1045));
}
/* Test CronExpression valid cases*/
@Test
public void testValidCronExpressionV() {
DateTimeZone timezone = DateTimeZone.getDefault();
Assert.assertTrue(Utils.isCronExpressionValid("0 0 3 ? * *", timezone));
Assert.assertTrue(Utils.isCronExpressionValid("0 0 3 ? * * 2017", timezone));
Assert.assertTrue(Utils.isCronExpressionValid("0 0 * ? * *", timezone));
Assert.assertTrue(Utils.isCronExpressionValid("0 0 * ? * FRI", timezone));
// This is a bug from Quartz Cron. It looks like Quartz will parse the preceding 7 fields of a String.
Assert.assertTrue(Utils.isCronExpressionValid("0 0 3 ? * * 2017 22", timezone));
}
/* Test CronExpression invalid cases*/
@Test
public void testInvalidCronExpression() {
DateTimeZone timezone = DateTimeZone.getDefault();
Assert.assertFalse(Utils.isCronExpressionValid("0 0 3 * * *", timezone));
Assert.assertFalse(Utils.isCronExpressionValid("0 66 * ? * *", timezone));
Assert.assertFalse(Utils.isCronExpressionValid("0 * * ? * 8", timezone));
Assert.assertFalse(Utils.isCronExpressionValid("0 * 25 ? * FRI", timezone));
}
}