| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.tajo.validation; |
| |
| import static org.hamcrest.CoreMatchers.*; |
| import static org.junit.Assert.assertThat; |
| import static org.junit.Assert.fail; |
| |
| import java.math.BigDecimal; |
| import java.math.BigInteger; |
| import java.math.MathContext; |
| import java.util.*; |
| |
| import org.hamcrest.Description; |
| import org.hamcrest.Matcher; |
| import org.hamcrest.TypeSafeDiagnosingMatcher; |
| import org.junit.Test; |
| |
| public class TestValidators { |
| |
| private class ValidatorClazzMatcher<T extends Validator> extends TypeSafeDiagnosingMatcher<ConstraintViolation> { |
| |
| private final Matcher<Class<T>> matcher; |
| |
| public ValidatorClazzMatcher(Matcher<Class<T>> matcher) { |
| this.matcher = matcher; |
| } |
| |
| @Override |
| public void describeTo(Description description) { |
| description |
| .appendText("validatorClazz property of ConstraintViolation class containing ") |
| .appendDescriptionOf(matcher); |
| } |
| |
| @Override |
| protected boolean matchesSafely(ConstraintViolation item, Description mismatchDescription) { |
| if (matcher.matches(item.getValidatorClazz())) { |
| return true; |
| } |
| matcher.describeMismatch(item, mismatchDescription); |
| return false; |
| } |
| |
| } |
| |
| private class CollectionMatcher<T> extends TypeSafeDiagnosingMatcher<Iterable<? extends T>> { |
| |
| private final Matcher<? extends T> matcher; |
| |
| public CollectionMatcher(Matcher<? extends T> matcher) { |
| this.matcher = matcher; |
| } |
| |
| @Override |
| public void describeTo(Description description) { |
| description.appendText("a collection containing ").appendDescriptionOf(this.matcher); |
| } |
| |
| @Override |
| protected boolean matchesSafely(Iterable<? extends T> item, Description mismatchDescription) { |
| boolean isFirst = true; |
| |
| for (T obj : item) { |
| if (this.matcher.matches(obj)) { |
| return true; |
| } |
| |
| if (!isFirst) { |
| mismatchDescription.appendText(", "); |
| } |
| |
| this.matcher.describeMismatch(obj, mismatchDescription); |
| isFirst = false; |
| } |
| return false; |
| } |
| |
| } |
| |
| private <T extends Validator> Matcher<? super ConstraintViolation> hasAClass(Matcher<Class<T>> matcher) { |
| return new ValidatorClazzMatcher<>(matcher); |
| } |
| |
| private <T> Matcher<Iterable<? extends T>> hasItem(Matcher<? extends T> matcher) { |
| return new CollectionMatcher<>(matcher); |
| } |
| |
| @Test |
| public void testNotNullValidator() { |
| Object testValue = null; |
| |
| assertThat(new NotNullValidator().validateInternal(testValue), is(false)); |
| assertThat(new NotNullValidator().validate(testValue).size(), is(1)); |
| assertThat(new NotNullValidator().validate(testValue), |
| hasItem(hasAClass(equalTo(NotNullValidator.class)))); |
| } |
| |
| @Test |
| public void testMinValidator() { |
| byte byteValue; |
| short shortValue; |
| int intValue; |
| long longValue; |
| float floatValue; |
| double doubleValue; |
| BigInteger bigIntegerValue; |
| BigDecimal bigDecimalValue; |
| |
| byteValue = 2; |
| assertThat(new MinValidator(Byte.toString(Byte.MIN_VALUE)).validateInternal(byteValue), is(true)); |
| assertThat(new MinValidator(Byte.toString(Byte.MIN_VALUE)).validate(byteValue).size(), is(0)); |
| assertThat(new MinValidator(Byte.toString(Byte.MAX_VALUE)).validateInternal(byteValue), is(false)); |
| assertThat(new MinValidator(Byte.toString(Byte.MAX_VALUE)).validate(byteValue).size(), is(1)); |
| assertThat(new MinValidator(Byte.toString(Byte.MAX_VALUE)).validate(byteValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| shortValue = 3; |
| assertThat(new MinValidator(Short.toString(Short.MIN_VALUE)).validateInternal(shortValue), is(true)); |
| assertThat(new MinValidator(Short.toString(Short.MIN_VALUE)).validate(shortValue).size(), is(0)); |
| assertThat(new MinValidator(Short.toString(Short.MAX_VALUE)).validateInternal(shortValue), is(false)); |
| assertThat(new MinValidator(Short.toString(Short.MAX_VALUE)).validate(shortValue).size(), is(1)); |
| assertThat(new MinValidator(Short.toString(Short.MAX_VALUE)).validate(shortValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| intValue = 4; |
| assertThat(new MinValidator(Integer.toString(Integer.MIN_VALUE)).validateInternal(intValue), is(true)); |
| assertThat(new MinValidator(Integer.toString(Integer.MIN_VALUE)).validate(intValue).size(), is(0)); |
| assertThat(new MinValidator(Integer.toString(Integer.MAX_VALUE)).validateInternal(intValue), is(false)); |
| assertThat(new MinValidator(Integer.toString(Integer.MAX_VALUE)).validate(intValue).size(), is(1)); |
| assertThat(new MinValidator(Integer.toString(Integer.MAX_VALUE)).validate(intValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| longValue = 5; |
| assertThat(new MinValidator(Long.toString(Long.MIN_VALUE)).validateInternal(longValue), is(true)); |
| assertThat(new MinValidator(Long.toString(Long.MIN_VALUE)).validate(longValue).size(), is(0)); |
| assertThat(new MinValidator(Long.toString(Long.MAX_VALUE)).validateInternal(longValue), is(false)); |
| assertThat(new MinValidator(Long.toString(Long.MAX_VALUE)).validate(longValue).size(), is(1)); |
| assertThat(new MinValidator(Long.toString(Long.MAX_VALUE)).validate(longValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| floatValue = 4.7f; |
| assertThat(new MinValidator(Float.toString(Float.MIN_VALUE)).validateInternal(floatValue), is(true)); |
| assertThat(new MinValidator(Float.toString(Float.MIN_VALUE)).validate(floatValue).size(), is(0)); |
| assertThat(new MinValidator(Float.toString(Float.MAX_VALUE)).validateInternal(floatValue), is(false)); |
| assertThat(new MinValidator(Float.toString(Float.MAX_VALUE)).validate(floatValue).size(), is(1)); |
| assertThat(new MinValidator(Float.toString(Float.MAX_VALUE)).validate(floatValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| doubleValue = 7.5e10; |
| assertThat(new MinValidator(Double.toString(Double.MIN_VALUE)).validateInternal(doubleValue), is(true)); |
| assertThat(new MinValidator(Double.toString(Double.MIN_VALUE)).validate(doubleValue).size(), is(0)); |
| assertThat(new MinValidator(Double.toString(Double.MAX_VALUE)).validateInternal(doubleValue), is(false)); |
| assertThat(new MinValidator(Double.toString(Double.MAX_VALUE)).validate(doubleValue).size(), is(1)); |
| assertThat(new MinValidator(Double.toString(Double.MAX_VALUE)).validate(doubleValue), |
| hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| bigIntegerValue = new BigInteger(10, new Random()); |
| assertThat(new MinValidator(new BigInteger(Long.toString(Long.MIN_VALUE)).toString(10)) |
| .validateInternal(bigIntegerValue), is(true)); |
| assertThat(new MinValidator(new BigInteger(Long.toString(Long.MIN_VALUE)).toString(10)) |
| .validate(bigIntegerValue).size(), is(0)); |
| assertThat(new MinValidator(new BigInteger(Long.toString(Long.MAX_VALUE)).toString(10)) |
| .validateInternal(bigIntegerValue), is(false)); |
| assertThat(new MinValidator(new BigInteger(Long.toString(Long.MAX_VALUE)).toString(10)) |
| .validate(bigIntegerValue).size(), is(1)); |
| assertThat(new MinValidator(new BigInteger(Long.toString(Long.MAX_VALUE)).toString(10)) |
| .validate(bigIntegerValue), hasItem(hasAClass(equalTo(MinValidator.class)))); |
| |
| bigDecimalValue = new BigDecimal(new BigInteger(10, new Random()), MathContext.DECIMAL64); |
| assertThat(new MinValidator(new BigDecimal(Double.MIN_VALUE).toString()) |
| .validateInternal(bigDecimalValue), is(true)); |
| assertThat(new MinValidator(new BigDecimal(Double.MIN_VALUE).toString()) |
| .validate(bigDecimalValue).size(), is(0)); |
| assertThat(new MinValidator(new BigDecimal(Double.MAX_VALUE).toString()) |
| .validateInternal(bigDecimalValue), is(false)); |
| assertThat(new MinValidator(new BigDecimal(Double.MAX_VALUE).toString()) |
| .validate(bigDecimalValue).size(), is(1)); |
| assertThat(new MinValidator(new BigDecimal(Double.MAX_VALUE).toString()) |
| .validate(bigDecimalValue), hasItem(hasAClass(equalTo(MinValidator.class)))); |
| } |
| |
| @Test |
| public void testMaxValidator() { |
| byte byteValue; |
| short shortValue; |
| int intValue; |
| long longValue; |
| float floatValue; |
| double doubleValue; |
| BigInteger bigIntegerValue; |
| BigDecimal bigDecimalValue; |
| |
| byteValue = 2; |
| assertThat(new MaxValidator(Byte.toString(Byte.MAX_VALUE)).validateInternal(byteValue), is(true)); |
| assertThat(new MaxValidator(Byte.toString(Byte.MAX_VALUE)).validate(byteValue).size(), is(0)); |
| assertThat(new MaxValidator(Byte.toString(Byte.MIN_VALUE)).validateInternal(byteValue), is(false)); |
| assertThat(new MaxValidator(Byte.toString(Byte.MIN_VALUE)).validate(byteValue).size(), is(1)); |
| assertThat(new MaxValidator(Byte.toString(Byte.MIN_VALUE)).validate(byteValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| shortValue = 3; |
| assertThat(new MaxValidator(Short.toString(Short.MAX_VALUE)).validateInternal(shortValue), is(true)); |
| assertThat(new MaxValidator(Short.toString(Short.MAX_VALUE)).validate(shortValue).size(), is(0)); |
| assertThat(new MaxValidator(Short.toString(Short.MIN_VALUE)).validateInternal(shortValue), is(false)); |
| assertThat(new MaxValidator(Short.toString(Short.MIN_VALUE)).validate(shortValue).size(), is(1)); |
| assertThat(new MaxValidator(Short.toString(Short.MIN_VALUE)).validate(shortValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| intValue = 4; |
| assertThat(new MaxValidator(Integer.toString(Integer.MAX_VALUE)).validateInternal(intValue), is(true)); |
| assertThat(new MaxValidator(Integer.toString(Integer.MAX_VALUE)).validate(intValue).size(), is(0)); |
| assertThat(new MaxValidator(Integer.toString(Integer.MIN_VALUE)).validateInternal(intValue), is(false)); |
| assertThat(new MaxValidator(Integer.toString(Integer.MIN_VALUE)).validate(intValue).size(), is(1)); |
| assertThat(new MaxValidator(Integer.toString(Integer.MIN_VALUE)).validate(intValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| longValue = 5; |
| assertThat(new MaxValidator(Long.toString(Long.MAX_VALUE)).validateInternal(longValue), is(true)); |
| assertThat(new MaxValidator(Long.toString(Long.MAX_VALUE)).validate(longValue).size(), is(0)); |
| assertThat(new MaxValidator(Long.toString(Long.MIN_VALUE)).validateInternal(longValue), is(false)); |
| assertThat(new MaxValidator(Long.toString(Long.MIN_VALUE)).validate(longValue).size(), is(1)); |
| assertThat(new MaxValidator(Long.toString(Long.MIN_VALUE)).validate(longValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| floatValue = 4.7f; |
| assertThat(new MaxValidator(Float.toString(Float.MAX_VALUE)).validateInternal(floatValue), is(true)); |
| assertThat(new MaxValidator(Float.toString(Float.MAX_VALUE)).validate(floatValue).size(), is(0)); |
| assertThat(new MaxValidator(Float.toString(Float.MIN_VALUE)).validateInternal(floatValue), is(false)); |
| assertThat(new MaxValidator(Float.toString(Float.MIN_VALUE)).validate(floatValue).size(), is(1)); |
| assertThat(new MaxValidator(Float.toString(Float.MIN_VALUE)).validate(floatValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| doubleValue = 7.5e10; |
| assertThat(new MaxValidator(Double.toString(Double.MAX_VALUE)).validateInternal(doubleValue), is(true)); |
| assertThat(new MaxValidator(Double.toString(Double.MAX_VALUE)).validate(doubleValue).size(), is(0)); |
| assertThat(new MaxValidator(Double.toString(Double.MIN_VALUE)).validateInternal(doubleValue), is(false)); |
| assertThat(new MaxValidator(Double.toString(Double.MIN_VALUE)).validate(doubleValue).size(), is(1)); |
| assertThat(new MaxValidator(Double.toString(Double.MIN_VALUE)).validate(doubleValue), |
| hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| bigIntegerValue = new BigInteger(10, new Random()); |
| assertThat(new MaxValidator(new BigInteger(Long.toString(Long.MAX_VALUE)).toString(10)) |
| .validateInternal(bigIntegerValue), is(true)); |
| assertThat(new MaxValidator(new BigInteger(Long.toString(Long.MAX_VALUE)).toString(10)) |
| .validate(bigIntegerValue).size(), is(0)); |
| assertThat(new MaxValidator(new BigInteger(Long.toString(Long.MIN_VALUE)).toString(10)) |
| .validateInternal(bigIntegerValue), is(false)); |
| assertThat(new MaxValidator(new BigInteger(Long.toString(Long.MIN_VALUE)).toString(10)) |
| .validate(bigIntegerValue).size(), is(1)); |
| assertThat(new MaxValidator(new BigInteger(Long.toString(Long.MIN_VALUE)).toString(10)) |
| .validate(bigIntegerValue), hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| |
| bigDecimalValue = new BigDecimal(new BigInteger(10, new Random()), MathContext.DECIMAL64); |
| assertThat(new MaxValidator(new BigDecimal(Double.MAX_VALUE).toString()) |
| .validateInternal(bigDecimalValue), is(true)); |
| assertThat(new MaxValidator(new BigDecimal(Double.MAX_VALUE).toString()) |
| .validate(bigDecimalValue).size(), is(0)); |
| assertThat(new MaxValidator(new BigDecimal(Double.MIN_VALUE).toString()) |
| .validateInternal(bigDecimalValue), is(false)); |
| assertThat(new MaxValidator(new BigDecimal(Double.MIN_VALUE).toString()) |
| .validate(bigDecimalValue).size(), is(1)); |
| assertThat(new MaxValidator(new BigDecimal(Double.MIN_VALUE).toString()) |
| .validate(bigDecimalValue), hasItem(hasAClass(equalTo(MaxValidator.class)))); |
| } |
| |
| @Test |
| public void testPatternValidator() { |
| String schemeString = "http://tajo.apache.org"; |
| assertThat(new PatternValidator("^([a-zA-Z])+://").validateInternal(schemeString), is(true)); |
| assertThat(new PatternValidator("^([a-zA-Z])+://").validate(schemeString).size(), is(0)); |
| assertThat(new PatternValidator("([a-zA-Z])+://$").validateInternal(schemeString), is(false)); |
| assertThat(new PatternValidator("([a-zA-Z])+://$").validate(schemeString).size(), is(1)); |
| assertThat(new PatternValidator("([a-zA-Z])+://$").validate(schemeString), |
| hasItem(hasAClass(equalTo(PatternValidator.class)))); |
| } |
| |
| @Test |
| public void testLengthValidator() { |
| String shortString = "12345"; |
| String longString = UUID.randomUUID().toString(); |
| |
| assertThat(new LengthValidator(10).validateInternal(shortString), is(true)); |
| assertThat(new LengthValidator(10).validate(shortString).size(), is(0)); |
| assertThat(new LengthValidator(3).validateInternal(shortString), is(false)); |
| assertThat(new LengthValidator(3).validate(shortString).size(), is(1)); |
| assertThat(new LengthValidator(3).validate(shortString), |
| hasItem(hasAClass(equalTo(LengthValidator.class)))); |
| |
| assertThat(new LengthValidator(40).validateInternal(longString), is(true)); |
| assertThat(new LengthValidator(40).validate(longString).size(), is(0)); |
| assertThat(new LengthValidator(10).validateInternal(longString), is(false)); |
| assertThat(new LengthValidator(10).validate(longString).size(), is(1)); |
| assertThat(new LengthValidator(10).validate(longString), |
| hasItem(hasAClass(equalTo(LengthValidator.class)))); |
| } |
| |
| @Test |
| public void testGroupValidator() { |
| String httpUrl = "http://tajo.apache.org"; |
| Collection<Validator> validators = null; |
| |
| validators = new HashSet<>(); |
| validators.add(new PatternValidator("^[a-zA-Z]+://")); |
| validators.add(new LengthValidator(255)); |
| assertThat(new GroupValidator(validators).validate(httpUrl).size(), is(0)); |
| assertThat(new GroupValidator(validators).validate("tajo").size(), is(1)); |
| assertThat(new GroupValidator(validators).validate("tajo"), |
| hasItem(hasAClass(equalTo(PatternValidator.class)))); |
| |
| validators = new HashSet<>(); |
| validators.add(new PatternValidator("^[a-zA-Z]+://")); |
| validators.add(new LengthValidator(7)); |
| assertThat(new GroupValidator(validators).validate(httpUrl).size(), is(1)); |
| assertThat(new GroupValidator(validators).validate(httpUrl), |
| hasItem(hasAClass(equalTo(LengthValidator.class)))); |
| } |
| |
| @Test |
| public void testRangeValidator() { |
| int intValue = 5; |
| |
| assertThat(new RangeValidator("0", Integer.toString(Integer.MAX_VALUE)).validateInternal(intValue), |
| is(true)); |
| assertThat(new RangeValidator("1024", "2048").validateInternal(intValue), is(false)); |
| } |
| |
| @Test(expected=ConstraintViolationException.class) |
| public void testExceptionThrow() { |
| Collection<Validator> validators = null; |
| |
| validators = new HashSet<>(); |
| validators.add(new PatternValidator("^[a-zA-Z]+://")); |
| validators.add(new LengthValidator(255)); |
| new GroupValidator(validators).validate("tajo", true); |
| |
| fail(); |
| } |
| |
| @Test |
| public void testPathValidator() { |
| String validUrl = "file:///tmp/tajo-$root/"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "file:///tmp/tajo-${user.name}/"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "file:/home/tajo/test-data/TestExternalSortExec"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "file:///C:/Windows/System32"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "/C:/Windows/system32/driver"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "/tmp/tajo-root/"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "hdfs://localhost:7020/tajo-root"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "hdfs://127.0.0.1:7020/tajo-root"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| validUrl = "hdfs://192.168.0.1:7020/tajo-root"; |
| assertThat(new PathValidator().validateInternal(validUrl), is(true)); |
| assertThat(new PathValidator().validate(validUrl).size(), is(0)); |
| |
| String invalidUrl = "t!ef:///tmp/tajo-root"; |
| assertThat(new PathValidator().validateInternal(invalidUrl), is(false)); |
| assertThat(new PathValidator().validate(invalidUrl).size(), is(1)); |
| assertThat(new PathValidator().validate(invalidUrl), |
| hasItem(hasAClass(equalTo(PathValidator.class)))); |
| |
| invalidUrl = "This is not a valid url."; |
| assertThat(new PathValidator().validateInternal(invalidUrl), is(false)); |
| assertThat(new PathValidator().validate(invalidUrl).size(), is(1)); |
| assertThat(new PathValidator().validate(invalidUrl), |
| hasItem(hasAClass(equalTo(PathValidator.class)))); |
| } |
| |
| @Test |
| public void testPathListValidator() { |
| String validUrls = |
| "file:///tmp/tajo-$root/a,file:///tmp/tajo-${user.name}/,file:/home/tajo/test-data/TestExternalSortExec"; |
| assertThat(new PathListValidator().validateInternal(validUrls), is(true)); |
| assertThat(new PathListValidator().validate(validUrls).size(), is(0)); |
| |
| validUrls = |
| "file:///tmp/tajo-$root/a, file:///tmp/tajo-${user.name}/, file:/home/tajo/test-data/TestExternalSortExec"; |
| assertThat(new PathListValidator().validateInternal(validUrls), is(true)); |
| assertThat(new PathListValidator().validate(validUrls).size(), is(0)); |
| |
| validUrls = "/tmp/tajo-hyunsik/tmpdir1,/tmp/tajo-hyunsik/tmpdir2"; |
| assertThat(new PathListValidator().validateInternal(validUrls), is(true)); |
| assertThat(new PathListValidator().validate(validUrls).size(), is(0)); |
| |
| String invalidUrls = |
| "file:///tmp/tajo-$root/a, t!ef:///tmp/tajo-root, file:/home/tajo/test-data/TestExternalSortExec"; |
| assertThat(new PathListValidator().validateInternal(invalidUrls), is(false)); |
| assertThat(new PathListValidator().validate(invalidUrls).size(), is(1)); |
| assertThat(new PathListValidator().validate(invalidUrls), |
| hasItem(hasAClass(equalTo(PathListValidator.class)))); |
| |
| invalidUrls = "This is not a valid url,This is not a valid url"; |
| assertThat(new PathListValidator().validateInternal(invalidUrls), is(false)); |
| assertThat(new PathListValidator().validate(invalidUrls).size(), is(1)); |
| assertThat(new PathListValidator().validate(invalidUrls), |
| hasItem(hasAClass(equalTo(PathListValidator.class)))); |
| } |
| |
| @Test |
| public void testShellVariableValidator() { |
| String validVariable = "${user.name}"; |
| assertThat(new ShellVariableValidator().validateInternal(validVariable), is(true)); |
| assertThat(new ShellVariableValidator().validate(validVariable).size(), is(0)); |
| |
| validVariable = "$SHELL"; |
| assertThat(new ShellVariableValidator().validateInternal(validVariable), is(true)); |
| assertThat(new ShellVariableValidator().validate(validVariable).size(), is(0)); |
| |
| validVariable = "STRING"; |
| assertThat(new ShellVariableValidator().validateInternal(validVariable), is(true)); |
| assertThat(new ShellVariableValidator().validate(validVariable).size(), is(0)); |
| |
| String invalidVariable = "Invalid Shell Variable Name"; |
| assertThat(new ShellVariableValidator().validateInternal(invalidVariable), is(false)); |
| assertThat(new ShellVariableValidator().validate(invalidVariable).size(), is(1)); |
| assertThat(new ShellVariableValidator().validate(invalidVariable), |
| hasItem(hasAClass(equalTo(ShellVariableValidator.class)))); |
| } |
| |
| @Test |
| public void testNetworkAddressValidator() { |
| String validNetworkAddress = "localhost:5000"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "192.168.0.1:5000"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "0.0.0.0:28094"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "Tajo-Test.apache.org"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "192.168.122.1"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "[2001:db8::ff00:42:8329]:20089"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "2001:db8::ff00:42:8330:20089"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| validNetworkAddress = "2001:db8::ff00:42:8331.20089"; |
| assertThat(new NetworkAddressValidator().validateInternal(validNetworkAddress), is(true)); |
| assertThat(new NetworkAddressValidator().validate(validNetworkAddress).size(), is(0)); |
| |
| String invalidNetAddr = "5000"; |
| assertThat(new NetworkAddressValidator().validateInternal(invalidNetAddr), is(false)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr).size(), is(1)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr), |
| hasItem(hasAClass(equalTo(NetworkAddressValidator.class)))); |
| |
| invalidNetAddr = "192.168.:"; |
| assertThat(new NetworkAddressValidator().validateInternal(invalidNetAddr), is(false)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr).size(), is(1)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr), |
| hasItem(hasAClass(equalTo(NetworkAddressValidator.class)))); |
| |
| invalidNetAddr = "localhost:98765"; |
| assertThat(new NetworkAddressValidator().validateInternal(invalidNetAddr), is(false)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr).size(), is(1)); |
| assertThat(new NetworkAddressValidator().validate(invalidNetAddr), |
| hasItem(hasAClass(equalTo(NetworkAddressValidator.class)))); |
| } |
| |
| @Test |
| public void testBooleanValidator() { |
| String validBoolean = "true"; |
| assertThat(new BooleanValidator().validateInternal(validBoolean), is(true)); |
| assertThat(new BooleanValidator().validate(validBoolean).size(), is(0)); |
| |
| validBoolean = "false"; |
| assertThat(new BooleanValidator().validateInternal(validBoolean), is(true)); |
| assertThat(new BooleanValidator().validate(validBoolean).size(), is(0)); |
| |
| assertThat(new BooleanValidator().validateInternal(true), is(true)); |
| assertThat(new BooleanValidator().validate(true).size(), is(0)); |
| |
| assertThat(new BooleanValidator().validateInternal(false), is(true)); |
| assertThat(new BooleanValidator().validate(false).size(), is(0)); |
| |
| String invalidBoolean = "yes"; |
| assertThat(new BooleanValidator().validateInternal(invalidBoolean), is(false)); |
| assertThat(new BooleanValidator().validate(invalidBoolean).size(), is(1)); |
| assertThat(new BooleanValidator().validate(invalidBoolean), |
| hasItem(hasAClass(equalTo(BooleanValidator.class)))); |
| |
| invalidBoolean = "nope"; |
| assertThat(new BooleanValidator().validateInternal(invalidBoolean), is(false)); |
| assertThat(new BooleanValidator().validate(invalidBoolean).size(), is(1)); |
| assertThat(new BooleanValidator().validate(invalidBoolean), |
| hasItem(hasAClass(equalTo(BooleanValidator.class)))); |
| |
| invalidBoolean = "invalid"; |
| assertThat(new BooleanValidator().validateInternal(invalidBoolean), is(false)); |
| assertThat(new BooleanValidator().validate(invalidBoolean).size(), is(1)); |
| assertThat(new BooleanValidator().validate(invalidBoolean), |
| hasItem(hasAClass(equalTo(BooleanValidator.class)))); |
| } |
| |
| @Test |
| public void testClassValidator() { |
| String clazzName = "org.apache.tajo.validation.ClassValidator"; |
| assertThat(new ClassValidator().validateInternal(clazzName), is(true)); |
| assertThat(new ClassValidator().validate(clazzName).size(), is(0)); |
| |
| clazzName = "org.apache.tajo.ConfigKey"; |
| assertThat(new ClassValidator().validateInternal(clazzName), is(true)); |
| assertThat(new ClassValidator().validate(clazzName).size(), is(0)); |
| |
| String invalidClazzName = "invalid-.class.name"; |
| assertThat(new ClassValidator().validateInternal(invalidClazzName), is(false)); |
| assertThat(new ClassValidator().validate(invalidClazzName).size(), is(1)); |
| assertThat(new ClassValidator().validate(invalidClazzName), |
| hasItem(hasAClass(equalTo(ClassValidator.class)))); |
| } |
| |
| @Test |
| public void testStringValidator() { |
| String validAsciiString = "tajo-root900"; |
| assertThat(new JavaStringValidator().validateInternal(validAsciiString), is(true)); |
| assertThat(new JavaStringValidator().validate(validAsciiString).size(), is(0)); |
| |
| String validMultibyteString = "타조009"; |
| assertThat(new JavaStringValidator().validateInternal(validMultibyteString), is(true)); |
| assertThat(new JavaStringValidator().validate(validMultibyteString).size(), is(0)); |
| |
| String invalidAsciiString = " inva - "; |
| assertThat(new JavaStringValidator().validateInternal(invalidAsciiString), is(false)); |
| assertThat(new JavaStringValidator().validate(invalidAsciiString).size(), is(1)); |
| assertThat(new JavaStringValidator().validate(invalidAsciiString), |
| hasItem(hasAClass(equalTo(JavaStringValidator.class)))); |
| } |
| |
| } |