@@ -223,4 +223,87 @@ public void testCalculateUpgradePathFromLatestDbVersion() {
223223 assertEquals ("We should have 1 upgrade step" , 1 , upgrades .length );
224224 assertTrue (upgrades [0 ] instanceof NoopDbUpgrade );
225225 }
226+
227+ @ Test
228+ public void testCalculateUpgradePathFrom41800toNextSecurityRelease () {
229+
230+ final CloudStackVersion dbVersion = CloudStackVersion .parse ("4.18.0.0" );
231+ assertNotNull (dbVersion );
232+
233+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker ();
234+ final CloudStackVersion currentVersion = checker .getLatestVersion ();
235+ assertNotNull (currentVersion );
236+
237+ final DbUpgrade [] upgrades = checker .calculateUpgradePath (dbVersion , currentVersion );
238+ assertNotNull (upgrades );
239+
240+ final CloudStackVersion nextSecurityRelease = CloudStackVersion .parse (currentVersion .getMajorRelease () + "."
241+ + currentVersion .getMinorRelease () + "."
242+ + currentVersion .getPatchRelease () + "."
243+ + (currentVersion .getSecurityRelease () + 1 ));
244+ assertNotNull (nextSecurityRelease );
245+
246+ final DbUpgrade [] upgradesToNext = checker .calculateUpgradePath (dbVersion , nextSecurityRelease );
247+ assertNotNull (upgradesToNext );
248+
249+ assertEquals (upgrades .length + 1 , upgradesToNext .length );
250+ assertTrue (upgradesToNext [upgradesToNext .length - 1 ] instanceof NoopDbUpgrade );
251+ }
252+
253+ @ Test
254+ public void testCalculateUpgradePathFromSecurityReleaseToLatest () {
255+
256+ final CloudStackVersion dbVersion = CloudStackVersion .parse ("4.17.2.0" ); // a EOL version
257+ assertNotNull (dbVersion );
258+
259+ final CloudStackVersion oldSecurityRelease = CloudStackVersion .parse (dbVersion .getMajorRelease () + "."
260+ + dbVersion .getMinorRelease () + "."
261+ + dbVersion .getPatchRelease () + "."
262+ + (dbVersion .getSecurityRelease () + 100 ));
263+ assertNotNull (oldSecurityRelease ); // fake security release 4.17.2.100
264+
265+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker ();
266+ final CloudStackVersion currentVersion = checker .getLatestVersion ();
267+ assertNotNull (currentVersion );
268+
269+ final DbUpgrade [] upgrades = checker .calculateUpgradePath (dbVersion , currentVersion );
270+ assertNotNull (upgrades );
271+
272+ final DbUpgrade [] upgradesFromSecurityRelease = checker .calculateUpgradePath (oldSecurityRelease , currentVersion );
273+ assertNotNull (upgradesFromSecurityRelease );
274+
275+ assertEquals ("The upgrade paths should be the same" , upgrades .length , upgradesFromSecurityRelease .length );
276+ }
277+
278+ @ Test
279+ public void testCalculateUpgradePathFromSecurityReleaseToNextSecurityRelease () {
280+
281+ final CloudStackVersion dbVersion = CloudStackVersion .parse ("4.17.2.0" ); // a EOL version
282+ assertNotNull (dbVersion );
283+
284+ final CloudStackVersion oldSecurityRelease = CloudStackVersion .parse (dbVersion .getMajorRelease () + "."
285+ + dbVersion .getMinorRelease () + "."
286+ + dbVersion .getPatchRelease () + "."
287+ + (dbVersion .getSecurityRelease () + 100 ));
288+ assertNotNull (oldSecurityRelease ); // fake security release 4.17.2.100
289+
290+ final DatabaseUpgradeChecker checker = new DatabaseUpgradeChecker ();
291+ final CloudStackVersion currentVersion = checker .getLatestVersion ();
292+ assertNotNull (currentVersion );
293+
294+ final CloudStackVersion nextSecurityRelease = CloudStackVersion .parse (currentVersion .getMajorRelease () + "."
295+ + currentVersion .getMinorRelease () + "."
296+ + currentVersion .getPatchRelease () + "."
297+ + (currentVersion .getSecurityRelease () + 1 ));
298+ assertNotNull (nextSecurityRelease ); // fake security release
299+
300+ final DbUpgrade [] upgrades = checker .calculateUpgradePath (dbVersion , currentVersion );
301+ assertNotNull (upgrades );
302+
303+ final DbUpgrade [] upgradesFromSecurityReleaseToNext = checker .calculateUpgradePath (oldSecurityRelease , nextSecurityRelease );
304+ assertNotNull (upgradesFromSecurityReleaseToNext );
305+
306+ assertEquals (upgrades .length + 1 , upgradesFromSecurityReleaseToNext .length );
307+ assertTrue (upgradesFromSecurityReleaseToNext [upgradesFromSecurityReleaseToNext .length - 1 ] instanceof NoopDbUpgrade );
308+ }
226309}
0 commit comments