From 28bf1b05baa7b1e1c9619ce21ac40b9d0d3fe7f5 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 9 Dec 2016 12:41:42 +0100 Subject: [PATCH] Use local SonarQube ZIP in performance and upgrade tests --- tests/perf/pom.xml | 1 + tests/pom.xml | 46 ++++++++- tests/upgrade/pom.xml | 4 + .../sonarqube/upgrade/UpgradeTest.java | 99 +++++++++---------- 4 files changed, 98 insertions(+), 52 deletions(-) diff --git a/tests/perf/pom.xml b/tests/perf/pom.xml index 65accd26741..7ef689fdb72 100644 --- a/tests/perf/pom.xml +++ b/tests/perf/pom.xml @@ -14,6 +14,7 @@ * + ../../sonar-application/target diff --git a/tests/pom.xml b/tests/pom.xml index 9144214c587..6f4440b9187 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 @@ -17,6 +18,7 @@ true true true + ../sonar-application/target @@ -24,4 +26,46 @@ upgrade + + + qa + + + env.SONARSOURCE_QA + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-sonarqube-zip + generate-test-resources + + copy + + + + + ${project.groupId} + sonar-application + ${project.version} + zip + true + + + ${sqZipDir} + true + true + + + + + + + + diff --git a/tests/upgrade/pom.xml b/tests/upgrade/pom.xml index 6c22dec4c96..7c1f0c5ae5e 100644 --- a/tests/upgrade/pom.xml +++ b/tests/upgrade/pom.xml @@ -12,6 +12,10 @@ upgrade SonarQube :: Upgrade Tests + + ../../sonar-application/target + + org.codehaus.sonar diff --git a/tests/upgrade/src/test/java/org/sonarsource/sonarqube/upgrade/UpgradeTest.java b/tests/upgrade/src/test/java/org/sonarsource/sonarqube/upgrade/UpgradeTest.java index 2f68a43c89f..bad5a01d7f7 100644 --- a/tests/upgrade/src/test/java/org/sonarsource/sonarqube/upgrade/UpgradeTest.java +++ b/tests/upgrade/src/test/java/org/sonarsource/sonarqube/upgrade/UpgradeTest.java @@ -24,7 +24,6 @@ import com.codeborne.selenide.WebDriverRunner; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.OrchestratorBuilder; import com.sonar.orchestrator.build.MavenBuild; -import com.sonar.orchestrator.config.Configuration; import com.sonar.orchestrator.container.Server; import com.sonar.orchestrator.locator.FileLocation; import com.sonar.orchestrator.version.Version; @@ -33,7 +32,6 @@ import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; -import java.util.stream.Stream; import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Test; @@ -51,7 +49,6 @@ import static org.assertj.core.api.Assertions.assertThat; public class UpgradeTest { private static final String PROJECT_KEY = "org.apache.struts:struts-parent"; - private static final String SQ_VERSION_DEV = "DEV"; private static final String LATEST_JAVA_RELEASE = "LATEST_RELEASE"; private Orchestrator orchestrator; @@ -66,40 +63,56 @@ public class UpgradeTest { @Test public void test_upgrade_from_5_6_1() { - testDatabaseUpgrade("3.14", Version.create("5.6.1")); + testDatabaseUpgrade(Version.create("5.6.1")); } @Test public void test_upgrade_from_5_2_via_5_6() { - testDatabaseUpgrade("3.14", Version.create("5.2"), Version.create("5.6")); + testDatabaseUpgrade(Version.create("5.2"), Version.create("5.6")); } - private void testDatabaseUpgrade(String javaVersion, Version fromVersion, Version... intermediaryVersions) { - startOldServer(fromVersion, javaVersion); + @Test + public void test_upgrade_from_6_0() { + testDatabaseUpgrade(Version.create("6.0")); + } + + @Test + public void test_upgrade_from_6_1() { + testDatabaseUpgrade(Version.create("6.1")); + } + + private void testDatabaseUpgrade(Version fromVersion, Version... intermediaryVersions) { + startOldVersionServer(fromVersion, false); scanProject(); int files = countFiles(PROJECT_KEY); assertThat(files).isGreaterThan(0); stopServer(); - Stream.concat(Arrays.stream(intermediaryVersions).map(Version::toString), Stream.of(SQ_VERSION_DEV)) - .forEach((sqVersion) -> { - upgradeTo(sqVersion, javaVersion); + Arrays.stream(intermediaryVersions).forEach((sqVersion) -> { + startOldVersionServer(sqVersion, true); + upgrade(); + verifyAnalysis(files); + stopServer(); + }); - assertThat(countFiles(PROJECT_KEY)).isEqualTo(files); - scanProject(); - assertThat(countFiles(PROJECT_KEY)).isEqualTo(files); - browseWebapp(); + startDevServer(); + upgrade(); + verifyAnalysis(files); + stopServer(); + } - stopServer(); - }); + private void verifyAnalysis(int expectedNumberOfFiles) { + assertThat(countFiles(PROJECT_KEY)).isEqualTo(expectedNumberOfFiles); + scanProject(); + assertThat(countFiles(PROJECT_KEY)).isEqualTo(expectedNumberOfFiles); + browseWebapp(); } - private void upgradeTo(String sqVersion, String javaVersion) { - startNewServer(sqVersion, SQ_VERSION_DEV.equals(sqVersion) ? LATEST_JAVA_RELEASE : javaVersion); + private void upgrade() { checkSystemStatus(ServerStatusResponse.Status.DB_MIGRATION_NEEDED); - checkUrlsBeforeUpgrade(sqVersion); - - upgrade(); + checkUrlsBeforeUpgrade(); + ServerMigrationResponse serverMigrationResponse = new ServerMigrationCall(orchestrator).callAndWait(); + assertThat(serverMigrationResponse.getStatus()).isEqualTo(ServerMigrationResponse.Status.MIGRATION_SUCCEEDED); checkSystemStatus(ServerStatusResponse.Status.UP); checkUrlsAfterUpgrade(); } @@ -110,7 +123,7 @@ public class UpgradeTest { assertThat(serverStatusResponse.getStatus()).isEqualTo(serverStatus); } - private void checkUrlsBeforeUpgrade(String sqVersion) { + private void checkUrlsBeforeUpgrade() { // These urls should be available when system requires a migration checkUrlIsReturningOk("/api/system/status"); checkUrlIsReturningOk("/api/system/db_migration_status"); @@ -159,32 +172,25 @@ public class UpgradeTest { testUrl("/profiles"); } - private void upgrade() { - ServerMigrationResponse serverMigrationResponse = new ServerMigrationCall(orchestrator).callAndWait(); - - assertThat(serverMigrationResponse.getStatus()).isEqualTo(ServerMigrationResponse.Status.MIGRATION_SUCCEEDED); - } - - private void startOldServer(Version sqVersion, String javaVersion) { - String jdbcUrl = MssqlConfig.fixUrl(Configuration.createEnv(), sqVersion); - orchestrator = Orchestrator.builderEnv() - .setOrchestratorProperty("sonar.jdbc.url", jdbcUrl) + private void startOldVersionServer(Version sqVersion, boolean keepDatabase) { + OrchestratorBuilder builder = Orchestrator.builderEnv() .setSonarVersion(sqVersion.toString()) - .setOrchestratorProperty("orchestrator.keepDatabase", "false") - .restoreProfileAtStartup(FileLocation.ofClasspath("/sonar-way-5.1.xml")) - .setOrchestratorProperty("javaVersion", javaVersion) - .addPlugin("java").build(); + .setOrchestratorProperty("orchestrator.keepDatabase", String.valueOf(keepDatabase)) + .setOrchestratorProperty("javaVersion", "3.14") + .addPlugin("java") + .setStartupLogWatcher(log -> log.contains("Process[web] is up")); + orchestrator = builder.build(); orchestrator.start(); initSelenide(orchestrator); } - private void startNewServer(String sqVersion, String javaVersion) { + private void startDevServer() { OrchestratorBuilder builder = Orchestrator.builderEnv() - .setSonarVersion(sqVersion) + .setZipFile(FileLocation.byWildcardMavenFilename(new File("../../sonar-application/target"), "sonar*.zip").getFile()) .setOrchestratorProperty("orchestrator.keepDatabase", "true") - .setOrchestratorProperty("javaVersion", javaVersion) - .setStartupLogWatcher(log -> log.contains("Process[web] is up")) - .addPlugin("java"); + .setOrchestratorProperty("javaVersion", LATEST_JAVA_RELEASE) + .addPlugin("java") + .setStartupLogWatcher(log -> log.contains("Process[web] is up")); orchestrator = builder.build(); orchestrator.start(); initSelenide(orchestrator); @@ -201,8 +207,7 @@ public class UpgradeTest { .setCleanSonarGoals() .setProperty("sonar.dynamicAnalysis", "false") .setProperty("sonar.scm.disabled", "true") - .setProperty("sonar.cpd.cross_project", "true") - .setProperty("sonar.profile", "sonar-way-5.1"); + .setProperty("sonar.cpd.cross_project", "true"); orchestrator.executeBuild(build); } @@ -238,14 +243,6 @@ public class UpgradeTest { newWsClient(orchestrator).wsConnector().call(new GetRequest(url)).failIfNotSuccessful(); } - // Some urls are available during migration only recently - private void checkUrlIsReturningOkOnlyForDevVersion(String url, String sqVersion) { - if (sqVersion.equals(SQ_VERSION_DEV)) { - WsResponse wsResponse = newWsClient(orchestrator).wsConnector().call(new GetRequest(url)); - assertThat(wsResponse.isSuccessful()).as("SQ version %s", sqVersion).isTrue(); - } - } - private void checkUrlIsReturningNotFound(String url) { WsResponse response = newWsClient(orchestrator).wsConnector().call(new GetRequest(url)); assertThat(response.code()).isEqualTo(HttpURLConnection.HTTP_NOT_FOUND); -- 2.39.5