Author: atm Date: Wed Mar 13 19:56:03 2013 New Revision: 1456109 URL: http://svn.apache.org/r1456109 Log: HDFS-4591. HA clients can fail to fail over while Standby NN is performing long checkpoint. Contributed by Aaron T. Myers.
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java?rev=1456109&r1=1456108&r2=1456109&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java (original) +++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java Wed Mar 13 19:56:03 2013 @@ -162,6 +162,9 @@ public abstract class GenericTestUtils { private final CountDownLatch waitLatch = new CountDownLatch(1); private final CountDownLatch resultLatch = new CountDownLatch(1); + private final AtomicInteger fireCounter = new AtomicInteger(0); + private final AtomicInteger resultCounter = new AtomicInteger(0); + // Result fields set after proceed() is called. private volatile Throwable thrown; private volatile Object returnValue; @@ -188,6 +191,7 @@ public abstract class GenericTestUtils { @Override public Object answer(InvocationOnMock invocation) throws Throwable { LOG.info("DelayAnswer firing fireLatch"); + fireCounter.getAndIncrement(); fireLatch.countDown(); try { LOG.info("DelayAnswer waiting on waitLatch"); @@ -208,6 +212,7 @@ public abstract class GenericTestUtils { thrown = t; throw t; } finally { + resultCounter.incrementAndGet(); resultLatch.countDown(); } } @@ -235,6 +240,14 @@ public abstract class GenericTestUtils { public Object getReturnValue() { return returnValue; } + + public int getFireCount() { + return fireCounter.get(); + } + + public int getResultCount() { + return resultCounter.get(); + } } /**