You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by st...@apache.org on 2017/06/23 13:41:20 UTC

hadoop git commit: HADOOP-14568. GenericTestUtils#waitFor missing parameter verification. Contributed by Yiqun Lin

Repository: hadoop
Updated Branches:
  refs/heads/branch-2 f9f6ef83e -> 5858bc70a


HADOOP-14568. GenericTestUtils#waitFor missing parameter verification.
Contributed by Yiqun Lin

(cherry picked from commit e5db9af8a00ded73ee1c75bb4c0d5d50e15a305c)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5858bc70
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5858bc70
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5858bc70

Branch: refs/heads/branch-2
Commit: 5858bc70a24ea7dd920559cb6f0de9ba5a5dd484
Parents: f9f6ef8
Author: Steve Loughran <st...@apache.org>
Authored: Fri Jun 23 14:41:08 2017 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Fri Jun 23 14:41:08 2017 +0100

----------------------------------------------------------------------
 .../apache/hadoop/test/GenericTestUtils.java    | 19 +++++++++---
 .../hadoop/test/TestGenericTestUtils.java       | 32 ++++++++++++++++++++
 2 files changed, 47 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/5858bc70/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
index 7b94784..fcc4e3c 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
@@ -59,6 +59,7 @@ import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
 import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
 import com.google.common.base.Supplier;
 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/";
 
+  /**
+   * 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")
   public static void disableLog(Log log) {
     // 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,
-      int checkEveryMillis, int waitForMillis)
-      throws TimeoutException, InterruptedException
-  {
+  public static void waitFor(Supplier<Boolean> check, int checkEveryMillis,
+      int waitForMillis) throws TimeoutException, InterruptedException {
+    Preconditions.checkNotNull(check, ERROR_MISSING_ARGUMENT);
+    Preconditions.checkArgument(waitForMillis > checkEveryMillis,
+        ERROR_INVALID_ARGUMENT);
+
     long st = Time.now();
     do {
       boolean result = check.get();

http://git-wip-us.apache.org/repos/asf/hadoop/blob/5858bc70/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
index 86df5d5..b3fc836 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
@@ -26,7 +26,10 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Supplier;
+
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 public class TestGenericTestUtils extends GenericTestUtils {
 
@@ -119,4 +122,33 @@ public class TestGenericTestUtils extends GenericTestUtils {
     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);
+    }
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org