You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2014/11/01 14:11:24 UTC

[2/2] git commit: SLIDER-587: consequences of change: fix now broken test; improve other tests

SLIDER-587: consequences of change: fix now broken test; improve other tests


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b072b9fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b072b9fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b072b9fd

Branch: refs/heads/develop
Commit: b072b9fd6bfc41d29b0d26d3f75ba8dae549b8af
Parents: d03b678
Author: Steve Loughran <st...@apache.org>
Authored: Sat Nov 1 13:11:13 2014 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Sat Nov 1 13:11:13 2014 +0000

----------------------------------------------------------------------
 .../server/appmaster/state/RoleHistory.java     |  5 ++-
 .../TestMockAppStateDynamicHistory.groovy       | 23 +++++++++++++
 .../TestMockAppStateFlexDynamicRoles.groovy     | 35 ++++++++++++--------
 .../model/mock/BaseMockAppStateTest.groovy      |  7 +++-
 .../appmaster/model/mock/MockContainer.groovy   |  7 +++-
 .../model/mock/MockProviderService.groovy       |  6 ++--
 .../appmaster/model/mock/MockRoleHistory.groovy | 35 ++++++++++++++++++++
 7 files changed, 99 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
index f1c0af5..8de4b92 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
@@ -131,7 +131,7 @@ public class RoleHistory {
    * @throws ArrayIndexOutOfBoundsException
    * @throws BadConfigException
    */
-  private void checkProviderRole(Map<Integer, RoleStatus> roleStats,
+  protected void checkProviderRole(Map<Integer, RoleStatus> roleStats,
       ProviderRole providerRole)
     throws BadConfigException {
     int index = providerRole.id;
@@ -154,6 +154,8 @@ public class RoleHistory {
    */
   public void addNewProviderRole(ProviderRole providerRole)
     throws BadConfigException {
+    log.debug("Validating/adding new provider role to role history: {} ",
+        providerRole);
     Map<Integer, RoleStatus> roleStats = new HashMap<Integer, RoleStatus>();
 
     for (ProviderRole role : providerRoles) {
@@ -161,6 +163,7 @@ public class RoleHistory {
     }
 
     checkProviderRole(roleStats, providerRole);
+    log.debug("Check successful; adding role");
     this.providerRoles.add(providerRole);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateDynamicHistory.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateDynamicHistory.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateDynamicHistory.groovy
index 7d41012..e06c2cb 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateDynamicHistory.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateDynamicHistory.groovy
@@ -24,9 +24,11 @@ import org.apache.hadoop.conf.Configuration
 import org.apache.hadoop.yarn.api.records.ContainerId
 import org.apache.slider.api.ResourceKeys
 import org.apache.slider.core.conf.ConfTreeOperations
+import org.apache.slider.core.exceptions.BadConfigException
 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.MockRoleHistory
 import org.apache.slider.server.appmaster.model.mock.MockRoles
 import org.apache.slider.server.appmaster.model.mock.MockYarnEngine
 import org.apache.slider.server.appmaster.operations.ContainerRequestOperation
@@ -208,4 +210,25 @@ class TestMockAppStateDynamicHistory extends BaseMockAppStateTest
     def request1 = action1.request
     assert request1.nodes
   }
+
+  @Test(expected = BadConfigException.class)
+  public void testRoleHistoryRoleAdditions() throws Throwable {
+    MockRoleHistory roleHistory = new MockRoleHistory([])
+    roleHistory.addNewProviderRole(new ProviderRole("one", 1))
+    roleHistory.addNewProviderRole(new ProviderRole("two", 1))
+    roleHistory.dump()
+    fail("should have raised an exception")
+  }
+  
+  
+  @Test(expected = BadConfigException.class)
+  public void testRoleHistoryRoleStartupConflict() throws Throwable {
+    MockRoleHistory roleHistory = new MockRoleHistory([
+        new ProviderRole("one", 1), new ProviderRole("two", 1)
+    ])
+    roleHistory.dump()
+    fail("should have raised an exception")
+  }
+  
+  
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateFlexDynamicRoles.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateFlexDynamicRoles.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateFlexDynamicRoles.groovy
index 8308a13..53299dd 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateFlexDynamicRoles.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateFlexDynamicRoles.groovy
@@ -27,10 +27,8 @@ import org.apache.slider.core.conf.ConfTreeOperations
 import org.apache.slider.core.exceptions.BadConfigException
 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.MockRecordFactory
 import org.apache.slider.server.appmaster.model.mock.MockRoles
 import org.apache.slider.server.appmaster.model.mock.MockYarnEngine
-import org.apache.slider.server.appmaster.state.AppState
 import org.apache.slider.server.appmaster.state.SimpleReleaseSelector
 import org.apache.slider.server.avro.RoleHistoryWriter
 import org.junit.Test
@@ -71,7 +69,7 @@ class TestMockAppStateFlexDynamicRoles extends BaseMockAppStateTest
         (ResourceKeys.COMPONENT_PRIORITY): "6",
     ]
 
-    instance.resourceOperations.components["dynamic"] = opts
+    instance.resourceOperations.components["dynamic-6"] = opts
 
     
     appState.buildInstance(instance,
@@ -98,7 +96,7 @@ class TestMockAppStateFlexDynamicRoles extends BaseMockAppStateTest
         (ResourceKeys.COMPONENT_PRIORITY): "7",
     ]
 
-    cd.components["role4"] = opts
+    cd.components["dynamicAdd7"] = opts
     appState.updateResourceDefinitions(cd.confTree);
     createAndStartNodes();
     dumpClusterDescription("updated CD", appState.getClusterStatus())
@@ -119,12 +117,17 @@ class TestMockAppStateFlexDynamicRoles extends BaseMockAppStateTest
         (ResourceKeys.COMPONENT_PRIORITY): "6",
     ]
 
-    cd.components["role4"] = opts
+    cd.components["conflictingPriority"] = opts
     try {
       appState.updateResourceDefinitions(cd.confTree);
-      dumpClusterDescription("updated CD", appState.getClusterStatus())
-      fail("Expected an exception")
+
+      def status = appState.getClusterStatus()
+      dumpClusterDescription("updated CD", status)
+      fail("Expected an exception, got $status")
     } catch (BadConfigException expected) {
+      log.info("Expected: {}", expected)
+      log.debug("Expected: {}", expected, expected)
+      // expected
     }
   }
   
@@ -149,24 +152,24 @@ class TestMockAppStateFlexDynamicRoles extends BaseMockAppStateTest
     RoleHistoryWriter historyWriter = new RoleHistoryWriter();
     def opts = [
         (ResourceKeys.COMPONENT_INSTANCES): "1",
-        (ResourceKeys.COMPONENT_PRIORITY): "7",
+        (ResourceKeys.COMPONENT_PRIORITY): "9",
     ]
 
-    cd.components["role4"] = opts
+    cd.components["HistorySaveFlexLoad"] = opts
     appState.updateResourceDefinitions(cd.confTree);
     createAndStartNodes();
     historyWriter.read(fs, history, appState.roleHistory)
   }
 
   @Test
-  public void testHistoryFlexSaveLoad() throws Throwable {
+  public void testHistoryFlexSaveResetLoad() throws Throwable {
     def cd = init()
     def opts = [
         (ResourceKeys.COMPONENT_INSTANCES): "1",
-        (ResourceKeys.COMPONENT_PRIORITY): "7",
+        (ResourceKeys.COMPONENT_PRIORITY): "10",
     ]
 
-    cd.components["role4"] = opts
+    cd.components["HistoryFlexSaveLoad"] = opts
     appState.updateResourceDefinitions(cd.confTree);
     createAndStartNodes();
     RoleHistoryWriter historyWriter = new RoleHistoryWriter();
@@ -185,7 +188,13 @@ class TestMockAppStateFlexDynamicRoles extends BaseMockAppStateTest
         fs,
         historyPath2,
         null, null, new SimpleReleaseSelector())
-    historyWriter.read(fs, history, appState.roleHistory)
+    // on this read there won't be the right number of roles
+    try {
+      historyWriter.read(fs, history, appState.roleHistory)
+      fail("expected an exception")
+    } catch (IOException e) {
+      assert e.toString().contains("Number of roles")
+    }
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/BaseMockAppStateTest.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/BaseMockAppStateTest.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/BaseMockAppStateTest.groovy
index c48d7fa..50d7e06 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/BaseMockAppStateTest.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/BaseMockAppStateTest.groovy
@@ -33,7 +33,12 @@ import org.apache.slider.common.tools.SliderUtils
 import org.apache.slider.core.conf.AggregateConf
 import org.apache.slider.core.main.LauncherExitCodes
 import org.apache.slider.server.appmaster.operations.AbstractRMOperation
-import org.apache.slider.server.appmaster.state.*
+import org.apache.slider.server.appmaster.state.AppState
+import org.apache.slider.server.appmaster.state.ContainerAssignment
+import org.apache.slider.server.appmaster.state.NodeInstance
+import org.apache.slider.server.appmaster.state.RoleInstance
+import org.apache.slider.server.appmaster.state.RoleStatus
+import org.apache.slider.server.appmaster.state.SimpleReleaseSelector
 import org.apache.slider.test.SliderTestBase
 import org.junit.Before
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/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 3eba7c4..9f5d939 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
@@ -18,7 +18,12 @@
 
 package org.apache.slider.server.appmaster.model.mock
 
-import org.apache.hadoop.yarn.api.records.*
+import org.apache.hadoop.yarn.api.records.Container
+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.api.records.Resource
+import org.apache.hadoop.yarn.api.records.Token
 
 class MockContainer extends Container {
   

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
index fc23d54..7efcd96 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockProviderService.groovy
@@ -20,13 +20,14 @@ package org.apache.slider.server.appmaster.model.mock
 
 import org.apache.hadoop.conf.Configuration
 import org.apache.hadoop.fs.Path
+import org.apache.hadoop.registry.client.types.ServiceRecord
 import org.apache.hadoop.service.LifecycleEvent
+import org.apache.hadoop.service.Service.STATE
 import org.apache.hadoop.service.ServiceStateChangeListener
 import org.apache.hadoop.yarn.api.records.Container
 import org.apache.hadoop.yarn.api.records.ContainerId
 import org.apache.hadoop.yarn.api.records.Priority
 import org.apache.hadoop.yarn.client.api.AMRMClient
-import org.apache.hadoop.registry.client.types.ServiceRecord
 import org.apache.slider.api.ClusterDescription
 import org.apache.slider.common.tools.SliderFileSystem
 import org.apache.slider.core.conf.AggregateConf
@@ -34,6 +35,7 @@ import org.apache.slider.core.conf.MapOperations
 import org.apache.slider.core.exceptions.BadCommandArgumentsException
 import org.apache.slider.core.exceptions.SliderException
 import org.apache.slider.core.launch.ContainerLauncher
+import org.apache.slider.providers.ProviderCompleted
 import org.apache.slider.providers.ProviderRole
 import org.apache.slider.providers.ProviderService
 import org.apache.slider.server.appmaster.actions.QueueAccess
@@ -46,8 +48,6 @@ import org.apache.slider.server.appmaster.web.rest.agent.HeartBeatResponse
 import org.apache.slider.server.appmaster.web.rest.agent.Register
 import org.apache.slider.server.appmaster.web.rest.agent.RegistrationResponse
 import org.apache.slider.server.appmaster.web.rest.agent.RegistrationStatus
-import org.apache.slider.providers.ProviderCompleted
-import org.apache.hadoop.service.Service.STATE
 import org.apache.slider.server.services.yarnregistry.YarnRegistryViewForProviders
 
 class MockProviderService implements ProviderService {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b072b9fd/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRoleHistory.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRoleHistory.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRoleHistory.groovy
new file mode 100644
index 0000000..c521697
--- /dev/null
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRoleHistory.groovy
@@ -0,0 +1,35 @@
+/*
+ * 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.slider.core.exceptions.BadConfigException
+import org.apache.slider.providers.ProviderRole
+import org.apache.slider.server.appmaster.state.RoleHistory
+
+/**
+ * subclass to enable access to some of the protected methods
+ */
+class MockRoleHistory extends RoleHistory {
+
+  MockRoleHistory(List<ProviderRole> providerRoles) throws BadConfigException {
+    super(providerRoles)
+  }
+  
+  
+}