blob: 68446acc4505d0cead025983079348c46a20d210 [file] [log] [blame]
/**
* 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))));
}
}