You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/10/19 15:54:35 UTC
[49/50] [abbrv] ambari git commit: AMBARI-13458. Expose in the API
whether downgrade is supported or not (dgrinenko via dlysnichenko)
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/7bd1a2a3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7bd1a2a3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7bd1a2a3
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 7bd1a2a3ba0198111d0447b1ff8ec8cf364e9fef
Parents: 16b2f92
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Mon Oct 19 16:18:08 2015 +0300
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Mon Oct 19 16:18:08 2015 +0300
----------------------------------------------------------------------
.../internal/UpgradeResourceProvider.java | 4 ++
.../server/orm/entities/UpgradeEntity.java | 15 +++++-
.../ambari/server/state/stack/UpgradePack.java | 18 +++++++
.../server/upgrade/UpgradeCatalog213.java | 27 +++++++++-
.../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 | 56 +++++++++++++++++++-
13 files changed, 127 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7bd1a2a3/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 3a52025..a1d2451 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
@@ -124,6 +124,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";
@@ -238,6 +239,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);
@@ -462,6 +464,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;
}
@@ -803,6 +806,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/7bd1a2a3/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/7bd1a2a3/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 33dfc0a..7ef65e8 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
@@ -82,6 +82,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}.
*/
@@ -196,6 +203,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/7bd1a2a3/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 803e5f4..ed536cc 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
@@ -25,9 +25,12 @@ import com.google.inject.Injector;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.AmbariManagementController;
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.DaoUtils;
+import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
+import org.apache.ambari.server.orm.entities.UpgradeEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -52,6 +55,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";
@@ -67,7 +71,7 @@ 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";
private static final String KERBEROS_DESCRIPTOR_TABLE = "kerberos_descriptor";
private static final String KERBEROS_DESCRIPTOR_NAME_COLUMN = "kerberos_descriptor_name";
private static final String KERBEROS_DESCRIPTOR_COLUMN = "kerberos_descriptor";
@@ -77,7 +81,6 @@ public class UpgradeCatalog213 extends AbstractUpgradeCatalog {
*/
private static final Logger LOG = LoggerFactory.getLogger(UpgradeCatalog213.class);
-
@Inject
DaoUtils daoUtils;
@@ -121,9 +124,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>();
@@ -139,6 +147,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/7bd1a2a3/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 031b3b1..40ec758 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/7bd1a2a3/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 9021536..f07aadf 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/7bd1a2a3/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 036ca15..697bf3e 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/7bd1a2a3/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 5f0b523..caf1e9b 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/7bd1a2a3/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 9293d4e..8d8a99c 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/7bd1a2a3/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 ba74ff8..089c2c5 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/7bd1a2a3/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 603b1fd..daa1e08 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>
<prerequisite-checks>
</prerequisite-checks>
<upgrade-path>
http://git-wip-us.apache.org/repos/asf/ambari/blob/7bd1a2a3/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/7bd1a2a3/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 7a60b8c..24471bd 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
@@ -63,6 +63,7 @@ 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;
@@ -103,6 +104,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 {
Method updateAMSConfigs = UpgradeCatalog213.class.getDeclaredMethod("updateAMSConfigs");
Method updateHDFSConfigs = UpgradeCatalog213.class.getDeclaredMethod("updateHDFSConfigs");
@@ -149,6 +171,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);
@@ -486,15 +533,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();