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