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 2014/11/10 23:46:00 UTC
[10/24] incubator-slider git commit: SLIDER-622 kill operation tested
for at class load time;
used to skip kill() operations.Tests that use the kill explicilty must then be
made to skip if not kill_supported
SLIDER-622 kill operation tested for at class load time; used to skip kill() operations.Tests that use the kill explicilty must then be made to skip if not kill_supported
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/9cc24d00
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/9cc24d00
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/9cc24d00
Branch: refs/heads/develop
Commit: 9cc24d0080a1cf07ebd5970ed1d9b4e097660538
Parents: 09ef924
Author: Steve Loughran <st...@apache.org>
Authored: Mon Nov 10 17:51:39 2014 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Nov 10 17:51:39 2014 +0000
----------------------------------------------------------------------
.../standalone/TestStandaloneAMKill.groovy | 4 +-
.../common/tools/TestWindowsSupport.groovy | 48 +++++-----------
.../apache/slider/test/SliderTestUtils.groovy | 38 -------------
.../slider/test/YarnMiniClusterTestBase.groovy | 60 +++++++++++++++++++-
.../providers/accumulo/AccumuloTestBase.groovy | 2 +-
.../accumulo/live/TestAccFreezeThaw.groovy | 4 +-
6 files changed, 80 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAMKill.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAMKill.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAMKill.groovy
index bad2715..d6b3929 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAMKill.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAMKill.groovy
@@ -27,6 +27,7 @@ import org.apache.slider.client.SliderClient
import org.apache.slider.common.SliderXmlConfKeys
import org.apache.slider.common.params.Arguments
import org.apache.slider.core.main.ServiceLauncher
+import org.junit.Assume
import org.junit.Test
/**
@@ -38,9 +39,9 @@ import org.junit.Test
class TestStandaloneAMKill extends AgentMiniClusterTestBase {
-
@Test
public void testKillStandaloneAM() throws Throwable {
+ Assume.assumeTrue(kill_supported)
String clustername = createMiniCluster("", configuration, 1, true)
describe "kill a Standalone AM and verify that it shuts down"
@@ -54,6 +55,7 @@ class TestStandaloneAMKill extends AgentMiniClusterTestBase {
SliderClient sliderClient = launcher.service
addToTeardown(sliderClient);
ApplicationReport report = waitForClusterLive(sliderClient)
+ assert report.yarnApplicationState == YarnApplicationState.RUNNING
describe("listing Java processes")
lsJavaProcesses();
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy
index 25b7c57..9b383f4 100644
--- a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy
@@ -28,15 +28,15 @@ import org.apache.hadoop.fs.FileSystem as HadoopFS
import org.apache.hadoop.service.ServiceStateException
import org.apache.hadoop.util.Shell
import org.apache.slider.providers.agent.AgentUtils
-import org.apache.slider.server.services.workflow.ForkedProcessService
import org.apache.slider.test.SliderTestBase
+import org.apache.slider.test.YarnMiniClusterTestBase
import org.junit.Test
import java.util.regex.Pattern
@CompileStatic
@Slf4j
-class TestWindowsSupport extends SliderTestBase {
+class TestWindowsSupport extends YarnMiniClusterTestBase {
private static final Pattern hasDriveLetterSpecifier =
Pattern.compile("^/?[a-zA-Z]:");
@@ -121,18 +121,28 @@ class TestWindowsSupport extends SliderTestBase {
@Test
public void testExecNonexistentBinary() throws Throwable {
assume(Shell.WINDOWS, "not windows")
+ def commands = ["undefined-application", "--version"]
try {
- exec(2, ["undefined-application", "--version"])
+ exec(0, commands)
+ fail("expected an exception")
} catch (ServiceStateException e) {
if (!(e.cause instanceof FileNotFoundException)) {
throw e;
}
}
}
+ @Test
+ public void testExecNonexistentBinary2() throws Throwable {
+ assume(Shell.WINDOWS, "not windows")
+ assert !doesWindowsAppExist(["undefined-application", "--version"])
+ }
@Test
public void testEmitKillCommand() throws Throwable {
- killJavaProcesses("regionserver", 9)
+
+ def result = killJavaProcesses("regionserver", 9)
+ // we know the exit code if there is no supported kill operation
+ assert kill_supported || result == -1
}
@Test
@@ -159,34 +169,4 @@ class TestWindowsSupport extends SliderTestBase {
exec(0, [winUtilsPath, "systeminfo"])
}
-
- /**
- * Exec a set of commands, wait a few seconds for it to finish.
- * @param status code
- * @param commands
- * @return the process
- */
- public ForkedProcessService exec(int status, List<String> commands) {
- ForkedProcessService process = exec(commands)
- assert status == process.exitCode
- return process
- }
-
- /**
- * Exec a set of commands, wait a few seconds for it to finish.
- * @param commands
- * @return
- */
-
- public ForkedProcessService exec(List<String> commands) {
- ForkedProcessService process;
- process = new ForkedProcessService(
- methodName.methodName,
- [:],
- commands);
- process.init(new Configuration());
- process.start();
- process.waitForServiceToStop(10000);
- process
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/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 8d6c036..ad18c72 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
@@ -925,44 +925,6 @@ class SliderTestUtils extends Assert {
}
/**
- * Kill any java process with the given grep pattern
- * @param grepString string to grep for
- */
- public int killJavaProcesses(String grepString, int signal) {
-
- def commandString
- if (!Shell.WINDOWS) {
- GString killCommand = "jps -l| grep ${grepString} | awk '{print \$1}' | xargs kill $signal"
- log.info("Command command = $killCommand")
-
- commandString = ["bash", "-c", killCommand]
- } else {
- /*
- "jps -l | grep "String" | awk "{print $1}" | xargs -n 1 taskkill /PID"
- */
- GString killCommand = "\"jps -l | grep \"${grepString}\" | gawk \"{print \$1}\" | xargs -n 1 taskkill /f /PID\""
- commandString = ["CMD", "/C", killCommand]
- }
- Process command = commandString.execute()
- def exitCode = command.waitFor()
-
- log.info(command.in.text)
- log.error(command.err.text)
- return exitCode
- }
-
- /**
- * Kill all processes which match one of the list of grepstrings
- * @param greps
- * @param signal
- */
- public void killJavaProcesses(List<String> greps, int signal) {
- for (String grep : greps) {
- killJavaProcesses(grep, signal)
- }
- }
-
- /**
* Convert a file to a URI suitable for use in an argument
* @param file file
* @return a URI string valid on all platforms
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
index eb7cfa2..d5bad50 100644
--- a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
@@ -29,6 +29,7 @@ import org.apache.hadoop.fs.Path
import org.apache.hadoop.hdfs.DFSConfigKeys
import org.apache.hadoop.hdfs.MiniDFSCluster
import org.apache.hadoop.service.ServiceOperations
+import org.apache.hadoop.util.Shell
import org.apache.hadoop.yarn.api.records.ApplicationReport
import org.apache.hadoop.yarn.api.records.YarnApplicationState
import org.apache.hadoop.yarn.conf.YarnConfiguration
@@ -84,6 +85,9 @@ public abstract class YarnMiniClusterTestBase extends ServiceLauncherBaseTest {
public static final YarnConfiguration SLIDER_CONFIG = SliderUtils.createConfiguration();
+
+ public static boolean kill_supported;
+
static {
SLIDER_CONFIG.setInt(SliderXmlConfKeys.KEY_AM_RESTART_LIMIT, 1)
SLIDER_CONFIG.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 100)
@@ -92,7 +96,6 @@ public abstract class YarnMiniClusterTestBase extends ServiceLauncherBaseTest {
SLIDER_CONFIG.setBoolean(SliderXmlConfKeys.KEY_SLIDER_AM_DEPENDENCY_CHECKS_DISABLED,
true)
SLIDER_CONFIG.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 1)
-
}
@@ -195,6 +198,7 @@ public abstract class YarnMiniClusterTestBase extends ServiceLauncherBaseTest {
protected void addToTeardown(SliderClient client) {
clustersToTeardown << client;
}
+
protected void addToTeardown(ServiceLauncher<SliderClient> launcher) {
SliderClient sliderClient = launcher?.service
if (sliderClient) {
@@ -202,6 +206,60 @@ public abstract class YarnMiniClusterTestBase extends ServiceLauncherBaseTest {
}
}
+ /**
+ * Work out if kill is supported
+ */
+ @BeforeClass
+ public static void checkKillSupport() {
+ if (!Shell.WINDOWS) {
+ kill_supported = true;
+ } else {
+ kill_supported = doesWindowsAppExist(["xargs", "--version"])
+ }
+ }
+
+ /**
+ * Kill any java process with the given grep pattern
+ * @param grepString string to grep for
+ */
+ public int killJavaProcesses(String grepString, int signal) {
+
+ def commandString
+ if (!Shell.WINDOWS) {
+ GString killCommand = "jps -l| grep ${grepString} | awk '{print \$1}' | xargs kill $signal"
+ log.info("Command command = $killCommand")
+
+ commandString = ["bash", "-c", killCommand]
+ } else {
+ // windows
+ if (!kill_supported) {
+ return -1;
+ }
+
+ /*
+ "jps -l | grep "String" | awk "{print $1}" | xargs -n 1 taskkill /PID"
+ */
+ GString killCommand = "\"jps -l | grep \"${grepString}\" | gawk \"{print \$1}\" | xargs -n 1 taskkill /f /PID\""
+ commandString = ["CMD", "/C", killCommand]
+ }
+ Process command = commandString.execute()
+ def exitCode = command.waitFor()
+
+ log.info(command.in.text)
+ log.error(command.err.text)
+ return exitCode
+ }
+
+ /**
+ * Kill all processes which match one of the list of grepstrings
+ * @param greps
+ * @param signal
+ */
+ public void killJavaProcesses(List<String> greps, int signal) {
+ for (String grep : greps) {
+ killJavaProcesses(grep, signal)
+ }
+ }
protected YarnConfiguration getConfiguration() {
return SLIDER_CONFIG;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/AccumuloTestBase.groovy
----------------------------------------------------------------------
diff --git a/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/AccumuloTestBase.groovy b/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/AccumuloTestBase.groovy
index 3c5606b..2a87cf0 100644
--- a/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/AccumuloTestBase.groovy
+++ b/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/AccumuloTestBase.groovy
@@ -71,7 +71,7 @@ public abstract class AccumuloTestBase extends YarnZKMiniClusterTestBase {
@Override
void teardown() {
super.teardown();
- if (teardownKillall) {
+ if (teardownKillall && kill_supported) {
try {
killAllAccumuloProcesses();
} catch (AssumptionViolatedException e) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/9cc24d00/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/live/TestAccFreezeThaw.groovy
----------------------------------------------------------------------
diff --git a/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/live/TestAccFreezeThaw.groovy b/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/live/TestAccFreezeThaw.groovy
index 3d0c03f..fcb73e0 100644
--- a/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/live/TestAccFreezeThaw.groovy
+++ b/slider-providers/accumulo/slider-accumulo-provider/src/test/groovy/org/apache/slider/providers/accumulo/live/TestAccFreezeThaw.groovy
@@ -87,7 +87,9 @@ class TestAccFreezeThaw extends AccumuloTestBase {
log.debug("expected exception", expected)
}
//force kill any accumulo processes
- killAllAccumuloProcesses()
+ if (kill_supported) {
+ killAllAccumuloProcesses()
+ }
sleepForAccumuloClusterLive();