Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D849A1058B for ; Tue, 2 Jul 2013 18:33:36 +0000 (UTC) Received: (qmail 42441 invoked by uid 500); 2 Jul 2013 18:33:36 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 42253 invoked by uid 500); 2 Jul 2013 18:33:34 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 42240 invoked by uid 99); 2 Jul 2013 18:33:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Jul 2013 18:33:34 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Jul 2013 18:33:30 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 697132388980; Tue, 2 Jul 2013 18:33:09 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1499047 - /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java Date: Tue, 02 Jul 2013 18:33:09 -0000 To: commits@hbase.apache.org From: enis@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130702183309.697132388980@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: enis Date: Tue Jul 2 18:33:09 2013 New Revision: 1499047 URL: http://svn.apache.org/r1499047 Log: HBASE-8703 [WINDOWS] Timed-out processes exit with non-zero code causing HealthChecker to report incorrectly. ADDENDUM patch to fix flaky test Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java?rev=1499047&r1=1499046&r2=1499047&view=diff ============================================================================== --- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java (original) +++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNodeHealthCheckChore.java Tue Jul 2 18:33:09 2013 @@ -25,6 +25,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; +import java.util.UUID; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -55,32 +56,38 @@ public class TestNodeHealthCheckChore { } @Test - public void testHealthChecker() throws Exception { + public void testHealthCheckerSuccess() throws Exception { + String normalScript = "echo \"I am all fine\""; + healthCheckerTest(normalScript, HealthCheckerExitStatus.SUCCESS); + } + + @Test + public void testHealthCheckerFail() throws Exception { + String errorScript = "echo ERROR" + eol + "echo \"Node not healthy\""; + healthCheckerTest(errorScript, HealthCheckerExitStatus.FAILED); + } + + @Test + public void testHealthCheckerTimeout() throws Exception { + String timeOutScript = "sleep 4" + eol + "echo \"I am fine\""; + healthCheckerTest(timeOutScript, HealthCheckerExitStatus.TIMED_OUT); + } + + public void healthCheckerTest(String script, HealthCheckerExitStatus expectedStatus) + throws Exception { Configuration config = getConfForNodeHealthScript(); config.addResource(healthScriptFile.getName()); String location = healthScriptFile.getAbsolutePath(); long timeout = config.getLong(HConstants.HEALTH_SCRIPT_TIMEOUT, 2000); + HealthChecker checker = new HealthChecker(); checker.init(location, timeout); - String normalScript = "echo \"I am all fine\""; - createScript(normalScript, true); + createScript(script, true); HealthReport report = checker.checkHealth(); + assertEquals(expectedStatus, report.getStatus()); LOG.info("Health Status:" + report.getHealthReport()); - assertEquals(HealthCheckerExitStatus.SUCCESS, report.getStatus()); - - String errorScript = "echo ERROR" + eol + "echo \"Server not healthy\""; - createScript(errorScript, true); - report = checker.checkHealth(); - LOG.info("Health Status:" + report.getHealthReport()); - assertEquals(HealthCheckerExitStatus.FAILED, report.getStatus()); - - String timeOutScript = "sleep 4" + eol + "echo \"I am fine\""; - createScript(timeOutScript, true); - report = checker.checkHealth(); - LOG.info("Health Status:" + report.getHealthReport()); - assertEquals(HealthCheckerExitStatus.TIMED_OUT, report.getStatus()); this.healthScriptFile.delete(); } @@ -130,7 +137,8 @@ public class TestNodeHealthCheckChore { throw new IOException("Failed mkdirs " + tempDir); } } - String scriptName = Shell.WINDOWS ? "HealthScript.cmd" : "HealthScript.sh"; + String scriptName = "HealthScript" + UUID.randomUUID().toString() + + (Shell.WINDOWS ? ".cmd" : ".sh"); healthScriptFile = new File(tempDir.getAbsolutePath(), scriptName); conf.set(HConstants.HEALTH_SCRIPT_LOC, healthScriptFile.getAbsolutePath()); conf.setLong(HConstants.HEALTH_FAILURE_THRESHOLD, 3);