| // 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 com.cloud.upgrade; | |
| import com.cloud.upgrade.dao.DbUpgrade; | |
| import com.cloud.upgrade.dao.Upgrade41110to41120; | |
| import com.cloud.upgrade.dao.Upgrade41120to41130; | |
| import com.cloud.upgrade.dao.Upgrade41120to41200; | |
| import com.cloud.upgrade.dao.Upgrade41500to41510; | |
| import com.cloud.upgrade.dao.Upgrade41510to41520; | |
| import com.cloud.upgrade.dao.Upgrade41520to41600; | |
| import com.cloud.upgrade.dao.Upgrade41720to41800; | |
| import com.cloud.upgrade.dao.Upgrade481to490; | |
| import org.apache.cloudstack.utils.CloudStackVersion; | |
| import org.junit.BeforeClass; | |
| import org.junit.Test; | |
| import java.io.InputStream; | |
| import java.sql.Connection; | |
| import static org.junit.Assert.assertEquals; | |
| public class DatabaseVersionHierarchyTest { | |
| private static DatabaseVersionHierarchy hierarchy; | |
| static class DummyUpgrade implements DbUpgrade { | |
| @Override | |
| public String[] getUpgradableVersionRange() { | |
| return new String[0]; | |
| } | |
| @Override | |
| public String getUpgradedVersion() { | |
| return null; | |
| } | |
| @Override | |
| public boolean supportsRollingUpgrade() { | |
| return false; | |
| } | |
| @Override | |
| public InputStream[] getPrepareScripts() { | |
| return new InputStream[0]; | |
| } | |
| @Override | |
| public void performDataMigration(Connection conn) { | |
| } | |
| @Override | |
| public InputStream[] getCleanupScripts() { | |
| return new InputStream[0]; | |
| } | |
| } | |
| @BeforeClass | |
| public static void init() { | |
| DatabaseVersionHierarchy.DatabaseVersionHierarchyBuilder builder = DatabaseVersionHierarchy.builder() | |
| .next("0.0.5", new DummyUpgrade()) | |
| .next("1.0.0.0", new DummyUpgrade()) | |
| .next("1.0.1" , new DummyUpgrade()) | |
| .next("1.2.0" , new DummyUpgrade()) | |
| .next("2.0.0" , new DummyUpgrade()) | |
| .next("2.3.2" , new DummyUpgrade()) | |
| .next("3.4.5.6" , new DummyUpgrade()) | |
| .next("4.8.2.0" , new Upgrade481to490()) | |
| .next("4.9.10.11" , new DummyUpgrade()) | |
| .next("4.11.1.0", new Upgrade41110to41120()) | |
| .next("4.11.2.0", new Upgrade41120to41130()) | |
| .next("4.11.3.0", new Upgrade41120to41200()) | |
| .next("4.15.0.0", new Upgrade41500to41510()) | |
| .next("4.15.1.0", new Upgrade41510to41520()) | |
| .next("4.15.2.0", new Upgrade41520to41600()) | |
| .next("4.15.4", new DummyUpgrade()) | |
| .next("4.17.2.0", new Upgrade41720to41800()); | |
| hierarchy = builder.build(); | |
| } | |
| @Test | |
| public void getRecentVersionMiddle() { | |
| assertEquals("2.0.0", hierarchy.getRecentVersion(CloudStackVersion.parse("2.2.2")).toString()); | |
| } | |
| @Test | |
| public void getRecentVersionEarly() { | |
| assertEquals(null, hierarchy.getRecentVersion(CloudStackVersion.parse("0.0.2"))); | |
| } | |
| @Test | |
| public void getRecentVersionStart() { | |
| assertEquals(null, hierarchy.getRecentVersion(CloudStackVersion.parse("0.0.5"))); | |
| } | |
| @Test | |
| public void getRecentVersionJust() { | |
| assertEquals("0.0.5", hierarchy.getRecentVersion(CloudStackVersion.parse("0.0.9")).toString()); | |
| } | |
| @Test | |
| public void getRecentVersionExact() { | |
| assertEquals("0.0.5", hierarchy.getRecentVersion(CloudStackVersion.parse("1.0.0.0")).toString()); | |
| } | |
| } |