This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 7a9985b42bf upgrade: add unit tests from/to a security release (#8870)
7a9985b42bf is described below
commit 7a9985b42bfdf43efb1a47f02ab58466936472ac
Author: Wei Zhou <[email protected]>
AuthorDate: Thu Apr 4 11:25:29 2024 +0200
upgrade: add unit tests from/to a security release (#8870)
* upgrade: add unit tests from/to a security release
* upgrade: add unit test from a old security release to a new security
release
---
.../cloud/upgrade/DatabaseUpgradeCheckerTest.java | 83 ++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git
a/engine/schema/src/test/java/com/cloud/upgrade/DatabaseUpgradeCheckerTest.java
b/engine/schema/src/test/java/com/cloud/upgrade/DatabaseUpgradeCheckerTest.java
index d7ef18a4f32..1a9372f73ea 100644
---
a/engine/schema/src/test/java/com/cloud/upgrade/DatabaseUpgradeCheckerTest.java
+++
b/engine/schema/src/test/java/com/cloud/upgrade/DatabaseUpgradeCheckerTest.java
@@ -223,4 +223,87 @@ public class DatabaseUpgradeCheckerTest {
assertEquals("We should have 1 upgrade step", 1, upgrades.length);
assertTrue(upgrades[0] instanceof NoopDbUpgrade);
}
+
+ @Test
+ public void testCalculateUpgradePathFrom41800toNextSecurityRelease() {
+
+ final CloudStackVersion dbVersion =
CloudStackVersion.parse("4.18.0.0");
+ assertNotNull(dbVersion);
+
+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker();
+ final CloudStackVersion currentVersion = checker.getLatestVersion();
+ assertNotNull(currentVersion);
+
+ final DbUpgrade[] upgrades = checker.calculateUpgradePath(dbVersion,
currentVersion);
+ assertNotNull(upgrades);
+
+ final CloudStackVersion nextSecurityRelease =
CloudStackVersion.parse(currentVersion.getMajorRelease() + "."
+ + currentVersion.getMinorRelease() + "."
+ + currentVersion.getPatchRelease() + "."
+ + (currentVersion.getSecurityRelease() + 1));
+ assertNotNull(nextSecurityRelease);
+
+ final DbUpgrade[] upgradesToNext =
checker.calculateUpgradePath(dbVersion, nextSecurityRelease);
+ assertNotNull(upgradesToNext);
+
+ assertEquals(upgrades.length + 1, upgradesToNext.length);
+ assertTrue(upgradesToNext[upgradesToNext.length - 1] instanceof
NoopDbUpgrade);
+ }
+
+ @Test
+ public void testCalculateUpgradePathFromSecurityReleaseToLatest() {
+
+ final CloudStackVersion dbVersion =
CloudStackVersion.parse("4.17.2.0"); // a EOL version
+ assertNotNull(dbVersion);
+
+ final CloudStackVersion oldSecurityRelease =
CloudStackVersion.parse(dbVersion.getMajorRelease() + "."
+ + dbVersion.getMinorRelease() + "."
+ + dbVersion.getPatchRelease() + "."
+ + (dbVersion.getSecurityRelease() + 100));
+ assertNotNull(oldSecurityRelease); // fake security release
4.17.2.100
+
+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker();
+ final CloudStackVersion currentVersion = checker.getLatestVersion();
+ assertNotNull(currentVersion);
+
+ final DbUpgrade[] upgrades = checker.calculateUpgradePath(dbVersion,
currentVersion);
+ assertNotNull(upgrades);
+
+ final DbUpgrade[] upgradesFromSecurityRelease =
checker.calculateUpgradePath(oldSecurityRelease, currentVersion);
+ assertNotNull(upgradesFromSecurityRelease);
+
+ assertEquals("The upgrade paths should be the same", upgrades.length,
upgradesFromSecurityRelease.length);
+ }
+
+ @Test
+ public void
testCalculateUpgradePathFromSecurityReleaseToNextSecurityRelease() {
+
+ final CloudStackVersion dbVersion =
CloudStackVersion.parse("4.17.2.0"); // a EOL version
+ assertNotNull(dbVersion);
+
+ final CloudStackVersion oldSecurityRelease =
CloudStackVersion.parse(dbVersion.getMajorRelease() + "."
+ + dbVersion.getMinorRelease() + "."
+ + dbVersion.getPatchRelease() + "."
+ + (dbVersion.getSecurityRelease() + 100));
+ assertNotNull(oldSecurityRelease); // fake security release
4.17.2.100
+
+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker();
+ final CloudStackVersion currentVersion = checker.getLatestVersion();
+ assertNotNull(currentVersion);
+
+ final CloudStackVersion nextSecurityRelease =
CloudStackVersion.parse(currentVersion.getMajorRelease() + "."
+ + currentVersion.getMinorRelease() + "."
+ + currentVersion.getPatchRelease() + "."
+ + (currentVersion.getSecurityRelease() + 1));
+ assertNotNull(nextSecurityRelease); // fake security release
+
+ final DbUpgrade[] upgrades = checker.calculateUpgradePath(dbVersion,
currentVersion);
+ assertNotNull(upgrades);
+
+ final DbUpgrade[] upgradesFromSecurityReleaseToNext =
checker.calculateUpgradePath(oldSecurityRelease, nextSecurityRelease);
+ assertNotNull(upgradesFromSecurityReleaseToNext);
+
+ assertEquals(upgrades.length + 1,
upgradesFromSecurityReleaseToNext.length);
+
assertTrue(upgradesFromSecurityReleaseToNext[upgradesFromSecurityReleaseToNext.length
- 1] instanceof NoopDbUpgrade);
+ }
}