]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-17706 Drop few queries related to modules
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Mon, 23 Jan 2023 22:27:54 +0000 (16:27 -0600)
committersonartech <sonartech@sonarsource.com>
Thu, 2 Feb 2023 20:03:39 +0000 (20:03 +0000)
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStepTest.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java
server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/batch/IssuesAction.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/batch/IssuesActionTest.java

index 0b597da5ca9ffeedfcab23de91d39964c5040e60..cfda68e5493ddcc54521ae88a81ce88eb0b54b3c 100644 (file)
@@ -90,24 +90,6 @@ public class ValidateProjectStepTest {
     underTest.execute(new TestComputationStepContext());
   }
 
-  @Test
-  public void fail_if_pr_is_targeting_branch_with_modules() {
-    ComponentDto masterProject = db.components().insertPublicProject();
-    ComponentDto mergeBranch = db.components().insertProjectBranch(masterProject, b -> b.setKey("mergeBranch"));
-    dbClient.componentDao().insert(db.getSession(), ComponentTesting.newModuleDto(mergeBranch));
-    setBranch(BranchType.PULL_REQUEST, mergeBranch.uuid());
-    db.getSession().commit();
-
-    treeRootHolder.setRoot(ReportComponent.builder(Component.Type.PROJECT, 1).setUuid("DEFG")
-      .setKey("branch")
-      .build());
-
-    var stepContext = new TestComputationStepContext();
-    assertThatThrownBy(() -> underTest.execute(stepContext))
-      .isInstanceOf(MessageException.class)
-      .hasMessage("Due to an upgrade, you need first to re-analyze the target branch 'mergeBranch' before analyzing this pull request.");
-  }
-
   @Test
   public void fail_if_analysis_date_is_before_last_analysis() {
     analysisMetadataHolder.setAnalysisDate(DateUtils.parseDate("2015-01-01"));
index a73c55936ca48d50c676854f173d429b2ccc57f1..8b4e47b91b25a8f5cbc28b7e500d955437a44b20 100644 (file)
@@ -82,10 +82,6 @@ public class ComponentDao implements Dao {
     return mapper(session).selectSubProjectsByComponentUuids(uuids);
   }
 
-  public List<ComponentDto> selectDescendantModules(DbSession session, String rootComponentUuid) {
-    return mapper(session).selectDescendantModules(rootComponentUuid, Scopes.PROJECT, false);
-  }
-
   public List<ComponentDto> selectEnabledDescendantModules(DbSession session, String rootComponentUuid) {
     return mapper(session).selectDescendantModules(rootComponentUuid, Scopes.PROJECT, true);
   }
index 5d48d654a7e4b85269f4a625d8e67ff1e528cad9..d7ab38fccf86d96edde8fcbf59243822d5ed697a 100644 (file)
@@ -455,68 +455,6 @@ public class ComponentDaoTest {
     assertThat(underTest.selectSubProjectsByComponentUuids(dbSession, Collections.emptyList())).isEmpty();
   }
 
-  @Test
-  public void select_enabled_modules_tree() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto removedProject = db.components().insertPrivateProject(p -> p.setEnabled(false));
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    ComponentDto removedModule = db.components().insertComponent(newModuleDto(project).setEnabled(false));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto removedSubModule = db.components().insertComponent(newModuleDto(module).setEnabled(false));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto removedDirectory = db.components().insertComponent(newDirectory(subModule, "src2").setEnabled(false));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-    ComponentDto removedFile = db.components().insertComponent(newFileDto(subModule, directory).setEnabled(false));
-
-    // From root project
-    assertThat(underTest.selectEnabledDescendantModules(dbSession, project.uuid()))
-      .extracting(ComponentDto::uuid)
-      .containsExactlyInAnyOrder(project.uuid(), module.uuid(), subModule.uuid())
-      .doesNotContain(removedModule.uuid(), removedSubModule.uuid());
-
-    // From module
-    assertThat(underTest.selectEnabledDescendantModules(dbSession, module.uuid()))
-      .extracting(ComponentDto::uuid)
-      .containsExactlyInAnyOrder(module.uuid(), subModule.uuid())
-      .doesNotContain(removedModule.uuid(), removedModule.uuid());
-
-    // From sub module
-    assertThat(underTest.selectEnabledDescendantModules(dbSession, subModule.uuid()))
-      .extracting(ComponentDto::uuid)
-      .containsExactlyInAnyOrder(subModule.uuid());
-
-    // Folder
-    assertThat(underTest.selectEnabledDescendantModules(dbSession, directory.uuid())).isEmpty();
-    assertThat(underTest.selectEnabledDescendantModules(dbSession, "unknown")).isEmpty();
-  }
-
-  @Test
-  public void select_all_modules_tree() {
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto removedProject = db.components().insertPrivateProject(p -> p.setEnabled(false));
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    ComponentDto removedModule = db.components().insertComponent(newModuleDto(project).setEnabled(false));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto removedSubModule = db.components().insertComponent(newModuleDto(module).setEnabled(false));
-    ComponentDto directory = db.components().insertComponent(newDirectory(subModule, "src"));
-    ComponentDto removedDirectory = db.components().insertComponent(newDirectory(subModule, "src2").setEnabled(false));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule, directory));
-    ComponentDto removedFile = db.components().insertComponent(newFileDto(subModule, directory).setEnabled(false));
-
-    // From root project, disabled sub module is returned
-    assertThat(underTest.selectDescendantModules(dbSession, project.uuid()))
-      .extracting(ComponentDto::uuid)
-      .containsExactlyInAnyOrder(project.uuid(), module.uuid(), removedModule.uuid(), subModule.uuid(), removedSubModule.uuid());
-
-    // From module, disabled sub module is returned
-    assertThat(underTest.selectDescendantModules(dbSession, module.uuid()))
-      .extracting(ComponentDto::uuid)
-      .containsExactlyInAnyOrder(module.uuid(), subModule.uuid(), removedSubModule.uuid());
-
-    // From removed sub module -> should not be returned
-    assertThat(underTest.selectDescendantModules(dbSession, removedSubModule.uuid())).isEmpty();
-  }
-
   @Test
   public void select_enabled_module_files_tree_from_module() {
     ComponentDto project = db.components().insertPrivateProject();
index 8ce5be9b88f56a1d42015f6154fd64b7fea12ab1..58cf157a46ab1b72ab4e2d544fd75ed7806549bb 100644 (file)
@@ -23,7 +23,6 @@ import com.google.common.base.Splitter;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.sonar.api.resources.Scopes;
@@ -42,7 +41,6 @@ import org.sonar.server.component.ComponentFinder;
 import org.sonar.server.user.UserSession;
 import org.sonarqube.ws.MediaTypes;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.String.format;
 import static java.util.Optional.ofNullable;
 import static java.util.stream.Collectors.toMap;
@@ -95,7 +93,6 @@ public class IssuesAction implements BatchWsAction {
     try (DbSession dbSession = dbClient.openSession(false)) {
       ComponentDto component = loadComponent(dbSession, request);
       userSession.checkComponentPermission(USER, component);
-      Map<String, String> keysByUUid = keysByUUid(dbSession, component);
 
       ScannerInput.ServerIssue.Builder responseBuilder = ScannerInput.ServerIssue.newBuilder();
       response.stream().setMediaType(MediaTypes.PROTOBUF);
@@ -124,15 +121,13 @@ public class IssuesAction implements BatchWsAction {
 
       issueDtos.forEach(issue -> {
         issue.setAssigneeUuid(userLoginsByUserUuids.get(issue.getAssigneeUuid()));
-        handleIssue(issue, responseBuilder, keysByUUid, output);
+        handleIssue(issue, responseBuilder, output);
       });
     }
   }
 
-  private static void handleIssue(IssueDto issue, ScannerInput.ServerIssue.Builder issueBuilder, Map<String, String> keysByUUid, OutputStream out) {
+  private static void handleIssue(IssueDto issue, ScannerInput.ServerIssue.Builder issueBuilder, OutputStream out) {
     issueBuilder.setKey(issue.getKey());
-    String moduleUuid = extractModuleUuid(issue);
-    issueBuilder.setModuleKey(keysByUUid.get(moduleUuid));
     ofNullable(issue.getFilePath()).ifPresent(issueBuilder::setPath);
     issueBuilder.setRuleRepository(issue.getRuleRepo());
     issueBuilder.setRuleKey(issue.getRule());
@@ -154,27 +149,6 @@ public class IssuesAction implements BatchWsAction {
     issueBuilder.clear();
   }
 
-  private static String extractModuleUuid(IssueDto issue) {
-    List<String> split = MODULE_PATH_SPLITTER.splitToList(issue.getModuleUuidPath());
-    return split.get(split.size() - 1);
-  }
-
-  private Map<String, String> keysByUUid(DbSession session, ComponentDto component) {
-    Map<String, String> keysByUUid = new HashMap<>();
-    if (Scopes.PROJECT.equals(component.scope())) {
-      List<ComponentDto> modulesTree = dbClient.componentDao().selectDescendantModules(session, component.uuid());
-      for (ComponentDto componentDto : modulesTree) {
-        keysByUUid.put(componentDto.uuid(), componentDto.getKey());
-      }
-    } else {
-      String moduleUuid = component.moduleUuid();
-      checkArgument(moduleUuid != null, "The component '%s' has no module uuid", component.uuid());
-      ComponentDto module = dbClient.componentDao().selectOrFailByUuid(session, moduleUuid);
-      keysByUUid.put(module.uuid(), module.getKey());
-    }
-    return keysByUUid;
-  }
-
   private ComponentDto loadComponent(DbSession dbSession, Request request) {
     String componentKey = request.mandatoryParam(PARAM_KEY);
     String branch = request.param(PARAM_BRANCH);
index ae2a2b6a96e73ae2bd371a896327e3f56ceb828f..66a6474914bf5787c7f37d5d97fb8dfc66145570 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.batch;
 import java.io.IOException;
 import java.util.stream.Stream;
 import javax.annotation.Nullable;
-import org.assertj.core.groups.Tuple;
 import org.junit.Rule;
 import org.junit.Test;
 import org.sonar.api.rules.RuleType;
@@ -49,7 +48,6 @@ import static java.lang.String.format;
 import static org.apache.commons.lang.math.RandomUtils.nextInt;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.api.rules.RuleType.BUG;
 import static org.sonar.db.component.ComponentTesting.newDirectory;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
@@ -93,7 +91,6 @@ public class IssuesActionTest {
     ServerIssue serverIssue = call(project.getKey());
 
     assertThat(serverIssue.getKey()).isEqualTo(issue.getKey());
-    assertThat(serverIssue.getModuleKey()).isEqualTo(module.getKey());
     assertThat(serverIssue.getRuleRepository()).isEqualTo(rule.getRepositoryKey());
     assertThat(serverIssue.getRuleKey()).isEqualTo(rule.getRuleKey());
     assertThat(serverIssue.getStatus()).isEqualTo("OPEN");
@@ -130,7 +127,6 @@ public class IssuesActionTest {
     ServerIssue serverIssue = call(project.getKey());
 
     assertThat(serverIssue.getKey()).isEqualTo(issue.getKey());
-    assertThat(serverIssue.getModuleKey()).isEqualTo(module.getKey());
     assertThat(serverIssue.getRuleRepository()).isEqualTo(rule.getRepositoryKey());
     assertThat(serverIssue.getRuleKey()).isEqualTo(rule.getRuleKey());
     assertThat(serverIssue.getStatus()).isEqualTo("OPEN");
@@ -159,11 +155,11 @@ public class IssuesActionTest {
     try (CloseableIterator<ServerIssue> result = callStream(project.getKey(), null)) {
       assertThat(result)
         .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
+        .extracting(ServerIssue::getKey)
         .containsExactlyInAnyOrder(
-          tuple(issueOnFile.getKey(), module.getKey()),
-          tuple(issueOnModule.getKey(), module.getKey()),
-          tuple(issueOnProject.getKey(), project.getKey()));
+          issueOnFile.getKey(),
+          issueOnModule.getKey(),
+          issueOnProject.getKey());
     }
   }
 
@@ -188,33 +184,12 @@ public class IssuesActionTest {
     try (CloseableIterator<ServerIssue> result = callStream(project.getKey(), null)) {
       assertThat(result)
         .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
+        .extracting(ServerIssue::getKey)
         .containsExactlyInAnyOrder(
-          tuple(issueOnFile.getKey(), module.getKey()),
-          tuple(issueOnModule.getKey(), module.getKey()),
-          tuple(issueOnProject.getKey(), project.getKey()),
-          tuple(issueFromMigratedRule.getKey(), module.getKey()));
-    }
-  }
-
-  @Test
-  public void return_issues_of_module() {
-    RuleDto rule = db.rules().insert();
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto module = db.components().insertComponent(newModuleDto(project));
-    ComponentDto file = db.components().insertComponent(newFileDto(module, null));
-    IssueDto issueOnFile = db.issues().insert(rule, project, file, i -> i.setKee("ON_FILE").setType(randomRuleTypeExceptHotspot()));
-    IssueDto issueOnModule = db.issues().insert(rule, project, module, i -> i.setKee("ON_MODULE").setType(randomRuleTypeExceptHotspot()));
-    IssueDto issueOnProject = db.issues().insert(rule, project, project, i -> i.setKee("ON_PROJECT").setType(randomRuleTypeExceptHotspot()));
-
-    addPermissionTo(project);
-    try (CloseableIterator<ServerIssue> result = callStream(module.getKey(), null)) {
-      assertThat(result)
-        .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
-        .containsExactlyInAnyOrder(
-          tuple(issueOnFile.getKey(), module.getKey()),
-          tuple(issueOnModule.getKey(), module.getKey()));
+          issueOnFile.getKey(),
+          issueOnModule.getKey(),
+          issueOnProject.getKey(),
+          issueFromMigratedRule.getKey());
     }
   }
 
@@ -232,9 +207,8 @@ public class IssuesActionTest {
     try (CloseableIterator<ServerIssue> result = callStream(file.getKey(), null)) {
       assertThat(result)
         .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
-        .containsExactlyInAnyOrder(
-          tuple(issueOnFile.getKey(), module.getKey()));
+        .extracting(ServerIssue::getKey)
+        .containsExactlyInAnyOrder(issueOnFile.getKey());
     }
   }
 
@@ -248,29 +222,7 @@ public class IssuesActionTest {
     IssueDto issueOnFile = db.issues().insert(rule, branch, file, i -> i.setType(randomRuleTypeExceptHotspot()));
     IssueDto issueOnBranch = db.issues().insert(rule, branch, branch, i -> i.setType(randomRuleTypeExceptHotspot()));
 
-    assertResult(project.getKey(), "my_branch",
-      tuple(issueOnFile.getKey(), branch.getKey()),
-      tuple(issueOnBranch.getKey(), branch.getKey()));
-  }
-
-  @Test
-  public void return_issues_by_module_and_branch() {
-    RuleDto rule = db.rules().insert();
-    ComponentDto project = db.components().insertPrivateProject();
-    addPermissionTo(project);
-    ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
-    ComponentDto module = db.components().insertComponent(newModuleDto(branch));
-    ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
-    ComponentDto file = db.components().insertComponent(newFileDto(subModule));
-    IssueDto issueOnFile = db.issues().insert(rule, branch, file, i -> i.setType(randomRuleTypeExceptHotspot()));
-    IssueDto issueOnSubModule = db.issues().insert(rule, branch, subModule, i -> i.setType(randomRuleTypeExceptHotspot()));
-    IssueDto issueOnModule = db.issues().insert(rule, branch, module, i -> i.setType(randomRuleTypeExceptHotspot()));
-
-    assertResult(module.getKey(), "my_branch",
-      tuple(issueOnFile.getKey(), subModule.getKey()),
-      tuple(issueOnSubModule.getKey(), subModule.getKey()),
-      tuple(issueOnModule.getKey(), module.getKey())
-    );
+    assertResult(project.getKey(), "my_branch", issueOnFile.getKey(), issueOnBranch.getKey());
   }
 
   @Test
@@ -284,24 +236,6 @@ public class IssuesActionTest {
       .hasMessage("Component of scope 'DIR' is not allowed");
   }
 
-  @Test
-  public void issues_on_disabled_modules_are_returned() {
-    RuleDto rule = db.rules().insert();
-    ComponentDto project = db.components().insertPrivateProject();
-    ComponentDto module = db.components().insertComponent(newModuleDto(project).setEnabled(false));
-    ComponentDto file = db.components().insertComponent(newFileDto(module, null).setEnabled(false));
-    IssueDto issue = db.issues().insert(rule, project, file, i -> i.setType(randomRuleTypeExceptHotspot()));
-
-    addPermissionTo(project);
-    try (CloseableIterator<ServerIssue> result = callStream(project.getKey(), null)) {
-      // Module key of removed file should be returned
-      assertThat(result)
-        .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
-        .containsExactly(tuple(issue.getKey(), module.getKey()));
-    }
-  }
-
   @Test
   public void fail_if_user_does_not_have_permission_on_project() {
     ComponentDto project = db.components().insertPrivateProject();
@@ -321,12 +255,12 @@ public class IssuesActionTest {
   @Test
   public void fail_if_branch_does_not_exist() {
     ComponentDto project = db.components().insertPrivateProject();
-     db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
+    db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
     addPermissionTo(project);
 
     assertThatThrownBy(() -> {
       tester.newRequest()
-        .setParam("key",project.getKey())
+        .setParam("key", project.getKey())
         .setParam("branch", "does_not_exist")
         .execute();
     })
@@ -352,12 +286,12 @@ public class IssuesActionTest {
     return Protobuf.readStream(request.execute().getInputStream(), ServerIssue.parser());
   }
 
-  private void assertResult(String componentKey, String branch, Tuple... tuples) {
+  private void assertResult(String componentKey, String branch, String... issueKeys) {
     try (CloseableIterator<ServerIssue> result = callStream(componentKey, branch)) {
       assertThat(result)
         .toIterable()
-        .extracting(ServerIssue::getKey, ServerIssue::getModuleKey)
-        .containsExactlyInAnyOrder(tuples);
+        .extracting(ServerIssue::getKey)
+        .containsExactlyInAnyOrder(issueKeys);
     }
   }