SLIDER-979 AM web UI to show state of AA request
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b2b58d35 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b2b58d35 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b2b58d35 Branch: refs/heads/develop Commit: b2b58d35e624ba877f0db684c988e4e44ce289fb Parents: 830864f Author: Steve Loughran <[email protected]> Authored: Tue Nov 17 19:56:22 2015 +0000 Committer: Steve Loughran <[email protected]> Committed: Tue Nov 17 19:56:22 2015 +0000 ---------------------------------------------------------------------- .../slider/api/types/ComponentInformation.java | 4 +- .../server/appmaster/web/view/IndexBlock.java | 131 ++++++++++++++----- .../server/appmaster/web/view/NavBlock.java | 1 - .../slider/agent/rest/TestStandaloneREST.groovy | 3 +- .../providers/agent/DemoAgentAAEcho.groovy | 8 +- .../providers/agent/TestAgentAAEcho.groovy | 54 ++++++-- .../appmaster/web/view/TestIndexBlock.groovy | 6 +- .../apache/slider/test/SliderTestUtils.groovy | 6 +- slider-core/src/test/python/agent/main.py | 2 +- .../src/test/resources/example-slider-test.xml | 70 ---------- 10 files changed, 150 insertions(+), 135 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java index 3771988..c46a59f 100644 --- a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java +++ b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java @@ -91,14 +91,14 @@ public class ComponentInformation { sb.append(", failureMessage='").append(failureMessage).append('\''); sb.append(", placementPolicy=").append(placementPolicy); sb.append(", isAARequestOutstanding=").append(isAARequestOutstanding); - sb.append(", pendingAntiAffineRequestCount").append(pendingAntiAffineRequestCount); + sb.append(", pendingAntiAffineRequestCount=").append(pendingAntiAffineRequestCount); sb.append(", priority=").append(priority); sb.append(", releasing=").append(releasing); sb.append(", requested=").append(requested); sb.append(", started=").append(started); sb.append(", startFailed=").append(startFailed); sb.append(", totalRequested=").append(totalRequested); - sb.append("container count='") + sb.append(", container count='") .append(containers == null ? 0 : containers.size()) .append('\''); sb.append('}'); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java index 8152f27..b3be3bf 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java @@ -32,6 +32,7 @@ import org.apache.slider.server.appmaster.web.WebAppApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -40,7 +41,7 @@ import java.util.Map.Entry; import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_COMPONENTS; /** - * + * The main content on the Slider AM web page */ public class IndexBlock extends SliderHamletBlock { private static final Logger log = LoggerFactory.getLogger(IndexBlock.class); @@ -59,16 +60,13 @@ public class IndexBlock extends SliderHamletBlock { @Override protected void render(Block html) { - final String providerName = getProviderName(); - - doIndex(html, providerName); + doIndex(html, getProviderName()); } // An extra method to make testing easier since you can't make an instance of Block @VisibleForTesting protected void doIndex(Hamlet html, String providerName) { ClusterDescription clusterStatus = appState.getClusterStatus(); - RoleStatistics roleStats = appState.getRoleStatistics(); String name = clusterStatus.name; if (name != null && (name.startsWith(" ") || name.endsWith(" "))) { name = "'" + name + "'"; @@ -111,21 +109,27 @@ public class IndexBlock extends SliderHamletBlock { .td("Application configuration path: ") .td(clusterStatus.originConfigurationPath) ._(); - table1._()._(); + table1._(); + div._(); + div = null; + DIV<Hamlet> containers = html.div("container_instances") + .h3("Component Instances"); - html.div("container_instances").h3("Component Instances"); + int aaRoleWithNoSuitableLocations = 0; + int aaRoleWithOpenRequest = 0; + int roleWithOpenRequest = 0; - Hamlet.TABLE<DIV<Hamlet>> table = div.table(); - Hamlet.TR<Hamlet.THEAD<Hamlet.TABLE<DIV<Hamlet>>>> tr = table.thead().tr(); - trb(tr, "Component"); - trb(tr, "Desired"); - trb(tr, "Actual"); - trb(tr, "Outstanding Requests"); - trb(tr, "Failed"); - trb(tr, "Failed to start"); - trb(tr, "Placement"); - tr._()._(); + Hamlet.TABLE<DIV<Hamlet>> table = containers.table(); + Hamlet.TR<Hamlet.THEAD<Hamlet.TABLE<DIV<Hamlet>>>> header = table.thead().tr(); + trb(header, "Component"); + trb(header, "Desired"); + trb(header, "Actual"); + trb(header, "Outstanding Requests"); + trb(header, "Failed"); + trb(header, "Failed to start"); + trb(header, "Placement"); + header._()._(); // tr & thead List<RoleStatus> roleStatuses = appState.cloneRoleStatusList(); Collections.sort(roleStatuses, new RoleStatus.CompareByName()); @@ -134,13 +138,26 @@ public class IndexBlock extends SliderHamletBlock { String nameUrl = apiPath(LIVE_COMPONENTS) + "/" + roleName; String aatext; if (status.isAntiAffinePlacement()) { - int outstanding = status.isAARequestOutstanding() ? 1: 0; + boolean aaRequestOutstanding = status.isAARequestOutstanding(); int pending = (int)status.getPendingAntiAffineRequests(); - aatext = String.format("Anti-affine: %d outstanding %s, %d pending %s", - outstanding, plural(outstanding, "request"), - pending, plural(pending, "request")); + aatext = buildAADetails(aaRequestOutstanding, pending); + if (SliderUtils.isSet(status.getLabelExpression())) { + aatext += " (label: " + status.getLabelExpression() + ")"; + } + if (pending > 0 && !aaRequestOutstanding) { + aaRoleWithNoSuitableLocations ++; + } else if (aaRequestOutstanding) { + aaRoleWithOpenRequest++; + } } else { - aatext = ""; + if (SliderUtils.isSet(status.getLabelExpression())) { + aatext = "label: " + status.getLabelExpression(); + } else { + aatext = ""; + } + if (status.getRequested() > 0) { + roleWithOpenRequest ++; + } } table.tr() .td().a(nameUrl, roleName)._() @@ -153,23 +170,69 @@ public class IndexBlock extends SliderHamletBlock { ._(); } - table._()._(); + // empty row for some more spacing + table.tr()._(); + // close table + table._(); + + containers._(); + containers = null; // some spacing - html.p()._(); - html.p()._(); + html.div()._(); + html.div()._(); + + DIV<Hamlet> diagnostics = html.div("diagnostics"); + + List<String> statusEntries = new ArrayList<>(0); + if (roleWithOpenRequest > 0) { + statusEntries.add(String.format("%d %s with requests unsatisfiable by cluster", + roleWithOpenRequest, plural(roleWithOpenRequest, "component"))); + } + if (aaRoleWithNoSuitableLocations > 0) { + statusEntries.add(String.format("%d anti-affinity %s no suitable nodes in the cluster", + aaRoleWithNoSuitableLocations, + plural(aaRoleWithNoSuitableLocations, "component has", "components have"))); + } + if (aaRoleWithOpenRequest > 0) { + statusEntries.add(String.format("%d anti-affinity %s with requests unsatisfiable by cluster", + aaRoleWithOpenRequest, + plural(aaRoleWithOpenRequest, "component has", "components have"))); + + } + if (!statusEntries.isEmpty()) { + diagnostics.h3("Diagnostics"); + Hamlet.TABLE<DIV<Hamlet>> diagnosticsTable = diagnostics.table(); + for (String entry : statusEntries) { + diagnosticsTable.tr().td(entry)._(); + } + diagnosticsTable._(); + } + diagnostics._(); - html.div("provider_info").h3(providerName + " information"); - UL<DIV<Hamlet>> ul = div.ul(); + DIV<Hamlet> provider_info = html.div("provider_info"); + provider_info.h3(providerName + " information"); + UL<Hamlet> ul = html.ul(); addProviderServiceOptions(providerService, ul, clusterStatus); - ul._()._(); + ul._(); + provider_info._(); } - private String plural(int n, String text) { - return n == 1 ? text : (text + "s"); + @VisibleForTesting + String buildAADetails(boolean outstanding, int pending) { + return String.format("Anti-affinity:%s %d pending %s", + (outstanding ? " 1 active request and" : ""), + pending, plural(pending, "request")); + } + + private String plural(int n, String singular) { + return plural(n, singular, singular + "s"); + } + private String plural(int n, String singular, String plural) { + return n == 1 ? singular : plural; } - private void trb(Hamlet.TR<Hamlet.THEAD<Hamlet.TABLE<DIV<Hamlet>>>> tr, + private void trb(Hamlet.TR tr, String text) { tr.td().b(text)._(); } @@ -184,9 +247,9 @@ public class IndexBlock extends SliderHamletBlock { return null == createTime ? "N/A" : createTime; } - protected void addProviderServiceOptions(ProviderService providerService, - UL<DIV<Hamlet>> ul, ClusterDescription clusterStatus) { - Map<String, String> details = providerService.buildMonitorDetails( + protected void addProviderServiceOptions(ProviderService provider, + UL ul, ClusterDescription clusterStatus) { + Map<String, String> details = provider.buildMonitorDetails( clusterStatus); if (null == details) { return; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/NavBlock.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/NavBlock.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/NavBlock.java index 515b1a3..069d386 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/NavBlock.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/NavBlock.java @@ -41,7 +41,6 @@ public class NavBlock extends SliderHamletBlock { li().a(this.prefix(), "Overview")._(). li().a(relPath(CONTAINER_STATS), "Statistics")._(). li().a(relPath(CLUSTER_SPEC), "Specification")._(). - li().a(relPath(CLUSTER_SPEC), "Specification")._(). li().a(rootPath(SYSTEM_METRICS_JSON), "Metrics")._(). li().a(rootPath(SYSTEM_HEALTHCHECK), "Health")._(). li().a(rootPath(SYSTEM_THREADS), "Threads")._(). http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy index 0bd1df0..b0ae102 100644 --- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy @@ -87,8 +87,7 @@ class TestStandaloneREST extends AgentMiniClusterTestBase { // using the metrics, await the first node status update. // this should be from AM launch itself - awaitGaugeValue( - appendToURL(proxyAM, SYSTEM_METRICS_JSON), + awaitGaugeValue(proxyAM, NODES_UPDATED_FLAG_METRIC, 1, WEB_STARTUP_TIME * 2, 500) http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/groovy/org/apache/slider/providers/agent/DemoAgentAAEcho.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/providers/agent/DemoAgentAAEcho.groovy b/slider-core/src/test/groovy/org/apache/slider/providers/agent/DemoAgentAAEcho.groovy index 8606417..94e7320 100644 --- a/slider-core/src/test/groovy/org/apache/slider/providers/agent/DemoAgentAAEcho.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/providers/agent/DemoAgentAAEcho.groovy @@ -31,15 +31,15 @@ class DemoAgentAAEcho extends TestAgentAAEcho { SliderClient sliderClient, String clustername, String roleName, - Map<String, Integer> roles) { + Map<String, Integer> roles, + String proxyAM) { - def applicationReport = sliderClient.applicationReport - def url = applicationReport.trackingUrl + def url = proxyAM // spin repeating the URl in the logs so YARN chatter doesn't lose it describe("Web UI is at $url") // run the superclass rest tests - // queryRestAPI(sliderClient, roles) + // queryRestAPI(sliderClient, roles, proxyAM) 5.times { describe("Web UI is at $url") http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/groovy/org/apache/slider/providers/agent/TestAgentAAEcho.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/providers/agent/TestAgentAAEcho.groovy b/slider-core/src/test/groovy/org/apache/slider/providers/agent/TestAgentAAEcho.groovy index f2f38e0..255dcaf 100644 --- a/slider-core/src/test/groovy/org/apache/slider/providers/agent/TestAgentAAEcho.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/providers/agent/TestAgentAAEcho.groovy @@ -20,20 +20,20 @@ package org.apache.slider.providers.agent import groovy.transform.CompileStatic import groovy.util.logging.Slf4j -import org.apache.slider.agent.rest.RestAPIClientTestDelegates import org.apache.slider.api.ResourceKeys -import org.apache.slider.api.types.ComponentInformation import org.apache.slider.client.SliderClient import org.apache.slider.client.rest.SliderApplicationApiRestClient import org.apache.slider.common.SliderXmlConfKeys import org.apache.slider.core.main.ServiceLauncher import org.apache.slider.providers.PlacementPolicy +import org.apache.slider.server.appmaster.management.MetricsConstants import org.junit.Test import static org.apache.slider.common.params.Arguments.* import static org.apache.slider.providers.agent.AgentKeys.* import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_ENABLED import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_LOG_INTERVAL +import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_METRICS_JSON /** * Tests an echo command @@ -75,11 +75,31 @@ class TestAgentAAEcho extends TestAgentEcho { ARG_DEFINE, SliderXmlConfKeys.KEY_SLIDER_AM_DEPENDENCY_CHECKS_DISABLED + "=false", ARG_COMP_OPT, echo, TEST_RELAX_VERIFICATION, "true", - ], true, true, true) - postLaunchActions(launcher.service, clustername, echo, roles) + SliderClient sliderClient = launcher.service + initHttpTestSupport(sliderClient.config) + def applicationReport = sliderClient.applicationReport + def proxyAM = applicationReport.trackingUrl + try { + postLaunchActions(sliderClient, clustername, echo, roles, proxyAM) + } catch (Exception ex) { + logMetricsQuietly(proxyAM) + throw ex; + } + } + + /** + * retrieve cluster metrics and log quietly + * @param proxyAM + */ + protected void logMetricsQuietly(String proxyAM) { + try { + log.error prettyPrintAsJson(GET(proxyAM, SYSTEM_METRICS_JSON)); + } catch (Exception ex) { + log.warn("failed to get AM", ex) + } } /** @@ -94,16 +114,20 @@ class TestAgentAAEcho extends TestAgentEcho { } /** - * Any actions to perform after starting the agent cluster + * Any actions to perform after starting the agent cluster. + * HTTP client operations will have been set up already. * @param sliderClient client for the cluster * @param clustername cluster name * @param roleName name of the echo role - * @parm original set of roles + * @param roles original set of roles + * @param proxyAM URl to proxy AM. */ - protected void postLaunchActions(SliderClient sliderClient, + protected void postLaunchActions( + SliderClient sliderClient, String clustername, String roleName, - Map<String, Integer> roles) { + Map<String, Integer> roles, + String proxyAM) { def onlyOneEcho = [(roleName): 1] waitForRoleCount(sliderClient, onlyOneEcho, AGENT_CLUSTER_STARTUP_TIME) //sleep a bit @@ -111,7 +135,7 @@ class TestAgentAAEcho extends TestAgentEcho { //expect the role count to be the same waitForRoleCount(sliderClient, onlyOneEcho, 1000) - queryRestAPI(sliderClient, roles) + queryRestAPI(sliderClient, roles, proxyAM) // flex size // while running, ask for many more, expect them to still be outstanding sleep(5000) @@ -125,16 +149,18 @@ class TestAgentAAEcho extends TestAgentEcho { } - protected void queryRestAPI(SliderClient sliderClient, Map<String, Integer> roles) { - initHttpTestSupport(sliderClient.config) - def applicationReport = sliderClient.applicationReport - def proxyAM = applicationReport.trackingUrl + protected void queryRestAPI(SliderClient sliderClient, Map<String, Integer> roles, String proxyAM) { GET(proxyAM) describe "Proxy SliderRestClient Tests" SliderApplicationApiRestClient restAPI = new SliderApplicationApiRestClient(createUGIJerseyClient(), proxyAM) + awaitGaugeValue(proxyAM, + MetricsConstants.PREFIX_SLIDER_ROLES + "echo.pendingAntiAffineRequests", + 2, + WEB_STARTUP_TIME * 2, 500) + def echoInfo = restAPI.getComponent(ECHO) - assert echoInfo.pendingAntiAffineRequestCount == 3 + assert echoInfo.pendingAntiAffineRequestCount == 2 // no active requests ... there's no capacity assert !echoInfo.isAARequestOutstanding } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestIndexBlock.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestIndexBlock.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestIndexBlock.groovy index a4db705..de5fdc7 100644 --- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestIndexBlock.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestIndexBlock.groovy @@ -128,12 +128,10 @@ public class TestIndexBlock extends BaseMockAppStateAATest { Hamlet hamlet = new Hamlet(pw, 0, false); - int level = hamlet.nestLevel(); indexBlock.doIndex(hamlet, "accumulo"); def body = sw.toString() log.info(body) - assertEquals(body, level, hamlet.nestLevel()) // verify role data came out assert body.contains("role0") assertContains(role0_desired, body) @@ -146,8 +144,9 @@ public class TestIndexBlock extends BaseMockAppStateAATest { assertContains(aarole_desired, body) assertContains(aarole_actual, body) - assertContains(aarole_requested, body) +// assertContains(aarole_requested, body) assertContains(aarole_failures, body) + assert body.contains(indexBlock.buildAADetails(true, aarole_pending)) // verify that the sorting took place assert body.indexOf("role0") < body.indexOf("role1") @@ -159,6 +158,5 @@ public class TestIndexBlock extends BaseMockAppStateAATest { def assertContains(int ex, String html) { assertStringContains(Integer.toString(ex), html) - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy index ab81c46..5ef388a 100644 --- a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy @@ -637,7 +637,6 @@ class SliderTestUtils extends Assert { static UrlConnectionOperations connectionOperations static UgiJerseyBinding jerseyBinding; - /** * Static initializer of the connection operations * @param conf config @@ -1458,15 +1457,16 @@ class SliderTestUtils extends Assert { /** * Await a specific gauge being of the desired value - * @param target target URL + * @param am URL of appmaster * @param gauge gauge name * @param desiredValue desired value * @param timeout timeout in millis * @param sleepDur sleep in millis */ - public void awaitGaugeValue(String target, String gauge, int desiredValue, + public void awaitGaugeValue(String am, String gauge, int desiredValue, int timeout, int sleepDur) { + String target = appendToURL(am, SYSTEM_METRICS_JSON) def text = "Probe $target for gauge $gauge == $desiredValue" repeatUntilSuccess(text, this.&probeMetricGaugeValue, http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/python/agent/main.py ---------------------------------------------------------------------- diff --git a/slider-core/src/test/python/agent/main.py b/slider-core/src/test/python/agent/main.py index 1e851bb..2eacc89 100755 --- a/slider-core/src/test/python/agent/main.py +++ b/slider-core/src/test/python/agent/main.py @@ -53,7 +53,7 @@ def main(): logging.info("Number of arguments: %s arguments.", str(len(sys.argv))) logging.info("Argument List: %s", str(sys.argv)) - sleeptime = 30 + sleeptime = 300 if options.sleep: sleeptime = int(options.sleep) if sleeptime > 0: http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b2b58d35/slider-core/src/test/resources/example-slider-test.xml ---------------------------------------------------------------------- diff --git a/slider-core/src/test/resources/example-slider-test.xml b/slider-core/src/test/resources/example-slider-test.xml index abf42f9..ee9fc59 100644 --- a/slider-core/src/test/resources/example-slider-test.xml +++ b/slider-core/src/test/resources/example-slider-test.xml @@ -33,12 +33,6 @@ </property> <property> - <name>slider.test.teardown.killall</name> - <description>Kill all hbase/accumulo, etc processes on test teardown</description> - <value>true</value> - </property> - - <property> <name>slider.test.thaw.wait.seconds</name> <description>Time to wait for a start to work</description> <value>60</value> @@ -50,68 +44,4 @@ <value>60</value> </property> - - <!-- Properties for the slider-hbase-provider only -not HBase-under-agent- --> - <property> - <name>slider.test.hbase.enabled</name> - <description>Flag to enable/disable HBase tests</description> - <value>true</value> - </property> - - <property> - <name>slider.test.hbase.launch.wait.seconds</name> - <description>Time to wait for the HBase application to be live</description> - <value>180</value> - </property> - - <property> - <name>slider.test.hbase.home</name> - <value>/home/slider/Projects/hbase/hbase-assembly/target/hbase-0.98.1</value> - <description>HBASE Home</description> - </property> - - <property> - <name>slider.test.hbase.tar</name> - <value>/home/slider/Projects/hbase/hbase-assembly/target/hbase-0.98.1-bin.tar.gz</value> - <description>HBASE archive URI</description> - </property> - - <!-- Properties for the slider-accumulo-provider only -not HBase-under-agent- --> - - <property> - <name>slider.test.accumulo.enabled</name> - <description>Flag to enable/disable Accumulo tests</description> - <value>true</value> - </property> - - <property> - <name>slider.test.accumulo.launch.wait.seconds</name> - <description>Time to wait for the accumulo application to be live</description> - <value>180</value> - </property> - - <property> - <name>slider.test.accumulo.home</name> - <value>/home/slider/accumulo</value> - <description>Accumulo Home</description> - </property> - - <property> - <name>slider.test.accumulo.tar</name> - <value>/home/slider/Projects/accumulo/accumulo-1.6.0-bin.tar.gz</value> - <description>Accumulo archive URI</description> - </property> - - <property> - <name>zk.home</name> - <value>/home/slider/zookeeper</value> - <description>Zookeeper home dir on target systems</description> - </property> - - <property> - <name>hadoop.home</name> - <value>/home/slider/hadoop/</value> - <description>Hadoop home dir on target systems</description> - </property> - </configuration>
