You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ji...@apache.org on 2017/09/13 23:32:52 UTC
[05/82] [abbrv] hadoop git commit: YARN-7050. Post cleanup after
YARN-6903, removal of org.apache.slider package. Contributed by Jian He
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryFindNodesForNewInstances.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryFindNodesForNewInstances.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryFindNodesForNewInstances.java
deleted file mode 100644
index ece65ba..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryFindNodesForNewInstances.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.model.mock.MockRoleHistory;
-import org.apache.slider.server.appmaster.state.ContainerOutcome;
-import org.apache.slider.server.appmaster.state.NodeEntry;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.RoleHistory;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Testing finding nodes for new instances.
- *
- * This stresses the non-AA codepath
- */
-public class TestRoleHistoryFindNodesForNewInstances extends
- BaseMockAppStateTest {
- private static final Logger LOG =
- LoggerFactory.getLogger(TestRoleHistoryFindNodesForNewInstances.class);
-
- public TestRoleHistoryFindNodesForNewInstances() throws BadConfigException {
- }
-
- @Override
- public String getTestName() {
- return "TestFindNodesForNewInstances";
- }
-
- private NodeInstance age1Active4;
- private NodeInstance age2Active2;
- private NodeInstance age3Active0;
- private NodeInstance age4Active1;
- private NodeInstance age2Active0;
-
- private RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
-
- private RoleStatus roleStat;
- private RoleStatus roleStat2;
-
- @Override
- public void setup() throws Exception {
- super.setup();
-
- age1Active4 = nodeInstance(1, 4, 0, 0);
- age2Active2 = nodeInstance(2, 2, 0, 1);
- age3Active0 = nodeInstance(3, 0, 0, 0);
- age4Active1 = nodeInstance(4, 1, 0, 0);
- age2Active0 = nodeInstance(2, 0, 0, 0);
-
- roleHistory.insert(Arrays.asList(age2Active2, age2Active0, age4Active1,
- age1Active4, age3Active0));
- roleHistory.buildRecentNodeLists();
-
- roleStat = getRole0Status();
- roleStat2 = getRole2Status();
- }
-
- public List<NodeInstance> findNodes(int count) {
- return findNodes(count, roleStat);
- }
-
- public List<NodeInstance> findNodes(int count, RoleStatus roleStatus) {
- List <NodeInstance> found = new ArrayList<>();
- for (int i = 0; i < count; i++) {
- NodeInstance f = roleHistory.findRecentNodeForNewInstance(roleStatus);
- if (f != null) {
- found.add(f);
- }
- }
- return found;
- }
-
- //@Test
- public void testFind1NodeR0() throws Throwable {
- NodeInstance found = roleHistory.findRecentNodeForNewInstance(roleStat);
- LOG.info("found: {}", found);
- assertTrue(Arrays.asList(age3Active0).contains(found));
- }
-
- //@Test
- public void testFind2NodeR0() throws Throwable {
- NodeInstance found = roleHistory.findRecentNodeForNewInstance(roleStat);
- LOG.info("found: {}", found);
- assertTrue(Arrays.asList(age2Active0, age3Active0).contains(found));
- NodeInstance found2 = roleHistory.findRecentNodeForNewInstance(roleStat);
- LOG.info("found: {}", found2);
- assertTrue(Arrays.asList(age2Active0, age3Active0).contains(found2));
- assertNotEquals(found, found2);
- }
-
- //@Test
- public void testFind3NodeR0ReturnsNull() throws Throwable {
- assertEquals(2, findNodes(2).size());
- NodeInstance found = roleHistory.findRecentNodeForNewInstance(roleStat);
- assertNull(found);
- }
-
- //@Test
- public void testFindNodesOneEntry() throws Throwable {
- List<NodeInstance> foundNodes = findNodes(4, roleStat2);
- assertEquals(0, foundNodes.size());
- }
-
- //@Test
- public void testFindNodesIndependent() throws Throwable {
- assertEquals(2, findNodes(2).size());
- roleHistory.dump();
- assertEquals(0, findNodes(3, roleStat2).size());
- }
-
- //@Test
- public void testFindNodesFallsBackWhenUsed() throws Throwable {
- // mark age2 and active 0 as busy, expect a null back
- age2Active0.get(getRole0Status().getKey()).onStartCompleted();
- assertNotEquals(0, age2Active0.getActiveRoleInstances(getRole0Status()
- .getKey()));
- age3Active0.get(getRole0Status().getKey()).onStartCompleted();
- assertNotEquals(0, age3Active0.getActiveRoleInstances(getRole0Status()
- .getKey()));
- NodeInstance found = roleHistory.findRecentNodeForNewInstance(roleStat);
- if (found != null) {
- LOG.info(found.toFullString());
- }
- assertNull(found);
- }
- //@Test
- public void testFindNodesSkipsFailingNode() throws Throwable {
- // mark age2 and active 0 as busy, expect a null back
-
- NodeEntry entry0 = age2Active0.get(getRole0Status().getKey());
- entry0.containerCompleted(
- false,
- ContainerOutcome.Failed);
- assertTrue(entry0.getFailed() > 0);
- assertTrue(entry0.getFailedRecently() > 0);
- entry0.containerCompleted(
- false,
- ContainerOutcome.Failed);
- assertFalse(age2Active0.exceedsFailureThreshold(roleStat));
- // set failure to 1
- roleStat.getProviderRole().nodeFailureThreshold = 1;
- // threshold is now exceeded
- assertTrue(age2Active0.exceedsFailureThreshold(roleStat));
-
- // get the role & expect age3 to be picked up, even though it is older
- NodeInstance found = roleHistory.findRecentNodeForNewInstance(roleStat);
- assertEquals(age3Active0, found);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryNIComparators.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryNIComparators.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryNIComparators.java
deleted file mode 100644
index 4d4cf62..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryNIComparators.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Unit test to verify the comparators sort as expected.
- */
-public class TestRoleHistoryNIComparators extends BaseMockAppStateTest {
-
- private NodeInstance age1Active4;
- private NodeInstance age2Active2;
- private NodeInstance age3Active0;
- private NodeInstance age4Active1;
- private NodeInstance empty = new NodeInstance("empty", MockFactory
- .ROLE_COUNT);
- private NodeInstance age6failing;
- private NodeInstance age1failing;
-
- private List<NodeInstance> nodes;
- private List<NodeInstance> nodesPlusEmpty;
- private List<NodeInstance> allnodes;
-
- private RoleStatus role0Status;
-
- @Override
- public void setup() throws Exception {
- super.setup();
-
- role0Status = getRole0Status();
-
- age1Active4 = nodeInstance(1001, 4, 0, 0);
- age2Active2 = nodeInstance(1002, 2, 0, 0);
- age3Active0 = nodeInstance(1003, 0, 0, 0);
- age4Active1 = nodeInstance(1004, 1, 0, 0);
- age6failing = nodeInstance(1006, 0, 0, 0);
- age1failing = nodeInstance(1001, 0, 0, 0);
-
- age6failing.get(role0Status.getKey()).setFailedRecently(2);
- age1failing.get(role0Status.getKey()).setFailedRecently(1);
-
- nodes = Arrays.asList(age2Active2, age4Active1, age1Active4, age3Active0);
- nodesPlusEmpty = Arrays.asList(age2Active2, age4Active1, age1Active4,
- age3Active0, empty);
- allnodes = Arrays.asList(age6failing, age2Active2, age4Active1,
- age1Active4, age3Active0, age1failing);
- }
-
- @Override
- public String getTestName() {
- return "TestNIComparators";
- }
-
- //@Test
- public void testPreferred() throws Throwable {
- Collections.sort(nodes, new NodeInstance.Preferred(role0Status.getKey()));
- assertListEquals(nodes, Arrays.asList(age4Active1, age3Active0,
- age2Active2, age1Active4));
- }
-
- /**
- * The preferred sort still includes failures; up to next phase in process
- * to handle that.
- * @throws Throwable
- */
- //@Test
- public void testPreferredWithFailures() throws Throwable {
- Collections.sort(allnodes, new NodeInstance.Preferred(role0Status
- .getKey()));
- assertEquals(allnodes.get(0), age6failing);
- assertEquals(allnodes.get(1), age4Active1);
- }
-
- //@Test
- public void testPreferredComparatorDowngradesFailures() throws Throwable {
- NodeInstance.Preferred preferred = new NodeInstance.Preferred(role0Status
- .getKey());
- assertEquals(-1, preferred.compare(age6failing, age1failing));
- assertEquals(1, preferred.compare(age1failing, age6failing));
- }
-
- //@Test
- public void testNewerThanNoRole() throws Throwable {
- Collections.sort(nodesPlusEmpty, new NodeInstance.Preferred(role0Status
- .getKey()));
- assertListEquals(nodesPlusEmpty, Arrays.asList(age4Active1, age3Active0,
- age2Active2, age1Active4, empty));
- }
-
- //@Test
- public void testMoreActiveThan() throws Throwable {
-
- Collections.sort(nodes, new NodeInstance.MoreActiveThan(role0Status
- .getKey()));
- assertListEquals(nodes, Arrays.asList(age1Active4, age2Active2,
- age4Active1, age3Active0));
- }
-
- //@Test
- public void testMoreActiveThanEmpty() throws Throwable {
-
- Collections.sort(nodesPlusEmpty, new NodeInstance.MoreActiveThan(
- role0Status.getKey()));
- assertListEquals(nodesPlusEmpty, Arrays.asList(age1Active4, age2Active2,
- age4Active1, age3Active0, empty));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.java
deleted file mode 100644
index c1fc28f..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.hadoop.yarn.api.records.Resource;
-import org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest;
-import org.apache.hadoop.yarn.util.resource.Resources;
-import org.apache.slider.api.ResourceKeys;
-import org.apache.slider.api.resource.Application;
-import org.apache.slider.api.resource.Component;
-import org.apache.slider.common.tools.SliderUtils;
-import org.apache.slider.providers.PlacementPolicy;
-import org.apache.slider.providers.ProviderRole;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockAppState;
-import org.apache.slider.server.appmaster.model.mock.MockContainer;
-import org.apache.slider.server.appmaster.model.mock.MockNodeId;
-import org.apache.slider.server.appmaster.model.mock.MockPriority;
-import org.apache.slider.server.appmaster.model.mock.MockResource;
-import org.apache.slider.server.appmaster.operations.AbstractRMOperation;
-import org.apache.slider.server.appmaster.operations.CancelSingleRequest;
-import org.apache.slider.server.appmaster.operations.ContainerRequestOperation;
-import org.apache.slider.server.appmaster.state.ContainerAllocationOutcome;
-import org.apache.slider.server.appmaster.state.ContainerAllocationResults;
-import org.apache.slider.server.appmaster.state.ContainerPriority;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.OutstandingRequest;
-import org.apache.slider.server.appmaster.state.OutstandingRequestTracker;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Test outstanding request tracker.
- */
-public class TestRoleHistoryOutstandingRequestTracker extends
- BaseMockAppStateTest {
- private static final Logger LOG =
- LoggerFactory.getLogger(TestRoleHistoryOutstandingRequestTracker.class);
-
- public static final String WORKERS_LABEL = "workers";
- private NodeInstance host1 = new NodeInstance("host1", 3);
- private NodeInstance host2 = new NodeInstance("host2", 3);
- private MockResource resource = factory.newResource(48, 1);
-
- private OutstandingRequestTracker tracker = new OutstandingRequestTracker();
-
- public static final String WORKER = "worker";
-
- @Override
- public Application buildApplication() {
- Application application = super.buildApplication();
- Component component = new Component().name("worker").numberOfContainers(0L);
- component.getConfiguration().setProperty(ResourceKeys.YARN_LABEL_EXPRESSION,
- WORKERS_LABEL);
- application.getComponents().add(component);
- return application;
- }
-
- //@Test
- public void testAddRetrieveEntry() throws Throwable {
- OutstandingRequest request = tracker.newRequest(host1, 0);
- assertEquals(tracker.lookupPlacedRequest(0, "host1"), request);
- assertEquals(tracker.removePlacedRequest(request), request);
- assertNull(tracker.lookupPlacedRequest(0, "host1"));
- }
-
- //@Test
- public void testAddCompleteEntry() throws Throwable {
- OutstandingRequest req1 = tracker.newRequest(host1, 0);
- req1.buildContainerRequest(resource, getRole0Status(), 0);
-
- tracker.newRequest(host2, 0).buildContainerRequest(resource,
- getRole0Status(), 0);
- tracker.newRequest(host1, 1).buildContainerRequest(resource,
- getRole0Status(), 0);
-
- ContainerAllocationResults allocation = tracker.onContainerAllocated(1,
- "host1", null);
- assertEquals(allocation.outcome, ContainerAllocationOutcome.Placed);
- assertTrue(allocation.operations.get(0) instanceof CancelSingleRequest);
-
- assertNull(tracker.lookupPlacedRequest(1, "host1"));
- assertNotNull(tracker.lookupPlacedRequest(0, "host1"));
- }
-
- //@Test
- public void testResetOpenRequests() throws Throwable {
- OutstandingRequest req1 = tracker.newRequest(null, 0);
- assertFalse(req1.isLocated());
- tracker.newRequest(host1, 0);
- List<OutstandingRequest> openRequests = tracker.listOpenRequests();
- assertEquals(1, openRequests.size());
- tracker.resetOutstandingRequests(0);
- assertTrue(tracker.listOpenRequests().isEmpty());
- assertTrue(tracker.listPlacedRequests().isEmpty());
- }
-
- //@Test
- public void testRemoveOpenRequestUnissued() throws Throwable {
- OutstandingRequest req1 = tracker.newRequest(null, 0);
- req1.buildContainerRequest(resource, getRole0Status(), 0);
- assertEquals(1, tracker.listOpenRequests().size());
- MockContainer c1 = factory.newContainer(null, new MockPriority(0));
- c1.setResource(resource);
-
- ContainerAllocationResults allocation =
- tracker.onContainerAllocated(0, "host1", c1);
- ContainerAllocationOutcome outcome = allocation.outcome;
- assertEquals(outcome, ContainerAllocationOutcome.Unallocated);
- assertTrue(allocation.operations.isEmpty());
- assertEquals(1, tracker.listOpenRequests().size());
- }
-
- //@Test
- public void testIssuedOpenRequest() throws Throwable {
- OutstandingRequest req1 = tracker.newRequest(null, 0);
- req1.buildContainerRequest(resource, getRole0Status(), 0);
- assertEquals(1, tracker.listOpenRequests().size());
-
- int pri = ContainerPriority.buildPriority(0, false);
- assertTrue(pri > 0);
- MockNodeId nodeId = factory.newNodeId("hostname-1");
- MockContainer c1 = factory.newContainer(nodeId, new MockPriority(pri));
-
- c1.setResource(resource);
-
- ContainerRequest issued = req1.getIssuedRequest();
- assertEquals(issued.getCapability(), resource);
- assertEquals(issued.getPriority().getPriority(), c1.getPriority()
- .getPriority());
- assertTrue(req1.resourceRequirementsMatch(resource));
-
- ContainerAllocationResults allocation =
- tracker.onContainerAllocated(0, nodeId.getHost(), c1);
- assertEquals(0, tracker.listOpenRequests().size());
- assertTrue(allocation.operations.get(0) instanceof CancelSingleRequest);
-
- assertEquals(allocation.outcome, ContainerAllocationOutcome.Open);
- assertEquals(allocation.origin, req1);
- }
-
- //@Test
- public void testResetEntries() throws Throwable {
- tracker.newRequest(host1, 0);
- tracker.newRequest(host2, 0);
- tracker.newRequest(host1, 1);
- List<NodeInstance> canceled = tracker.resetOutstandingRequests(0);
- assertEquals(2, canceled.size());
- assertTrue(canceled.contains(host1));
- assertTrue(canceled.contains(host2));
- assertNotNull(tracker.lookupPlacedRequest(1, "host1"));
- assertNull(tracker.lookupPlacedRequest(0, "host1"));
- canceled = tracker.resetOutstandingRequests(0);
- assertEquals(0, canceled.size());
- assertEquals(1, tracker.resetOutstandingRequests(1).size());
- }
-
- //@Test
- public void testEscalation() throws Throwable {
- // first request: default placement
- assertEquals(getRole0Status().getPlacementPolicy(), PlacementPolicy
- .DEFAULT);
- Resource res0 = newResource(getRole0Status());
- OutstandingRequest outstanding0 = tracker.newRequest(host1,
- getRole0Status().getKey());
- ContainerRequest initialRequest =
- outstanding0.buildContainerRequest(res0, getRole0Status(), 0);
- assertNotNull(outstanding0.getIssuedRequest());
- assertTrue(outstanding0.isLocated());
- assertFalse(outstanding0.isEscalated());
- assertFalse(initialRequest.getRelaxLocality());
- assertEquals(1, tracker.listPlacedRequests().size());
-
- // second. This one doesn't get launched. This is to verify that the
- // escalation process skips entries which are in the list but have not
- // been issued, which can be a race condition between request issuance &
- // escalation.
- // (not one observed outside test authoring, but retained for completeness)
- Resource res2 = newResource(getRole2Status());
- OutstandingRequest outstanding2 = tracker.newRequest(host1,
- getRole2Status().getKey());
-
- // simulate some time escalation of role 1 MUST now be triggered
- long interval = getRole0Status().getPlacementTimeoutSeconds() * 1000 + 500;
- long now = interval;
- final List<AbstractRMOperation> escalations = tracker
- .escalateOutstandingRequests(now);
-
- assertTrue(outstanding0.isEscalated());
- assertFalse(outstanding2.isEscalated());
-
- // two entries
- assertEquals(2, escalations.size());
- AbstractRMOperation e1 = escalations.get(0);
- assertTrue(e1 instanceof CancelSingleRequest);
- final CancelSingleRequest cancel = (CancelSingleRequest) e1;
- assertEquals(initialRequest, cancel.getRequest());
- AbstractRMOperation e2 = escalations.get(1);
- assertTrue(e2 instanceof ContainerRequestOperation);
- ContainerRequestOperation escRequest = (ContainerRequestOperation) e2;
- assertTrue(escRequest.getRequest().getRelaxLocality());
-
- // build that second request from an anti-affine entry
- // these get placed as well
- now += interval;
- ContainerRequest containerReq2 =
- outstanding2.buildContainerRequest(res2, getRole2Status(), now);
- // escalate a little bit more
- final List<AbstractRMOperation> escalations2 = tracker
- .escalateOutstandingRequests(now);
- // and expect no new entries
- assertEquals(0, escalations2.size());
-
- // go past the role2 timeout
- now += getRole2Status().getPlacementTimeoutSeconds() * 1000 + 500;
- // escalate a little bit more
- final List<AbstractRMOperation> escalations3 = tracker
- .escalateOutstandingRequests(now);
- // and expect another escalation
- assertEquals(2, escalations3.size());
- assertTrue(outstanding2.isEscalated());
-
- // finally add a strict entry to the mix
- Resource res3 = newResource(getRole1Status());
- OutstandingRequest outstanding3 = tracker.newRequest(host1,
- getRole1Status().getKey());
-
- final ProviderRole providerRole1 = getRole1Status().getProviderRole();
- assertEquals(providerRole1.placementPolicy, PlacementPolicy.STRICT);
- now += interval;
- assertFalse(outstanding3.mayEscalate());
- final List<AbstractRMOperation> escalations4 = tracker
- .escalateOutstandingRequests(now);
- assertTrue(escalations4.isEmpty());
-
- }
-
- /**
- * If the placement does include a label, the initial request must
- * <i>not</i> include it.
- * The escalation request will contain the label, while
- * leaving out the node list.
- * retains the node list, but sets relaxLocality==true
- * @throws Throwable
- */
- //@Test
- public void testRequestLabelledPlacement() throws Throwable {
- NodeInstance ni = new NodeInstance("host1", 0);
- OutstandingRequest req1 = tracker.newRequest(ni, 0);
- Resource res0 = factory.newResource(48, 1);
-
- RoleStatus workerRole = lookupRole(WORKER);
- // initial request
- ContainerRequest yarnRequest =
- req1.buildContainerRequest(res0, workerRole, 0);
- assertEquals(req1.label, WORKERS_LABEL);
-
- assertNull(yarnRequest.getNodeLabelExpression());
- assertFalse(yarnRequest.getRelaxLocality());
- // escalation
- ContainerRequest yarnRequest2 = req1.escalate();
- assertNull(yarnRequest2.getNodes());
- assertTrue(yarnRequest2.getRelaxLocality());
- assertEquals(yarnRequest2.getNodeLabelExpression(), WORKERS_LABEL);
- }
-
- /**
- * If the placement doesnt include a label, then the escalation request
- * retains the node list, but sets relaxLocality==true.
- * @throws Throwable
- */
- //@Test
- public void testRequestUnlabelledPlacement() throws Throwable {
- NodeInstance ni = new NodeInstance("host1", 0);
- OutstandingRequest req1 = tracker.newRequest(ni, 0);
- Resource res0 = factory.newResource(48, 1);
-
- // initial request
- ContainerRequest yarnRequest = req1.buildContainerRequest(res0,
- getRole0Status(), 0);
- assertNotNull(yarnRequest.getNodes());
- assertTrue(SliderUtils.isUnset(yarnRequest.getNodeLabelExpression()));
- assertFalse(yarnRequest.getRelaxLocality());
- ContainerRequest yarnRequest2 = req1.escalate();
- assertNotNull(yarnRequest2.getNodes());
- assertTrue(yarnRequest2.getRelaxLocality());
- }
-
- //@Test(expected = IllegalArgumentException.class)
- public void testAARequestNoNodes() throws Throwable {
- tracker.newAARequest(getRole0Status().getKey(), new ArrayList<>(), "");
- }
-
- //@Test
- public void testAARequest() throws Throwable {
- int role0 = getRole0Status().getKey();
- OutstandingRequest request = tracker.newAARequest(role0, Arrays
- .asList(host1), "");
- assertEquals(host1.hostname, request.hostname);
- assertFalse(request.isLocated());
- }
-
- //@Test
- public void testAARequestPair() throws Throwable {
- int role0 = getRole0Status().getKey();
- OutstandingRequest request = tracker.newAARequest(role0, Arrays.asList(
- host1, host2), "");
- assertEquals(host1.hostname, request.hostname);
- assertFalse(request.isLocated());
- ContainerRequest yarnRequest = request.buildContainerRequest(
- getRole0Status().copyResourceRequirements(new MockResource(0, 0)),
- getRole0Status(),
- 0);
- assertFalse(yarnRequest.getRelaxLocality());
- assertFalse(request.mayEscalate());
-
- assertEquals(2, yarnRequest.getNodes().size());
- }
-
- //@Test
- public void testBuildResourceRequirements() throws Throwable {
- // Store original values
- Application application = appState.getClusterStatus();
- Component role0 = application.getComponent(getRole0Status().getName());
- String origMem = role0.getResource().getMemory();
- Integer origVcores = role0.getResource().getCpus();
-
- // Resource values to be used for this test
- int testMem = 32768;
- int testVcores = 2;
- role0.resource(new org.apache.slider.api.resource.Resource().memory(Integer
- .toString(testMem)).cpus(testVcores));
-
- // Test normalization disabled
- LOG.info("Test normalization: disabled");
- role0.getConfiguration().setProperty(
- ResourceKeys.YARN_RESOURCE_NORMALIZATION_ENABLED, "false");
- MockResource requestedRes = new MockResource(testMem, testVcores);
- MockResource expectedRes = new MockResource(testMem, testVcores);
- LOG.info("Resource requested: {}", requestedRes);
- Resource resFinal = appState.buildResourceRequirements(getRole0Status());
- LOG.info("Resource actual: {}", resFinal);
- assertTrue(Resources.equals(expectedRes, resFinal));
-
- // Test normalization enabled
- LOG.info("Test normalization: enabled");
- role0.getConfiguration().setProperty(
- ResourceKeys.YARN_RESOURCE_NORMALIZATION_ENABLED, "true");
- expectedRes = new MockResource(MockAppState.RM_MAX_RAM, testVcores);
- LOG.info("Resource requested: {}", requestedRes);
- resFinal = appState.buildResourceRequirements(getRole0Status());
- LOG.info("Resource actual: {}", resFinal);
- assertTrue(Resources.equals(expectedRes, resFinal));
-
- // revert resource configuration to original value
- role0.resource(new org.apache.slider.api.resource.Resource().memory(origMem)
- .cpus(origVcores));
- }
-
- public Resource newResource(RoleStatus r) {
- return appState.buildResourceRequirements(r);
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.java
deleted file mode 100644
index e3770a5..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.Path;
-import org.apache.slider.api.ResourceKeys;
-import org.apache.slider.providers.PlacementPolicy;
-import org.apache.slider.providers.ProviderRole;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.model.mock.MockRoleHistory;
-import org.apache.slider.server.appmaster.state.NodeEntry;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.RoleHistory;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.apache.slider.server.avro.LoadedRoleHistory;
-import org.apache.slider.server.avro.RoleHistoryWriter;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test fole history reading and writing.
- */
-public class TestRoleHistoryRW extends BaseMockAppStateTest {
- private static final Logger LOG =
- LoggerFactory.getLogger(TestRoleHistoryRW.class);
-
- private static long time = System.currentTimeMillis();
- public static final String HISTORY_V1_6_ROLE =
- "org/apache/slider/server/avro/history-v01-6-role.json";
- public static final String HISTORY_V1_3_ROLE =
- "org/apache/slider/server/avro/history-v01-3-role.json";
- public static final String HISTORY_V1B_1_ROLE =
- "org/apache/slider/server/avro/history_v01b_1_role.json";
-
- private RoleStatus role0Status;
- private RoleStatus role1Status;
-
- static final ProviderRole PROVIDER_ROLE3 = new ProviderRole(
- "role3",
- 3,
- PlacementPolicy.STRICT,
- 3,
- 3,
- ResourceKeys.DEF_YARN_LABEL_EXPRESSION);
-
- @Override
- public String getTestName() {
- return "TestHistoryRW";
- }
-
- @Override
- public void setup() throws Exception {
- super.setup();
- role0Status = getRole0Status();
- role1Status = getRole1Status();
- }
-
- //@Test
- public void testWriteReadEmpty() throws Throwable {
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- roleHistory.onStart(fs, historyPath);
- Path history = roleHistory.saveHistory(time++);
- assertTrue(fs.getFileStatus(history).isFile());
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- historyWriter.read(fs, history);
- }
-
- //@Test
- public void testWriteReadData() throws Throwable {
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertFalse(roleHistory.onStart(fs, historyPath));
- String addr = "localhost";
- NodeInstance instance = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry ne1 = instance.getOrCreate(0);
- ne1.setLastUsed(0xf00d);
-
- Path history = roleHistory.saveHistory(time++);
- assertTrue(fs.getFileStatus(history).isFile());
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- RoleHistory rh2 = new MockRoleHistory(MockFactory.ROLES);
-
-
- LoadedRoleHistory loadedRoleHistory = historyWriter.read(fs, history);
- assertTrue(0 < loadedRoleHistory.size());
- rh2.rebuild(loadedRoleHistory);
- NodeInstance ni2 = rh2.getExistingNodeInstance(addr);
- assertNotNull(ni2);
- NodeEntry ne2 = ni2.get(0);
- assertNotNull(ne2);
- assertEquals(ne2.getLastUsed(), ne1.getLastUsed());
- }
-
- //@Test
- public void testWriteReadActiveData() throws Throwable {
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- roleHistory.onStart(fs, historyPath);
- String addr = "localhost";
- String addr2 = "rack1server5";
- NodeInstance localhost = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry orig1 = localhost.getOrCreate(role0Status.getKey());
- orig1.setLastUsed(0x10);
- NodeInstance rack1server5 = roleHistory.getOrCreateNodeInstance(addr2);
- NodeEntry orig2 = rack1server5.getOrCreate(role1Status.getKey());
- orig2.setLive(3);
- assertFalse(orig2.isAvailable());
- NodeEntry orig3 = localhost.getOrCreate(role1Status.getKey());
- orig3.setLastUsed(0x20);
- orig3.setLive(1);
- assertFalse(orig3.isAvailable());
- orig3.release();
- assertTrue(orig3.isAvailable());
- roleHistory.dump();
-
- long savetime = 0x0001000;
- Path history = roleHistory.saveHistory(savetime);
- assertTrue(fs.getFileStatus(history).isFile());
- describe("Loaded");
- LOG.info("testWriteReadActiveData in {}", history);
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- RoleHistory rh2 = new MockRoleHistory(MockFactory.ROLES);
- LoadedRoleHistory loadedRoleHistory = historyWriter.read(fs, history);
- assertEquals(3, loadedRoleHistory.size());
- rh2.rebuild(loadedRoleHistory);
- rh2.dump();
-
- assertEquals(2, rh2.getClusterSize());
- NodeInstance ni2 = rh2.getExistingNodeInstance(addr);
- assertNotNull(ni2);
- NodeEntry loadedNE = ni2.get(role0Status.getKey());
- assertEquals(loadedNE.getLastUsed(), orig1.getLastUsed());
- NodeInstance ni2b = rh2.getExistingNodeInstance(addr2);
- assertNotNull(ni2b);
- NodeEntry loadedNE2 = ni2b.get(role1Status.getKey());
- assertNotNull(loadedNE2);
- assertEquals(loadedNE2.getLastUsed(), savetime);
- assertEquals(rh2.getThawedDataTime(), savetime);
-
- // now start it
- rh2.buildRecentNodeLists();
- describe("starting");
- rh2.dump();
- List<NodeInstance> available0 = rh2.cloneRecentNodeList(role0Status
- .getKey());
- assertEquals(1, available0.size());
-
- NodeInstance entry = available0.get(0);
- assertEquals(entry.hostname, "localhost");
- assertEquals(entry, localhost);
- List<NodeInstance> available1 = rh2.cloneRecentNodeList(role1Status
- .getKey());
- assertEquals(2, available1.size());
- //and verify that even if last used was set, the save time is picked up
- assertEquals(entry.get(role1Status.getKey()).getLastUsed(), roleHistory
- .getSaveTime());
-
- }
-
- //@Test
- public void testWriteThaw() throws Throwable {
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertFalse(roleHistory.onStart(fs, historyPath));
- String addr = "localhost";
- NodeInstance instance = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry ne1 = instance.getOrCreate(0);
- ne1.setLastUsed(0xf00d);
-
- Path history = roleHistory.saveHistory(time++);
- long savetime =roleHistory.getSaveTime();
- assertTrue(fs.getFileStatus(history).isFile());
- RoleHistory rh2 = new MockRoleHistory(MockFactory.ROLES);
- assertTrue(rh2.onStart(fs, historyPath));
- NodeInstance ni2 = rh2.getExistingNodeInstance(addr);
- assertNotNull(ni2);
- NodeEntry ne2 = ni2.get(0);
- assertNotNull(ne2);
- assertEquals(ne2.getLastUsed(), ne1.getLastUsed());
- assertEquals(rh2.getThawedDataTime(), savetime);
- }
-
-
- //@Test
- public void testPurgeOlderEntries() throws Throwable {
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- time = 1;
- Path file1 = touch(historyWriter, time++);
- Path file2 = touch(historyWriter, time++);
- Path file3 = touch(historyWriter, time++);
- Path file4 = touch(historyWriter, time++);
- Path file5 = touch(historyWriter, time++);
- Path file6 = touch(historyWriter, time++);
-
- assertEquals(0, historyWriter.purgeOlderHistoryEntries(fs, file1));
- assertEquals(1, historyWriter.purgeOlderHistoryEntries(fs, file2));
- assertEquals(0, historyWriter.purgeOlderHistoryEntries(fs, file2));
- assertEquals(3, historyWriter.purgeOlderHistoryEntries(fs, file5));
- assertEquals(1, historyWriter.purgeOlderHistoryEntries(fs, file6));
- try {
- // make an impossible assertion that will fail if the method
- // actually completes
- assertEquals(-1, historyWriter.purgeOlderHistoryEntries(fs, file1));
- } catch (FileNotFoundException ignored) {
- // expected
- }
-
- }
-
- public Path touch(RoleHistoryWriter historyWriter, long timeMs)
- throws IOException {
- Path path = historyWriter.createHistoryFilename(historyPath, timeMs);
- FSDataOutputStream out = fs.create(path);
- out.close();
- return path;
- }
-
- //@Test
- public void testSkipEmptyFileOnRead() throws Throwable {
- describe("verify that empty histories are skipped on read; old histories " +
- "purged");
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- roleHistory.onStart(fs, historyPath);
- time = 0;
- Path oldhistory = roleHistory.saveHistory(time++);
-
- String addr = "localhost";
- NodeInstance instance = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry ne1 = instance.getOrCreate(0);
- ne1.setLastUsed(0xf00d);
-
- Path goodhistory = roleHistory.saveHistory(time++);
-
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- Path touched = touch(historyWriter, time++);
-
- RoleHistory rh2 = new MockRoleHistory(MockFactory.ROLES);
- assertTrue(rh2.onStart(fs, historyPath));
- NodeInstance ni2 = rh2.getExistingNodeInstance(addr);
- assertNotNull(ni2);
-
- //and assert the older file got purged
- assertFalse(fs.exists(oldhistory));
- assertTrue(fs.exists(goodhistory));
- assertTrue(fs.exists(touched));
- }
-
- //@Test
- public void testSkipBrokenFileOnRead() throws Throwable {
- describe("verify that empty histories are skipped on read; old histories " +
- "purged");
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- roleHistory.onStart(fs, historyPath);
- time = 0;
- Path oldhistory = roleHistory.saveHistory(time++);
-
- String addr = "localhost";
- NodeInstance instance = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry ne1 = instance.getOrCreate(0);
- ne1.setLastUsed(0xf00d);
-
- Path goodhistory = roleHistory.saveHistory(time++);
-
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
- Path badfile = historyWriter.createHistoryFilename(historyPath, time++);
- FSDataOutputStream out = fs.create(badfile);
- out.writeBytes("{broken:true}");
- out.close();
-
- RoleHistory rh2 = new MockRoleHistory(MockFactory.ROLES);
- describe("IGNORE STACK TRACE BELOW");
-
- assertTrue(rh2.onStart(fs, historyPath));
-
- describe("IGNORE STACK TRACE ABOVE");
- NodeInstance ni2 = rh2.getExistingNodeInstance(addr);
- assertNotNull(ni2);
-
- //and assert the older file got purged
- assertFalse(fs.exists(oldhistory));
- assertTrue(fs.exists(goodhistory));
- assertTrue(fs.exists(badfile));
- }
-
- /**
- * Test that a v1 JSON file can be read. Here the number of roles
- * matches the current state.
- * @throws Throwable
- */
- //@Test
- public void testReloadDataV13Role() throws Throwable {
- String source = HISTORY_V1_3_ROLE;
- RoleHistoryWriter writer = new RoleHistoryWriter();
-
- LoadedRoleHistory loadedRoleHistory = writer.read(source);
- assertEquals(4, loadedRoleHistory.size());
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertEquals(0, roleHistory.rebuild(loadedRoleHistory));
- }
-
- /**
- * Test that a v1 JSON file can be read. Here more roles than expected
- * @throws Throwable
- */
- //@Test
- public void testReloadDataV16Role() throws Throwable {
- String source = HISTORY_V1_6_ROLE;
- RoleHistoryWriter writer = new RoleHistoryWriter();
-
- LoadedRoleHistory loadedRoleHistory = writer.read(source);
- assertEquals(6, loadedRoleHistory.size());
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertEquals(3, roleHistory.rebuild(loadedRoleHistory));
- }
-
- /**
- * Test that a v1 JSON file can be read. Here the number of roles
- * is less than the current state.
- * @throws Throwable
- */
- //@Test
- public void testReloadLessRoles() throws Throwable {
- String source = HISTORY_V1_3_ROLE;
- RoleHistoryWriter writer = new RoleHistoryWriter();
-
- LoadedRoleHistory loadedRoleHistory = writer.read(source);
- assertEquals(4, loadedRoleHistory.size());
- List<ProviderRole> expandedRoles = new ArrayList(MockFactory.ROLES);
- expandedRoles.add(PROVIDER_ROLE3);
- RoleHistory roleHistory = new MockRoleHistory(expandedRoles);
- assertEquals(0, roleHistory.rebuild(loadedRoleHistory));
- }
-
- /**
- * Test that a v1b JSON file can be read. Here more roles than expected
- * @throws Throwable
- */
- //@Test
- public void testReloadDataV1B1Role() throws Throwable {
- String source = HISTORY_V1B_1_ROLE;
- RoleHistoryWriter writer = new RoleHistoryWriter();
-
- LoadedRoleHistory loadedRoleHistory = writer.read(source);
- assertEquals(1, loadedRoleHistory.size());
- assertEquals(2, loadedRoleHistory.roleMap.size());
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertEquals(0, roleHistory.rebuild(loadedRoleHistory));
-
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRWOrdering.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRWOrdering.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRWOrdering.java
deleted file mode 100644
index 033b509..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRWOrdering.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.yarn.service.conf.SliderKeys;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.model.mock.MockRoleHistory;
-import org.apache.slider.server.appmaster.state.NodeEntry;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.RoleHistory;
-import org.apache.slider.server.avro.NewerFilesFirst;
-import org.apache.slider.server.avro.RoleHistoryWriter;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Test role history rw ordering.
- */
-public class TestRoleHistoryRWOrdering extends BaseMockAppStateTest {
- private static final Logger LOG =
- LoggerFactory.getLogger(TestRoleHistoryRWOrdering.class);
-
- private List<Path> paths = pathlist(
- Arrays.asList(
- "hdfs://localhost/history-0406c.json",
- "hdfs://localhost/history-5fffa.json",
- "hdfs://localhost/history-0001a.json",
- "hdfs://localhost/history-0001f.json"
- )
- );
- private Path h0406c = paths.get(0);
- private Path h5fffa = paths.get(1);
- private Path h0001a = paths.get(3);
-
- public TestRoleHistoryRWOrdering() throws URISyntaxException {
- }
-
- List<Path> pathlist(List<String> pathnames) throws URISyntaxException {
- List<Path> pathList = new ArrayList<>();
- for (String p : pathnames) {
- pathList.add(new Path(new URI(p)));
- }
- return pathList;
- }
-
- @Override
- public String getTestName() {
- return "TestHistoryRWOrdering";
- }
-
- /**
- * This tests regexp pattern matching. It uses the current time so isn't
- * repeatable -but it does test a wider range of values in the process
- * @throws Throwable
- */
- //@Test
- public void testPatternRoundTrip() throws Throwable {
- describe("test pattern matching of names");
- long value=System.currentTimeMillis();
- String name = String.format(SliderKeys.HISTORY_FILENAME_CREATION_PATTERN,
- value);
- String matchpattern = SliderKeys.HISTORY_FILENAME_MATCH_PATTERN;
- Pattern pattern = Pattern.compile(matchpattern);
- Matcher matcher = pattern.matcher(name);
- if (!matcher.find()) {
- throw new Exception("No match for pattern $matchpattern in $name");
- }
- }
-
- //@Test
- public void testWriteSequenceReadData() throws Throwable {
- describe("test that if multiple entries are written, the newest is picked" +
- " up");
- long time = System.currentTimeMillis();
-
- RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- assertFalse(roleHistory.onStart(fs, historyPath));
- String addr = "localhost";
- NodeInstance instance = roleHistory.getOrCreateNodeInstance(addr);
- NodeEntry ne1 = instance.getOrCreate(0);
- ne1.setLastUsed(0xf00d);
-
- Path history1 = roleHistory.saveHistory(time++);
- Path history2 = roleHistory.saveHistory(time++);
- Path history3 = roleHistory.saveHistory(time);
-
- //inject a later file with a different name
- sliderFileSystem.cat(new Path(historyPath, "file.json"), true, "hello," +
- " world");
-
-
- RoleHistoryWriter historyWriter = new RoleHistoryWriter();
-
- List<Path> entries = historyWriter.findAllHistoryEntries(
- fs,
- historyPath,
- false);
- assertEquals(entries.size(), 3);
- assertEquals(entries.get(0), history3);
- assertEquals(entries.get(1), history2);
- assertEquals(entries.get(2), history1);
- }
-
- //@Test
- public void testPathStructure() throws Throwable {
- assertEquals(h5fffa.getName(), "history-5fffa.json");
- }
-
- //@Test
- public void testPathnameComparator() throws Throwable {
-
- NewerFilesFirst newerName = new NewerFilesFirst();
-
- LOG.info("{} name is {}", h5fffa, h5fffa.getName());
- LOG.info("{} name is {}", h0406c, h0406c.getName());
- assertEquals(newerName.compare(h5fffa, h5fffa), 0);
- assertTrue(newerName.compare(h5fffa, h0406c) < 0);
- assertTrue(newerName.compare(h5fffa, h0001a) < 0);
- assertTrue(newerName.compare(h0001a, h5fffa) > 0);
-
- }
-
- //@Test
- public void testPathSort() throws Throwable {
- List<Path> paths2 = new ArrayList<>(paths);
- RoleHistoryWriter.sortHistoryPaths(paths2);
- assertListEquals(paths2,
- Arrays.asList(
- paths.get(1),
- paths.get(0),
- paths.get(3),
- paths.get(2)
- ));
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRequestTracking.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRequestTracking.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRequestTracking.java
deleted file mode 100644
index b84689c..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRequestTracking.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.hadoop.yarn.api.records.Container;
-import org.apache.hadoop.yarn.api.records.Resource;
-import org.apache.hadoop.yarn.client.api.AMRMClient;
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.apache.slider.providers.PlacementPolicy;
-import org.apache.slider.providers.ProviderRole;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockContainer;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.model.mock.MockRoleHistory;
-import org.apache.slider.server.appmaster.state.ContainerAllocationOutcome;
-import org.apache.slider.server.appmaster.state.NodeEntry;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.OutstandingRequest;
-import org.apache.slider.server.appmaster.state.RoleHistory;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Test the RH availability list and request tracking: that hosts
- * get removed and added.
- */
-public class TestRoleHistoryRequestTracking extends BaseMockAppStateTest {
- private static final Logger LOG =
- LoggerFactory.getLogger(TestRoleHistoryRequestTracking.class);
-
- private String roleName = "test";
-
- private NodeInstance age1Active4;
- private NodeInstance age2Active2;
- private NodeInstance age2Active0;
- private NodeInstance age3Active0;
- private NodeInstance age4Active1;
-
- private RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- // 1MB, 1 vcore
- private Resource resource = Resource.newInstance(1, 1);
-
- private RoleStatus roleStatus;
-
- public TestRoleHistoryRequestTracking() throws BadConfigException {
- }
-
- AMRMClient.ContainerRequest requestContainer(RoleStatus rs) {
- return roleHistory.requestContainerForRole(rs).getIssuedRequest();
- }
-
- @Override
- public String getTestName() {
- return "TestRoleHistoryAvailableList";
- }
-
- @Override
- public void setup() throws Exception {
- super.setup();
-
- age1Active4 = nodeInstance(1, 4, 0, 0);
- age2Active2 = nodeInstance(2, 2, 0, 1);
- age2Active0 = nodeInstance(2, 0, 0, 0);
- age3Active0 = nodeInstance(3, 0, 0, 0);
- age4Active1 = nodeInstance(4, 1, 0, 0);
-
- roleHistory.insert(Arrays.asList(age2Active2, age2Active0, age4Active1,
- age1Active4, age3Active0));
- roleHistory.buildRecentNodeLists();
- roleStatus = getRole0Status();
- roleStatus.setResourceRequirements(Resource.newInstance(1, 1));
- }
-
- //@Test
- public void testAvailableListBuiltForRoles() throws Throwable {
- List<NodeInstance> available0 = roleHistory.cloneRecentNodeList(
- roleStatus.getKey());
- assertListEquals(Arrays.asList(age3Active0, age2Active0), available0);
- }
-
- //@Test
- public void testRequestedNodeOffList() throws Throwable {
- NodeInstance ni = roleHistory.findRecentNodeForNewInstance(roleStatus);
- assertEquals(age3Active0, ni);
- assertListEquals(Arrays.asList(age2Active0),
- roleHistory.cloneRecentNodeList(roleStatus.getKey()));
- roleHistory.requestInstanceOnNode(ni,
- roleStatus,
- resource
- );
- }
-
- //@Test
- public void testRequestedNodeOffListWithFailures() throws Throwable {
- assertFalse(roleHistory.cloneRecentNodeList(roleStatus.getKey()).isEmpty());
-
- NodeEntry age3role0 = recordAsFailed(age3Active0, roleStatus.getKey(), 4);
- assertTrue(age3Active0.isConsideredUnreliable(roleStatus.getKey(),
- roleStatus.getNodeFailureThreshold()));
- recordAsFailed(age2Active0, roleStatus.getKey(), 4);
- assertTrue(age2Active0.isConsideredUnreliable(roleStatus.getKey(),
- roleStatus.getNodeFailureThreshold()));
- // expect to get a null node back
- NodeInstance ni = roleHistory.findRecentNodeForNewInstance(roleStatus);
- assertNull(ni);
-
- // which is translated to a no-location request
- AMRMClient.ContainerRequest req = roleHistory.requestInstanceOnNode(ni,
- roleStatus,
- resource).getIssuedRequest();
-
- assertNull(req.getNodes());
-
- LOG.info("resetting failure count");
- age3role0.resetFailedRecently();
- roleHistory.dump();
- assertEquals(0, age3role0.getFailedRecently());
- assertFalse(age3Active0.isConsideredUnreliable(roleStatus.getKey(),
- roleStatus.getNodeFailureThreshold()));
- assertFalse(roleHistory.cloneRecentNodeList(roleStatus.getKey()).isEmpty());
- // looking for a node should now find one
- ni = roleHistory.findRecentNodeForNewInstance(roleStatus);
- assertEquals(ni, age3Active0);
- req = roleHistory.requestInstanceOnNode(ni, roleStatus, resource)
- .getIssuedRequest();
- assertEquals(1, req.getNodes().size());
- }
-
- /**
- * Verify that strict placement policies generate requests for nodes
- * irrespective of their failed status.
- * @throws Throwable
- */
- //@Test
- public void testStrictPlacementIgnoresFailures() throws Throwable {
-
- RoleStatus targetRole = getRole1Status();
- final ProviderRole providerRole1 = targetRole.getProviderRole();
- assertEquals(providerRole1.placementPolicy, PlacementPolicy.STRICT);
- int key1 = targetRole.getKey();
- int key0 = getRole0Status().getKey();
-
- List<NodeInstance> nodes0 = Arrays.asList(age1Active4, age2Active0,
- age2Active2, age3Active0, age4Active1);
- recordAllFailed(key0, 4, nodes0);
- recordAllFailed(key1, 4, nodes0);
-
- // trigger a list rebuild
- roleHistory.buildRecentNodeLists();
- List<NodeInstance> recentRole0 = roleHistory.cloneRecentNodeList(key0);
- assertTrue(recentRole0.indexOf(age3Active0) < recentRole0
- .indexOf(age2Active0));
-
- // the non-strict role has no suitable nodes
- assertNull(roleHistory.findRecentNodeForNewInstance(getRole0Status()));
-
-
- NodeInstance ni = roleHistory.findRecentNodeForNewInstance(targetRole);
- assertNotNull(ni);
-
- NodeInstance ni2 = roleHistory.findRecentNodeForNewInstance(targetRole);
- assertNotNull(ni2);
- assertNotEquals(ni, ni2);
- }
-
- //@Test
- public void testFindAndRequestNode() throws Throwable {
- AMRMClient.ContainerRequest req = requestContainer(roleStatus);
-
- assertEquals(age3Active0.hostname, req.getNodes().get(0));
- List<NodeInstance> a2 = roleHistory.cloneRecentNodeList(roleStatus
- .getKey());
- assertListEquals(Arrays.asList(age2Active0), a2);
- }
-
- //@Test
- public void testRequestedNodeIntoReqList() throws Throwable {
- requestContainer(roleStatus);
- List<OutstandingRequest> requests = roleHistory.listPlacedRequests();
- assertEquals(1, requests.size());
- assertEquals(age3Active0.hostname, requests.get(0).hostname);
- }
-
- //@Test
- public void testCompletedRequestDropsNode() throws Throwable {
- AMRMClient.ContainerRequest req = requestContainer(roleStatus);
- List<OutstandingRequest> requests = roleHistory.listPlacedRequests();
- assertEquals(1, requests.size());
- String hostname = requests.get(0).hostname;
- assertEquals(age3Active0.hostname, hostname);
- assertEquals(hostname, req.getNodes().get(0));
- MockContainer container = factory.newContainer(req, hostname);
- assertOnContainerAllocated(container, 2, 1);
- assertNoOutstandingPlacedRequests();
- }
-
- public void assertOnContainerAllocated(Container c1, int p1, int p2) {
- assertNotEquals(ContainerAllocationOutcome.Open, roleHistory
- .onContainerAllocated(c1, p1, p2).outcome);
- }
-
- public void assertOnContainerAllocationOpen(Container c1, int p1, int p2) {
- assertEquals(ContainerAllocationOutcome.Open, roleHistory
- .onContainerAllocated(c1, p1, p2).outcome);
- }
-
- void assertNoOutstandingPlacedRequests() {
- assertTrue(roleHistory.listPlacedRequests().isEmpty());
- }
-
- public void assertOutstandingPlacedRequests(int i) {
- assertEquals(i, roleHistory.listPlacedRequests().size());
- }
-
- //@Test
- public void testTwoRequests() throws Throwable {
- AMRMClient.ContainerRequest req = requestContainer(roleStatus);
- AMRMClient.ContainerRequest req2 = requestContainer(roleStatus);
- List<OutstandingRequest> requests = roleHistory.listPlacedRequests();
- assertEquals(2, requests.size());
- MockContainer container = factory.newContainer(req, req.getNodes().get(0));
- assertOnContainerAllocated(container, 2, 1);
- assertOutstandingPlacedRequests(1);
- container = factory.newContainer(req2, req2.getNodes().get(0));
- assertOnContainerAllocated(container, 2, 2);
- assertNoOutstandingPlacedRequests();
- }
-
- //@Test
- public void testThreeRequestsOneUnsatisified() throws Throwable {
- AMRMClient.ContainerRequest req = requestContainer(roleStatus);
- AMRMClient.ContainerRequest req2 = requestContainer(roleStatus);
- AMRMClient.ContainerRequest req3 = requestContainer(roleStatus);
- List<OutstandingRequest> requests = roleHistory.listPlacedRequests();
- assertEquals(2, requests.size());
- MockContainer container = factory.newContainer(req, req.getNodes().get(0));
- assertOnContainerAllocated(container, 2, 1);
- assertOutstandingPlacedRequests(1);
-
- container = factory.newContainer(req3, "three");
- assertOnContainerAllocationOpen(container, 3, 2);
- assertOutstandingPlacedRequests(1);
-
- // the final allocation will trigger a cleanup
- container = factory.newContainer(req2, "four");
- // no node dropped
- assertEquals(ContainerAllocationOutcome.Unallocated,
- roleHistory.onContainerAllocated(container, 3, 3).outcome);
- // yet the list is now empty
- assertNoOutstandingPlacedRequests();
- roleHistory.listOpenRequests().isEmpty();
-
- // and the remainder goes onto the available list
- List<NodeInstance> a2 = roleHistory.cloneRecentNodeList(roleStatus
- .getKey());
- assertListEquals(Arrays.asList(age2Active0), a2);
- }
-
- //@Test
- public void testThreeRequests() throws Throwable {
- AMRMClient.ContainerRequest req = requestContainer(roleStatus);
- AMRMClient.ContainerRequest req2 = requestContainer(roleStatus);
- AMRMClient.ContainerRequest req3 = requestContainer(roleStatus);
- assertOutstandingPlacedRequests(2);
- assertNull(req3.getNodes());
- MockContainer container = factory.newContainer(req, req.getNodes().get(0));
- assertOnContainerAllocated(container, 3, 1);
- assertOutstandingPlacedRequests(1);
- container = factory.newContainer(req2, req2.getNodes().get(0));
- assertOnContainerAllocated(container, 3, 2);
- assertNoOutstandingPlacedRequests();
- container = factory.newContainer(req3, "three");
- assertOnContainerAllocationOpen(container, 3, 3);
- assertNoOutstandingPlacedRequests();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryUpdateBlacklist.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryUpdateBlacklist.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryUpdateBlacklist.java
deleted file mode 100644
index a271859..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/history/TestRoleHistoryUpdateBlacklist.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.server.appmaster.model.history;
-
-import org.apache.slider.core.exceptions.BadConfigException;
-import org.apache.slider.server.appmaster.actions.ResetFailureWindow;
-import org.apache.slider.server.appmaster.model.mock.BaseMockAppStateTest;
-import org.apache.slider.server.appmaster.model.mock.MockAM;
-import org.apache.slider.server.appmaster.model.mock.MockFactory;
-import org.apache.slider.server.appmaster.model.mock.MockRMOperationHandler;
-import org.apache.slider.server.appmaster.model.mock.MockRoleHistory;
-import org.apache.slider.server.appmaster.operations.AbstractRMOperation;
-import org.apache.slider.server.appmaster.operations.UpdateBlacklistOperation;
-import org.apache.slider.server.appmaster.state.NodeInstance;
-import org.apache.slider.server.appmaster.state.RoleHistory;
-import org.apache.slider.server.appmaster.state.RoleStatus;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Test updating blacklist.
- */
-public class TestRoleHistoryUpdateBlacklist extends BaseMockAppStateTest {
- private RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES);
- private Collection<RoleStatus> roleStatuses;
- private RoleStatus roleStatus;
- private NodeInstance ni;
-
- public TestRoleHistoryUpdateBlacklist() throws BadConfigException {
- }
-
- @Override
- public String getTestName() {
- return "TestUpdateBlacklist";
- }
-
- @Override
- public void setup() throws Exception {
- super.setup();
- ni = nodeInstance(1, 0, 0, 0);
- roleHistory.insert(Arrays.asList(ni));
- roleHistory.buildRecentNodeLists();
- appState.setRoleHistory(roleHistory);
- roleStatus = getRole0Status();
- roleStatuses = Arrays.asList(roleStatus);
- }
-
- //@Test
- public void testUpdateBlacklist() {
- assertFalse(ni.isBlacklisted());
-
- // at threshold, blacklist is unmodified
- recordAsFailed(ni, roleStatus.getKey(), MockFactory.NODE_FAILURE_THRESHOLD);
- UpdateBlacklistOperation op = roleHistory.updateBlacklist(roleStatuses);
- assertNull(op);
- assertFalse(ni.isBlacklisted());
-
- // threshold is reached, node goes on blacklist
- recordAsFailed(ni, roleStatus.getKey(), 1);
- op = roleHistory.updateBlacklist(roleStatuses);
- assertNotNull(op);
- assertTrue(ni.isBlacklisted());
-
- // blacklist remains unmodified
- op = roleHistory.updateBlacklist(roleStatuses);
- assertNull(op);
- assertTrue(ni.isBlacklisted());
-
- // failure threshold reset, node goes off blacklist
- ni.resetFailedRecently();
- op = roleHistory.updateBlacklist(roleStatuses);
- assertNotNull(op);
- assertFalse(ni.isBlacklisted());
- }
-
- //@Test
- public void testBlacklistOperations()
- throws Exception {
- recordAsFailed(ni, roleStatus.getKey(), MockFactory
- .NODE_FAILURE_THRESHOLD + 1);
-
- List<AbstractRMOperation> ops = appState.reviewRequestAndReleaseNodes();
- assertListLength(ops, 1);
- AbstractRMOperation op = ops.get(0);
- assertTrue(op instanceof UpdateBlacklistOperation);
- assertTrue(ni.isBlacklisted());
-
- MockRMOperationHandler handler = new MockRMOperationHandler();
- assertEquals(0, handler.getBlacklisted());
- handler.execute(ops);
- assertEquals(1, handler.getBlacklisted());
-
- ResetFailureWindow resetter = new ResetFailureWindow(handler);
- resetter.execute(new MockAM(), null, appState);
- assertEquals(0, handler.getBlacklisted());
- assertFalse(ni.isBlacklisted());
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e20105a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/mock/Allocator.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/mock/Allocator.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/mock/Allocator.java
deleted file mode 100644
index 419f2fb..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-slider/hadoop-yarn-slider-core/src/test/java/org/apache/slider/server/appmaster/model/mock/Allocator.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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.server.appmaster.model.mock;
-
-import org.apache.hadoop.yarn.client.api.AMRMClient;
-import org.apache.slider.common.tools.SliderUtils;
-
-/**
- * Provides allocation services to a cluster -both random and placed.
- *
- * Important: container allocations need an app attempt ID put into the
- * container ID
- */
-public class Allocator {
-
- private final MockYarnCluster cluster;
- /**
- * Rolling index into the cluster used for the next "random" assignment.
- */
- private int rollingIndex = 0;
-
- Allocator(MockYarnCluster cluster) {
- this.cluster = cluster;
- }
-
- /**
- * Allocate a node using the list of nodes in the container as the
- * hints.
- * @param request request
- * @return the allocated container -or null for none
- */
- MockContainer allocate(AMRMClient.ContainerRequest request) {
- MockYarnCluster.MockYarnClusterNode node = null;
- MockYarnCluster.MockYarnClusterContainer allocated = null;
- if (SliderUtils.isNotEmpty(request.getNodes())) {
- for (String host : request.getNodes()) {
- node = cluster.lookup(host);
- allocated = node.allocate();
- if (allocated != null) {
- break;
- }
- }
- }
-
- if (allocated != null) {
- return createContainerRecord(request, allocated, node);
- } else {
- if (request.getRelaxLocality() || request.getNodes().isEmpty()) {
- // fallback to anywhere
- return allocateRandom(request);
- } else {
- //no match and locality can't be requested
- return null;
- }
- }
- }
-
- /**
- * Allocate a node without any positioning -use whatever policy this allocator
- * chooses.
- * @param request request
- * @return the allocated container -or null for none
- */
- MockContainer allocateRandom(AMRMClient.ContainerRequest request) {
- int start = rollingIndex;
- MockYarnCluster.MockYarnClusterNode node = cluster.nodeAt(rollingIndex);
- MockYarnCluster.MockYarnClusterContainer allocated = node.allocate();
- // if there is no space, try again -but stop when all the nodes
- // have failed
- while (allocated == null && start != nextIndex()) {
- node = cluster.nodeAt(rollingIndex);
- allocated = node.allocate();
- }
-
- //here the allocation is set, so create the response
- return createContainerRecord(request, allocated, node);
- }
-
- /**
- * Create a container record -if one was allocated.
- * @param allocated allocation -may be null
- * @param node node with the container
- * @return a container record, or null if there was no allocation
- */
- public MockContainer createContainerRecord(
- AMRMClient.ContainerRequest request,
- MockYarnCluster.MockYarnClusterContainer allocated,
- MockYarnCluster.MockYarnClusterNode node) {
- if (allocated == null) {
- // no space
- return null;
- }
- MockContainer container = new MockContainer();
- container.setId(new MockContainerId(allocated.getCid()));
- container.setNodeId(node.getNodeId());
- container.setNodeHttpAddress(node.httpAddress());
- container.setPriority(request.getPriority());
- container.setResource(request.getCapability());
- return container;
- }
-
- public int nextIndex() {
- rollingIndex = (rollingIndex + 1) % cluster.getClusterSize();
- return rollingIndex;
- }
-
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org