You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2015/11/01 12:49:21 UTC
[09/14] incubator-slider git commit: SLIDER-947 still trying to get
node update events from YARN RM
SLIDER-947 still trying to get node update events from YARN RM
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/e2d8ab0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/e2d8ab0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/e2d8ab0d
Branch: refs/heads/develop
Commit: e2d8ab0daab639bae1421270bbd9ae2e7ec5810e
Parents: 3aeab9c
Author: Steve Loughran <st...@apache.org>
Authored: Sun Oct 18 19:22:09 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Sun Oct 18 19:22:09 2015 +0100
----------------------------------------------------------------------
.../server/appmaster/management/BoolMetric.java | 3 +-
.../agent/rest/LowLevelRestTestDelegates.groovy | 15 ++---
.../slider/agent/rest/TestStandaloneREST.groovy | 19 +++---
.../apache/slider/test/SliderTestUtils.groovy | 64 +++++++++++++++++++-
.../funtest/lifecycle/AgentRegistryIT.groovy | 2 +-
5 files changed, 75 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
index 23ea61d..33f8d85 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
@@ -18,7 +18,6 @@
package org.apache.slider.server.appmaster.management;
-import com.codahale.metrics.Counting;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;
@@ -55,7 +54,7 @@ public class BoolMetric implements Metric, Gauge<Integer> {
* @return true if the input parses to an integer other than 0. False if it doesn't parse
* or parses to 0.
*/
- public boolean fromString(String s) {
+ public static boolean fromString(String s) {
try {
return Integer.valueOf(s) != 0;
} catch (NumberFormatException e) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
index 3d87c28..ed10479 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
@@ -71,8 +71,8 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
public void logCodahaleMetrics() {
// query Coda Hale metrics
- log.info getWebPage(appmaster, SYSTEM_HEALTHCHECK)
- log.info getWebPage(appmaster, SYSTEM_METRICS)
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_HEALTHCHECK))
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_METRICS))
}
@@ -150,9 +150,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
assert components.size() >= 1
log.info "${components}"
- ComponentInformation amComponentInfo =
- (ComponentInformation) components[COMPONENT_AM]
-
ComponentInformation amFullInfo = fetchType(
ComponentInformation,
appmaster,
@@ -278,7 +275,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
MediaType.TEXT_PLAIN)
log.info "Stopped: $outcome"
-
// now a ping is expected to fail
String ping = appendToURL(appmaster, SLIDER_PATH_APPLICATION, ACTION_PING)
@@ -317,7 +313,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
@Override
public void testSuiteGetOperations() {
-
testCodahaleOperations()
testMimeTypes()
testLiveResources()
@@ -369,10 +364,8 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
* @return the outcome
*/
Outcome probeForResolveConfValues(Map args) {
- assert args["key"]
- assert args["val"]
- String key = args["key"]
- String val = args["val"]
+ String key = requiredMapValue(args, "key")
+ String val = requiredMapValue(args, "val")
ConfTreeOperations resolved = modelDesiredResolvedResources
return Outcome.fromBool(resolved.get(key) == val)
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/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 880d9ca..9808688 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
@@ -75,8 +75,8 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
}
execOperation(WEB_STARTUP_TIME) {
- def metrics = GET(directAM, SYSTEM_METRICS)
- log.info metrics
+ def metrics = GET(directAM, SYSTEM_METRICS_JSON)
+ log.info prettyPrintJson(metrics)
}
GET(proxyAM)
@@ -87,15 +87,12 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
log.info GET(proxyAM, SYSTEM_METRICS_JSON)
// using the metrics, await the first node status update
- execOperation(WEB_STARTUP_TIME) {
- def metrics = getMetrics(proxyAM)
- if (!getGaugeAsBool(metrics,
- "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag", false)) {
- throw new IOException("Nodes not updated in $metrics")
- } else {
- "true"
- };
- }
+ awaitGaugeValue(
+ appendToURL(proxyAM, SYSTEM_METRICS_JSON),
+ "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag",
+ 1,
+ WEB_STARTUP_TIME * 2, 500)
+
// Is the back door required? If so, don't test complex verbs via the proxy
def proxyComplexVerbs = !SliderXmlConfKeys.X_DEV_INSECURE_REQUIRED
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/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 c5808f2..5de6aba 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
@@ -100,7 +100,12 @@ class SliderTestUtils extends Assert {
log.info("");
}
- public static String prettyPrint(String json) {
+ /**
+ * Convert a JSON string to something readable
+ * @param json
+ * @return a string for printing
+ */
+ public static String prettyPrintJson(String json) {
JsonOutput.prettyPrint(json)
}
@@ -370,7 +375,7 @@ class SliderTestUtils extends Assert {
if (timedOut) {
duration.finish();
describe("$operation: role count not met after $duration: $details")
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
fail("$operation: role counts not met after $duration: " +
details.toString() +
" in \n$status ")
@@ -416,7 +421,7 @@ class SliderTestUtils extends Assert {
String text,
ClusterDescription status) {
describe(text)
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
}
@@ -1316,6 +1321,17 @@ class SliderTestUtils extends Assert {
}
/**
+ * Get a value from a map; raise an assertion if it is not there
+ * @param map map to look up
+ * @param key key
+ * @return the string value
+ */
+ String requiredMapValue(Map map, String key) {
+ assert map[key] != null
+ map[key].toString()
+ }
+
+ /**
* Get a web page and deserialize the supplied JSON into
* an instance of the specific class.
* @param clazz class to deserialize to
@@ -1420,5 +1436,47 @@ class SliderTestUtils extends Assert {
return metrics;
}
+ /**
+ * Await a specific gauge being of the desired value
+ * @param target target URL
+ * @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,
+ int timeout,
+ int sleepDur) {
+ def text = "Probe $target for gauge $gauge == $desiredValue"
+ repeatUntilSuccess(text,
+ this.&probeMetricGaugeValue,
+ timeout, sleepDur,
+ [
+ url : target,
+ gauge: gauge,
+ desiredValue: desiredValue.toString()
+ ],
+ true, text) {
+ log.error(prettyPrintJson(GET(target)))
+ }
+ }
+
+ Outcome probeMetricGaugeValue(Map args) {
+ String url = requiredMapValue(args, "url")
+ String gauge = requiredMapValue(args, "gauge")
+ String vstr = requiredMapValue(args, "desiredValue")
+ assert vstr != null, "null desired value in $args"
+ assert vstr != "", "empty desired value in $args"
+ int desiredValue = Integer.decode(vstr)
+ try {
+ def metrics = parseMetrics(GET(url))
+ def gaugeValue = getGaugeValue(metrics, gauge, -1)
+ return gaugeValue == desiredValue ? Outcome.Success : Outcome.Retry
+ } catch (IOException e) {
+ return Outcome.Fail
+ }
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
----------------------------------------------------------------------
diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
index 4f9701c..ff5e57e 100644
--- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
+++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
@@ -160,7 +160,7 @@ public class AgentRegistryIT extends AgentCommandTestBase
Outcome probeForEntryMissing(Map args) {
- String path = args["path"]
+ String path = requiredMapValue(args, "path")
def shell = slider([ACTION_RESOLVE, ARG_PATH, path])
return Outcome.fromBool(shell.ret == EXIT_NOT_FOUND)
}