You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2015/11/05 14:18:43 UTC
incubator-slider git commit: SLIDER-962
TestRoleHistoryContainerEvents.testNodeUpdated failing
Repository: incubator-slider
Updated Branches:
refs/heads/develop 1e93e91ad -> a66f7db83
SLIDER-962 TestRoleHistoryContainerEvents.testNodeUpdated failing
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/a66f7db8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/a66f7db8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/a66f7db8
Branch: refs/heads/develop
Commit: a66f7db839e606a2ae96d51f9f0a5d4d4760bd6e
Parents: 1e93e91
Author: Steve Loughran <st...@apache.org>
Authored: Thu Nov 5 12:41:46 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Thu Nov 5 13:18:29 2015 +0000
----------------------------------------------------------------------
.../TestRoleHistoryContainerEvents.groovy | 66 +++++++++++---------
.../appmaster/model/mock/MockContainer.groovy | 2 +-
.../appmaster/model/mock/MockFactory.groovy | 18 +++++-
3 files changed, 53 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a66f7db8/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryContainerEvents.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryContainerEvents.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryContainerEvents.groovy
index 4fdf39c..fa10145 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryContainerEvents.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryContainerEvents.groovy
@@ -122,16 +122,13 @@ class TestRoleHistoryContainerEvents extends BaseMockAppStateTest {
AMRMClient.ContainerRequest request =
roleHistory.requestNode(roleStatus, resource);
- List<String> nodes = request.nodes
- assert nodes == null
+ assert request.nodes == null
//pick an idle host
String hostname = age3Active0.hostname;
//build a container
- MockContainer container = factory.newContainer()
- container.nodeId = new MockNodeId(hostname, 0)
- container.priority = request.priority
+ MockContainer container = factory.newContainer(new MockNodeId(hostname, 0), request.priority)
roleHistory.onContainerAssigned(container);
NodeMap nodemap = roleHistory.cloneNodemap();
@@ -189,15 +186,14 @@ class TestRoleHistoryContainerEvents extends BaseMockAppStateTest {
//pick an idle host
String hostname = age3Active0.hostname;
//build a container
- MockContainer container = factory.newContainer()
- container.nodeId = new MockNodeId(hostname, 0)
- container.priority = ContainerPriority.createPriority(0, false)
+ MockContainer container = factory.newContainer(
+ new MockNodeId(hostname, 0),
+ ContainerPriority.createPriority(0, false))
NodeMap nodemap = roleHistory.cloneNodemap();
NodeInstance allocated = nodemap.get(hostname)
NodeEntry roleEntry = allocated.get(role)
- RoleInstance ri = new RoleInstance(container);
//tell RH that it started
roleHistory.onContainerStarted(container)
assert roleEntry.starting == 0
@@ -219,9 +215,7 @@ class TestRoleHistoryContainerEvents extends BaseMockAppStateTest {
assert hostname == age3Active0.hostname
//build a container
- MockContainer container = factory.newContainer()
- container.nodeId = new MockNodeId(hostname, 0)
- container.priority = request.getPriority()
+ MockContainer container = factory.newContainer(new MockNodeId(hostname, 0), request.priority)
roleHistory.onContainerAssigned(container);
NodeMap nodemap = roleHistory.cloneNodemap();
@@ -378,24 +372,22 @@ class TestRoleHistoryContainerEvents extends BaseMockAppStateTest {
@Test
public void testNodeUpdated() throws Throwable {
describe("fail a node")
-
+
int role = 0
ProviderRole provRole = new ProviderRole(roleName, role)
RoleStatus roleStatus = new RoleStatus(provRole)
- AMRMClient.ContainerRequest request =
- roleHistory.requestNode(roleStatus, resource);
+ AMRMClient.ContainerRequest request = roleHistory.requestNode(roleStatus, resource);
String hostname = request.getNodes()[0]
- assert hostname == age3Active0.hostname
+ assert age3Active0.hostname == hostname
// build a container
- MockContainer container = factory.newContainer()
- container.nodeId = new MockNodeId(hostname, 0)
- container.priority = request.getPriority()
+ MockContainer container = factory.newContainer(new MockNodeId(hostname, 0), request.priority)
+
roleHistory.onContainerAssigned(container);
NodeMap nodemap = roleHistory.cloneNodemap();
- NodeInstance allocated = nodemap.get(hostname)
+ NodeInstance allocated = nodemap[hostname]
NodeEntry roleEntry = allocated.get(role)
assert roleEntry.starting == 1
assert !roleEntry.available
@@ -408,20 +400,34 @@ class TestRoleHistoryContainerEvents extends BaseMockAppStateTest {
// now send a list of updated (failed) nodes event
List<NodeReport> nodesUpdated = new ArrayList<NodeReport>();
- NodeId nodeId = NodeId.newInstance(hostname, 0)
- NodeReport nodeReport = NodeReport.newInstance(nodeId, NodeState.LOST, null, null, null, null, 1, null, 0)
+ NodeReport nodeReport = NodeReport.newInstance(
+ NodeId.newInstance(hostname, 0),
+ NodeState.LOST,
+ null, null, null, null, 1, null, 0)
nodesUpdated.add(nodeReport)
roleHistory.onNodesUpdated(nodesUpdated)
nodemap = roleHistory.cloneNodemap()
int endSize = nodemap.size()
- if (startSize == 0) {
- assert endSize == 0
- } else {
- assert startSize - endSize == 1
- }
- assert nodemap.get(hostname) == null
- List<String> failedNodes = roleHistory.cloneFailedNodes()
- assert failedNodes.contains(hostname)
+ // as even unused nodes are added to the list, we expect the map size to be >1
+ assert startSize <= endSize
+ assert nodemap[hostname] != null
+ assert roleHistory.cloneFailedNodes().contains(hostname)
+
+ // add a failure of a node we've never head of
+ def newhost = "newhost"
+ nodesUpdated = [
+ NodeReport.newInstance(
+ NodeId.newInstance(newhost, 0),
+ NodeState.LOST,
+ null, null, null, null, 1, null, 0)
+ ]
+ roleHistory.onNodesUpdated(nodesUpdated)
+
+ def nodemap2 = roleHistory.cloneNodemap()
+ assert nodemap2.size() > endSize
+ assert roleHistory.cloneFailedNodes().contains(newhost)
+ assert nodemap2[newhost]
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a66f7db8/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockContainer.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockContainer.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockContainer.groovy
index 9f5d939..ad586cd 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockContainer.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockContainer.groovy
@@ -26,7 +26,7 @@ import org.apache.hadoop.yarn.api.records.Resource
import org.apache.hadoop.yarn.api.records.Token
class MockContainer extends Container {
-
+
ContainerId id;
NodeId nodeId
String nodeHttpAddress;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/a66f7db8/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockFactory.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockFactory.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockFactory.groovy
index fca3376..6071ef0 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockFactory.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockFactory.groovy
@@ -23,6 +23,8 @@ import groovy.util.logging.Slf4j
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId
import org.apache.hadoop.yarn.api.records.ApplicationId
import org.apache.hadoop.yarn.api.records.ContainerId
+import org.apache.hadoop.yarn.api.records.NodeId
+import org.apache.hadoop.yarn.api.records.Priority
import org.apache.hadoop.yarn.client.api.AMRMClient
import org.apache.slider.api.ClusterDescription
import org.apache.slider.api.ResourceKeys
@@ -38,6 +40,10 @@ import org.apache.slider.providers.ProviderRole
@Slf4j
class MockFactory implements MockRoles {
+ /*
+ Ignore any IDE hints about needless references to the ROLE values; groovyc fails without them.
+ */
+
public static final ProviderRole PROVIDER_ROLE0 = new ProviderRole(
MockRoles.ROLE0,
0,
@@ -58,6 +64,7 @@ class MockFactory implements MockRoles {
PlacementPolicy.ANTI_AFFINITY_REQUIRED,
2,
2)
+
int appIdCount;
int attemptIdCount;
int containerIdCount;
@@ -101,9 +108,9 @@ class MockFactory implements MockRoles {
}
MockNodeId newNodeId() {
- MockNodeId nodeId = new MockNodeId()
+ new MockNodeId()
}
-
+
MockContainer newContainer(ContainerId cid) {
MockContainer c = new MockContainer()
c.id = cid
@@ -114,6 +121,13 @@ class MockFactory implements MockRoles {
newContainer(newContainerId())
}
+ MockContainer newContainer(NodeId nodeId, Priority priority) {
+ def container = newContainer(newContainerId())
+ container.nodeId = nodeId
+ container.priority = priority
+ container
+ }
+
/**
* Build a new container using the request to suppy priority and resource
* @param req request