Repository: ambari Updated Branches: refs/heads/branch-2.1 792b81094 -> bad8603c8
AMBARI-13458. Expose in the API whether downgrade is supported or not (dgrinenko via dlysnichenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bad8603c Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bad8603c Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bad8603c Branch: refs/heads/branch-2.1 Commit: bad8603c8ad543eb0688f73bd3a6fcc159963efa Parents: 792b810 Author: Lisnichenko Dmitro <[email protected]> Authored: Tue Oct 20 10:38:30 2015 +0300 Committer: Lisnichenko Dmitro <[email protected]> Committed: Tue Oct 20 10:38:30 2015 +0300 ---------------------------------------------------------------------- .../internal/UpgradeResourceProvider.java | 4 ++ .../server/orm/entities/UpgradeEntity.java | 15 +++++- .../ambari/server/state/stack/UpgradePack.java | 18 +++++++ .../server/upgrade/UpgradeCatalog213.java | 28 ++++++++-- .../main/resources/Ambari-DDL-MySQL-CREATE.sql | 1 + .../main/resources/Ambari-DDL-Oracle-CREATE.sql | 1 + .../resources/Ambari-DDL-Postgres-CREATE.sql | 1 + .../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 1 + .../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 1 + .../resources/Ambari-DDL-SQLServer-CREATE.sql | 1 + .../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml | 1 + .../ambari/server/orm/dao/UpgradeDAOTest.java | 4 ++ .../server/upgrade/UpgradeCatalog213Test.java | 55 +++++++++++++++++++- 13 files changed, 126 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java index 27e3377..153fc9c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java @@ -126,6 +126,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider protected static final String UPGRADE_FROM_VERSION = "Upgrade/from_version"; protected static final String UPGRADE_TO_VERSION = "Upgrade/to_version"; protected static final String UPGRADE_DIRECTION = "Upgrade/direction"; + protected static final String UPGRADE_DOWNGRADE_ALLOWED = "Upgrade/downgrade_allowed"; protected static final String UPGRADE_REQUEST_STATUS = "Upgrade/request_status"; protected static final String UPGRADE_ABORT_REASON = "Upgrade/abort_reason"; protected static final String UPGRADE_SKIP_PREREQUISITE_CHECKS = "Upgrade/skip_prerequisite_checks"; @@ -240,6 +241,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider PROPERTY_IDS.add(UPGRADE_FROM_VERSION); PROPERTY_IDS.add(UPGRADE_TO_VERSION); PROPERTY_IDS.add(UPGRADE_DIRECTION); + PROPERTY_IDS.add(UPGRADE_DOWNGRADE_ALLOWED); PROPERTY_IDS.add(UPGRADE_SKIP_FAILURES); PROPERTY_IDS.add(UPGRADE_SKIP_SC_FAILURES); PROPERTY_IDS.add(UPGRADE_SKIP_MANUAL_VERIFICATION); @@ -464,6 +466,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider setResourceProperty(resource, UPGRADE_FROM_VERSION, entity.getFromVersion(), requestedIds); setResourceProperty(resource, UPGRADE_TO_VERSION, entity.getToVersion(), requestedIds); setResourceProperty(resource, UPGRADE_DIRECTION, entity.getDirection(), requestedIds); + setResourceProperty(resource, UPGRADE_DOWNGRADE_ALLOWED, entity.isDowngradeAllowed(), requestedIds); return resource; } @@ -805,6 +808,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider entity.setDirection(direction); entity.setUpgradePackage(pack.getName()); entity.setUpgradeType(pack.getType()); + entity.setDowngradeAllowed(pack.isDowngradeAllowed()); req.getRequestStatusResponse(); http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java index ad9073a..297fc8d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/UpgradeEntity.java @@ -84,6 +84,9 @@ public class UpgradeEntity { @Enumerated(value = EnumType.STRING) private UpgradeType upgradeType; + @Column(name="downgrade_allowed", nullable = false) + private Integer downgrade_allowed = 1; + @OneToMany(mappedBy = "upgradeEntity", cascade = { CascadeType.ALL }) private List<UpgradeGroupEntity> upgradeGroupEntities; @@ -190,13 +193,23 @@ public class UpgradeEntity { } /** - * @return the upgrade type, such as rolling or non_rolling + * @return the upgrade type, such as rolling oNr non_rolling */ public UpgradeType getUpgradeType() { return upgradeType; } /** + * @return possibility to process downgrade + */ + public Boolean isDowngradeAllowed() { return downgrade_allowed != 0; } + + /** + * @param canDowngrade {@code true} to allow downgrade, {@code false} to disallow downgrade + */ + public void setDowngradeAllowed(boolean canDowngrade){ this.downgrade_allowed = (!canDowngrade ? 0 : 1); } + + /** * @param upgradeType the upgrade type to set */ public void setUpgradeType(UpgradeType upgradeType) { http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java index 5a8031b..d72756d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java @@ -89,6 +89,13 @@ public class UpgradePack { private boolean skipFailures = false; /** + * {@code true} to allow downgrade, {@code false} to disable downgrade. + * Tag is optional and can be {@code null}, use {@code isDowngradeAllowed} getter instead. + */ + @XmlElement(name = "downgrade-allowed", required = false) + private Boolean downgradeAllowed = null; + + /** * {@code true} to automatically skip service check failures. The default is * {@code false}. */ @@ -193,6 +200,17 @@ public class UpgradePack { return checked; } + /** + * @return {@code true} if upgrade pack supports downgrade or {@code false} if not. + * Default {@code true} + */ + public boolean isDowngradeAllowed(){ + if (downgradeAllowed != null) { + return downgradeAllowed; // if tag is present, just return exact value + } + return true; + } + public boolean canBeApplied(String targetVersion){ // check that upgrade pack can be applied to selected stack // converting 2.2.*.* -> 2\.2(\.\d+)?(\.\d+)?(-\d+)? http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java index 0a5a66b..94d3319 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog213.java @@ -29,14 +29,17 @@ import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo; import org.apache.ambari.server.orm.DBAccessor; +import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo; import org.apache.ambari.server.orm.dao.AlertDefinitionDAO; import org.apache.ambari.server.orm.dao.ClusterDAO; import org.apache.ambari.server.orm.dao.ClusterVersionDAO; import org.apache.ambari.server.orm.dao.DaoUtils; +import org.apache.ambari.server.orm.dao.UpgradeDAO; import org.apache.ambari.server.orm.dao.HostVersionDAO; import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; import org.apache.ambari.server.orm.dao.StackDAO; import org.apache.ambari.server.orm.entities.AlertDefinitionEntity; +import org.apache.ambari.server.orm.entities.UpgradeEntity; import org.apache.ambari.server.orm.entities.ClusterEntity; import org.apache.ambari.server.orm.entities.ClusterVersionEntity; import org.apache.ambari.server.orm.entities.HostEntity; @@ -77,6 +80,7 @@ import java.util.UUID; */ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { + private static final String UPGRADE_TABLE = "upgrade"; private static final String STORM_SITE = "storm-site"; private static final String HDFS_SITE_CONFIG = "hdfs-site"; private static final String KAFKA_BROKER = "kafka-broker"; @@ -94,10 +98,9 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { " ulimit -l {{datanode_max_locked_memory}}\n" + "fi\n" + "{% endif %};\n"; - + private static final String DOWNGRADE_ALLOWED_COLUMN = "downgrade_allowed"; public static final String UPGRADE_PACKAGE_COL = "upgrade_package"; public static final String UPGRADE_TYPE_COL = "upgrade_type"; - public static final String UPGRADE_TABLE = "upgrade"; public static final String REPO_VERSION_TABLE = "repo_version"; private static final String KERBEROS_DESCRIPTOR_TABLE = "kerberos_descriptor"; @@ -109,7 +112,6 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { */ private static final Logger LOG = LoggerFactory.getLogger(UpgradeCatalog213.class); - @Inject DaoUtils daoUtils; @@ -157,9 +159,14 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { */ @Override protected void executeDDLUpdates() throws AmbariException, SQLException { + executeUpgradeDDLUpdates(); addKerberosDescriptorTable(); } + protected void executeUpgradeDDLUpdates() throws AmbariException, SQLException { + dbAccessor.addColumn(UPGRADE_TABLE, new DBColumnInfo(DOWNGRADE_ALLOWED_COLUMN, Short.class, 1, null, true)); + } + private void addKerberosDescriptorTable() throws SQLException { List<DBAccessor.DBColumnInfo> columns = new ArrayList<DBAccessor.DBColumnInfo>(); @@ -175,6 +182,21 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog { */ @Override protected void executePreDMLUpdates() throws AmbariException, SQLException { + populateDowngradeAllowed(); + } + + protected void populateDowngradeAllowed() throws AmbariException, SQLException { + UpgradeDAO upgradeDAO = injector.getInstance(UpgradeDAO.class); + List<UpgradeEntity> upgrades = upgradeDAO.findAll(); + for (UpgradeEntity upgrade: upgrades){ + if (upgrade.isDowngradeAllowed() == null) { + upgrade.setDowngradeAllowed(true); + upgradeDAO.merge(upgrade); + LOG.info(String.format("Update upgrade id %s, upgrade pack %s from version %s to %s", + upgrade.getId(), upgrade.getUpgradePackage(), upgrade.getFromVersion(), upgrade.getToVersion())); + } + } + dbAccessor.setColumnNullable(UPGRADE_TABLE, DOWNGRADE_ALLOWED_COLUMN, false); } @Override http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql index bb0c724..94a5cd9 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -891,6 +891,7 @@ CREATE TABLE upgrade ( direction VARCHAR(255) DEFAULT 'UPGRADE' NOT NULL, upgrade_package VARCHAR(255) NOT NULL, upgrade_type VARCHAR(32) NOT NULL, + downgrade_allowed TINYINT(1) NOT NULL DEFAULT 1, PRIMARY KEY (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql index c884d07..08b4387 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -880,6 +880,7 @@ CREATE TABLE upgrade ( direction VARCHAR2(255) DEFAULT 'UPGRADE' NOT NULL, upgrade_package VARCHAR2(255) NOT NULL, upgrade_type VARCHAR2(32) NOT NULL, + downgrade_allowed NUMBER(1) DEFAULT 1 NOT NULL, PRIMARY KEY (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql index 7f8b981..e60cb3c 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -882,6 +882,7 @@ CREATE TABLE upgrade ( direction VARCHAR(255) DEFAULT 'UPGRADE' NOT NULL, upgrade_package VARCHAR(255) NOT NULL, upgrade_type VARCHAR(32) NOT NULL, + downgrade_allowed SMALLINT DEFAULT 1 NOT NULL, PRIMARY KEY (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql index 93a5dc8..ada60a6 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql @@ -974,6 +974,7 @@ CREATE TABLE ambari.upgrade ( direction VARCHAR(255) DEFAULT 'UPGRADE' NOT NULL, upgrade_package VARCHAR(255) NOT NULL, upgrade_type VARCHAR(32) NOT NULL, + downgrade_allowed SMALLINT DEFAULT 1 NOT NULL, PRIMARY KEY (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES ambari.clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES ambari.request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql index 621a524..07b3ff7 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -879,6 +879,7 @@ CREATE TABLE upgrade ( from_version VARCHAR(255) DEFAULT '' NOT NULL, to_version VARCHAR(255) DEFAULT '' NOT NULL, direction VARCHAR(255) DEFAULT 'UPGRADE' NOT NULL, + downgrade_allowed BIT NOT NULL DEFAULT 1, PRIMARY KEY (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql index 72d2d25..a7daad0 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -997,6 +997,7 @@ CREATE TABLE upgrade ( direction VARCHAR(255) DEFAULT 'UPGRADE' NOT NULL, upgrade_package VARCHAR(255) NOT NULL, upgrade_type VARCHAR(32) NOT NULL, + downgrade_allowed BIT NOT NULL DEFAULT 1, PRIMARY KEY CLUSTERED (upgrade_id), FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id), FOREIGN KEY (request_id) REFERENCES request(request_id) http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml index 1da05c2..3778655 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml @@ -21,6 +21,7 @@ <target>2.3.*.*</target> <target-stack>HDP-2.3</target-stack> <type>NON_ROLLING</type> + <downgrade-allowed>false</downgrade-allowed> <upgrade-path> <intermediate-stack version="2.2"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java index f6d1acf..f8f7973 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java @@ -78,6 +78,7 @@ public class UpgradeDAOTest { entity.setToVersion(""); entity.setUpgradeType(UpgradeType.ROLLING); entity.setUpgradePackage("test-upgrade"); + entity.setDowngradeAllowed(true); UpgradeGroupEntity group = new UpgradeGroupEntity(); group.setName("group_name"); @@ -148,6 +149,7 @@ public class UpgradeDAOTest { entity1.setToVersion("2.3.0.0-4567"); entity1.setUpgradeType(UpgradeType.ROLLING); entity1.setUpgradePackage("test-upgrade"); + entity1.setDowngradeAllowed(true); dao.create(entity1); UpgradeEntity entity2 = new UpgradeEntity(); entity2.setId(22L); @@ -158,6 +160,7 @@ public class UpgradeDAOTest { entity2.setToVersion("2.2.0.0-1234"); entity2.setUpgradeType(UpgradeType.ROLLING); entity2.setUpgradePackage("test-upgrade"); + entity2.setDowngradeAllowed(true); dao.create(entity2); UpgradeEntity entity3 = new UpgradeEntity(); entity3.setId(33L); @@ -168,6 +171,7 @@ public class UpgradeDAOTest { entity3.setToVersion("2.3.1.1-4567"); entity3.setUpgradeType(UpgradeType.ROLLING); entity3.setUpgradePackage("test-upgrade"); + entity3.setDowngradeAllowed(true); dao.create(entity3); UpgradeEntity lastUpgradeForCluster = dao.findLastUpgradeForCluster(1); assertNotNull(lastUpgradeForCluster); http://git-wip-us.apache.org/repos/asf/ambari/blob/bad8603c/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java index 20a3b1c..6579ec2 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog213Test.java @@ -137,6 +137,27 @@ public class UpgradeCatalog213Test { } @Test + public void testExecuteUpgradeDDLUpdates() throws Exception{ + final DBAccessor dbAccessor = createNiceMock(DBAccessor.class); + + dbAccessor.addColumn(eq("upgrade"), anyObject(DBAccessor.DBColumnInfo.class)); + + replay(dbAccessor); + Module module = new Module() { + @Override + public void configure(Binder binder) { + binder.bind(DBAccessor.class).toInstance(dbAccessor); + binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class)); + } + }; + + Injector injector = Guice.createInjector(module); + UpgradeCatalog213 upgradeCatalog213 = injector.getInstance(UpgradeCatalog213.class); + upgradeCatalog213.executeUpgradeDDLUpdates(); + verify(dbAccessor); + } + + @Test public void testExecuteDMLUpdates() throws Exception { // TODO AMBARI-13001, readd unit test section. /* @@ -363,6 +384,31 @@ public class UpgradeCatalog213Test { @Test + public void testPopulateDowngradeAllowed() throws Exception { + Method executeStackPreDMLUpdates = UpgradeCatalog213.class.getDeclaredMethod("populateDowngradeAllowed"); + + final UpgradeCatalog213 upgradeCatalog213 = createMockBuilder(UpgradeCatalog213.class) + .addMockedMethod(executeStackPreDMLUpdates).createMock(); + + final Injector mockInjector = Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + bind(UpgradeCatalog213.class).toInstance(upgradeCatalog213); + bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class)); + bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class)); + } + }); + + upgradeCatalog213.populateDowngradeAllowed(); + expectLastCall().once(); + + replay(upgradeCatalog213); + mockInjector.getInstance(UpgradeCatalog213.class).executePreDMLUpdates(); + + verify(upgradeCatalog213); + } + + @Test public void testUpdateStormSiteConfigs() throws Exception { EasyMockSupport easyMockSupport = new EasyMockSupport(); final AmbariManagementController mockAmbariManagementController = easyMockSupport.createNiceMock(AmbariManagementController.class); @@ -747,15 +793,22 @@ public class UpgradeCatalog213Test { Capture<String> capturedTableName = EasyMock.newCapture(); Capture<String> capturedPKColumn = EasyMock.newCapture(); Capture<List<DBAccessor.DBColumnInfo>> capturedColumns = EasyMock.newCapture(); + Capture<DBAccessor.DBColumnInfo> capturedColumn = EasyMock.newCapture(); EasyMock.expect(mockedInjector.getInstance(DaoUtils.class)).andReturn(mockedDaoUtils); mockedInjector.injectMembers(anyObject(UpgradeCatalog.class)); - EasyMock.expect(mockedConfiguration.getDatabaseType()).andReturn(Configuration.DatabaseType.POSTGRES).times(2); + EasyMock.expect(mockedConfiguration.getDatabaseType()).andReturn(Configuration.DatabaseType.POSTGRES).anyTimes(); EasyMock.expect(mockedConfiguration.getDatabaseUser()).andReturn("ambari"); EasyMock.expect(mockedConfiguration.getServerJDBCPostgresSchemaName()).andReturn("fo"); + mockedDbAccessor.executeQuery("ALTER SCHEMA fo OWNER TO \"ambari\";"); mockedDbAccessor.executeQuery("ALTER ROLE \"ambari\" SET search_path to 'fo';"); + + // executeUpgradeDDLUpdates + mockedDbAccessor.addColumn(eq("upgrade"), capture(capturedColumn)); + + // addKerberosDescriptorTable mockedDbAccessor.createTable(capture(capturedTableName), capture(capturedColumns), capture(capturedPKColumn)); mocksControl.replay();
