You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ha...@apache.org on 2017/06/25 09:59:45 UTC
[09/25] ambari git commit: AMBARI-21268 Remove Upgrade Catalogs For
Every Version Before 2.5 (dgrinenko)
http://git-wip-us.apache.org/repos/asf/ambari/blob/af1bf85c/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
deleted file mode 100644
index 7218578..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java
+++ /dev/null
@@ -1,1360 +0,0 @@
-/*
- * 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.upgrade;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertNull;
-import static junit.framework.Assert.assertTrue;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.createMockBuilder;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.persistence.EntityManager;
-
-import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.H2DatabaseCleaner;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.controller.AmbariManagementController;
-import org.apache.ambari.server.controller.ServiceConfigVersionResponse;
-import org.apache.ambari.server.orm.DBAccessor;
-import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
-import org.apache.ambari.server.orm.GuiceJpaInitializer;
-import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.OrmTestHelper;
-import org.apache.ambari.server.orm.dao.ArtifactDAO;
-import org.apache.ambari.server.orm.dao.ClusterDAO;
-import org.apache.ambari.server.orm.dao.ClusterStateDAO;
-import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
-import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
-import org.apache.ambari.server.orm.dao.StackDAO;
-import org.apache.ambari.server.orm.entities.ArtifactEntity;
-import org.apache.ambari.server.orm.entities.ClusterEntity;
-import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
-import org.apache.ambari.server.orm.entities.ClusterStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostEntity;
-import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
-import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.StackEntity;
-import org.apache.ambari.server.state.Cluster;
-import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.Config;
-import org.apache.ambari.server.state.ConfigHelper;
-import org.apache.ambari.server.state.Host;
-import org.apache.ambari.server.state.HostComponentAdminState;
-import org.apache.ambari.server.state.Service;
-import org.apache.ambari.server.state.StackId;
-import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
-import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
-import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
-import org.apache.ambari.server.state.stack.OsFamily;
-import org.easymock.Capture;
-import org.easymock.CaptureType;
-import org.easymock.EasyMock;
-import org.easymock.EasyMockSupport;
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Binder;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.Provider;
-
-/**
- * {@link org.apache.ambari.server.upgrade.UpgradeCatalog210} unit tests.
- */
-public class UpgradeCatalog210Test {
- private Injector injector;
- private Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
- private EntityManager entityManager = createNiceMock(EntityManager.class);
- private UpgradeCatalogHelper upgradeCatalogHelper;
- private StackEntity desiredStackEntity;
- private String desiredRepositoryVersion = "2.2.0-1234";
-
- public void initData() {
- //reset(entityManagerProvider);
- //expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
- //replay(entityManagerProvider);
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
- injector.getInstance(GuiceJpaInitializer.class);
-
- upgradeCatalogHelper = injector.getInstance(UpgradeCatalogHelper.class);
- // inject AmbariMetaInfo to ensure that stacks get populated in the DB
- injector.getInstance(AmbariMetaInfo.class);
- // load the stack entity
- StackDAO stackDAO = injector.getInstance(StackDAO.class);
- desiredStackEntity = stackDAO.find("HDP", "2.2.0");
- }
-
- public void tearDown() throws AmbariException, SQLException {
- H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
- }
-
- @Test
- public void testExecuteDDLUpdates() throws Exception {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- Configuration configuration = createNiceMock(Configuration.class);
- Connection connection = createNiceMock(Connection.class);
- Statement statement = createNiceMock(Statement.class);
- ResultSet resultSet = createNiceMock(ResultSet.class);
- expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
- dbAccessor.getConnection();
- expectLastCall().andReturn(connection).anyTimes();
- connection.createStatement();
- expectLastCall().andReturn(statement).anyTimes();
- statement.executeQuery(anyObject(String.class));
- expectLastCall().andReturn(resultSet).anyTimes();
-
- // Create DDL sections with their own capture groups
- AlertSectionDDL alertSectionDDL = new AlertSectionDDL();
- HostSectionDDL hostSectionDDL = new HostSectionDDL();
- WidgetSectionDDL widgetSectionDDL = new WidgetSectionDDL();
- ViewSectionDDL viewSectionDDL = new ViewSectionDDL();
-
- // Execute any DDL schema changes
- alertSectionDDL.execute(dbAccessor);
- hostSectionDDL.execute(dbAccessor);
- widgetSectionDDL.execute(dbAccessor);
- viewSectionDDL.execute(dbAccessor);
-
- // Replay sections
- replay(dbAccessor, configuration, resultSet, connection, statement);
-
- AbstractUpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor);
- Class<?> c = AbstractUpgradeCatalog.class;
- Field f = c.getDeclaredField("configuration");
- f.setAccessible(true);
- f.set(upgradeCatalog, configuration);
-
- upgradeCatalog.executeDDLUpdates();
- verify(dbAccessor, configuration, resultSet, connection, statement);
-
- // Verify sections
- alertSectionDDL.verify(dbAccessor);
- hostSectionDDL.verify(dbAccessor);
- widgetSectionDDL.verify(dbAccessor);
- viewSectionDDL.verify(dbAccessor);
- }
-
- @Test
- public void testExecutePreDMLUpdates() throws Exception {
- Method executeStackPreDMLUpdates = UpgradeCatalog210.class.getDeclaredMethod("executeStackPreDMLUpdates");
- Method cleanupStackUpdates = UpgradeCatalog210.class.getDeclaredMethod("cleanupStackUpdates");
-
- final UpgradeCatalog210 upgradeCatalog210 = createMockBuilder(UpgradeCatalog210.class)
- .addMockedMethod(executeStackPreDMLUpdates)
- .addMockedMethod(cleanupStackUpdates).createMock();
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(UpgradeCatalog210.class).toInstance(upgradeCatalog210);
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- upgradeCatalog210.executeStackPreDMLUpdates();
- expectLastCall().once();
-
- replay(upgradeCatalog210);
- mockInjector.getInstance(UpgradeCatalog210.class).executePreDMLUpdates();
-
- verify(upgradeCatalog210);
- }
-
- @Test
- public void testExecuteDMLUpdates() throws Exception {
- Method addNewConfigurationsFromXml =
- AbstractUpgradeCatalog.class.getDeclaredMethod("addNewConfigurationsFromXml");
-
- Method initializeClusterAndServiceWidgets =
- UpgradeCatalog210.class.getDeclaredMethod("initializeClusterAndServiceWidgets");
-
- Method addMissingConfigs = UpgradeCatalog210.class.getDeclaredMethod("addMissingConfigs");
-
- Method updateAlertDefinitions = UpgradeCatalog210.class.getDeclaredMethod("updateAlertDefinitions");
-
- Method removeStormRestApiServiceComponent =
- UpgradeCatalog210.class.getDeclaredMethod("removeStormRestApiServiceComponent");
-
- Method updateKerberosDescriptorArtifacts =
- AbstractUpgradeCatalog.class.getDeclaredMethod("updateKerberosDescriptorArtifacts");
-
- UpgradeCatalog210 upgradeCatalog210 = createMockBuilder(UpgradeCatalog210.class)
- .addMockedMethod(addNewConfigurationsFromXml)
- .addMockedMethod(initializeClusterAndServiceWidgets)
- .addMockedMethod(addMissingConfigs)
- .addMockedMethod(updateAlertDefinitions)
- .addMockedMethod(removeStormRestApiServiceComponent)
- .addMockedMethod(updateKerberosDescriptorArtifacts)
- .createMock();
-
- upgradeCatalog210.addNewConfigurationsFromXml();
- expectLastCall().once();
-
- upgradeCatalog210.initializeClusterAndServiceWidgets();
- expectLastCall().once();
-
- upgradeCatalog210.addMissingConfigs();
- expectLastCall().once();
-
- upgradeCatalog210.updateAlertDefinitions();
- expectLastCall().once();
-
- upgradeCatalog210.removeStormRestApiServiceComponent();
- expectLastCall().once();
-
- upgradeCatalog210.updateKerberosDescriptorArtifacts();
- expectLastCall().once();
-
- replay(upgradeCatalog210);
-
- upgradeCatalog210.executeDMLUpdates();
-
- verify(upgradeCatalog210);
- }
-
- @Test
- public void testUpdateRangerHiveConfigs() throws Exception{
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(
- AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
-
- final Config mockRangerPlugin = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveEnv = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveServer = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedRangerPlugin = new HashMap<>();
- propertiesExpectedRangerPlugin.put("ranger-hive-plugin-enabled", "yes");
- final Map<String, String> propertiesExpectedHiveEnv = new HashMap<>();
- final Map<String, String> propertiesExpectedHiveServer2 = new HashMap<>();
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- expect(mockClusterExpected.getDesiredConfigByType("ranger-hive-plugin-properties")).andReturn(mockRangerPlugin).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnv).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hiveserver2-site")).andReturn(mockHiveServer).atLeastOnce();
- expect(mockRangerPlugin.getProperties()).andReturn(propertiesExpectedRangerPlugin).anyTimes();
- expect(mockHiveEnv.getProperties()).andReturn(propertiesExpectedHiveEnv).anyTimes();
- expect(mockHiveServer.getProperties()).andReturn(propertiesExpectedHiveServer2).anyTimes();
-
- ServiceConfigVersionResponse r = null;
- expect(mockClusterExpected.getConfig(anyObject(String.class), anyObject(String.class))).
- andReturn(mockHiveServer).anyTimes();
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveServer), "Updated hive-env during Ambari Upgrade from 2.0.0 to 2.1.0.")).
- andReturn(r).times(1);
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveServer), "Updated hiveserver2-site during Ambari Upgrade from 2.0.0 to 2.1.0.")).
- andReturn(r).times(1);
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveServer), "Updated ranger-hive-plugin-properties during Ambari Upgrade from 2.0.0 to 2.1.0.")).
- andReturn(r).times(1);
-
- easyMockSupport.replayAll();
- mockInjector.getInstance(UpgradeCatalog210.class).updateRangerHiveConfigs();
- easyMockSupport.verifyAll();
- }
-
- @Test
- public void testUpdateHiveConfigs() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
- final ServiceConfigVersionResponse mockServiceConfigVersionResponse = easyMockSupport.createNiceMock(ServiceConfigVersionResponse.class);
- final Config mockHiveEnv = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveServerSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveSite = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedHiveEnv = new HashMap<String, String>() {{
- put("hive_security_authorization", "none");
- }};
- final Map<String, String> propertiesExpectedHiveSite = new HashMap<String, String>() {{
- put("hive.server2.authentication", "pam");
- put("hive.server2.custom.authentication.class", "");
- }};
- final Map<String, String> propertiesExpectedHiveServerSite = new HashMap<String, String>() {{
- put("hive.security.authorization.manager", "");
- put("hive.security.authenticator.manager", "");
- }};
- final Map<String, Service> servicesExpected = new HashMap<>();
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- Capture<String> configTypeEnv = EasyMock.newCapture();
- Capture<String> configTypeSite = EasyMock.newCapture();
- Capture<String> configTypeServerSite = EasyMock.newCapture();
-
- expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnv).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hiveserver2-site")).andReturn(mockHiveServerSite).atLeastOnce();
- expect(mockHiveEnv.getProperties()).andReturn(propertiesExpectedHiveEnv).anyTimes();
- expect(mockHiveServerSite.getProperties()).andReturn(propertiesExpectedHiveServerSite).anyTimes();
- expect(mockClusterExpected.getConfig(capture(configTypeEnv), anyObject(String.class))).andReturn(mockHiveEnv).once();
- expect(mockClusterExpected.getConfig(capture(configTypeServerSite), anyObject(String.class))).andReturn(mockHiveServerSite).once();
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveEnv), "Updated hive-env during Ambari Upgrade from 2.0.0 to 2.1.0.")).andReturn(mockServiceConfigVersionResponse).once();
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveServerSite), "Updated hiveserver2-site during Ambari Upgrade from 2.0.0 to 2.1.0.")).andReturn(mockServiceConfigVersionResponse).once();
-
- expect(mockClusterExpected.getDesiredConfigByType("hive-site")).andReturn(mockHiveSite).atLeastOnce();
- expect(mockHiveSite.getProperties()).andReturn(propertiesExpectedHiveSite).anyTimes();
- expect(mockClusterExpected.getServices()).andReturn(servicesExpected).once();
- expect(mockClusterExpected.getConfig(capture(configTypeSite), anyObject(String.class))).andReturn(mockHiveSite).once();
- expect(mockClusterExpected.addDesiredConfig("ambari-upgrade", Collections.singleton(mockHiveSite), "Updated hive-site during Ambari Upgrade from 2.0.0 to 2.1.0.")).andReturn(mockServiceConfigVersionResponse).once();
-
- easyMockSupport.replayAll();
- mockInjector.getInstance(UpgradeCatalog210.class).updateHiveConfigs();
- easyMockSupport.verifyAll();
-
- assertEquals("hive-env", configTypeEnv.getValue());
- assertEquals("hive-site", configTypeSite.getValue());
- assertEquals("hiveserver2-site", configTypeServerSite.getValue());
- }
-
- @Test
- public void TestRangerSitePropertyConversion() throws Exception{
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final String clusterName = "c1";
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster cluster = easyMockSupport.createStrictMock(Cluster.class);
- final Config config = easyMockSupport.createNiceMock(Config.class);
- final Map<String,Cluster> clusters = new HashMap<String,Cluster>(){{
- put(clusterName, cluster);
- }};
- final Map<String,String> properties = new HashMap<String, String>() {{
- put("HTTPS_CLIENT_AUTH", "test123");
- put("HTTPS_KEYSTORE_FILE", "test123");
- put("HTTPS_KEYSTORE_PASS", "test123");
- put("HTTPS_KEY_ALIAS", "test123");
- put("HTTPS_SERVICE_PORT", "test123");
- put("HTTP_ENABLED", "test123");
- put("HTTP_SERVICE_PORT", "test123");
- }};
-
- final Map<String, String> expectedPropertyMap = new HashMap<String, String>() {{
- put("HTTPS_CLIENT_AUTH", "https.attrib.clientAuth");
- put("HTTPS_KEYSTORE_FILE", "https.attrib.keystoreFile");
- put("HTTPS_KEYSTORE_PASS", "https.attrib.keystorePass");
- put("HTTPS_KEY_ALIAS", "https.attrib.keyAlias");
- put("HTTP_SERVICE_PORT", "http.service.port");
- put("HTTPS_SERVICE_PORT", "https.service.port");
- put("HTTP_ENABLED", "http.enabled");
- }};
-
- final Map<String,String> convertedProperties = new HashMap<>();
- final Set<String> removedProperties = new HashSet<>();
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(Clusters.class).toInstance(mockClusters);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- UpgradeCatalog210 upgradeCatalog210 = new UpgradeCatalog210(mockInjector) {
-
- @Override
- protected void updateConfigurationPropertiesForCluster(Cluster cluster, String configType,
- Map<String, String> properties, boolean updateIfExists, boolean createNewConfigType) throws AmbariException {
- convertedProperties.putAll(properties);
- }
-
- @Override
- protected void removeConfigurationPropertiesFromCluster(Cluster cluster, String configType, Set<String> removePropertiesList)
- throws AmbariException {
- removedProperties.addAll(removePropertiesList);
- }
- };
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).atLeastOnce();
- expect(mockClusters.getClusters()).andReturn(clusters).atLeastOnce();
- expect(config.getProperties()).andReturn(properties).atLeastOnce();
- expect(cluster.getDesiredConfigByType("ranger-site")).andReturn(config).atLeastOnce();
-
- replay(mockAmbariManagementController, mockClusters, cluster, config);
-
- upgradeCatalog210.updateRangerSiteConfigs();
-
-
- for (Map.Entry<String,String> propertyEntry: expectedPropertyMap.entrySet()){
- String oldKey = propertyEntry.getKey();
- String newKey = propertyEntry.getValue();
- assertTrue(String.format("Old property %s doesn't migrated to new name %s", oldKey, newKey), convertedProperties.containsKey(newKey));
- assertTrue(String.format("Property value %s doesn't preserved after renaming: %s",properties.get(oldKey), convertedProperties.get(newKey)),
- convertedProperties.get(newKey).equals(properties.get(oldKey)));
- assertTrue(String.format("Old property %s doesn't removed after renaming", oldKey), removedProperties.contains(oldKey));
- }
- }
-
- @Test
- public void testUpdateHiveConfigsWithKerberos() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
- final Config mockHiveEnv = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveServerSite = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedHiveEnv = new HashMap<>();
- final Map<String, String> propertiesExpectedHiveSite = new HashMap<String, String>() {{
- put("hive.server2.authentication", "kerberos");
- }};
- final Map<String, String> propertiesExpectedHiveServerSite = new HashMap<>();
- final Map<String, Service> servicesExpected = new HashMap<String, Service>(){{
- put("KERBEROS", null);
- }};
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- }
- });
-
- final UpgradeCatalog210 upgradeCatalog210 = mockInjector.getInstance(UpgradeCatalog210.class);
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- Capture<Map<String,String>> configCreation = Capture.newInstance(CaptureType.ALL);
-
- expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnv).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hiveserver2-site")).andReturn(mockHiveServerSite).atLeastOnce();
- expect(mockHiveEnv.getProperties()).andReturn(propertiesExpectedHiveEnv).anyTimes();
- expect(mockHiveServerSite.getProperties()).andReturn(propertiesExpectedHiveServerSite).anyTimes();
-
- expect(mockClusterExpected.getDesiredConfigByType("hive-site")).andReturn(mockHiveSite).atLeastOnce();
- expect(mockHiveSite.getProperties()).andReturn(propertiesExpectedHiveSite).anyTimes();
- expect(mockClusterExpected.getServices()).andReturn(servicesExpected).atLeastOnce();
- expect(mockAmbariManagementController.createConfig((Cluster)anyObject(), anyObject(StackId.class),
- anyString(),
- capture(configCreation),
- anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(null).atLeastOnce();
-
- easyMockSupport.replayAll();
- upgradeCatalog210.updateHiveConfigs();
- easyMockSupport.verifyAll();
-
- Assert.assertEquals(2, configCreation.getValues().size());
-
- boolean hiveSecFound = false;
-
- for (Map<String, String> cfg: configCreation.getValues()){
- if (cfg.containsKey("hive_security_authorization")) {
- hiveSecFound = true;
- Assert.assertTrue("sqlstdauth".equalsIgnoreCase(cfg.get("hive_security_authorization")));
- break;
- }
- }
-
- Assert.assertTrue(hiveSecFound);
- }
-
- @Test
- public void testUpdateHiveConfigsWithRangerPlugin() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
- final Config mockHiveEnv = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockHiveServerSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockHivePluginProperies = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedHiveEnv = new HashMap<String, String>() {{
- put("hive_security_authorization", "none");
- }};
- final Map<String, String> propertiesExpectedHiveSite = new HashMap<>();
-
- final Map<String, String> propertiesExpectedPluginProperies = new HashMap<String, String>() {{
- put("ranger-hive-plugin-enabled", "yes");
- }};
- final Map<String, String> propertiesExpectedHiveServerSite = new HashMap<String, String>() {{
- put("hive.security.authorization.manager", "test");
- put("hive.security.authenticator.manager", "test");
- }};
- final Map<String, Service> servicesExpected = new HashMap<String, Service>() {{
- put("RANGER", null);
- }};
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- }
- });
-
- final UpgradeCatalog210 upgradeCatalog210 = mockInjector.getInstance(UpgradeCatalog210.class);
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- Capture<Map<String, String>> configCreation = Capture.newInstance(CaptureType.ALL);
-
- expect(mockClusterExpected.getDesiredConfigByType("hive-env")).andReturn(mockHiveEnv).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hiveserver2-site")).andReturn(mockHiveServerSite).atLeastOnce();
- expect(mockHiveEnv.getProperties()).andReturn(propertiesExpectedHiveEnv).anyTimes();
- expect(mockHiveServerSite.getProperties()).andReturn(propertiesExpectedHiveServerSite).anyTimes();
-
- expect(mockClusterExpected.getDesiredConfigByType("ranger-hive-plugin-properties")).andReturn(mockHivePluginProperies).once();
- expect(mockClusterExpected.getDesiredConfigByType("hive-site")).andReturn(mockHiveSite).atLeastOnce();
- expect(mockHiveSite.getProperties()).andReturn(propertiesExpectedHiveSite).anyTimes();
- expect(mockHivePluginProperies.getProperties()).andReturn(propertiesExpectedPluginProperies).anyTimes();
- expect(mockClusterExpected.getServices()).andReturn(servicesExpected).atLeastOnce();
- expect(mockAmbariManagementController.createConfig((Cluster) anyObject(), anyObject(StackId.class),
- anyString(),
- capture(configCreation),
- anyString(),
- EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(null).atLeastOnce();
-
- easyMockSupport.replayAll();
- upgradeCatalog210.updateHiveConfigs();
- easyMockSupport.verifyAll();
- Assert.assertEquals(1, configCreation.getValues().size());
-
- boolean result = false;
- for (Map<String, String> cfg : configCreation.getValues()) {
- if (cfg.containsKey("hive.security.authorization.manager")) {
- result = true;
- break;
- }
- }
- Assert.assertFalse(result);
- result = false;
- for (Map<String, String> cfg : configCreation.getValues()) {
- if (cfg.containsKey("hive.security.authenticator.manager")) {
- result = true;
- break;
- }
- }
- Assert.assertFalse(result);
- }
-
-
- @Test
- public void TestUpdateHiveEnvContent() {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
- String content = "# Start HIVE_AUX_JARS_PATH \n" +
- "if [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n" +
- " export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n" +
- "elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then \n" +
- " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog\n" +
- "fi\n" +
- "#End HIVE_AUX_JARS_PATH";
- String expectedContent = "# Start HIVE_AUX_JARS_PATH \n" +
- "if [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n" +
- " if [ -f \"${HIVE_AUX_JARS_PATH}\" ]; then \n" +
- " export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n" +
- " elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then\n" +
- " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar\n" +
- " fi\n" +
- "elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then\n" +
- " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar\n" +
- "fi\n" +
- "#End HIVE_AUX_JARS_PATH";
-
- String modifiedContent = mockInjector.getInstance(UpgradeCatalog210.class).updateHiveEnvContent(content);
- Assert.assertEquals(modifiedContent, expectedContent);
- }
-
- @Test
- public void testInitializeClusterAndServiceWidgets() throws Exception {
- final AmbariManagementController controller = createStrictMock(AmbariManagementController.class);
- final Clusters clusters = createStrictMock(Clusters.class);
- final Cluster cluster = createStrictMock(Cluster.class);
- final Service service = createStrictMock(Service.class);
- final Map<String, Cluster> clusterMap = Collections.singletonMap("c1", cluster);
- final Map<String, Service> services = Collections.singletonMap("HBASE", service);
-
-
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(AmbariManagementController.class).toInstance(controller);
- binder.bind(Clusters.class).toInstance(clusters);
- binder.bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- };
-
- expect(controller.getClusters()).andReturn(clusters).anyTimes();
- expect(clusters.getClusters()).andReturn(clusterMap).anyTimes();
- controller.initializeWidgetsAndLayouts(cluster, null);
- expectLastCall().once();
-
- expect(cluster.getServices()).andReturn(services).once();
- controller.initializeWidgetsAndLayouts(cluster, service);
- expectLastCall().once();
-
- replay(controller, clusters, cluster);
-
- Injector injector = Guice.createInjector(module);
- injector.getInstance(UpgradeCatalog210.class).initializeClusterAndServiceWidgets();
-
- verify(controller, clusters, cluster);
- }
-
- @Test
- public void testUpdateStormConfiguration() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(
- AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
-
- final Config mockClusterEnv = easyMockSupport.createNiceMock(Config.class);
- final Config mockStormSite = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedClusterEnv = new HashMap<>();
- propertiesExpectedClusterEnv.put("security_enabled", "true");
- final Map<String, String> propertiesExpectedStormSite = new HashMap<>();
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- expect(mockClusterExpected.getDesiredConfigByType("cluster-env")).andReturn(mockClusterEnv).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("storm-site")).andReturn(mockStormSite).atLeastOnce();
- expect(mockClusterEnv.getProperties()).andReturn(propertiesExpectedClusterEnv).anyTimes();
- expect(mockStormSite.getProperties()).andReturn(propertiesExpectedStormSite).anyTimes();
-
- easyMockSupport.replayAll();
- mockInjector.getInstance(UpgradeCatalog210.class).updateStormConfigs();
- easyMockSupport.verifyAll();
- }
-
- @Test
- public void testUpdateHBaseConfiguration() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
- final Host mockHost = easyMockSupport.createNiceMock(Host.class);
-
- final Config mockHBaseSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockHBaseEnv = easyMockSupport.createNiceMock(Config.class);
-
- final Map<String, String> propertiesExpectedHBaseSite = new HashMap<>();
- propertiesExpectedHBaseSite.put("hbase.region.server.rpc.scheduler.factory.class",
- "org.apache.phoenix.hbase.index.ipc.PhoenixIndexRpcSchedulerFactory");
- propertiesExpectedHBaseSite.put("hbase.security.authorization", "true");
-
- final Map<String, String> propertiesExpectedHBaseEnv = new HashMap<>();
- propertiesExpectedHBaseEnv.put("phoenix_sql_enabled", "false");
-
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- expect(mockClusterExpected.getDesiredConfigByType("hbase-site")).andReturn(mockHBaseSite).atLeastOnce();
- expect(mockClusterExpected.getDesiredConfigByType("hbase-env")).andReturn(mockHBaseEnv).atLeastOnce();
- expect(mockHBaseSite.getProperties()).andReturn(propertiesExpectedHBaseSite).anyTimes();
- expect(mockHBaseEnv.getProperties()).andReturn(propertiesExpectedHBaseEnv).anyTimes();
-
- Capture<String> configType = EasyMock.newCapture();
- Capture<String> configTag = EasyMock.newCapture();
- expect(mockClusterExpected.getConfig(capture(configType), capture(configTag))).
- andReturn(mockHBaseSite).atLeastOnce();
-
- easyMockSupport.replayAll();
- mockInjector.getInstance(UpgradeCatalog210.class).updateHBaseConfigs();
- easyMockSupport.verifyAll();
- }
-
- @Test
- public void testDeleteStormRestApiServiceComponent() throws Exception {
- initData();
-
- ClusterEntity clusterEntity = upgradeCatalogHelper.createCluster(injector,
- "c1", desiredStackEntity, desiredRepositoryVersion);
-
- OrmTestHelper helper = injector.getInstance(OrmTestHelper.class);
- RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(
- new StackId(desiredStackEntity.getStackName(), desiredStackEntity.getStackVersion()),
- desiredRepositoryVersion);
-
- ClusterServiceEntity clusterServiceEntity = upgradeCatalogHelper.createService(
- injector, clusterEntity, "STORM");
-
- HostEntity hostEntity = upgradeCatalogHelper.createHost(injector,
- clusterEntity, "h1");
-
- // Set current stack version
- ClusterDAO clusterDAO = injector.getInstance(ClusterDAO.class);
- ClusterStateDAO clusterStateDAO = injector.getInstance(ClusterStateDAO.class);
- ClusterStateEntity clusterStateEntity = new ClusterStateEntity();
- clusterStateEntity.setClusterId(clusterEntity.getClusterId());
- clusterStateEntity.setClusterEntity(clusterEntity);
- clusterStateEntity.setCurrentStack(desiredStackEntity);
- clusterStateDAO.create(clusterStateEntity);
- clusterEntity.setClusterStateEntity(clusterStateEntity);
- clusterDAO.merge(clusterEntity);
-
- ServiceComponentDesiredStateEntity componentDesiredStateEntity = new ServiceComponentDesiredStateEntity();
- componentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
- componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
- componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
- componentDesiredStateEntity.setComponentName("STORM_REST_API");
- componentDesiredStateEntity.setDesiredRepositoryVersion(repositoryVersion);
-
- ServiceComponentDesiredStateDAO componentDesiredStateDAO =
- injector.getInstance(ServiceComponentDesiredStateDAO.class);
-
- componentDesiredStateDAO.create(componentDesiredStateEntity);
-
- HostComponentDesiredStateDAO hostComponentDesiredStateDAO =
- injector.getInstance(HostComponentDesiredStateDAO.class);
-
- HostComponentDesiredStateEntity hostComponentDesiredStateEntity = new HostComponentDesiredStateEntity();
-
- hostComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
- hostComponentDesiredStateEntity.setComponentName("STORM_REST_API");
- hostComponentDesiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE);
- hostComponentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
- hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
- hostComponentDesiredStateEntity.setHostEntity(hostEntity);
-
- hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
-
- HostComponentDesiredStateEntity entity = hostComponentDesiredStateDAO.findAll().get(0);
-
- Assert.assertEquals(HostComponentAdminState.INSERVICE.name(), entity.getAdminState().name());
-
- // ensure the desired state exists
- Assert.assertNotNull(componentDesiredStateDAO.findByName(clusterEntity.getClusterId(), "STORM",
- "STORM_REST_API"));
-
- UpgradeCatalog210 upgradeCatalog210 = injector.getInstance(UpgradeCatalog210.class);
- upgradeCatalog210.removeStormRestApiServiceComponent();
-
- Assert.assertNull(componentDesiredStateDAO.findByName(clusterEntity.getClusterId(), "STORM",
- "STORM_REST_API"));
- tearDown();
- }
-
-
- @Test
- public void testUpdateHDFSConfiguration() throws Exception {
- EasyMockSupport easyMockSupport = new EasyMockSupport();
- final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class);
- final ConfigHelper mockConfigHelper = easyMockSupport.createMock(ConfigHelper.class);
-
- final Clusters mockClusters = easyMockSupport.createStrictMock(Clusters.class);
- final Cluster mockClusterExpected = easyMockSupport.createNiceMock(Cluster.class);
-
- final Config mockHdfsSite = easyMockSupport.createNiceMock(Config.class);
- final Config mockCoreSite = easyMockSupport.createStrictMock(Config.class);
-
- final Map<String, String> propertiesExpectedHdfs = new HashMap<>();
- final Map<String, String> propertiesExpectedCoreSite = new HashMap<>();
- propertiesExpectedHdfs.put("dfs.nameservices", "nncl1,nncl2");
- propertiesExpectedHdfs.put("dfs.ha.namenodes.nncl2", "nn1,nn2");
- propertiesExpectedCoreSite.put("fs.defaultFS", "hdfs://EXAMPLE.COM:8020");
- final Injector mockInjector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
- bind(ConfigHelper.class).toInstance(mockConfigHelper);
- bind(Clusters.class).toInstance(mockClusters);
-
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- expect(mockAmbariManagementController.getClusters()).andReturn(mockClusters).once();
- expect(mockClusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
- put("normal", mockClusterExpected);
- }}).once();
-
- // Expected operation
- expect(mockClusterExpected.getDesiredConfigByType("hadoop-env")).andReturn(null).once();
-
- // Expected operation
- expect(mockClusterExpected.getDesiredConfigByType("hdfs-site")).andReturn(mockHdfsSite).atLeastOnce();
- expect(mockClusterExpected.getHosts("HDFS", "NAMENODE")).andReturn( new HashSet<String>() {{
- add("host1");
- }}).atLeastOnce();
- expect(mockHdfsSite.getProperties()).andReturn(propertiesExpectedHdfs).anyTimes();
-
- expect(mockClusterExpected.getDesiredConfigByType("core-site")).andReturn(mockCoreSite).anyTimes();
- expect(mockCoreSite.getProperties()).andReturn(propertiesExpectedCoreSite).anyTimes();
-
- easyMockSupport.replayAll();
- mockInjector.getInstance(UpgradeCatalog210.class).updateHdfsConfigs();
- easyMockSupport.verifyAll();
- }
-
- /**
- * @param dbAccessor
- * @return
- */
- private AbstractUpgradeCatalog getUpgradeCatalog(final DBAccessor dbAccessor) {
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(EntityManager.class).toInstance(entityManager);
- binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- };
-
- Injector injector = Guice.createInjector(module);
- return injector.getInstance(UpgradeCatalog210.class);
- }
-
- @Test
- public void testGetSourceVersion() {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- UpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor);
- Assert.assertEquals("2.0.0", upgradeCatalog.getSourceVersion());
- }
-
- @Test
- public void testGetTargetVersion() throws Exception {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- UpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor);
-
- Assert.assertEquals("2.1.0", upgradeCatalog.getTargetVersion());
- }
-
- @Test
- public void testUpdateKerberosDescriptorArtifact_Simple() throws Exception {
- final KerberosDescriptorFactory kerberosDescriptorFactory = new KerberosDescriptorFactory();
-
- KerberosServiceDescriptor serviceDescriptor;
-
- URL systemResourceURL = ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_simple.json");
- assertNotNull(systemResourceURL);
-
- final KerberosDescriptor kerberosDescriptorOrig = kerberosDescriptorFactory.createInstance(new File(systemResourceURL.getFile()));
- assertNotNull(kerberosDescriptorOrig);
- assertNotNull(kerberosDescriptorOrig.getIdentity("hdfs"));
-
- serviceDescriptor = kerberosDescriptorOrig.getService("HDFS");
- assertNotNull(serviceDescriptor);
- assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNull(serviceDescriptor.getIdentity("hdfs"));
-
- serviceDescriptor = kerberosDescriptorOrig.getService("OOZIE");
- assertNotNull(serviceDescriptor);
- assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
-
- UpgradeCatalog210 upgradeMock = createMockBuilder(UpgradeCatalog210.class).createMock();
-
- Capture<Map<String, Object>> updatedData = EasyMock.newCapture();
-
- ArtifactEntity artifactEntity = createNiceMock(ArtifactEntity.class);
- expect(artifactEntity.getArtifactData())
- .andReturn(kerberosDescriptorOrig.toMap())
- .once();
-
- artifactEntity.setArtifactData(capture(updatedData));
- expectLastCall().once();
-
- replay(artifactEntity, upgradeMock);
- upgradeMock.updateKerberosDescriptorArtifact(createNiceMock(ArtifactDAO.class), artifactEntity);
- verify(artifactEntity, upgradeMock);
-
- KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updatedData.getValue());
- assertNotNull(kerberosDescriptorUpdated);
- assertNull(kerberosDescriptorUpdated.getIdentity("/hdfs"));
-
- serviceDescriptor = kerberosDescriptorUpdated.getService("HDFS");
- assertNotNull(serviceDescriptor);
- assertNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNotNull(serviceDescriptor.getIdentity("hdfs"));
-
- serviceDescriptor = kerberosDescriptorUpdated.getService("OOZIE");
- assertNotNull(serviceDescriptor);
- assertNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNotNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
- }
-
- @Test
- public void testUpdateKerberosDescriptorArtifact_NoHDFSService() throws Exception {
- final KerberosDescriptorFactory kerberosDescriptorFactory = new KerberosDescriptorFactory();
-
- KerberosServiceDescriptor serviceDescriptor;
-
- URL systemResourceURL = ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_no_hdfs.json");
- assertNotNull(systemResourceURL);
-
- final KerberosDescriptor kerberosDescriptorOrig = kerberosDescriptorFactory.createInstance(new File(systemResourceURL.getFile()));
- assertNotNull(kerberosDescriptorOrig);
- assertNotNull(kerberosDescriptorOrig.getIdentity("hdfs"));
-
- serviceDescriptor = kerberosDescriptorOrig.getService("HDFS");
- assertNull(serviceDescriptor);
-
- serviceDescriptor = kerberosDescriptorOrig.getService("OOZIE");
- assertNotNull(serviceDescriptor);
- assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
-
- UpgradeCatalog210 upgradeMock = createMockBuilder(UpgradeCatalog210.class).createMock();
-
- Capture<Map<String, Object>> updatedData = EasyMock.newCapture();
-
- ArtifactEntity artifactEntity = createNiceMock(ArtifactEntity.class);
- expect(artifactEntity.getArtifactData())
- .andReturn(kerberosDescriptorOrig.toMap())
- .once();
-
- artifactEntity.setArtifactData(capture(updatedData));
- expectLastCall().once();
-
- replay(artifactEntity, upgradeMock);
- upgradeMock.updateKerberosDescriptorArtifact(createNiceMock(ArtifactDAO.class), artifactEntity);
- verify(artifactEntity, upgradeMock);
-
- KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(updatedData.getValue());
- assertNotNull(kerberosDescriptorUpdated);
- assertNull(kerberosDescriptorUpdated.getIdentity("/hdfs"));
-
- serviceDescriptor = kerberosDescriptorUpdated.getService("HDFS");
- assertNotNull(serviceDescriptor);
- assertNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNotNull(serviceDescriptor.getIdentity("hdfs"));
-
- serviceDescriptor = kerberosDescriptorUpdated.getService("OOZIE");
- assertNotNull(serviceDescriptor);
- assertNull(serviceDescriptor.getIdentity("/hdfs"));
- assertNotNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
- }
-
- // *********** Inner Classes that represent sections of the DDL ***********
- // ************************************************************************
-
- /**
- * Verify that all of the host-related tables added a column for the host_id
- */
- class HostSectionDDL implements SectionDDL {
-
- HashMap<String, Capture<DBColumnInfo>> captures;
-
- public HostSectionDDL() {
- // Capture all tables that will have the host_id column added to it.
- captures = new HashMap<>();
-
- // Column Capture section
- // Hosts
- Capture<DBAccessor.DBColumnInfo> clusterHostMappingColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> configGroupHostMappingColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostConfigMappingColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostsColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostComponentStateColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostComponentDesiredStateColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostRoleCommandColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostStateColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> hostVersionColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> kerberosPrincipalHostColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> requestOperationLevelColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> serviceConfigHostsColumnCapture = EasyMock.newCapture();
-
- captures.put("ClusterHostMapping", clusterHostMappingColumnCapture);
- captures.put("configgrouphostmapping", configGroupHostMappingColumnCapture);
- captures.put("hostconfigmapping", hostConfigMappingColumnCapture);
- captures.put("hosts", hostsColumnCapture);
- captures.put("hostcomponentstate", hostComponentStateColumnCapture);
- captures.put("hostcomponentdesiredstate", hostComponentDesiredStateColumnCapture);
- captures.put("host_role_command", hostRoleCommandColumnCapture);
- captures.put("hoststate", hostStateColumnCapture);
- captures.put("host_version", hostVersionColumnCapture);
- captures.put("kerberos_principal_host", kerberosPrincipalHostColumnCapture);
- captures.put("requestoperationlevel", requestOperationLevelColumnCapture);
- captures.put("serviceconfighosts", serviceConfigHostsColumnCapture);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void execute(DBAccessor dbAccessor) throws SQLException {
- // Add columns and alter table section
- dbAccessor.addColumn(eq("ClusterHostMapping"), capture(captures.get("ClusterHostMapping")));
- dbAccessor.addColumn(eq("configgrouphostmapping"), capture(captures.get("configgrouphostmapping")));
- dbAccessor.addColumn(eq("hostconfigmapping"), capture(captures.get("hostconfigmapping")));
- dbAccessor.addColumn(eq("hosts"), capture(captures.get("hosts")));
- dbAccessor.addColumn(eq("hostcomponentstate"), capture(captures.get("hostcomponentstate")));
- dbAccessor.addColumn(eq("hostcomponentdesiredstate"), capture(captures.get("hostcomponentdesiredstate")));
- dbAccessor.addColumn(eq("host_role_command"), capture(captures.get("host_role_command")));
- dbAccessor.addColumn(eq("hoststate"), capture(captures.get("hoststate")));
- dbAccessor.addColumn(eq("host_version"), capture(captures.get("host_version")));
- dbAccessor.addColumn(eq("kerberos_principal_host"), capture(captures.get("kerberos_principal_host")));
- dbAccessor.addColumn(eq("requestoperationlevel"), capture(captures.get("requestoperationlevel")));
- dbAccessor.addColumn(eq("serviceconfighosts"), capture(captures.get("serviceconfighosts")));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void verify(DBAccessor dbAccessor) throws SQLException {
- // Verification section
- for (Capture<DBColumnInfo> columnCapture : captures.values()) {
- verifyContainsHostIdColumn(columnCapture);
- }
- }
-
- /**
- * Verify that the column capture of the table contains a host_id column of type Long.
- * This is needed for all of the host-related tables that are switching from the
- * host_name to the host_id.
- * @param columnCapture
- */
- private void verifyContainsHostIdColumn(Capture<DBAccessor.DBColumnInfo> columnCapture) {
- DBColumnInfo idColumn = columnCapture.getValue();
- Assert.assertEquals(Long.class, idColumn.getType());
- Assert.assertEquals("host_id", idColumn.getName());
- }
- }
-
- /**
- * Verify that the widget, widget_layout, and widget_layout_user_widget tables are created correctly.
- */
- class WidgetSectionDDL implements SectionDDL {
-
- HashMap<String, Capture<List<DBColumnInfo>>> captures;
- Capture<DBColumnInfo> userActiveLayoutsColumnCapture;
-
- public WidgetSectionDDL() {
- captures = new HashMap<>();
-
- Capture<List<DBColumnInfo>> userWidgetColumnsCapture = EasyMock.newCapture();
- Capture<List<DBColumnInfo>> widgetLayoutColumnsCapture = EasyMock.newCapture();
- Capture<List<DBColumnInfo>> widgetLayoutUserWidgetColumnsCapture = EasyMock.newCapture();
-
- captures.put("widget", userWidgetColumnsCapture);
- captures.put("widget_layout", widgetLayoutColumnsCapture);
- captures.put("widget_layout_user_widget", widgetLayoutUserWidgetColumnsCapture);
- userActiveLayoutsColumnCapture = EasyMock.newCapture();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void execute(DBAccessor dbAccessor) throws SQLException {
- Capture<List<DBColumnInfo>> userWidgetColumnsCapture = captures.get("widget");
- Capture<List<DBColumnInfo>> widgetLayoutColumnsCapture = captures.get("widget_layout");
- Capture<List<DBColumnInfo>> widgetLayoutUserWidgetColumnsCapture = captures.get("widget_layout_user_widget");
-
- // User Widget
- dbAccessor.createTable(eq("widget"),
- capture(userWidgetColumnsCapture), eq("id"));
-
- // Widget Layout
- dbAccessor.createTable(eq("widget_layout"),
- capture(widgetLayoutColumnsCapture), eq("id"));
-
- // Widget Layout User Widget
- dbAccessor.createTable(eq("widget_layout_user_widget"),
- capture(widgetLayoutUserWidgetColumnsCapture), eq("widget_layout_id"), eq("widget_id"));
-
- dbAccessor.addColumn(eq("users"), capture(userActiveLayoutsColumnCapture));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void verify(DBAccessor dbAccessor) throws SQLException {
- Capture<List<DBColumnInfo>> widgetColumnsCapture = captures.get("widget");
- Capture<List<DBColumnInfo>> widgetLayoutColumnsCapture = captures.get("widget_layout");
- Capture<List<DBColumnInfo>> widgetLayoutUserWidgetColumnsCapture = captures.get("widget_layout_user_widget");
-
- // Verify widget tables
- assertEquals(12, widgetColumnsCapture.getValue().size());
- assertEquals(7, widgetLayoutColumnsCapture.getValue().size());
- assertEquals(3, widgetLayoutUserWidgetColumnsCapture.getValue().size());
-
- DBColumnInfo idColumn = userActiveLayoutsColumnCapture.getValue();
- Assert.assertEquals(String.class, idColumn.getType());
- Assert.assertEquals("active_widget_layouts", idColumn.getName());
- }
- }
-
- /**
- * Verify view changes
- */
- class ViewSectionDDL implements SectionDDL {
-
- HashMap<String, Capture<DBColumnInfo>> captures;
-
- public ViewSectionDDL() {
- captures = new HashMap<>();
-
- Capture<DBAccessor.DBColumnInfo> viewInstanceColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> viewInstanceAlterNamesColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> viewParamColumnCapture = EasyMock.newCapture();
- Capture<DBAccessor.DBColumnInfo> viewBuildColumnCapture = EasyMock.newCapture();
-
- captures.put("viewinstance", viewInstanceColumnCapture);
- captures.put("viewinstance_alter_names", viewInstanceAlterNamesColumnCapture);
- captures.put("viewparameter", viewParamColumnCapture);
- captures.put("viewmain", viewBuildColumnCapture);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void execute(DBAccessor dbAccessor) throws SQLException {
- Capture<DBColumnInfo> viewInstanceColumnCapture = captures.get("viewinstance");
- Capture<DBColumnInfo> viewInstanceAlterNamesColumnCapture = captures.get("viewinstance_alter_names");
- Capture<DBColumnInfo> viewParamColumnCapture = captures.get("viewparameter");
- Capture<DBColumnInfo> viewBuildColumnCapture = captures.get("viewmain");
-
- dbAccessor.addColumn(eq("viewinstance"), capture(viewInstanceColumnCapture));
- dbAccessor.addColumn(eq("viewinstance"), capture(viewInstanceAlterNamesColumnCapture));
- dbAccessor.addColumn(eq("viewparameter"), capture(viewParamColumnCapture));
- dbAccessor.addColumn(eq("viewmain"), capture(viewBuildColumnCapture));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void verify(DBAccessor dbAccessor) throws SQLException {
- verifyViewInstance(captures.get("viewinstance"));
- verifyViewInstanceAlterNames(captures.get("viewinstance_alter_names"));
- verifyViewParameter(captures.get("viewparameter"));
- verifyViewBuild(captures.get("viewmain"));
- }
-
- private void verifyViewInstance(Capture<DBAccessor.DBColumnInfo> viewInstanceColumnCapture) {
- DBColumnInfo clusterIdColumn = viewInstanceColumnCapture.getValue();
- Assert.assertEquals(String.class, clusterIdColumn.getType());
- Assert.assertEquals("cluster_handle", clusterIdColumn.getName());
- }
-
- private void verifyViewInstanceAlterNames(Capture<DBAccessor.DBColumnInfo> viewInstanceAlterNamesColumnCapture) {
- DBColumnInfo clusterIdColumn = viewInstanceAlterNamesColumnCapture.getValue();
- Assert.assertEquals(Integer.class, clusterIdColumn.getType());
- Assert.assertEquals("alter_names", clusterIdColumn.getName());
- }
-
- private void verifyViewParameter(Capture<DBAccessor.DBColumnInfo> viewParamColumnCapture) {
- DBColumnInfo clusterConfigColumn = viewParamColumnCapture.getValue();
- Assert.assertEquals(String.class, clusterConfigColumn.getType());
- Assert.assertEquals("cluster_config", clusterConfigColumn.getName());
- }
-
- private void verifyViewBuild(Capture<DBAccessor.DBColumnInfo> viewBuildColumnCapture) {
- DBColumnInfo clusterConfigColumn = viewBuildColumnCapture.getValue();
- Assert.assertEquals(String.class, clusterConfigColumn.getType());
- Assert.assertEquals("build", clusterConfigColumn.getName());
- }
- }
-
- /**
- * Verify alert changes
- */
- class AlertSectionDDL implements SectionDDL {
- HashMap<String, Capture<String>> stringCaptures;
- HashMap<String, Capture<Class>> classCaptures;
-
-
- public AlertSectionDDL() {
- stringCaptures = new HashMap<>();
- classCaptures = new HashMap<>();
-
- Capture<String> textCaptureC = EasyMock.newCapture();
- Capture<String> textCaptureH = EasyMock.newCapture();
- Capture<Class> classFromC = EasyMock.newCapture();
- Capture<Class> classFromH = EasyMock.newCapture();
- Capture<Class> classToC = EasyMock.newCapture();
- Capture<Class> classToH = EasyMock.newCapture();
-
- stringCaptures.put("textCaptureC", textCaptureC);
- stringCaptures.put("textCaptureH", textCaptureH);
- classCaptures.put("classFromC", classFromC);
- classCaptures.put("classFromH", classFromH);
- classCaptures.put("classToC", classToC);
- classCaptures.put("classToH", classToH);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void execute(DBAccessor dbAccessor) throws SQLException {
- Capture<String> textCaptureC = stringCaptures.get("textCaptureC");
- Capture<String> textCaptureH = stringCaptures.get("textCaptureH");
- Capture<Class> classFromC = classCaptures.get("classFromC");
- Capture<Class> classFromH = classCaptures.get("classFromH");
- Capture<Class> classToC = classCaptures.get("classToC");
- Capture<Class> classToH = classCaptures.get("classToH");
-
- dbAccessor.changeColumnType(eq("alert_current"), capture(textCaptureC), capture(classFromC), capture(classToC));
- dbAccessor.changeColumnType(eq("alert_history"), capture(textCaptureH), capture(classFromH), capture(classToH));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void verify(DBAccessor dbAccessor) throws SQLException {
- Capture<String> textCaptureC = stringCaptures.get("textCaptureC");
- Capture<String> textCaptureH = stringCaptures.get("textCaptureH");
- Capture<Class> classFromC = classCaptures.get("classFromC");
- Capture<Class> classFromH = classCaptures.get("classFromH");
- Capture<Class> classToC = classCaptures.get("classToC");
- Capture<Class> classToH = classCaptures.get("classToH");
-
- Assert.assertEquals("latest_text", textCaptureC.getValue());
- Assert.assertEquals(String.class, classFromC.getValue());
- Assert.assertEquals(char[].class, classToC.getValue());
-
- Assert.assertEquals("alert_text", textCaptureH.getValue());
- Assert.assertEquals(String.class, classFromH.getValue());
- Assert.assertEquals(char[].class, classToH.getValue());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/af1bf85c/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog211Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog211Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog211Test.java
deleted file mode 100644
index 60efead..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog211Test.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * 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.upgrade;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.newCapture;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import javax.persistence.EntityManager;
-
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.configuration.Configuration.DatabaseType;
-import org.apache.ambari.server.controller.AmbariManagementController;
-import org.apache.ambari.server.controller.ConfigurationRequest;
-import org.apache.ambari.server.orm.DBAccessor;
-import org.apache.ambari.server.orm.GuiceJpaInitializer;
-import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.dao.StackDAO;
-import org.apache.ambari.server.state.Cluster;
-import org.apache.ambari.server.state.Clusters;
-import org.apache.ambari.server.state.Config;
-import org.apache.ambari.server.state.StackId;
-import org.apache.ambari.server.state.stack.OsFamily;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
-import org.easymock.EasyMockSupport;
-import org.junit.Assert;
-import org.junit.Test;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Binder;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.Provider;
-import com.google.inject.persist.PersistService;
-
-
-/**
- * {@link UpgradeCatalog211} unit tests.
- */
-public class UpgradeCatalog211Test extends EasyMockSupport {
-
- @Test
- public void testExecuteDDLUpdates() throws Exception {
- Injector injector = initInjector();
-
- try {
- Provider<EntityManager> entityManagerProvider = initEntityManagerProvider();
-
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- final OsFamily osFamily = createNiceMock(OsFamily.class);
- Configuration configuration = createNiceMock(Configuration.class);
- Connection connection = createNiceMock(Connection.class);
- Statement statement = createNiceMock(Statement.class);
- ResultSet resultSet = createNiceMock(ResultSet.class);
- expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
- expect(configuration.getDatabaseType()).andReturn(DatabaseType.DERBY).anyTimes();
- dbAccessor.getConnection();
- expectLastCall().andReturn(connection).anyTimes();
- connection.createStatement();
- expectLastCall().andReturn(statement).anyTimes();
- statement.executeQuery("SELECT COUNT(*) from ambari_sequences where sequence_name='hostcomponentstate_id_seq'");
- expectLastCall().andReturn(resultSet).atLeastOnce();
-
- ResultSet rs1 = createNiceMock(ResultSet.class);
- expect(rs1.next()).andReturn(Boolean.TRUE).once();
-
- statement.executeQuery(anyObject(String.class));
- expectLastCall().andReturn(rs1).anyTimes();
-
- Capture<String> queryCapture = EasyMock.newCapture();
- dbAccessor.executeQuery(capture(queryCapture));
- expectLastCall().once();
-
- dbAccessor.setColumnNullable("viewinstanceproperty", "value", true);
- expectLastCall().once();
- dbAccessor.setColumnNullable("viewinstancedata", "value", true);
- expectLastCall().once();
-
- // Create DDL sections with their own capture groups
- // Example: AlertSectionDDL alertSectionDDL = new AlertSectionDDL();
-
- // Execute any DDL schema changes
- // Example: alertSectionDDL.execute(dbAccessor);
-
- // Replay sections
- replayAll();
-
- AbstractUpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor, osFamily, entityManagerProvider.get());
- Class<?> c = AbstractUpgradeCatalog.class;
- Field f = c.getDeclaredField("configuration");
- f.setAccessible(true);
- f.set(upgradeCatalog, configuration);
-
- f = UpgradeCatalog211.class.getDeclaredField("m_hcsId");
- f.setAccessible(true);
- f.set(upgradeCatalog, new AtomicLong(1001));
-
- upgradeCatalog.executeDDLUpdates();
- verifyAll();
-
- Assert.assertTrue(queryCapture.hasCaptured());
- Assert.assertTrue(queryCapture.getValue().contains("1001"));
-
- // Verify sections
- // Example: alertSectionDDL.verify(dbAccessor);
- } finally {
- destroyInjector(injector);
- }
- }
-
- @Test
- public void testExecutePreDMLUpdates() throws Exception {
-
- final UpgradeCatalog211 upgradeCatalog211 = createMockBuilder(UpgradeCatalog211.class)
- // Add mocked methods. Example: .addMockedMethod(cleanupStackUpdates)
- .createMock();
-
- final Injector injector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(UpgradeCatalog211.class).toInstance(upgradeCatalog211);
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- }
- });
-
- setInjector(upgradeCatalog211, injector);
-
- replayAll();
-
- injector.getInstance(UpgradeCatalog211.class).executePreDMLUpdates();
-
- verifyAll();
- }
-
- @Test
- public void testExecuteDMLUpdates() throws Exception {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- final OsFamily osFamily = createNiceMock(OsFamily.class);
-
- final Cluster cluster = createMock(Cluster.class);
-
- final Clusters clusters = createMock(Clusters.class);
- expect(clusters.getClusters())
- .andReturn(Collections.singletonMap("c1", cluster));
-
- final AmbariManagementController controller = createNiceMock(AmbariManagementController.class);
- expect(controller.getClusters())
- .andReturn(clusters)
- .once();
-
- final Injector injector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(controller);
- bind(DBAccessor.class).toInstance(dbAccessor);
- bind(OsFamily.class).toInstance(osFamily);
- }
- });
-
- Method addNewConfigurationsFromXml =
- AbstractUpgradeCatalog.class.getDeclaredMethod("addNewConfigurationsFromXml");
-
- Method updateKerberosConfigurations =
- UpgradeCatalog211.class.getDeclaredMethod("updateKerberosConfigurations", Cluster.class);
-
- UpgradeCatalog211 upgradeCatalog211 = createMockBuilder(UpgradeCatalog211.class)
- .addMockedMethod(addNewConfigurationsFromXml)
- .addMockedMethod(updateKerberosConfigurations)
- .createMock();
-
- setInjector(upgradeCatalog211, injector);
-
- upgradeCatalog211.addNewConfigurationsFromXml();
- expectLastCall().once();
-
- upgradeCatalog211.updateKerberosConfigurations(anyObject(Cluster.class));
- expectLastCall().once();
-
- replayAll();
-
- upgradeCatalog211.executeDMLUpdates();
-
- verifyAll();
- }
-
- @Test
- public void testUpdateKerberosConfiguration() throws Exception {
- final AmbariManagementController controller = createNiceMock(AmbariManagementController.class);
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- final OsFamily osFamily = createNiceMock(OsFamily.class);
-
- final Map<String, String> propertiesKerberosEnv = new HashMap<String, String>() {
- {
- put("create_attributes_template", "create_attributes_template content");
- put("realm", "EXAMPLE.COM");
- put("container_dn", "");
- put("ldap_url", "");
- put("encryption_types", "aes des3-cbc-sha1 rc4 des-cbc-md5");
- put("kdc_host", "c6407.ambari.apache.org");
- put("admin_server_host", "c6407.ambari.apache.org");
- put("kdc_type", "mit-kdc");
- }
- };
-
- final Config configKerberosEnv = createNiceMock(Config.class);
- expect(configKerberosEnv.getProperties()).andReturn(propertiesKerberosEnv).anyTimes();
- expect(configKerberosEnv.getTag()).andReturn("tag1").anyTimes();
-
- final Cluster cluster = createNiceMock(Cluster.class);
- expect(cluster.getDesiredConfigByType("kerberos-env")).andReturn(configKerberosEnv).once();
-
- final Injector injector = Guice.createInjector(new AbstractModule() {
- @Override
- protected void configure() {
- bind(AmbariManagementController.class).toInstance(controller);
- bind(DBAccessor.class).toInstance(dbAccessor);
- bind(OsFamily.class).toInstance(osFamily);
- }
- });
-
- /* *********************************************************
- * Expects for updateConfigurationPropertiesForCluster
- * **** */
- expect(cluster.getConfigsByType("kerberos-env"))
- .andReturn(Collections.singletonMap("tag1", configKerberosEnv))
- .once();
-
- expect(cluster.getDesiredConfigByType("kerberos-env"))
- .andReturn(configKerberosEnv)
- .once();
-
- Capture<ConfigurationRequest> captureCR = EasyMock.newCapture();
- Capture<Cluster> clusterCapture = newCapture();
- Capture<String> typeCapture = newCapture();
- Capture<Map<String, String>> propertiesCapture = newCapture();
- Capture<String> tagCapture = newCapture();
- Capture<Map<String, Map<String, String>>> attributesCapture = newCapture();
-
-
- expect(controller.createConfig(capture(clusterCapture), anyObject(StackId.class),capture(typeCapture),
- capture(propertiesCapture), capture(tagCapture), capture(attributesCapture) ))
- .andReturn(createNiceMock(Config.class))
- .once();
-
- /* ****
- * Expects for updateConfigurationPropertiesForCluster (end)
- * ********************************************************* */
-
- replayAll();
-
- injector.getInstance(UpgradeCatalog211.class).updateKerberosConfigurations(cluster);
-
- verifyAll();
-
- Map<String, String> capturedCRProperties = propertiesCapture.getValue();
- Assert.assertNotNull(capturedCRProperties);
- Assert.assertFalse(capturedCRProperties.containsKey("create_attributes_template"));
- Assert.assertTrue(capturedCRProperties.containsKey("ad_create_attributes_template"));
-
- for (String property : propertiesKerberosEnv.keySet()) {
- if ("create_attributes_template".equals(property)) {
- Assert.assertEquals("create_attributes_template/ad_create_attributes_template", propertiesKerberosEnv.get(property), capturedCRProperties.get("ad_create_attributes_template"));
- } else {
- Assert.assertEquals(property, propertiesKerberosEnv.get(property), capturedCRProperties.get(property));
- }
- }
- }
-
- @Test
- public void testGetSourceVersion() {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- final OsFamily osFamily = createNiceMock(OsFamily.class);
- Provider<EntityManager> entityManagerProvider = initEntityManagerProvider();
-
- replayAll();
-
- UpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor, osFamily, entityManagerProvider.get());
-
- Assert.assertEquals("2.1.0", upgradeCatalog.getSourceVersion());
-
- verifyAll();
- }
-
- @Test
- public void testGetTargetVersion() throws Exception {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
- final OsFamily osFamily = createNiceMock(OsFamily.class);
- Provider<EntityManager> entityManagerProvider = initEntityManagerProvider();
-
- replayAll();
-
- UpgradeCatalog upgradeCatalog = getUpgradeCatalog(dbAccessor, osFamily, entityManagerProvider.get());
-
- Assert.assertEquals("2.1.1", upgradeCatalog.getTargetVersion());
-
- verifyAll();
- }
-
- private Provider<EntityManager> initEntityManagerProvider() {
- Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
-
- EntityManager entityManager = createNiceMock(EntityManager.class);
- expect(entityManagerProvider.get())
- .andReturn(entityManager)
- .anyTimes();
-
- return entityManagerProvider;
- }
-
- private Injector initInjector() {
- Injector injector;
-
- injector = Guice.createInjector(new InMemoryDefaultTestModule());
- injector.getInstance(GuiceJpaInitializer.class);
-
- // inject AmbariMetaInfo to ensure that stacks get populated in the DB
- injector.getInstance(AmbariMetaInfo.class);
-
- // load the stack entity
- StackDAO stackDAO = injector.getInstance(StackDAO.class);
- stackDAO.find("HDP", "2.2.0");
-
- return injector;
- }
-
- private void destroyInjector(Injector injector) {
- injector.getInstance(PersistService.class).stop();
- }
-
- private AbstractUpgradeCatalog getUpgradeCatalog(final DBAccessor dbAccessor, final OsFamily osFamily, final EntityManager entityManager) {
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(OsFamily.class).toInstance(osFamily);
- binder.bind(EntityManager.class).toInstance(entityManager);
- }
- };
-
- Injector injector = Guice.createInjector(module);
- return injector.getInstance(UpgradeCatalog211.class);
- }
-
- private void setInjector(UpgradeCatalog211 upgradeCatalog211, Injector injector) throws NoSuchFieldException, IllegalAccessException {
- Field fieldInjector = AbstractUpgradeCatalog.class.getDeclaredField("injector");
- if (fieldInjector != null) {
- fieldInjector.set(upgradeCatalog211, injector);
- }
- }
-
- // *********** Inner Classes that represent sections of the DDL ***********
- // ************************************************************************
-
- /*
- * Example *SectionDDL class
- */
- /*
- class AlertSectionDDL implements SectionDDL {
- HashMap<String, Capture<String>> stringCaptures;
- HashMap<String, Capture<Class>> classCaptures;
-
-
- public AlertSectionDDL() {
- stringCaptures = new HashMap<String, Capture<String>>();
- classCaptures = new HashMap<String, Capture<Class>>();
-
- Capture<String> textCaptureC = EasyMock.newCapture();
- Capture<String> textCaptureH = EasyMock.newCapture();
- Capture<Class> classFromC = EasyMock.newCapture();
- Capture<Class> classFromH = EasyMock.newCapture();
- Capture<Class> classToC = EasyMock.newCapture();
- Capture<Class> classToH = EasyMock.newCapture();
-
- stringCaptures.put("textCaptureC", textCaptureC);
- stringCaptures.put("textCaptureH", textCaptureH);
- classCaptures.put("classFromC", classFromC);
- classCaptures.put("classFromH", classFromH);
- classCaptures.put("classToC", classToC);
- classCaptures.put("classToH", classToH);
- }
-
- @Override
- public void execute(DBAccessor dbAccessor) throws SQLException {
- Capture<String> textCaptureC = stringCaptures.get("textCaptureC");
- Capture<String> textCaptureH = stringCaptures.get("textCaptureH");
- Capture<Class> classFromC = classCaptures.get("classFromC");
- Capture<Class> classFromH = classCaptures.get("classFromH");
- Capture<Class> classToC = classCaptures.get("classToC");
- Capture<Class> classToH = classCaptures.get("classToH");
-
- dbAccessor.changeColumnType(eq("alert_current"), capture(textCaptureC), capture(classFromC), capture(classToC));
- dbAccessor.changeColumnType(eq("alert_history"), capture(textCaptureH), capture(classFromH), capture(classToH));
- }
-
- @Override
- public void verify(DBAccessor dbAccessor) throws SQLException {
- Capture<String> textCaptureC = stringCaptures.get("textCaptureC");
- Capture<String> textCaptureH = stringCaptures.get("textCaptureH");
- Capture<Class> classFromC = classCaptures.get("classFromC");
- Capture<Class> classFromH = classCaptures.get("classFromH");
- Capture<Class> classToC = classCaptures.get("classToC");
- Capture<Class> classToH = classCaptures.get("classToH");
-
- Assert.assertEquals("latest_text", textCaptureC.getValue());
- Assert.assertEquals(String.class, classFromC.getValue());
- Assert.assertEquals(char[].class, classToC.getValue());
-
- Assert.assertEquals("alert_text", textCaptureH.getValue());
- Assert.assertEquals(String.class, classFromH.getValue());
- Assert.assertEquals(char[].class, classToH.getValue());
- }
- }
- */
-}