SLIDER-970: AASleepIT: initial AA test, hard coded to 1 node cluster
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/a6eb923c Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/a6eb923c Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/a6eb923c Branch: refs/heads/feature/SLIDER-82-pass-3.1 Commit: a6eb923cbdf4f1585f592c175c1f8778885a4373 Parents: 082eb0c Author: Steve Loughran <[email protected]> Authored: Wed Nov 18 22:02:00 2015 +0000 Committer: Steve Loughran <[email protected]> Committed: Wed Nov 18 22:02:00 2015 +0000 ---------------------------------------------------------------------- .../test_min_pkg/sleep_cmd/resources.json | 2 +- .../slider/funtest/lifecycle/AASleepIT.groovy | 107 +++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a6eb923c/slider-core/src/test/app_packages/test_min_pkg/sleep_cmd/resources.json ---------------------------------------------------------------------- diff --git a/slider-core/src/test/app_packages/test_min_pkg/sleep_cmd/resources.json b/slider-core/src/test/app_packages/test_min_pkg/sleep_cmd/resources.json index d2ab4f9..c5d7a2a 100644 --- a/slider-core/src/test/app_packages/test_min_pkg/sleep_cmd/resources.json +++ b/slider-core/src/test/app_packages/test_min_pkg/sleep_cmd/resources.json @@ -15,7 +15,7 @@ }, "SLEEP_LONG": { "yarn.role.priority": "1", - "yarn.component.instances": "1", + "yarn.component.instances": "0", "yarn.memory": "256", "yarn.placement.policy": "4" } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a6eb923c/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AASleepIT.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AASleepIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AASleepIT.groovy new file mode 100644 index 0000000..e4a5d83 --- /dev/null +++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AASleepIT.groovy @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.slider.funtest.lifecycle + +import groovy.transform.CompileStatic +import groovy.util.logging.Slf4j +import org.apache.hadoop.yarn.api.records.YarnApplicationState +import org.apache.slider.common.SliderExitCodes +import org.apache.slider.common.params.Arguments +import org.apache.slider.common.params.SliderActions +import org.apache.slider.funtest.ResourcePaths +import org.apache.slider.funtest.framework.AgentCommandTestBase +import org.apache.slider.funtest.framework.FuntestProperties +import org.apache.slider.funtest.framework.SliderShell +import org.junit.After +import org.junit.Before +import org.junit.Test + +@CompileStatic +@Slf4j +public class AASleepIT extends AgentCommandTestBase + implements FuntestProperties, Arguments, SliderExitCodes, SliderActions { + + + static String CLUSTER = "test-aa-sleep" + + static String TEST_RESOURCE = ResourcePaths.SLEEP_RESOURCES + static String TEST_METADATA = ResourcePaths.SLEEP_META + public static final String SLEEP_100 = "SLEEP_100" + public static final String SLEEP_LONG = "SLEEP_LONG" + + @Before + public void prepareCluster() { + setupCluster(CLUSTER) + } + + @After + public void destroyCluster() { + cleanup(CLUSTER) + } + + @Test + public void testAASleepIt() throws Throwable { + describe("Test Anti-Affinity Placement") + def clusterpath = buildClusterPath(CLUSTER) + File launchReportFile = createTempJsonFile(); + + // TODO: Determine YARN cluster size via an API/CLI Call, maybe use labels too? + int yarnClusterSize = 1; + int desired = yarnClusterSize + 1 + SliderShell shell = createSliderApplicationMinPkg(CLUSTER, + TEST_METADATA, + TEST_RESOURCE, + null, + [ARG_RES_COMP_OPT, SLEEP_LONG, "$desired"], + launchReportFile) + + logShell(shell) + + def appId = ensureYarnApplicationIsUp(launchReportFile) + + //at this point the cluster should exist. + assertPathExists( + clusterFS, + "Cluster parent directory does not exist", + clusterpath.parent) + + assertPathExists(clusterFS, "Cluster directory does not exist", clusterpath) + + status(0, CLUSTER) + expectLiveContainerCountReached(CLUSTER, SLEEP_100, desired -1 , + CONTAINER_LAUNCH_TIMEOUT) + + // sleep for some manual test + describe("You may quickly perform manual tests against the application instance $CLUSTER") + sleep(1000 * 30) + + //stop + freeze(0, CLUSTER, + [ + ARG_WAIT, Integer.toString(FREEZE_WAIT_TIME), + ARG_MESSAGE, "final-shutdown" + ]) + + assertInYarnState(appId, YarnApplicationState.FINISHED) + destroy(0, CLUSTER) + + //cluster now missing + exists(EXIT_UNKNOWN_INSTANCE, CLUSTER) + } +}
