You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2014/08/26 07:53:05 UTC
[1/3] git commit: AMBARI-7008. Configuration validations for STORM
service should be removed
Repository: ambari
Updated Branches:
refs/heads/trunk fb1e0ca52 -> a80066ae0
AMBARI-7008. Configuration validations for STORM service should be removed
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/98660b9e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/98660b9e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/98660b9e
Branch: refs/heads/trunk
Commit: 98660b9e3ee43ce3b2083f010ed55c556980527b
Parents: fb1e0ca
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:08:48 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:08:48 2014 -0700
----------------------------------------------------------------------
.../main/resources/stacks/HDP/2.1/services/stack_advisor.py | 7 -------
1 file changed, 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/98660b9e/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
index 5d7a3bc..e4168d7 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
@@ -82,7 +82,6 @@ class HDP21StackAdvisor(HDP206StackAdvisor):
validator = super(HDP21StackAdvisor, self).validateServiceConfigurations(serviceName)
if validator is None:
return {
- "STORM": ["storm-site", self.validateStormConfigurations],
"HIVE": ["hive-site", self.validateHiveConfigurations],
"TEZ": ["tez-site", self.validateTezConfigurations]
}.get(serviceName, None)
@@ -95,12 +94,6 @@ class HDP21StackAdvisor(HDP206StackAdvisor):
{"config-name": 'hive.auto.convert.join.noconditionaltask.size', "message": self.validatorLessThenDefaultValue(properties, recommendedDefaults, 'hive.auto.convert.join.noconditionaltask.size')} ]
return self.toConfigurationValidationErrors(validationItems, "hive-site")
- def validateStormConfigurations(self, properties, recommendedDefaults):
- validationItems = [ {"config-name": 'drpc.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'drpc.childopts')},
- {"config-name": 'ui.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'ui.childopts')},
- {"config-name": 'logviewer.childopts', "message": self.validateXmxValue(properties, recommendedDefaults, 'logviewer.childopts')} ]
- return self.toConfigurationValidationErrors(validationItems, "storm-site")
-
def validateTezConfigurations(self, properties, recommendedDefaults):
validationItems = [ {"config-name": 'tez.am.resource.memory.mb', "message": self.validatorLessThenDefaultValue(properties, recommendedDefaults, 'tez.am.resource.memory.mb')},
{"config-name": 'tez.am.java.opts', "message": self.validateXmxValue(properties, recommendedDefaults, 'tez.am.java.opts')} ]
[3/3] git commit: AMBARI-7010. Recommendation and validation hrefs
contain null resource number
Posted by sr...@apache.org.
AMBARI-7010. Recommendation and validation hrefs contain null resource number
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a80066ae
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a80066ae
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a80066ae
Branch: refs/heads/trunk
Commit: a80066ae09dc3ccda574b014028a87136573a4c2
Parents: 336a63d
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:25:15 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:41:30 2014 -0700
----------------------------------------------------------------------
.../stackadvisor/StackAdvisorResponse.java | 73 ++++++++++++++++++++
.../commands/StackAdvisorCommand.java | 10 ++-
.../recommendations/RecommendationResponse.java | 38 +---------
.../validations/ValidationResponse.java | 15 +---
.../RecommendationResourceProvider.java | 4 +-
.../internal/ValidationResourceProvider.java | 4 +-
.../commands/StackAdvisorCommandTest.java | 6 +-
.../RecommendationResourceProviderTest.java | 31 +++++++++
.../ValidationResourceProviderTest.java | 70 +++++++++++++++++++
9 files changed, 194 insertions(+), 57 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
new file mode 100644
index 0000000..b6d7de7
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorResponse.java
@@ -0,0 +1,73 @@
+/**
+ * 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.ambari.server.api.services.stackadvisor;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * Abstract stack advisor response POJO.
+ */
+public abstract class StackAdvisorResponse {
+
+ private int id;
+
+ @JsonProperty("Versions")
+ private Version version;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public Version getVersion() {
+ return version;
+ }
+
+ public void setVersion(Version version) {
+ this.version = version;
+ }
+
+ public static class Version {
+ @JsonProperty("stack_name")
+ private String stackName;
+
+ @JsonProperty("stack_version")
+ private String stackVersion;
+
+ public String getStackName() {
+ return stackName;
+ }
+
+ public void setStackName(String stackName) {
+ this.stackName = stackName;
+ }
+
+ public String getStackVersion() {
+ return stackVersion;
+ }
+
+ public void setStackVersion(String stackVersion) {
+ this.stackVersion = stackVersion;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
index 81d4605..bc98c4c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
@@ -42,6 +42,7 @@ import org.apache.ambari.server.api.services.Request;
import org.apache.ambari.server.api.services.StacksService.StackUriInfo;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.commons.collections.CollectionUtils;
@@ -58,7 +59,7 @@ import org.codehaus.jackson.node.TextNode;
/**
* Parent for all commands.
*/
-public abstract class StackAdvisorCommand<T> extends BaseService {
+public abstract class StackAdvisorCommand<T extends StackAdvisorResponse> extends BaseService {
/**
* Type of response object provided by extending classes when
@@ -233,7 +234,7 @@ public abstract class StackAdvisorCommand<T> extends BaseService {
String result = FileUtils.readFileToString(new File(requestDirectory, getResultFileName()));
T response = this.mapper.readValue(result, this.type);
- return updateResponse(request, response);
+ return updateResponse(request, setRequestId(response));
} catch (Exception e) {
String message = "Error occured during stack advisor command invocation";
LOG.warn(message, e);
@@ -243,6 +244,11 @@ public abstract class StackAdvisorCommand<T> extends BaseService {
protected abstract T updateResponse(StackAdvisorRequest request, T response);
+ private T setRequestId(T response) {
+ response.setId(requestId);
+ return response;
+ }
+
/**
* Create request id directory for each call
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
index a34291c..1796f9a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
@@ -21,15 +21,13 @@ package org.apache.ambari.server.api.services.stackadvisor.recommendations;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* Recommendation response POJO.
*/
-public class RecommendationResponse {
-
- @JsonProperty("Versions")
- private Version version;
+public class RecommendationResponse extends StackAdvisorResponse {
@JsonProperty
private Set<String> hosts;
@@ -40,14 +38,6 @@ public class RecommendationResponse {
@JsonProperty
private Recommendation recommendations;
- public Version getVersion() {
- return version;
- }
-
- public void setVersion(Version version) {
- this.version = version;
- }
-
public Set<String> getHosts() {
return hosts;
}
@@ -72,30 +62,6 @@ public class RecommendationResponse {
this.recommendations = recommendations;
}
- public static class Version {
- @JsonProperty("stack_name")
- private String stackName;
-
- @JsonProperty("stack_version")
- private String stackVersion;
-
- public String getStackName() {
- return stackName;
- }
-
- public void setStackName(String stackName) {
- this.stackName = stackName;
- }
-
- public String getStackVersion() {
- return stackVersion;
- }
-
- public void setStackVersion(String stackVersion) {
- this.stackVersion = stackVersion;
- }
- }
-
public static class Recommendation {
@JsonProperty
private Blueprint blueprint;
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
index 145bcd9..d6be483 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/validations/ValidationResponse.java
@@ -20,28 +20,17 @@ package org.apache.ambari.server.api.services.stackadvisor.validations;
import java.util.Set;
-import org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse.Version;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* Validation response POJO.
*/
-public class ValidationResponse {
-
- @JsonProperty("Versions")
- private Version version;
+public class ValidationResponse extends StackAdvisorResponse {
@JsonProperty
private Set<ValidationItem> items;
- public Version getVersion() {
- return version;
- }
-
- public void setVersion(Version version) {
- this.version = version;
- }
-
public Set<ValidationItem> getItems() {
return items;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
index 3e5aef4..0463076 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RecommendationResourceProvider.java
@@ -50,7 +50,7 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
public class RecommendationResourceProvider extends StackAdvisorResourceProvider {
protected static final String RECOMMENDATION_ID_PROPERTY_ID = PropertyHelper.getPropertyId(
- "Recommendations", "id");
+ "Recommendation", "id");
protected static final String HOSTS_PROPERTY_ID = "hosts";
protected static final String SERVICES_PROPERTY_ID = "services";
@@ -101,7 +101,7 @@ public class RecommendationResourceProvider extends StackAdvisorResourceProvider
public Resource invoke() throws AmbariException {
Resource resource = new ResourceImpl(Resource.Type.Recommendation);
- setResourceProperty(resource, RECOMMENDATION_ID_PROPERTY_ID, "1", getPropertyIds());
+ setResourceProperty(resource, RECOMMENDATION_ID_PROPERTY_ID, response.getId(), getPropertyIds());
setResourceProperty(resource, STACK_NAME_PROPERTY_ID, response.getVersion().getStackName(),
getPropertyIds());
setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, response.getVersion()
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
index bab1473..017abae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ValidationResourceProvider.java
@@ -49,7 +49,7 @@ import org.apache.ambari.server.controller.utilities.PropertyHelper;
public class ValidationResourceProvider extends StackAdvisorResourceProvider {
protected static final String VALIDATION_ID_PROPERTY_ID = PropertyHelper.getPropertyId(
- "Validations", "id");
+ "Validation", "id");
protected static final String VALIDATE_PROPERTY_ID = "validate";
protected static final String ITEMS_PROPERTY_ID = "items";
@@ -93,7 +93,7 @@ public class ValidationResourceProvider extends StackAdvisorResourceProvider {
public Resource invoke() throws AmbariException {
Resource resource = new ResourceImpl(Resource.Type.Validation);
- setResourceProperty(resource, VALIDATION_ID_PROPERTY_ID, "1", getPropertyIds());
+ setResourceProperty(resource, VALIDATION_ID_PROPERTY_ID, response.getId(), getPropertyIds());
setResourceProperty(resource, STACK_NAME_PROPERTY_ID, response.getVersion().getStackName(), getPropertyIds());
setResourceProperty(resource, STACK_VERSION_PROPERTY_ID, response.getVersion().getStackVersion(), getPropertyIds());
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
index cf792ff..1a19c46 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommandTest.java
@@ -41,6 +41,7 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest.StackAdvisorRequestBuilder;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
import org.apache.ambari.server.api.services.stackadvisor.commands.StackAdvisorCommand.StackAdvisorData;
import org.apache.commons.io.FileUtils;
@@ -150,7 +151,7 @@ public class StackAdvisorCommandTest {
final String testResourceString = String.format("{\"type\": \"%s\"}", expected);
final File recommendationsDir = temp.newFolder("recommendationDir");
String stackAdvisorScript = "echo";
- final int requestId = 0;
+ final int requestId = 2;
StackAdvisorRunner saRunner = mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo = mock(AmbariMetaInfo.class);
doReturn(Collections.emptyList()).when(metaInfo).getStackParentVersions(anyString(), anyString());
@@ -180,6 +181,7 @@ public class StackAdvisorCommandTest {
TestResource result = command.invoke(request);
assertEquals(expected, result.getType());
+ assertEquals(requestId, result.getId());
}
@Test
@@ -260,7 +262,7 @@ public class StackAdvisorCommandTest {
}
}
- public static class TestResource {
+ public static class TestResource extends StackAdvisorResponse {
@JsonProperty
private String type;
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
new file mode 100644
index 0000000..1810efa
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RecommendationResourceProviderTest.java
@@ -0,0 +1,31 @@
+/**
+ * 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.ambari.server.controller.internal;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class RecommendationResourceProviderTest {
+
+ @Test
+ public void testCreateResources() throws Exception {
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/a80066ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
new file mode 100644
index 0000000..cdbf2d7
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ValidationResourceProviderTest.java
@@ -0,0 +1,70 @@
+/**
+ * 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.ambari.server.controller.internal;
+
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.validations.ValidationResponse;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.RequestStatus;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+import static org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse.Version;
+import static org.mockito.Mockito.*;
+import static org.junit.Assert.*;
+
+public class ValidationResourceProviderTest {
+
+ @Test
+ public void testCreateResources_checkRequestId() throws Exception {
+ Map<Resource.Type, String> keyPropertyIds = Collections.emptyMap();
+ Set<String> propertyIds = Collections.singleton(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
+ AmbariManagementController ambariManagementController = mock(AmbariManagementController.class);
+ ValidationResourceProvider provider = spy(new ValidationResourceProvider(propertyIds,
+ keyPropertyIds, ambariManagementController));
+ StackAdvisorRequest stackAdvisorRequest = mock(StackAdvisorRequest.class);
+ Request request = mock(Request.class);
+ doReturn(stackAdvisorRequest).when(provider).prepareStackAdvisorRequest(request);
+
+ StackAdvisorHelper saHelper = mock(StackAdvisorHelper.class);
+
+ ValidationResponse response = mock(ValidationResponse.class);
+ Version version = mock(Version.class);
+ doReturn(3).when(response).getId();
+ doReturn(version).when(response).getVersion();
+ doReturn(response).when(saHelper).validate(any(StackAdvisorRequest.class));
+ ValidationResourceProvider.init(saHelper);
+
+ RequestStatus status = provider.createResources(request);
+
+ Set<Resource> associatedResources = status.getAssociatedResources();
+ assertNotNull(associatedResources);
+ assertEquals(1, associatedResources.size());
+ Resource resource = associatedResources.iterator().next();
+ Object requestId = resource.getPropertyValue(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
+ assertNotNull(requestId);
+ assertEquals(3, requestId);
+ }
+}
\ No newline at end of file
[2/3] git commit: AMBARI-7009. BE: Configs recommendation API
generates incorrect host-groups
Posted by sr...@apache.org.
AMBARI-7009. BE: Configs recommendation API generates incorrect host-groups
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/336a63da
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/336a63da
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/336a63da
Branch: refs/heads/trunk
Commit: 336a63dac9436d35532135e1e719fa3f8b6ac12f
Parents: 98660b9
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Aug 25 17:18:01 2014 -0700
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Mon Aug 25 17:41:24 2014 -0700
----------------------------------------------------------------------
.../GetConfigurationRecommnedationCommand.java | 5 +-
...tConfigurationRecommnedationCommandTest.java | 103 +++++++++++++++++++
2 files changed, 105 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/336a63da/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
index 52df3d0..b20c966 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommand.java
@@ -63,10 +63,9 @@ public class GetConfigurationRecommnedationCommand extends
return response;
}
- private Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
-
+ protected Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
Set<HostGroup> resultSet = new HashSet<HostGroup>();
- for (Map.Entry<String, Set<String>> componentHost : request.getComponentHostsMap().entrySet()) {
+ for (Map.Entry<String, Set<String>> componentHost : request.getHostComponents().entrySet()) {
String hostGroupName = componentHost.getKey();
Set<String> components = componentHost.getValue();
if (hostGroupName != null && components != null) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/336a63da/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
new file mode 100644
index 0000000..1bd66a4
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/stackadvisor/commands/GetConfigurationRecommnedationCommandTest.java
@@ -0,0 +1,103 @@
+/**
+ * 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.ambari.server.api.services.stackadvisor.commands;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
+import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRunner;
+import org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse;
+import org.junit.Test;
+
+public class GetConfigurationRecommnedationCommandTest {
+
+ @Test
+ public void testProcessHostGroups() throws Exception {
+ StackAdvisorRunner saRunner = mock(StackAdvisorRunner.class);
+ File file = mock(File.class);
+ AmbariMetaInfo metaInfo = mock(AmbariMetaInfo.class);
+ GetConfigurationRecommnedationCommand command = new GetConfigurationRecommnedationCommand(file, "script", 1, saRunner, metaInfo);
+
+ StackAdvisorRequest request = mock(StackAdvisorRequest.class);
+ Map<String, Set<String>> componentHostGroupMap = new HashMap<String, Set<String>>();
+ Set<String> components1 = new HashSet<String>();
+ components1.add("component1");
+ components1.add("component4");
+ components1.add("component5");
+ componentHostGroupMap.put("group1", components1);
+ Set<String> components2 = new HashSet<String>();
+ components2.add("component2");
+ components2.add("component3");
+ componentHostGroupMap.put("group2", components2);
+ doReturn(componentHostGroupMap).when(request).getHostComponents();
+ Set<RecommendationResponse.HostGroup> hostGroups = command.processHostGroups(request);
+
+ assertNotNull(hostGroups);
+ assertEquals(2, hostGroups.size());
+ Map<String, RecommendationResponse.HostGroup> hostGroupMap =
+ new HashMap<String, RecommendationResponse.HostGroup>();
+ for (RecommendationResponse.HostGroup hostGroup : hostGroups) {
+ hostGroupMap.put(hostGroup.getName(), hostGroup);
+ }
+ RecommendationResponse.HostGroup hostGroup1 = hostGroupMap.get("group1");
+ assertNotNull(hostGroup1);
+ Set<Map<String, String>> host1Components = hostGroup1.getComponents();
+ assertNotNull(host1Components);
+ assertEquals(3, host1Components.size());
+ Set<String> componentNames1 = new HashSet<String>();
+ for (Map<String, String> host1Component : host1Components) {
+ assertNotNull(host1Component);
+ assertEquals(1, host1Component.size());
+ String componentName = host1Component.get("name");
+ assertNotNull(componentName);
+ componentNames1.add(componentName);
+ }
+ assertEquals(3, componentNames1.size());
+ assertTrue(componentNames1.contains("component1"));
+ assertTrue(componentNames1.contains("component4"));
+ assertTrue(componentNames1.contains("component5"));
+ RecommendationResponse.HostGroup hostGroup2 = hostGroupMap.get("group2");
+ assertNotNull(hostGroup2);
+ Set<Map<String, String>> host2Components = hostGroup2.getComponents();
+ assertNotNull(host2Components);
+ assertEquals(2, host2Components.size());
+ Set<String> componentNames2 = new HashSet<String>();
+ for (Map<String, String> host2Component : host2Components) {
+ assertNotNull(host2Component);
+ assertEquals(1, host2Component.size());
+ String componentName = host2Component.get("name");
+ assertNotNull(componentName);
+ componentNames2.add(componentName);
+ }
+ assertEquals(2, componentNames2.size());
+ assertTrue(componentNames2.contains("component2"));
+ assertTrue(componentNames2.contains("component3"));
+ }
+}
\ No newline at end of file