You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/11/27 23:29:17 UTC
[05/30] ambari git commit: Merge trunk with feature branch and fix
some UT compilation issues (mradhakrishnan)
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
index c27ef7e..e194115 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java
@@ -29,7 +29,6 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.H2DatabaseCleaner;
import org.apache.ambari.server.ObjectNotFoundException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.controller.RootServiceResponseFactory.Components;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.junit.After;
@@ -66,13 +65,13 @@ public class RootServiceResponseFactoryTest {
// Request a null service name
RootServiceRequest request = new RootServiceRequest(null);
Set<RootServiceResponse> rootServices = responseFactory.getRootServices(request);
- assertEquals(RootServiceResponseFactory.Services.values().length,
+ assertEquals(RootService.values().length,
rootServices.size());
// null request
request = null;
rootServices = responseFactory.getRootServices(request);
- assertEquals(RootServiceResponseFactory.Services.values().length,
+ assertEquals(RootService.values().length,
rootServices.size());
// Request nonexistent service
@@ -85,12 +84,12 @@ public class RootServiceResponseFactoryTest {
// Request existent service
request = new RootServiceRequest(
- RootServiceResponseFactory.Services.AMBARI.name());
+ RootService.AMBARI.name());
rootServices = responseFactory.getRootServices(request);
assertEquals(1, rootServices.size());
assertTrue(rootServices.contains(new RootServiceResponse(
- RootServiceResponseFactory.Services.AMBARI.name())));
+ RootService.AMBARI.name())));
}
@Test
@@ -106,7 +105,7 @@ public class RootServiceResponseFactoryTest {
assertTrue(e instanceof ObjectNotFoundException);
}
- RootServiceResponseFactory.Components ambariServerComponent = RootServiceResponseFactory.Components.AMBARI_SERVER;
+ RootComponent ambariServerComponent = RootComponent.AMBARI_SERVER;
// Request null service name, not-null component name
request = new RootServiceComponentRequest(null, ambariServerComponent.name());
@@ -118,18 +117,18 @@ public class RootServiceResponseFactoryTest {
}
// Request existent service name, null component name
- String serviceName = RootServiceResponseFactory.Services.AMBARI.name();
+ String serviceName = RootService.AMBARI.name();
request = new RootServiceComponentRequest(serviceName, null);
rootServiceComponents = responseFactory.getRootServiceComponents(request);
assertEquals(
- RootServiceResponseFactory.Services.AMBARI.getComponents().length,
+ RootService.AMBARI.getComponents().length,
rootServiceComponents.size());
String ambariVersion = ambariMetaInfo.getServerVersion();
- for (int i = 0; i < RootServiceResponseFactory.Services.AMBARI.getComponents().length; i++) {
- Components component = RootServiceResponseFactory.Services.AMBARI.getComponents()[i];
+ for (int i = 0; i < RootService.AMBARI.getComponents().length; i++) {
+ RootComponent component = RootService.AMBARI.getComponents()[i];
if (component.name().equals(ambariServerComponent.name())) {
for (RootServiceComponentResponse response : rootServiceComponents) {
@@ -148,14 +147,14 @@ public class RootServiceResponseFactoryTest {
// Request existent service name, existent component name
request = new RootServiceComponentRequest(
- RootServiceResponseFactory.Services.AMBARI.name(),
- RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name());
+ RootService.AMBARI.name(),
+ RootService.AMBARI.getComponents()[0].name());
rootServiceComponents = responseFactory.getRootServiceComponents(request);
assertEquals(1, rootServiceComponents.size());
for (RootServiceComponentResponse response : rootServiceComponents) {
if (response.getComponentName().equals(
- RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name())) {
+ RootService.AMBARI.getComponents()[0].name())) {
assertEquals(ambariVersion, response.getComponentVersion());
assertEquals(2, response.getProperties().size());
assertTrue(response.getProperties().containsKey("jdk_location"));
@@ -166,7 +165,7 @@ public class RootServiceResponseFactoryTest {
// Request existent service name, and component, not belongs to requested
// service
request = new RootServiceComponentRequest(
- RootServiceResponseFactory.Services.AMBARI.name(), "XXX");
+ RootService.AMBARI.name(), "XXX");
try {
rootServiceComponents = responseFactory.getRootServiceComponents(request);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java
deleted file mode 100644
index c2a1421..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed 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 java.util.Map;
-import java.util.Set;
-
-import org.apache.ambari.server.controller.spi.Predicate;
-import org.apache.ambari.server.controller.spi.Request;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PredicateBuilder;
-import org.apache.ambari.server.events.AmbariLdapConfigChangedEvent;
-import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
-import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
-import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
-import org.apache.ambari.server.orm.entities.ConfigurationBaseEntity;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
-import org.easymock.EasyMockRule;
-import org.easymock.EasyMockSupport;
-import org.easymock.Mock;
-import org.easymock.TestSubject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-public class AmbariConfigurationResourceProviderTest extends EasyMockSupport {
-
- @Rule
- public EasyMockRule mocks = new EasyMockRule(this);
-
- @Mock
- private Request requestMock;
-
- @Mock
- private AmbariConfigurationDAO ambariConfigurationDAO;
-
- @Mock
- private AmbariEventPublisher publisher;
-
- private Capture<AmbariConfigurationEntity> ambariConfigurationEntityCapture;
-
- private Gson gson;
-
- private static final String DATA_MOCK_STR = "[\n" +
- " {\n" +
- " \"authentication.ldap.baseDn\" : \"dc=ambari,dc=apache,dc=org\",\n" +
- " \"authentication.ldap.primaryUrl\" : \"localhost:33389\",\n" +
- " \"authentication.ldap.secondaryUrl\" : \"localhost:333\"\n" +
- " }\n" +
- " ]";
-
- private static final Long PK_LONG = Long.valueOf(1);
- private static final String PK_STRING = String.valueOf(1);
- private static final String VERSION_TAG = "test version";
- private static final String VERSION = "1";
- private static final String TYPE = "AmbariConfiguration";
-
- @TestSubject
- private AmbariConfigurationResourceProvider ambariConfigurationResourceProvider = new AmbariConfigurationResourceProvider();
-
- @Before
- public void setup() {
- ambariConfigurationEntityCapture = Capture.newInstance();
- gson = new GsonBuilder().create();
- }
-
- @Test
- public void testCreateAmbariConfigurationRequestResultsInTheProperPersistenceCall() throws Exception {
-
- // GIVEN
- // configuration properties parsed from the request
- Set<Map<String, Object>> resourcePropertiesSet = Sets.newHashSet(
- new PropertiesMapBuilder()
- .withId(PK_LONG)
- .withVersion(VERSION)
- .withVersionTag(VERSION_TAG)
- .withData(DATA_MOCK_STR)
- .withType(TYPE)
- .build());
-
- // mock the request to return the properties
- EasyMock.expect(requestMock.getProperties()).andReturn(resourcePropertiesSet);
-
- // capture the entity the DAO gets called with
- ambariConfigurationDAO.create(EasyMock.capture(ambariConfigurationEntityCapture));
- publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class));
-
- replayAll();
-
- // WHEN
- ambariConfigurationResourceProvider.createResourcesAuthorized(requestMock);
-
- // THEN
- AmbariConfigurationEntity capturedAmbariConfigurationEntity = ambariConfigurationEntityCapture.getValue();
- Assert.assertNotNull(capturedAmbariConfigurationEntity);
- Assert.assertNull("The entity identifier should be null", capturedAmbariConfigurationEntity.getId());
- Assert.assertEquals("The entity version is not the expected", Integer.valueOf(VERSION),
- capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getVersion());
- Assert.assertEquals("The entity version tag is not the expected", VERSION_TAG,
- capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getVersionTag());
- Assert.assertEquals("The entity data is not the expected", DATA_MOCK_STR,
- gson.fromJson(capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getConfigurationData(), String.class));
- }
-
- @Test
- public void testRemoveAmbariConfigurationRequestResultsInTheProperPersistenceCall() throws Exception {
- // GIVEN
- Predicate predicate = new PredicateBuilder().property(
- AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate();
-
- Capture<Long> pkCapture = Capture.newInstance();
- ambariConfigurationDAO.removeByPK(EasyMock.capture(pkCapture));
- publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class));
-
- replayAll();
-
- // WHEN
- ambariConfigurationResourceProvider.deleteResourcesAuthorized(requestMock, predicate);
-
- // THEN
- Assert.assertEquals("The pk of the entity to be removed doen't match the expected id", Long.valueOf(1), pkCapture.getValue());
- }
-
-
- @Test
- public void testRetrieveAmbariConfigurationShouldResultsInTheProperDAOCall() throws Exception {
- // GIVEN
- Predicate predicate = new PredicateBuilder().property(
- AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate();
-
- EasyMock.expect(ambariConfigurationDAO.findAll()).andReturn(Lists.newArrayList(createDummyAmbariConfigurationEntity()));
- replayAll();
-
- // WHEN
- Set<Resource> resourceSet = ambariConfigurationResourceProvider.getResourcesAuthorized(requestMock, predicate);
-
- // THEN
- Assert.assertNotNull(resourceSet);
- Assert.assertFalse(resourceSet.isEmpty());
- }
-
- @Test
- public void testUpdateAmbariConfigurationShouldResultInTheProperDAOCalls() throws Exception {
- // GIVEN
-
- Predicate predicate = new PredicateBuilder().property(
- AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate();
-
- // properteies in the request, representing the updated configuration
- Set<Map<String, Object>> resourcePropertiesSet = Sets.newHashSet(new PropertiesMapBuilder()
- .withId(PK_LONG)
- .withVersion("2")
- .withVersionTag("version-2")
- .withData(DATA_MOCK_STR)
- .withType(TYPE)
- .build());
-
- EasyMock.expect(requestMock.getProperties()).andReturn(resourcePropertiesSet);
-
- AmbariConfigurationEntity persistedEntity = createDummyAmbariConfigurationEntity();
- EasyMock.expect(ambariConfigurationDAO.findByPK(PK_LONG)).andReturn(persistedEntity);
- ambariConfigurationDAO.update(EasyMock.capture(ambariConfigurationEntityCapture));
- publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class));
-
- replayAll();
-
- // WHEN
- ambariConfigurationResourceProvider.updateResourcesAuthorized(requestMock, predicate);
-
- // the captured entity should be the updated one
- AmbariConfigurationEntity updatedEntity = ambariConfigurationEntityCapture.getValue();
-
- // THEN
- Assert.assertNotNull(updatedEntity);
- Assert.assertEquals("The updated version is wrong", Integer.valueOf(2), updatedEntity.getConfigurationBaseEntity().getVersion());
- }
-
- private class PropertiesMapBuilder {
-
- private Map<String, Object> resourcePropertiesMap = Maps.newHashMap();
-
- private PropertiesMapBuilder() {
- }
-
- public PropertiesMapBuilder withId(Long id) {
- resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId(), id);
- return this;
- }
-
- private PropertiesMapBuilder withVersion(String version) {
- resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.VERSION.getPropertyId(), version);
- return this;
- }
-
- private PropertiesMapBuilder withVersionTag(String versionTag) {
- resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.VERSION_TAG.getPropertyId(), versionTag);
- return this;
- }
-
- private PropertiesMapBuilder withData(String dataJson) {
- resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.DATA.getPropertyId(), dataJson);
- return this;
- }
-
- private PropertiesMapBuilder withType(String type) {
- resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.TYPE.getPropertyId(), type);
- return this;
- }
-
-
- public Map<String, Object> build() {
- return this.resourcePropertiesMap;
- }
-
- }
-
- private AmbariConfigurationEntity createDummyAmbariConfigurationEntity() {
- AmbariConfigurationEntity acEntity = new AmbariConfigurationEntity();
- ConfigurationBaseEntity configurationBaseEntity = new ConfigurationBaseEntity();
- acEntity.setConfigurationBaseEntity(configurationBaseEntity);
- acEntity.setId(PK_LONG);
- acEntity.getConfigurationBaseEntity().setConfigurationData(DATA_MOCK_STR);
- acEntity.getConfigurationBaseEntity().setVersion(Integer.valueOf(VERSION));
- acEntity.getConfigurationBaseEntity().setVersionTag(VERSION_TAG);
- acEntity.getConfigurationBaseEntity().setType("ldap-config");
-
- return acEntity;
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
index 3ace62d..4b5d6c0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
@@ -278,6 +278,7 @@ public class ClientConfigResourceProviderTest {
expect(configuration.areHostsSysPrepped()).andReturn("false");
expect(configuration.isAgentStackRetryOnInstallEnabled()).andReturn("false");
expect(configuration.getAgentStackRetryOnInstallCount()).andReturn("5");
+ expect(configuration.getGplLicenseAccepted()).andReturn(Configuration.GPL_LICENSE_ACCEPTED.getDefaultValue());
expect(configuration.getExternalScriptThreadPoolSize()).andReturn(Configuration.THREAD_POOL_SIZE_FOR_EXTERNAL_SCRIPT.getDefaultValue());
expect(configuration.getExternalScriptTimeout()).andReturn(Configuration.EXTERNAL_SCRIPT_TIMEOUT.getDefaultValue());
Map<String,String> props = new HashMap<>();
@@ -535,6 +536,7 @@ public class ClientConfigResourceProviderTest {
expect(configuration.areHostsSysPrepped()).andReturn("false");
expect(configuration.isAgentStackRetryOnInstallEnabled()).andReturn("false");
expect(configuration.getAgentStackRetryOnInstallCount()).andReturn("5");
+ expect(configuration.getGplLicenseAccepted()).andReturn(Configuration.GPL_LICENSE_ACCEPTED.getDefaultValue());
expect(configuration.getExternalScriptThreadPoolSize()).andReturn(Configuration.THREAD_POOL_SIZE_FOR_EXTERNAL_SCRIPT.getDefaultValue());
expect(configuration.getExternalScriptTimeout()).andReturn(Configuration.EXTERNAL_SCRIPT_TIMEOUT.getDefaultValue());
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
index 9840106..a6fc919 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
@@ -99,6 +99,7 @@ import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.cluster.ClusterImpl;
import org.apache.ambari.server.state.repository.AvailableService;
+import org.apache.ambari.server.state.repository.ClusterVersionSummary;
import org.apache.ambari.server.state.repository.VersionDefinitionXml;
import org.apache.ambari.server.state.stack.upgrade.Direction;
import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
@@ -1883,6 +1884,289 @@ public class ClusterStackVersionResourceProviderTest {
}
+ @Test
+ public void testCreateResourcesPatch() throws Exception {
+ JsonArray json = new JsonParser().parse(OS_JSON).getAsJsonArray();
+
+ JsonObject jsonObj = json.get(0).getAsJsonObject();
+ jsonObj.addProperty(OperatingSystemResourceProvider.OPERATING_SYSTEM_AMBARI_MANAGED_REPOS, false);
+
+ String os_json = json.toString();
+
+ Cluster cluster = createNiceMock(Cluster.class);
+ StackId stackId = new StackId("HDP", "2.0.1");
+
+ StackEntity fromStack = new StackEntity();
+ fromStack.setStackName(stackId.getStackName());
+ fromStack.setStackVersion(stackId.getStackVersion());
+
+ RepositoryVersionEntity fromRepo = new RepositoryVersionEntity();
+ fromRepo.setId(0L);
+ fromRepo.setOperatingSystems(os_json);
+ fromRepo.setVersionXsd("version_definition.xsd");
+ fromRepo.setType(RepositoryType.STANDARD);
+ fromRepo.setStack(fromStack);
+ fromRepo.setVersion("2.0.1.0-1234");
+
+
+ StackEntity stackEntity = new StackEntity();
+ stackEntity.setStackName("HDP");
+ stackEntity.setStackVersion("2.1.1");
+
+ String hbaseVersionTestXML = "\n" +
+ "<repository-version xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+ " xsi:noNamespaceSchemaLocation=\"version_definition.xsd\">\n" +
+ " \n" +
+ " <release>\n" +
+ " <type>PATCH</type>\n" +
+ " <stack-id>HDP-2.3</stack-id>\n" +
+ " <version>2.3.4.0</version>\n" +
+ " <build>3396</build>\n" +
+ " <compatible-with>2.3.2.[0-9]</compatible-with>\n" +
+ " <release-notes>http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.4/</release-notes>\n" +
+ " </release>\n" +
+ " \n" +
+ " <manifest>\n" +
+ " <service id=\"HBASE-112\" name=\"HBASE\" version=\"1.1.2\" version-id=\"2_3_4_0-3396\" />\n" +
+ " </manifest>\n" +
+ " \n" +
+ " <available-services>\n" +
+ " <service idref=\"HBASE-112\" />\n" +
+ " </available-services>\n" +
+ " \n" +
+ " <repository-info>\n" +
+ " <os family=\"redhat6\">\n" +
+ " <package-version>2_3_4_0_3396</package-version>\n" +
+ " <repo>\n" +
+ " <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0</baseurl>\n" +
+ " <repoid>HDP-2.3</repoid>\n" +
+ " <reponame>HDP</reponame>\n" +
+ " <unique>true</unique>\n" +
+ " </repo>\n" +
+ " <repo>\n" +
+ " <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>\n" +
+ " <repoid>HDP-UTILS-1.1.0.20</repoid>\n" +
+ " <reponame>HDP-UTILS</reponame>\n" +
+ " <unique>false</unique>\n" +
+ " </repo>\n" +
+ " </os>\n" +
+ " </repository-info>\n" +
+ " \n" +
+ " <upgrade>\n" +
+ " <configuration type=\"hdfs-site\">\n" +
+ " <set key=\"foo\" value=\"bar\" />\n" +
+ " </configuration>\n" +
+ " </upgrade>\n" +
+ "</repository-version>";
+
+ String xmlString = hbaseVersionTestXML;
+ // hack to remove ZK
+ xmlString = xmlString.replace("<service idref=\"ZOOKEEPER-346\" />", "");
+
+
+ RepositoryVersionEntity repoVersion = new RepositoryVersionEntity();
+ repoVersion.setId(1l);
+ repoVersion.setOperatingSystems(os_json);
+ repoVersion.setVersionXml(xmlString);
+ repoVersion.setVersionXsd("version_definition.xsd");
+ repoVersion.setType(RepositoryType.PATCH);
+ repoVersion.setStack(stackEntity);
+
+ ambariMetaInfo.getComponent("HDP", "2.1.1", "HBASE", "HBASE_MASTER").setVersionAdvertised(true);
+ ambariMetaInfo.getComponent("HDP", "2.0.1", "HBASE", "HBASE_MASTER").setVersionAdvertised(true);
+
+ final String hostWithoutVersionableComponents = "host3";
+ List<Host> hostsNeedingInstallCommands = new ArrayList<>();
+
+ Map<String, Host> hostsForCluster = new HashMap<>();
+ int hostCount = 10;
+ for (int i = 0; i < hostCount; i++) {
+ String hostname = "host" + i;
+ Host host = createNiceMock(hostname, Host.class);
+ expect(host.getHostName()).andReturn(hostname).anyTimes();
+ expect(host.getOsFamily()).andReturn("redhat6").anyTimes();
+ expect(host.getMaintenanceState(EasyMock.anyLong())).andReturn(
+ MaintenanceState.OFF).anyTimes();
+ expect(host.getAllHostVersions()).andReturn(
+ Collections.<HostVersionEntity>emptyList()).anyTimes();
+ expect(host.getHostAttributes()).andReturn(new HashMap<String, String>()).anyTimes();
+ replay(host);
+ hostsForCluster.put(hostname, host);
+
+ if (StringUtils.equals(hostWithoutVersionableComponents, hostname)) {
+ hostsNeedingInstallCommands.add(host);
+ }
+ }
+
+ Service hdfsService = createNiceMock(Service.class);
+ expect(hdfsService.getName()).andReturn("HDFS").anyTimes();
+ expect(hdfsService.getServiceComponents()).andReturn(new HashMap<String, ServiceComponent>());
+ expect(hdfsService.getDesiredRepositoryVersion()).andReturn(fromRepo).anyTimes();
+
+ Service hbaseService = createNiceMock(Service.class);
+ expect(hbaseService.getName()).andReturn("HBASE").anyTimes();
+ expect(hbaseService.getServiceComponents()).andReturn(new HashMap<String, ServiceComponent>());
+ expect(hbaseService.getDesiredRepositoryVersion()).andReturn(fromRepo).anyTimes();
+
+ Map<String, Service> serviceMap = new HashMap<>();
+ serviceMap.put("HDFS", hdfsService);
+ serviceMap.put("HBASE", hbaseService);
+
+ final ServiceComponentHost schDatanode = createMock(ServiceComponentHost.class);
+ expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
+ expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
+
+ final ServiceComponentHost schNamenode = createMock(ServiceComponentHost.class);
+ expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
+ expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
+
+ final ServiceComponentHost schHBM = createMock(ServiceComponentHost.class);
+ expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes();
+ expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes();
+
+ // First host contains versionable components
+ final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, schNamenode);
+
+ // Second host contains versionable components
+ final List<ServiceComponentHost> schsH2 = Arrays.asList(schDatanode);
+
+ // Third host only has hbase
+ final List<ServiceComponentHost> schsH3 = Arrays.asList(schHBM);
+
+ ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
+ hdfsPackage.setName("hdfs");
+
+ List<ServiceOsSpecific.Package> packages = Collections.singletonList(hdfsPackage);
+
+ ActionManager actionManager = createNiceMock(ActionManager.class);
+
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
+
+ Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
+ expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
+
+ expect(managementController.getClusters()).andReturn(clusters).anyTimes();
+ expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
+ expect(managementController.getAuthName()).andReturn("admin").anyTimes();
+ expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
+ expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
+ expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
+ EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
+ andReturn(packages).anyTimes(); // only one host has the versionable component
+
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
+
+ expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).anyTimes();
+ expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
+ hostsForCluster).anyTimes();
+
+ String clusterName = "Cluster100";
+ expect(cluster.getClusterId()).andReturn(1L).anyTimes();
+ expect(cluster.getHosts()).andReturn(hostsForCluster.values()).atLeastOnce();
+ expect(cluster.getServices()).andReturn(serviceMap).anyTimes();
+ expect(cluster.getCurrentStackVersion()).andReturn(stackId);
+ expect(cluster.getServiceComponentHosts(anyObject(String.class))).andAnswer(new IAnswer<List<ServiceComponentHost>>() {
+ @Override
+ public List<ServiceComponentHost> answer() throws Throwable {
+ String hostname = (String) EasyMock.getCurrentArguments()[0];
+ if (hostname.equals("host2")) {
+ return schsH2;
+ } else if (hostname.equals("host3")) {
+ return schsH3;
+ } else {
+ return schsH1;
+ }
+ }
+ }).anyTimes();
+
+ expect(cluster.transitionHostsToInstalling(anyObject(RepositoryVersionEntity.class),
+ anyObject(VersionDefinitionXml.class), eq(false))).andReturn(hostsNeedingInstallCommands).atLeastOnce();
+
+ ExecutionCommand executionCommand = new ExecutionCommand();
+ ExecutionCommandWrapper executionCommandWrapper = createNiceMock(ExecutionCommandWrapper.class);
+
+ expect(executionCommandWrapper.getExecutionCommand()).andReturn(executionCommand).anyTimes();
+
+ Stage stage = createNiceMock(Stage.class);
+ expect(stage.getExecutionCommandWrapper(anyObject(String.class), anyObject(String.class))).
+ andReturn(executionCommandWrapper).anyTimes();
+
+ Map<Role, Float> successFactors = new HashMap<>();
+ expect(stage.getSuccessFactors()).andReturn(successFactors).atLeastOnce();
+
+ // Check that we create proper stage count
+ expect(stageFactory.createNew(anyLong(), anyObject(String.class),
+ anyObject(String.class), anyLong(),
+ anyObject(String.class), anyObject(String.class),
+ anyObject(String.class))).andReturn(stage).
+ times((int) Math.ceil(hostCount / MAX_TASKS_PER_STAGE));
+
+ expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(StackId.class),
+ anyObject(String.class))).andReturn(repoVersion);
+
+ Capture<org.apache.ambari.server.actionmanager.Request> c = Capture.newInstance();
+ Capture<ExecuteActionRequest> ear = Capture.newInstance();
+
+ actionManager.sendActions(capture(c), capture(ear));
+ expectLastCall().atLeastOnce();
+ expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes();
+
+ ClusterEntity clusterEntity = new ClusterEntity();
+ clusterEntity.setClusterId(1l);
+ clusterEntity.setClusterName(clusterName);
+
+ StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
+ StageUtils.setConfiguration(injector.getInstance(Configuration.class));
+
+ // replay
+ replay(managementController, response, clusters, hdfsService, hbaseService, csvResourceProvider,
+ cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager,
+ executionCommandWrapper,stage, stageFactory);
+
+ ResourceProvider provider = createProvider(managementController);
+ injector.injectMembers(provider);
+
+ // add the property map to a set for the request. add more maps for multiple creates
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<>();
+
+ Map<String, Object> properties = new LinkedHashMap<>();
+
+ // add properties to the request map
+ properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+ properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "2.2.0.1-885");
+ properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STACK_PROPERTY_ID, "HDP");
+ properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID, "2.1.1");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet, null);
+
+ SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
+
+ RequestStatus status = provider.createResources(request);
+ Assert.assertNotNull(status);
+
+ // check that the success factor was populated in the stage
+ Float successFactor = successFactors.get(Role.INSTALL_PACKAGES);
+ Assert.assertEquals(Float.valueOf(0.85f), successFactor);
+
+ Assert.assertNotNull(executionCommand.getRepositoryFile());
+ Assert.assertNotNull(executionCommand.getRoleParameters());
+ Map<String, Object> roleParams = executionCommand.getRoleParameters();
+ Assert.assertTrue(roleParams.containsKey(KeyNames.CLUSTER_VERSION_SUMMARY));
+ Assert.assertEquals(ClusterVersionSummary.class,
+ roleParams.get(KeyNames.CLUSTER_VERSION_SUMMARY).getClass());
+
+ Assert.assertEquals(2, executionCommand.getRepositoryFile().getRepositories().size());
+ for (CommandRepository.Repository repo : executionCommand.getRepositoryFile().getRepositories()) {
+ Assert.assertFalse(repo.isAmbariManaged());
+ }
+
+ }
+
private ClusterStackVersionResourceProvider createProvider(AmbariManagementController amc) {
ResourceProviderFactory factory = injector.getInstance(ResourceProviderFactory.class);
AbstractControllerResourceProvider.init(factory);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java
index 9c94f35..59fbba0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java
@@ -139,11 +139,12 @@ public class HostKerberosIdentityResourceProviderTest extends EasyMockSupport {
expect(principalDescriptor1.getLocalUsername()).andReturn("principal1");
KerberosKeytabDescriptor keytabDescriptor1 = createStrictMock(KerberosKeytabDescriptor.class);
- expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").times(1);
- expect(keytabDescriptor1.getGroupAccess()).andReturn("r").times(1);
expect(keytabDescriptor1.getFile()).andReturn("/etc/security/keytabs/principal1.headless.keytab").times(1);
- expect(keytabDescriptor1.getOwnerName()).andReturn("principal1").times(1);
- expect(keytabDescriptor1.getGroupName()).andReturn("principal1").times(1);
+ expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
+ expect(keytabDescriptor1.getGroupAccess()).andReturn("r").once();
+ expect(keytabDescriptor1.getFile()).andReturn("/etc/security/keytabs/principal1.headless.keytab").times(1);
+ expect(keytabDescriptor1.getOwnerName()).andReturn("principal1").once();
+ expect(keytabDescriptor1.getGroupName()).andReturn("principal1").once();
KerberosIdentityDescriptor identity1 = createStrictMock(KerberosIdentityDescriptor.class);
expect(identity1.getPrincipalDescriptor()).andReturn(principalDescriptor1).times(1);
@@ -189,8 +190,7 @@ public class HostKerberosIdentityResourceProviderTest extends EasyMockSupport {
expect(kerberosPrincipalDAO.exists("principal5@EXAMPLE.COM")).andReturn(false).times(1);
KerberosPrincipalHostDAO kerberosPrincipalHostDAO = createStrictMock(KerberosPrincipalHostDAO.class);
- expect(kerberosPrincipalHostDAO.exists("principal1@EXAMPLE.COM", 100L)).andReturn(true).times(1);
- expect(kerberosPrincipalHostDAO.exists("principal2/Host100@EXAMPLE.COM", 100L)).andReturn(false).times(1);
+ expect(kerberosPrincipalHostDAO.exists("principal1@EXAMPLE.COM", 100L, "/etc/security/keytabs/principal1.headless.keytab")).andReturn(true).times(1);
HostEntity host100 = createStrictMock(HostEntity.class);
expect(host100.getHostId()).andReturn(100L).times(1);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
index ca5cde0..abdef9b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java
@@ -23,6 +23,7 @@ import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
+import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -36,6 +37,7 @@ import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.state.stack.RepoTag;
import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
@@ -56,7 +58,7 @@ public class RepositoryResourceProviderTest {
AmbariManagementController managementController = EasyMock.createMock(AmbariManagementController.class);
RepositoryResponse rr = new RepositoryResponse(VAL_BASE_URL, VAL_OS,
- VAL_REPO_ID, VAL_REPO_NAME, VAL_DISTRIBUTION, VAL_COMPONENT_NAME, null, null);
+ VAL_REPO_ID, VAL_REPO_NAME, VAL_DISTRIBUTION, VAL_COMPONENT_NAME, null, null, Collections.<RepoTag>emptySet());
rr.setStackName(VAL_STACK_NAME);
rr.setStackVersion(VAL_STACK_VERSION);
Set<RepositoryResponse> allResponse = new HashSet<>();
@@ -168,7 +170,7 @@ public class RepositoryResourceProviderTest {
AmbariManagementController managementController = EasyMock.createMock(AmbariManagementController.class);
RepositoryResponse rr = new RepositoryResponse(VAL_BASE_URL, VAL_OS,
- VAL_REPO_ID, VAL_REPO_NAME, null, null, null, null);
+ VAL_REPO_ID, VAL_REPO_NAME, null, null, null, null , Collections.<RepoTag>emptySet());
Set<RepositoryResponse> allResponse = new HashSet<>();
allResponse.add(rr);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
new file mode 100644
index 0000000..5016160
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
@@ -0,0 +1,393 @@
+/*
+ * Licensed 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 static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_CATEGORY_PROPERTY_ID;
+import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_COMPONENT_NAME_PROPERTY_ID;
+import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_PROPERTIES_PROPERTY_ID;
+import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_SERVICE_NAME_PROPERTY_ID;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.newCapture;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.persistence.EntityManager;
+
+import org.apache.ambari.server.controller.RootComponent;
+import org.apache.ambari.server.controller.RootService;
+import org.apache.ambari.server.controller.predicate.AndPredicate;
+import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.controller.utilities.PredicateBuilder;
+import org.apache.ambari.server.events.AmbariConfigurationChangedEvent;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
+import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
+import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
+import org.apache.ambari.server.security.TestAuthenticationFactory;
+import org.apache.ambari.server.security.authorization.AuthorizationException;
+import org.easymock.Capture;
+import org.easymock.EasyMockSupport;
+import org.junit.After;
+import org.junit.Test;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+import junit.framework.Assert;
+
+public class RootServiceComponentConfigurationResourceProviderTest extends EasyMockSupport {
+
+ private static final String CATEGORY_NAME_1 = "test-category-1";
+ private static final String CATEGORY_NAME_2 = "test-category-2";
+
+ @After
+ public void clearAuthentication() {
+ SecurityContextHolder.getContext().setAuthentication(null);
+ }
+
+ @Test
+ public void testCreateResources_Administrator() throws Exception {
+ testCreateResources(TestAuthenticationFactory.createAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testCreateResources_ClusterAdministrator() throws Exception {
+ testCreateResources(TestAuthenticationFactory.createClusterAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testCreateResources_ClusterOperator() throws Exception {
+ testCreateResources(TestAuthenticationFactory.createClusterOperator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testCreateResources_ServiceAdministrator() throws Exception {
+ testCreateResources(TestAuthenticationFactory.createServiceAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testCreateResources_ServiceOperator() throws Exception {
+ testCreateResources(TestAuthenticationFactory.createServiceOperator());
+ }
+
+ private void testCreateResources(Authentication authentication) throws Exception {
+ Injector injector = createInjector();
+
+ ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class);
+
+ Set<Map<String, Object>> propertySets = new HashSet<>();
+
+ Map<String, String> properties1 = new HashMap<>();
+ properties1.put("property1a", "value1");
+ properties1.put("property2a", "value2");
+ propertySets.add(toRequestProperties(CATEGORY_NAME_1, properties1));
+
+ Map<String, String> properties2 = new HashMap<>();
+ properties2.put("property1b", "value1");
+ properties2.put("property2b", "value2");
+ propertySets.add(toRequestProperties(CATEGORY_NAME_2, properties2));
+
+ Request request = createMock(Request.class);
+ expect(request.getProperties()).andReturn(propertySets).once();
+
+ Capture<Map<String, String>> capturedProperties1 = newCapture();
+ Capture<Map<String, String>> capturedProperties2 = newCapture();
+
+ AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class);
+ expect(dao.reconcileCategory(eq(CATEGORY_NAME_1), capture(capturedProperties1), eq(true)))
+ .andReturn(true)
+ .once();
+ expect(dao.reconcileCategory(eq(CATEGORY_NAME_2), capture(capturedProperties2), eq(true)))
+ .andReturn(true)
+ .once();
+
+ AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class);
+ publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
+ expectLastCall().times(2);
+
+ replayAll();
+
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ resourceProvider.createResources(request);
+
+ verifyAll();
+
+ validateCapturedProperties(properties1, capturedProperties1);
+ validateCapturedProperties(properties2, capturedProperties2);
+ }
+
+ @Test
+ public void testDeleteResources_Administrator() throws Exception {
+ testDeleteResources(TestAuthenticationFactory.createAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testDeleteResources_ClusterAdministrator() throws Exception {
+ testDeleteResources(TestAuthenticationFactory.createClusterAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testDeleteResources_ClusterOperator() throws Exception {
+ testDeleteResources(TestAuthenticationFactory.createClusterOperator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testDeleteResources_ServiceAdministrator() throws Exception {
+ testDeleteResources(TestAuthenticationFactory.createServiceAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testDeleteResources_ServiceOperator() throws Exception {
+ testDeleteResources(TestAuthenticationFactory.createServiceOperator());
+ }
+
+ private void testDeleteResources(Authentication authentication) throws Exception {
+ Injector injector = createInjector();
+
+ ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class);
+
+ Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1);
+
+ Request request = createMock(Request.class);
+
+ AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class);
+ expect(dao.removeByCategory(CATEGORY_NAME_1)).andReturn(1).once();
+
+ AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class);
+ publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
+ expectLastCall().once();
+
+ replayAll();
+
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ resourceProvider.deleteResources(request, predicate);
+
+ verifyAll();
+ }
+
+ @Test
+ public void testGetResources_Administrator() throws Exception {
+ testGetResources(TestAuthenticationFactory.createAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testGetResources_ClusterAdministrator() throws Exception {
+ testGetResources(TestAuthenticationFactory.createClusterAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testGetResources_ClusterOperator() throws Exception {
+ testGetResources(TestAuthenticationFactory.createClusterOperator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testGetResources_ServiceAdministrator() throws Exception {
+ testGetResources(TestAuthenticationFactory.createServiceAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testGetResources_ServiceOperator() throws Exception {
+ testGetResources(TestAuthenticationFactory.createServiceOperator());
+ }
+
+ private void testGetResources(Authentication authentication) throws Exception {
+ Injector injector = createInjector();
+
+ ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class);
+
+ Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1);
+
+ Request request = createMock(Request.class);
+ expect(request.getPropertyIds()).andReturn(null).anyTimes();
+
+ Map<String, String> properties = new HashMap<>();
+ properties.put("property1a", "value1");
+ properties.put("property2a", "value2");
+
+ AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class);
+ expect(dao.findByCategory(CATEGORY_NAME_1)).andReturn(createEntities(CATEGORY_NAME_1, properties)).once();
+
+ replayAll();
+
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ Set<Resource> response = resourceProvider.getResources(request, predicate);
+
+ verifyAll();
+
+ Assert.assertNotNull(response);
+ Assert.assertEquals(1, response.size());
+
+ Resource resource = response.iterator().next();
+ Assert.assertEquals(Resource.Type.RootServiceComponentConfiguration, resource.getType());
+
+ Map<String, Map<String, Object>> propertiesMap = resource.getPropertiesMap();
+ Assert.assertEquals(2, propertiesMap.size());
+
+ Assert.assertEquals(CATEGORY_NAME_1, propertiesMap.get(RootServiceComponentConfigurationResourceProvider.RESOURCE_KEY).get("category"));
+
+ Map<String, Object> retrievedProperties = propertiesMap.get(RootServiceComponentConfigurationResourceProvider.RESOURCE_KEY + "/properties");
+ Assert.assertEquals(2, retrievedProperties.size());
+
+ for (Map.Entry<String, String> entry : properties.entrySet()) {
+ Assert.assertEquals(entry.getValue(), retrievedProperties.get(entry.getKey()));
+ }
+ }
+
+ @Test
+ public void testUpdateResources_Administrator() throws Exception {
+ testUpdateResources(TestAuthenticationFactory.createAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testUpdateResources_ClusterAdministrator() throws Exception {
+ testUpdateResources(TestAuthenticationFactory.createClusterAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testUpdateResources_ClusterOperator() throws Exception {
+ testUpdateResources(TestAuthenticationFactory.createClusterOperator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testUpdateResources_ServiceAdministrator() throws Exception {
+ testUpdateResources(TestAuthenticationFactory.createServiceAdministrator());
+ }
+
+ @Test(expected = AuthorizationException.class)
+ public void testUpdateResources_ServiceOperator() throws Exception {
+ testUpdateResources(TestAuthenticationFactory.createServiceOperator());
+ }
+
+ private void testUpdateResources(Authentication authentication) throws Exception {
+ Injector injector = createInjector();
+
+ ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class);
+
+ Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1);
+
+ Set<Map<String, Object>> propertySets = new HashSet<>();
+
+ Map<String, String> properties1 = new HashMap<>();
+ properties1.put("property1a", "value1");
+ properties1.put("property2a", "value2");
+ propertySets.add(toRequestProperties(CATEGORY_NAME_1, properties1));
+
+ Request request = createMock(Request.class);
+ expect(request.getProperties()).andReturn(propertySets).once();
+
+ Capture<Map<String, String>> capturedProperties1 = newCapture();
+
+ AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class);
+ expect(dao.reconcileCategory(eq(CATEGORY_NAME_1), capture(capturedProperties1), eq(false)))
+ .andReturn(true)
+ .once();
+
+ AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class);
+ publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
+ expectLastCall().times(1);
+
+ replayAll();
+
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ resourceProvider.updateResources(request, predicate);
+
+ verifyAll();
+
+ validateCapturedProperties(properties1, capturedProperties1);
+ }
+
+ private Predicate createPredicate(String serviceName, String componentName, String categoryName) {
+ Predicate predicateService = new PredicateBuilder()
+ .property(CONFIGURATION_SERVICE_NAME_PROPERTY_ID)
+ .equals(serviceName)
+ .toPredicate();
+ Predicate predicateComponent = new PredicateBuilder()
+ .property(CONFIGURATION_COMPONENT_NAME_PROPERTY_ID)
+ .equals(componentName)
+ .toPredicate();
+ Predicate predicateCategory = new PredicateBuilder()
+ .property(CONFIGURATION_CATEGORY_PROPERTY_ID)
+ .equals(categoryName)
+ .toPredicate();
+ return new AndPredicate(predicateService, predicateComponent, predicateCategory);
+ }
+
+ private List<AmbariConfigurationEntity> createEntities(String categoryName, Map<String, String> properties) {
+ List<AmbariConfigurationEntity> entities = new ArrayList<>();
+
+ for (Map.Entry<String, String> property : properties.entrySet()) {
+ AmbariConfigurationEntity entity = new AmbariConfigurationEntity();
+ entity.setCategoryName(categoryName);
+ entity.setPropertyName(property.getKey());
+ entity.setPropertyValue(property.getValue());
+ entities.add(entity);
+ }
+
+ return entities;
+ }
+
+ private Map<String, Object> toRequestProperties(String categoryName1, Map<String, String> properties) {
+ Map<String, Object> requestProperties = new HashMap<>();
+ requestProperties.put(CONFIGURATION_SERVICE_NAME_PROPERTY_ID, "AMBARI");
+ requestProperties.put(CONFIGURATION_COMPONENT_NAME_PROPERTY_ID, "AMBARI_SERVER");
+ requestProperties.put(CONFIGURATION_CATEGORY_PROPERTY_ID, categoryName1);
+ for (Map.Entry<String, String> entry : properties.entrySet()) {
+ requestProperties.put(CONFIGURATION_PROPERTIES_PROPERTY_ID + "/" + entry.getKey(), entry.getValue());
+ }
+ return requestProperties;
+ }
+
+ private void validateCapturedProperties(Map<String, String> expectedProperties, Capture<Map<String, String>> capturedProperties) {
+ Assert.assertTrue(capturedProperties.hasCaptured());
+
+ Map<String, String> properties = capturedProperties.getValue();
+ Assert.assertNotNull(properties);
+
+ // Convert the Map to a TreeMap to help with comparisons
+ expectedProperties = new TreeMap<>(expectedProperties);
+ properties = new TreeMap<>(properties);
+ Assert.assertEquals(expectedProperties, properties);
+ }
+
+ private Injector createInjector() throws Exception {
+ return Guice.createInjector(new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
+ bind(AmbariConfigurationDAO.class).toInstance(createMock(AmbariConfigurationDAO.class));
+ bind(AmbariEventPublisher.class).toInstance(createMock(AmbariEventPublisher.class));
+ }
+ });
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java
index a202516..d3f9bd1 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java
@@ -24,7 +24,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.apache.ambari.server.controller.RootServiceResponseFactory;
+import org.apache.ambari.server.controller.RootComponent;
+import org.apache.ambari.server.controller.RootService;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -34,27 +35,27 @@ import org.junit.Test;
public class RootServiceComponentPropertyProviderTest {
@Test
public void testPopulateResources_AmbariServer_None() throws Exception {
- testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), false, false, false, false);
+ testPopulateResources(RootComponent.AMBARI_SERVER.name(), false, false, false, false);
}
@Test
public void testPopulateResources_AmbariServer_CiphersAndJCEPolicy() throws Exception {
- testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), true, true, true, true);
+ testPopulateResources(RootComponent.AMBARI_SERVER.name(), true, true, true, true);
}
@Test
public void testPopulateResources_AmbariServer_JCEPolicy() throws Exception {
- testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), false, true, false, true);
+ testPopulateResources(RootComponent.AMBARI_SERVER.name(), false, true, false, true);
}
@Test
public void testPopulateResources_AmbariServer_Ciphers() throws Exception {
- testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), true, false, true, false);
+ testPopulateResources(RootComponent.AMBARI_SERVER.name(), true, false, true, false);
}
@Test
public void testPopulateResources_AmbariAgent_CiphersAndJCEPolicy() throws Exception {
- testPopulateResources(RootServiceResponseFactory.Components.AMBARI_AGENT.name(), true, true, false, false);
+ testPopulateResources(RootComponent.AMBARI_AGENT.name(), true, true, false, false);
}
public void testPopulateResources(String componentName,
@@ -64,7 +65,7 @@ public class RootServiceComponentPropertyProviderTest {
Resource resource = new ResourceImpl(Resource.Type.RootService);
resource.setProperty(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID, componentName);
- resource.setProperty(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID, RootServiceResponseFactory.Services.AMBARI.name());
+ resource.setProperty(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID, RootService.AMBARI.name());
HashSet<String> requestIds = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java
index 222340b..4316647 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java
@@ -29,8 +29,9 @@ import java.util.Map;
import java.util.Set;
import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.RootComponent;
+import org.apache.ambari.server.controller.RootService;
import org.apache.ambari.server.controller.RootServiceComponentResponse;
-import org.apache.ambari.server.controller.RootServiceResponseFactory;
import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.Resource;
@@ -50,12 +51,12 @@ public class RootServiceComponentResourceProviderTest {
AmbariManagementController managementController = createMock(AmbariManagementController.class);
Set<RootServiceComponentResponse> allResponse = new HashSet<>();
- String serviceName = RootServiceResponseFactory.Services.AMBARI.name();
+ String serviceName = RootService.AMBARI.name();
Map<String, String> emptyMap = Collections.emptyMap();
allResponse.add(new RootServiceComponentResponse(serviceName, "component1", "1.1.1", emptyMap));
allResponse.add(new RootServiceComponentResponse(serviceName, "component2", "1.1.1", emptyMap));
allResponse.add(new RootServiceComponentResponse(serviceName, "component3", "1.1.1", emptyMap));
- allResponse.add(new RootServiceComponentResponse(serviceName, RootServiceResponseFactory.Components.AMBARI_SERVER.name(), "1.1.1", emptyMap));
+ allResponse.add(new RootServiceComponentResponse(serviceName, RootComponent.AMBARI_SERVER.name(), "1.1.1", emptyMap));
Set<RootServiceComponentResponse> nameResponse = new HashSet<>();
nameResponse.add(new RootServiceComponentResponse(serviceName, "component4", "1.1.1", emptyMap));
@@ -92,7 +93,7 @@ public class RootServiceComponentResourceProviderTest {
String componentName = (String) resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID);
String componentVersion = (String) resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_VERSION_PROPERTY_ID);
Long server_clock = (Long) resource.getPropertyValue(RootServiceComponentResourceProvider.SERVER_CLOCK_PROPERTY_ID);
- if (componentName.equals(RootServiceResponseFactory.Components.AMBARI_SERVER.name())){
+ if (componentName.equals(RootComponent.AMBARI_SERVER.name())){
Assert.assertNotNull(server_clock);
} else {
Assert.assertNull(server_clock);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 9c5fb98..9e6b98b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -214,23 +214,25 @@ public class UpgradeResourceProviderTest extends EasyMockSupport {
StackEntity stackEntity220 = stackDAO.find("HDP", "2.2.0");
StackId stack211 = new StackId(stackEntity211);
+ String operatingSystems = "[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]";
+
repoVersionEntity2110 = new RepositoryVersionEntity();
repoVersionEntity2110.setDisplayName("My New Version 1");
- repoVersionEntity2110.setOperatingSystems("");
+ repoVersionEntity2110.setOperatingSystems(operatingSystems);
repoVersionEntity2110.setStack(stackEntity211);
repoVersionEntity2110.setVersion("2.1.1.0");
repoVersionDao.create(repoVersionEntity2110);
repoVersionEntity2111 = new RepositoryVersionEntity();
repoVersionEntity2111.setDisplayName("My New Version 2 for minor upgrade");
- repoVersionEntity2111.setOperatingSystems("");
+ repoVersionEntity2111.setOperatingSystems(operatingSystems);
repoVersionEntity2111.setStack(stackEntity211);
repoVersionEntity2111.setVersion("2.1.1.1");
repoVersionDao.create(repoVersionEntity2111);
repoVersionEntity2112 = new RepositoryVersionEntity();
repoVersionEntity2112.setDisplayName("My New Version 3 for patch upgrade");
- repoVersionEntity2112.setOperatingSystems("");
+ repoVersionEntity2112.setOperatingSystems(operatingSystems);
repoVersionEntity2112.setStack(stackEntity211);
repoVersionEntity2112.setVersion("2.1.1.2");
repoVersionEntity2112.setType(RepositoryType.PATCH);
@@ -239,7 +241,7 @@ public class UpgradeResourceProviderTest extends EasyMockSupport {
repoVersionEntity2200 = new RepositoryVersionEntity();
repoVersionEntity2200.setDisplayName("My New Version 4 for major upgrade");
- repoVersionEntity2200.setOperatingSystems("");
+ repoVersionEntity2200.setOperatingSystems(operatingSystems);
repoVersionEntity2200.setStack(stackEntity220);
repoVersionEntity2200.setVersion("2.2.0.0");
repoVersionDao.create(repoVersionEntity2200);
@@ -1443,6 +1445,14 @@ public class UpgradeResourceProviderTest extends EasyMockSupport {
requestProps.put(UpgradeResourceProvider.UPGRADE_HOST_ORDERED_HOSTS, hostsOrder);
upgradeResourceProvider.createResources(request);
+
+
+ // make sure that the desired versions are updated
+ Cluster cluster = clusters.getCluster("c1");
+ assertNotNull(cluster);
+
+ Service service = cluster.getService("ZOOKEEPER");
+ assertEquals(repoVersionEntity2200, service.getDesiredRepositoryVersion());
}
/**
@@ -1923,7 +1933,7 @@ public class UpgradeResourceProviderTest extends EasyMockSupport {
StackEntity stackEntity = stackDAO.find("HDP", "2.1.1");
RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
repoVersionEntity.setDisplayName("My New Version 3");
- repoVersionEntity.setOperatingSystems("");
+ repoVersionEntity.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]");
repoVersionEntity.setStack(stackEntity);
repoVersionEntity.setVersion("2.2.2.3");
repoVersionDao.create(repoVersionEntity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
index 687cbee..a27dab4 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java
@@ -77,7 +77,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
@Test
public void removesAllKerberosIdentitesOfComponentAfterComponentWasUninstalled() throws Exception {
installComponent(OOZIE, OOZIE_SERVER, HOST);
- kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2"));
+ kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2"));
expectLastCall().once();
replayAll();
uninstallComponent(OOZIE, OOZIE_SERVER, HOST);
@@ -95,7 +95,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
public void skipsRemovingIdentityThatIsSharedByPrincipalName() throws Exception {
installComponent(OOZIE, OOZIE_SERVER, HOST);
installComponent(OOZIE_2, OOZIE_SERVER_2, HOST);
- kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1"));
+ kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1"));
expectLastCall().once();
replayAll();
uninstallComponent(OOZIE, OOZIE_SERVER, HOST);
@@ -106,7 +106,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
public void skipsRemovingIdentityThatIsSharedByKeyTabFilePath() throws Exception {
installComponent(YARN, RESOURCE_MANAGER, HOST);
installComponent(YARN_2, RESOURCE_MANAGER_2, HOST);
- kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique"));
+ kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER, -1l)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique"));
expectLastCall().once();
replayAll();
uninstallComponent(YARN, RESOURCE_MANAGER, HOST);
@@ -141,7 +141,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
}
private ArrayList<Component> hdfsComponents() {
- return newArrayList(new Component(HOST, HDFS, NAMENODE), new Component(HOST, HDFS, DATANODE));
+ return newArrayList(new Component(HOST, HDFS, NAMENODE, 0l), new Component(HOST, HDFS, DATANODE, 0l));
}
private void installComponent(String serviceName, String componentName, String... hostNames) {
@@ -163,7 +163,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport {
}
private void uninstallComponent(String service, String component, String host) throws KerberosMissingAdminCredentialsException {
- kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false));
+ kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false, null));
}
private void uninstallService(String service, List<Component> components) throws KerberosMissingAdminCredentialsException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
index ed3a744..d792c5c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
@@ -514,7 +514,7 @@ public class HostVersionOutOfSyncListenerTest {
ServiceComponentUninstalledEvent event = new ServiceComponentUninstalledEvent(
c1.getClusterId(), clusterStackId.getStackName(), clusterStackId.getStackVersion(),
- "HDFS", "", "", "DATANODE", sch.getHostName(), false);
+ "HDFS", "", "", "DATANODE", sch.getHostName(), false, null);
m_eventPublisher.publish(event);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java
index 30f5e22..3917cdf 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java
@@ -125,8 +125,8 @@ public class LdapModuleFunctionalTest {
return ldapPropsMap;
}
- private static Map<String, Object> getADProps() {
- Map<String, Object> ldapPropsMap = Maps.newHashMap();
+ private static Map<String, String> getADProps() {
+ Map<String, String> ldapPropsMap = Maps.newHashMap();
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java
index aa26498..1082250 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java
@@ -23,7 +23,7 @@ import java.util.Map;
public class TestAmbariLdapConfigurationFactory implements AmbariLdapConfigurationFactory {
@Override
- public AmbariLdapConfiguration createLdapConfiguration(Map<String, Object> configuration) {
+ public AmbariLdapConfiguration createLdapConfiguration(Map<String, String> configuration) {
return new AmbariLdapConfiguration(configuration);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java
index db0e5a9..97ce30e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java
@@ -163,12 +163,12 @@ public class AmbariLdapFacadeTest extends EasyMockSupport {
public void testShouldLdapAttributeDetectionDelegateToTheRightServiceCalls() throws Exception {
// configuration map with user attributes detected
- Map<String, Object> userConfigMap = Maps.newHashMap();
+ Map<String, String> userConfigMap = Maps.newHashMap();
userConfigMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "uid");
AmbariLdapConfiguration userAttrDecoratedConfig = ambariLdapConfigurationFactory.createLdapConfiguration(userConfigMap);
// configuration map with user+group attributes detected
- Map<String, Object> groupConfigMap = Maps.newHashMap(userConfigMap);
+ Map<String, String> groupConfigMap = Maps.newHashMap(userConfigMap);
groupConfigMap.put(AmbariLdapConfigKeys.GROUP_NAME_ATTRIBUTE.key(), "dn");
AmbariLdapConfiguration groupAttrDecoratedConfig = ambariLdapConfigurationFactory.createLdapConfiguration(groupConfigMap);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java
index 09dea1c..a44bf7c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java
@@ -78,7 +78,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport {
@SuppressWarnings("unchecked")
public void shouldLdapUserAttributeDetection() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.USER_SEARCH_BASE.key(), "dc=example,dc=com");
AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap);
@@ -109,7 +109,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport {
@Test(expected = AmbariLdapException.class)
public void testShouldUserAttributeDetectionFailWhenLdapOerationFails() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.USER_SEARCH_BASE.key(), "dc=example,dc=com");
AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap);
@@ -129,7 +129,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport {
@SuppressWarnings("unchecked")
public void shouldLdapGroupAttributeDetection() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com");
AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap);
@@ -160,7 +160,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport {
@Test(expected = AmbariLdapException.class)
public void testShouldGroupAttributeDetectionFailWhenLdapOerationFails() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com");
AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java
index 4d6d2a6..ec78e56 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java
@@ -102,7 +102,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport {
@Test
public void testShouldUserAttributeConfigurationCheckSucceedWhenUserDnIsFound() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.USER_OBJECT_CLASS.key(), "person");
configMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "uid");
@@ -126,7 +126,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport {
@Test(expected = AmbariLdapException.class)
public void testShouldUserAttributeConfigurationCheckFailWhenNoUsersFound() throws Exception {
// GIVEN
- Map<String, Object> configMap = Maps.newHashMap();
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.USER_OBJECT_CLASS.key(), "posixAccount");
configMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "dn");
@@ -155,7 +155,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport {
public void testShouldGroupAttributeConfigurationCheckSucceedWhenGroupForUserDnIsFound() throws Exception {
// GIVEN
- Map<String, Object> configMap = groupConfigObjectMap();
+ Map<String, String> configMap = groupConfigObjectMap();
SearchRequest sr = new SearchRequestImpl();
@@ -184,7 +184,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport {
public void testShouldGroupAttributeConfigurationCheckFailWhenNoGroupsForUserDnFound() throws Exception {
// GIVEN
- Map<String, Object> configMap = groupConfigObjectMap();
+ Map<String, String> configMap = groupConfigObjectMap();
SearchRequest sr = new SearchRequestImpl();
@@ -208,8 +208,8 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport {
}
- private Map<String, Object> groupConfigObjectMap() {
- Map<String, Object> configMap = Maps.newHashMap();
+ private Map<String, String> groupConfigObjectMap() {
+ Map<String, String> configMap = Maps.newHashMap();
configMap.put(AmbariLdapConfigKeys.GROUP_OBJECT_CLASS.key(), "groupOfNames");
configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com");
configMap.put(AmbariLdapConfigKeys.GROUP_NAME_ATTRIBUTE.key(), "uid");
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java
index adaf236..cb234ea 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java
@@ -22,7 +22,7 @@ import java.util.List;
import javax.persistence.EntityManager;
import org.apache.ambari.server.H2DatabaseCleaner;
-import org.apache.ambari.server.controller.RootServiceResponseFactory.Components;
+import org.apache.ambari.server.controller.RootComponent;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.state.alert.AlertDefinition;
@@ -63,7 +63,7 @@ public class AgentAlertDefinitionsTest {
Assert.assertEquals(3, definitions.size());
for( AlertDefinition definition : definitions){
- Assert.assertEquals(Components.AMBARI_AGENT.name(),
+ Assert.assertEquals(RootComponent.AMBARI_AGENT.name(),
definition.getComponentName());
Assert.assertEquals("AMBARI", definition.getServiceName());
@@ -80,7 +80,7 @@ public class AgentAlertDefinitionsTest {
Assert.assertEquals(4, definitions.size());
for (AlertDefinition definition : definitions) {
- Assert.assertEquals(Components.AMBARI_SERVER.name(),
+ Assert.assertEquals(RootComponent.AMBARI_SERVER.name(),
definition.getComponentName());
Assert.assertEquals("AMBARI", definition.getServiceName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
index 27fb18b..a03d7cc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
@@ -671,8 +671,10 @@ public class OrmTestHelper {
if (repositoryVersion == null) {
try {
+ String operatingSystems = "[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]";
+
repositoryVersion = repositoryVersionDAO.create(stackEntity, version,
- String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), "");
+ String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), operatingSystems);
} catch (Exception ex) {
LOG.error("Caught exception", ex);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java
index d559e0c..9ebc2e5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java
@@ -31,7 +31,8 @@ import java.util.TimeZone;
import java.util.UUID;
import org.apache.ambari.server.H2DatabaseCleaner;
-import org.apache.ambari.server.controller.RootServiceResponseFactory;
+import org.apache.ambari.server.controller.RootComponent;
+import org.apache.ambari.server.controller.RootService;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
@@ -148,8 +149,8 @@ public class AlertDefinitionDAOTest {
for (; i < 15; i++) {
AlertDefinitionEntity definition = new AlertDefinitionEntity();
definition.setDefinitionName("Alert Definition " + i);
- definition.setServiceName(RootServiceResponseFactory.Services.AMBARI.name());
- definition.setComponentName(RootServiceResponseFactory.Components.AMBARI_AGENT.name());
+ definition.setServiceName(RootService.AMBARI.name());
+ definition.setComponentName(RootComponent.AMBARI_AGENT.name());
definition.setClusterId(clusterId);
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(60);