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)
+ }
+
+
+}