]> source.dussan.org Git - sonarqube.git/commitdiff
Use local SonarQube ZIP in performance and upgrade tests 1465/head
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 9 Dec 2016 11:41:42 +0000 (12:41 +0100)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 14 Dec 2016 16:35:38 +0000 (17:35 +0100)
tests/perf/pom.xml
tests/pom.xml
tests/upgrade/pom.xml
tests/upgrade/src/test/java/org/sonarsource/sonarqube/upgrade/UpgradeTest.java

index 3a60a2860114766c004d71cb7b83618534ba0994..f2a5c637294fe59c945ad7d53763a928a8debfa3 100644 (file)
@@ -14,6 +14,7 @@
 
   <properties>
     <category>*</category>
+    <sqZipDir>../../sonar-application/target</sqZipDir>
   </properties>
 
   <build>
index d5ab2ef9248634828455c6f24b962bae9ef8e99b..6a220d580d04de22c1e49cb5d144f2ec97831634 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
@@ -17,6 +18,7 @@
     <maven.deploy.skip>true</maven.deploy.skip>
     <source.skip>true</source.skip>
     <enforcer.skip>true</enforcer.skip>
+    <sqZipDir>../sonar-application/target</sqZipDir>
   </properties>
 
   <modules>
     <module>upgrade</module>
   </modules>
 
+  <profiles>
+    <profile>
+      <id>qa</id>
+      <activation>
+        <property>
+          <name>env.SONARSOURCE_QA</name>
+          <value>true</value>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>copy-sonarqube-zip</id>
+                <phase>generate-test-resources</phase>
+                <goals>
+                  <goal>copy</goal>
+                </goals>
+                <configuration>
+                  <artifactItems>
+                    <artifactItem>
+                      <groupId>${project.groupId}</groupId>
+                      <artifactId>sonar-application</artifactId>
+                      <version>${project.version}</version>
+                      <type>zip</type>
+                      <overWrite>true</overWrite>
+                    </artifactItem>
+                  </artifactItems>
+                  <outputDirectory>${sqZipDir}</outputDirectory>
+                  <overWriteReleases>true</overWriteReleases>
+                  <overWriteSnapshots>true</overWriteSnapshots>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
index d17d17f10c2930dc241e379f2525d6089a3ddb65..6af57d8e5a0841f6e54daceb756405901c63af78 100644 (file)
   <artifactId>upgrade</artifactId>
   <name>SonarQube :: Upgrade Tests</name>
 
+  <properties>
+    <sqZipDir>../../sonar-application/target</sqZipDir>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.codehaus.sonar</groupId>
index fb6e1b4243637b0cca3f35d55836d2955d244955..399db797d5a5906e57a168c95910f676d5c155a7 100644 (file)
@@ -22,7 +22,6 @@ package org.sonarsource.sonarqube.upgrade;
 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;
@@ -31,7 +30,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;
@@ -47,7 +45,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;
@@ -62,36 +59,52 @@ 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();
 
@@ -152,31 +165,24 @@ 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();
   }
 
-  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();
   }
@@ -192,8 +198,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);
   }