HADOOP-14568. GenericTestUtils#waitFor missing parameter verification.
Contributed by Yiqun Lin
This commit is contained in:
parent
ca13b224b2
commit
e5db9af8a0
|
@ -59,6 +59,7 @@ import org.mockito.invocation.InvocationOnMock;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
@ -85,6 +86,14 @@ public abstract class GenericTestUtils {
|
||||||
*/
|
*/
|
||||||
public static final String DEFAULT_TEST_DATA_PATH = "target/test/data/";
|
public static final String DEFAULT_TEST_DATA_PATH = "target/test/data/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error string used in {@link GenericTestUtils#waitFor(Supplier, int, int)}.
|
||||||
|
*/
|
||||||
|
public static final String ERROR_MISSING_ARGUMENT =
|
||||||
|
"Input supplier interface should be initailized";
|
||||||
|
public static final String ERROR_INVALID_ARGUMENT =
|
||||||
|
"Total wait time should be greater than check interval time";
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static void disableLog(Log log) {
|
public static void disableLog(Log log) {
|
||||||
// We expect that commons-logging is a wrapper around Log4j.
|
// We expect that commons-logging is a wrapper around Log4j.
|
||||||
|
@ -258,10 +267,12 @@ public abstract class GenericTestUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void waitFor(Supplier<Boolean> check,
|
public static void waitFor(Supplier<Boolean> check, int checkEveryMillis,
|
||||||
int checkEveryMillis, int waitForMillis)
|
int waitForMillis) throws TimeoutException, InterruptedException {
|
||||||
throws TimeoutException, InterruptedException
|
Preconditions.checkNotNull(check, ERROR_MISSING_ARGUMENT);
|
||||||
{
|
Preconditions.checkArgument(waitForMillis > checkEveryMillis,
|
||||||
|
ERROR_INVALID_ARGUMENT);
|
||||||
|
|
||||||
long st = Time.now();
|
long st = Time.now();
|
||||||
do {
|
do {
|
||||||
boolean result = check.get();
|
boolean result = check.get();
|
||||||
|
|
|
@ -26,7 +26,10 @@ import org.junit.Test;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.google.common.base.Supplier;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
public class TestGenericTestUtils extends GenericTestUtils {
|
public class TestGenericTestUtils extends GenericTestUtils {
|
||||||
|
|
||||||
|
@ -119,4 +122,33 @@ public class TestGenericTestUtils extends GenericTestUtils {
|
||||||
assertTrue(logCapturer.getOutput().isEmpty());
|
assertTrue(logCapturer.getOutput().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWaitingForConditionWithInvalidParams() throws Throwable {
|
||||||
|
// test waitFor method with null supplier interface
|
||||||
|
try {
|
||||||
|
waitFor(null, 0, 0);
|
||||||
|
} catch (NullPointerException e) {
|
||||||
|
assertExceptionContains(GenericTestUtils.ERROR_MISSING_ARGUMENT, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
Supplier<Boolean> simpleSupplier = new Supplier<Boolean>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean get() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// test waitFor method with waitForMillis greater than checkEveryMillis
|
||||||
|
waitFor(simpleSupplier, 5, 10);
|
||||||
|
try {
|
||||||
|
// test waitFor method with waitForMillis smaller than checkEveryMillis
|
||||||
|
waitFor(simpleSupplier, 10, 5);
|
||||||
|
fail(
|
||||||
|
"Excepted a failure when the param value of"
|
||||||
|
+ " waitForMillis is smaller than checkEveryMillis.");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
assertExceptionContains(GenericTestUtils.ERROR_INVALID_ARGUMENT, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue