]> source.dussan.org Git - sonar-scanner-cli.git/commitdiff
SONAR-8574 Replace usage of api/resources/index by api/measures/component in ITs
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 16 Jan 2017 13:27:47 +0000 (14:27 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 17 Jan 2017 07:29:25 +0000 (08:29 +0100)
it/pom.xml
it/src/test/java/com/sonar/runner/it/JavaTest.java
it/src/test/java/com/sonar/runner/it/MultimoduleTest.java
it/src/test/java/com/sonar/runner/it/ScannerTestCase.java

index 7c8a536e36a3406d5a29fb3511d29c35e3d38f9e..e5e66aa29a8e99632660d9e1e44c20d5d1d21e23 100644 (file)
       <version>${sonar.buildVersion}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.sonarsource.sonarqube</groupId>
+      <artifactId>sonar-ws</artifactId>
+      <version>5.6</version>
+    </dependency>
     <dependency>
       <groupId>org.easytesting</groupId>
       <artifactId>fest-assert</artifactId>
index ce1d63f07c008002996db01bab5a118d47e73e33..35191599072d32ecf27e947e55701310729215a4 100644 (file)
@@ -25,6 +25,8 @@ import com.sonar.orchestrator.locator.ResourceLocation;
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.commons.lang.SystemUtils;
 import org.junit.After;
 import org.junit.Rule;
@@ -32,9 +34,10 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.sonar.wsclient.issue.Issue;
 import org.sonar.wsclient.issue.IssueQuery;
-import org.sonar.wsclient.services.Resource;
-import org.sonar.wsclient.services.ResourceQuery;
+import org.sonarqube.ws.WsComponents.Component;
+import org.sonarqube.ws.WsMeasures.Measure;
 
+import static java.lang.Integer.parseInt;
 import static org.fest.assertions.Assertions.assertThat;
 
 public class JavaTest extends ScannerTestCase {
@@ -64,21 +67,23 @@ public class JavaTest extends ScannerTestCase {
     build.setProperty("sonar.host.url", orchestrator.getServer().getUrl() + "/");
     orchestrator.executeBuild(build);
 
-    Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:sample").setMetrics("files", "ncloc", "classes", "lcom4", "violations"));
-    // SONARPLUGINS-2399
+    Component project = getComponent("java:sample");
     assertThat(project.getName()).isEqualTo("Java Sample, with comma");
     assertThat(project.getDescription()).isEqualTo("This is a Java sample");
-    assertThat(project.getVersion()).isEqualTo("1.2.3");
-    assertThat(project.getMeasureIntValue("files")).isEqualTo(2);
-    assertThat(project.getMeasureIntValue("classes")).isEqualTo(2);
-    assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(10);
-    assertThat(project.getMeasureIntValue("violations")).isGreaterThan(0);
-
-    Resource file = orchestrator.getServer().getWsClient()
-      .find(new ResourceQuery("java:sample:src/basic/Hello.java").setMetrics("files", "ncloc", "classes", "violations"));
+
+    Map<String, Measure> projectMeasures = getMeasures("java:sample", "files", "ncloc", "classes", "violations");
+    // SONARPLUGINS-2399
+    assertThat(parseInt(projectMeasures.get("files").getValue())).isEqualTo(2);
+    assertThat(parseInt(projectMeasures.get("classes").getValue())).isEqualTo(2);
+    assertThat(parseInt(projectMeasures.get("ncloc").getValue())).isGreaterThan(10);
+    assertThat(parseInt(projectMeasures.get("violations").getValue())).isGreaterThan(0);
+
+    Component file = getComponent("java:sample:src/basic/Hello.java");
     assertThat(file.getName()).isEqualTo("Hello.java");
-    assertThat(file.getMeasureIntValue("ncloc")).isEqualTo(7);
-    assertThat(file.getMeasureIntValue("violations")).isGreaterThan(0);
+
+    Map<String, Measure> fileMeasures = getMeasures("java:sample:src/basic/Hello.java", "files", "ncloc", "classes", "violations");
+    assertThat(parseInt(fileMeasures.get("ncloc").getValue())).isEqualTo(7);
+    assertThat(parseInt(fileMeasures.get("violations").getValue())).isGreaterThan(0);
   }
 
   @Test
@@ -90,13 +95,14 @@ public class JavaTest extends ScannerTestCase {
     SonarScanner build = newScanner(new File("projects/java-bytecode"));
     orchestrator.executeBuild(build);
 
-    Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:bytecode").setMetrics("lcom4", "violations"));
+    Component project = getComponent("java:bytecode");
     assertThat(project.getName()).isEqualTo("Java Bytecode Sample");
+
+    Map<String, Measure> projectMeasures = getMeasures("java:bytecode", "violations");
     // the squid rules enabled in sonar-way-profile do not exist in SQ 3.0
-    assertThat(project.getMeasureIntValue("violations")).isGreaterThan(0);
+    assertThat(parseInt(projectMeasures.get("violations").getValue())).isGreaterThan(0);
 
-    Resource file = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:bytecode:src/HasFindbugsViolation.java").setMetrics("lcom4", "violations"));
-    assertThat(file.getMeasureIntValue("violations")).isGreaterThan(0);
+    assertThat(getMeasureAsInteger("java:bytecode:src/HasFindbugsViolation.java", "violations")).isGreaterThan(0);
 
     // findbugs is executed on bytecode
     List<Issue> issues = orchestrator.getServer().wsClient().issueClient().find(IssueQuery.create().componentRoots("java:bytecode").rules("squid:S1147")).list();
@@ -118,9 +124,9 @@ public class JavaTest extends ScannerTestCase {
     SonarScanner build = newScanner(new File("projects/basedir-with-source"));
     orchestrator.executeBuild(build);
 
-    Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:basedir-with-source").setMetrics("files", "ncloc"));
-    assertThat(project.getMeasureIntValue("files")).isEqualTo(1);
-    assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(1);
+    Map<String, Measure> projectMeasures = getMeasures("java:basedir-with-source", "files", "ncloc");
+    assertThat(parseInt(projectMeasures.get("files").getValue())).isEqualTo(1);
+    assertThat(parseInt(projectMeasures.get("ncloc").getValue())).isGreaterThan(1);
   }
 
   /**
@@ -136,9 +142,9 @@ public class JavaTest extends ScannerTestCase {
       .setProjectKey("SAMPLE");
     orchestrator.executeBuild(build);
 
-    Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("SAMPLE").setMetrics("files", "ncloc"));
-    assertThat(project.getMeasureIntValue("files")).isEqualTo(2);
-    assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(1);
+    Map<String, Measure> projectMeasures = getMeasures("SAMPLE", "files", "ncloc");
+    assertThat(parseInt(projectMeasures.get("files").getValue())).isEqualTo(2);
+    assertThat(parseInt(projectMeasures.get("ncloc").getValue())).isGreaterThan(1);
   }
 
   /**
@@ -254,9 +260,9 @@ public class JavaTest extends ScannerTestCase {
       .addArguments("-e");
     orchestrator.executeBuild(build);
 
-    Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:sample").setMetrics("files", "ncloc", "classes", "lcom4", "violations"));
-    assertThat(project.getDescription()).isEqualTo("This is a Java sample");
-    assertThat(project.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("java:sample").getDescription()).isEqualTo("This is a Java sample");
+    Map<String, Measure> projectMeasures = getMeasures("java:sample", "files", "ncloc", "classes", "violations");
+    assertThat(projectMeasures.values().stream().filter(measure -> measure.getValue() != null).collect(Collectors.toList())).hasSize(4);
   }
 
   @Test
index 2e02948223c9e711fd7ec5786d7c646d364c9d1c..57e8d1da1163989902995cbe8f8f2212cf8ace67 100644 (file)
@@ -24,8 +24,7 @@ import com.sonar.orchestrator.build.SonarScanner;
 import java.io.File;
 import org.junit.After;
 import org.junit.Test;
-import org.sonar.wsclient.services.Resource;
-import org.sonar.wsclient.services.ResourceQuery;
+import org.sonarqube.ws.WsComponents.Component;
 
 import static org.fest.assertions.Assertions.assertThat;
 
@@ -45,18 +44,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("simplest-with-props-on-root");
-    assertThat(rootProject.getName()).isEqualTo("Simplest multi-module project with all properties set on the root project");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-on-root").getName()).isEqualTo("Simplest multi-module project with all properties set on the root project");
 
     // Verify that we have the modules
-    Resource module1 = findResource("simplest-with-props-on-root:module1");
-    assertThat(module1.getName()).isEqualTo("module1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-on-root:module1").getName()).isEqualTo("module1");
 
-    Resource module2 = findResource("simplest-with-props-on-root:module2");
-    assertThat(module2.getName()).isEqualTo("module2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-on-root:module2").getName()).isEqualTo("module2");
 
     // And verify that the working directories are all located in the root folder
     File workDir = new File("projects/multi-module/simplest/simplest-with-props-on-root/.sonar");
@@ -76,18 +69,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("multi-language");
-    assertThat(rootProject.getName()).isEqualTo("Simplest multi-language project");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("multi-language").getName()).isEqualTo("Simplest multi-language project");
 
     // Verify that we have the modules
-    Resource module1 = findResource("multi-language:java-module");
-    assertThat(module1.getName()).isEqualTo("java-module");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("multi-language:java-module").getName()).isEqualTo("java-module");
 
-    Resource module2 = findResource("multi-language:js-module");
-    assertThat(module2.getName()).isEqualTo("js-module");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("multi-language:js-module").getName()).isEqualTo("js-module");
   }
 
   /**
@@ -99,18 +86,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("simplest-with-props-each-module");
-    assertThat(rootProject.getName()).isEqualTo("Simplest multi-module project with properties set on each module");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-each-module").getName()).isEqualTo("Simplest multi-module project with properties set on each module");
 
     // Verify that we have the modules
-    Resource module1 = findResource("simplest-with-props-each-module:module1");
-    assertThat(module1.getName()).isEqualTo("module1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-each-module:module1").getName()).isEqualTo("module1");
 
-    Resource module2 = findResource("simplest-with-props-each-module:overridden-key-for-module2");
-    assertThat(module2.getName()).isEqualTo("Module 2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("simplest-with-props-each-module:overridden-key-for-module2").getName()).isEqualTo("Module 2");
   }
 
   /**
@@ -132,18 +113,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("deep-path-for-modules");
-    assertThat(rootProject.getName()).isEqualTo("Project with deep path for modules");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("deep-path-for-modules").getName()).isEqualTo("Project with deep path for modules");
 
     // Verify that we have the modules
-    Resource module1 = findResource("deep-path-for-modules:mod1");
-    assertThat(module1.getName()).isEqualTo("Module 1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("deep-path-for-modules:mod1").getName()).isEqualTo("Module 1");
 
-    Resource module2 = findResource("deep-path-for-modules:mod2");
-    assertThat(module2.getName()).isEqualTo("Module 2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("deep-path-for-modules:mod2").getName()).isEqualTo("Module 2");
   }
 
   /**
@@ -155,18 +130,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("module-path-with-space");
-    assertThat(rootProject.getName()).isEqualTo("Project with module path that contain spaces");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("module-path-with-space").getName()).isEqualTo("Project with module path that contain spaces");
 
     // Verify that we have the modules
-    Resource module1 = findResource("module-path-with-space:module1");
-    assertThat(module1.getName()).isEqualTo("Module 1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("module-path-with-space:module1").getName()).isEqualTo("Module 1");
 
-    Resource module2 = findResource("module-path-with-space:module2");
-    assertThat(module2.getName()).isEqualTo("Module 2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("module-path-with-space:module2").getName()).isEqualTo("Module 2");
   }
 
   /**
@@ -178,20 +147,17 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("overwriting-parent-properties");
+    Component rootProject = getComponent("overwriting-parent-properties");
     assertThat(rootProject.getName()).isEqualTo("Project with modules that overwrite properties");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
     assertThat(rootProject.getDescription()).isEqualTo("Description of root project");
 
     // Verify that we have the modules
-    Resource module1 = findResource("overwriting-parent-properties:module1-new-key");
+    Component module1 = getComponent("overwriting-parent-properties:module1-new-key");
     assertThat(module1.getName()).isEqualTo("Module 1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
     assertThat(module1.getDescription()).isEqualTo("Description of module 1");
 
-    Resource module2 = findResource("overwriting-parent-properties:module2-new-key");
+    Component module2 = getComponent("overwriting-parent-properties:module2-new-key");
     assertThat(module2.getName()).isEqualTo("Module 2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
     assertThat(module2.getDescription()).isEqualTo("Description of module 2");
   }
 
@@ -204,18 +170,12 @@ public class MultimoduleTest extends ScannerTestCase {
 
     orchestrator.executeBuild(build);
 
-    Resource rootProject = findResource("using-config-file-prop");
-    assertThat(rootProject.getName()).isEqualTo("Advanced use case - mostly used by the Ant task");
-    assertThat(rootProject.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("using-config-file-prop").getName()).isEqualTo("Advanced use case - mostly used by the Ant task");
 
     // Verify that we have the modules
-    Resource module1 = findResource("using-config-file-prop:module1");
-    assertThat(module1.getName()).isEqualTo("Module 1");
-    assertThat(module1.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("using-config-file-prop:module1").getName()).isEqualTo("Module 1");
 
-    Resource module2 = findResource("using-config-file-prop:module2");
-    assertThat(module2.getName()).isEqualTo("Module 2");
-    assertThat(module2.getVersion()).isEqualTo("1.2.3");
+    assertThat(getComponent("using-config-file-prop:module2").getName()).isEqualTo("Module 2");
   }
 
   /**
@@ -247,7 +207,4 @@ public class MultimoduleTest extends ScannerTestCase {
     assertThat(result.getLogs()).contains("The properties file of the module 'module1' does not exist");
   }
 
-  private Resource findResource(String resourceKey) {
-    return orchestrator.getServer().getWsClient().find(new ResourceQuery(resourceKey));
-  }
 }
index 4562a42daf85ebce6106f0b9182421111b4a4bde..c7db62d5d5f277577fa4d47183606c2680d23b62 100644 (file)
@@ -25,13 +25,30 @@ import com.sonar.orchestrator.version.Version;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 import java.util.Properties;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.annotation.CheckForNull;
 import org.apache.commons.lang.StringUtils;
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.rules.ExpectedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.sonarqube.ws.WsComponents;
+import org.sonarqube.ws.WsComponents.Component;
+import org.sonarqube.ws.WsMeasures;
+import org.sonarqube.ws.WsMeasures.Measure;
+import org.sonarqube.ws.client.HttpConnector;
+import org.sonarqube.ws.client.WsClient;
+import org.sonarqube.ws.client.WsClientFactories;
+import org.sonarqube.ws.client.component.ShowWsRequest;
+import org.sonarqube.ws.client.measure.ComponentWsRequest;
+
+import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
 
 public abstract class ScannerTestCase {
 
@@ -71,4 +88,46 @@ public abstract class ScannerTestCase {
     return scannerCli;
   }
 
+  @CheckForNull
+  static Map<String, Measure> getMeasures(String componentKey, String... metricKeys) {
+    return newWsClient().measures().component(new ComponentWsRequest()
+      .setComponentKey(componentKey)
+      .setMetricKeys(asList(metricKeys)))
+      .getComponent().getMeasuresList()
+      .stream()
+      .collect(Collectors.toMap(Measure::getMetric, Function.identity()));
+  }
+
+  @CheckForNull
+  static Measure getMeasure(String componentKey, String metricKey) {
+    WsMeasures.ComponentWsResponse response = newWsClient().measures().component(new ComponentWsRequest()
+      .setComponentKey(componentKey)
+      .setMetricKeys(singletonList(metricKey)));
+    List<Measure> measures = response.getComponent().getMeasuresList();
+    return measures.size() == 1 ? measures.get(0) : null;
+  }
+
+  @CheckForNull
+  static Integer getMeasureAsInteger(String componentKey, String metricKey) {
+    Measure measure = getMeasure(componentKey, metricKey);
+    return (measure == null) ? null : Integer.parseInt(measure.getValue());
+  }
+
+  @CheckForNull
+  static Double getMeasureAsDouble(String componentKey, String metricKey) {
+    Measure measure = getMeasure(componentKey, metricKey);
+    return (measure == null) ? null : Double.parseDouble(measure.getValue());
+  }
+
+  @CheckForNull
+  static Component getComponent(String componentKey) {
+    return newWsClient().components().show(new ShowWsRequest().setKey(componentKey)).getComponent();
+  }
+
+  static WsClient newWsClient() {
+    return WsClientFactories.getDefault().newClient(HttpConnector.newBuilder()
+      .url(orchestrator.getServer().getUrl())
+      .build());
+  }
+
 }