diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2019-10-23 15:33:39 -0500 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2020-01-31 20:46:09 +0100 |
commit | ace9a50d55d831ec71b7db421aa04d1198392c6c (patch) | |
tree | 3bf598bfe3f760d45310b2a65d014a53370a9930 /server/sonar-ce-task-projectanalysis | |
parent | 1ff9a01fd6e822793ef223f9ce259b15d17eecc4 (diff) | |
download | sonarqube-ace9a50d55d831ec71b7db421aa04d1198392c6c.tar.gz sonarqube-ace9a50d55d831ec71b7db421aa04d1198392c6c.zip |
SONAR-12689 Separate storage of projects/apps from their components and branches
Diffstat (limited to 'server/sonar-ce-task-projectanalysis')
17 files changed, 237 insertions, 36 deletions
diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ProjectPersister.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ProjectPersister.java new file mode 100644 index 00000000000..645ca0ddb73 --- /dev/null +++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/component/ProjectPersister.java @@ -0,0 +1,74 @@ +/* + * SonarQube + * Copyright (C) 2009-2020 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.ce.task.projectanalysis.component; + +import org.apache.commons.lang.StringUtils; +import org.sonar.api.utils.System2; +import org.sonar.db.DbClient; +import org.sonar.db.DbSession; +import org.sonar.db.project.ProjectDto; + +/** + * Creates or updates the data in table {@code PROJECTS} for the current root. + */ +public class ProjectPersister { + private final DbClient dbClient; + private final TreeRootHolder treeRootHolder; + private final System2 system2; + + public ProjectPersister(DbClient dbClient, TreeRootHolder treeRootHolder, System2 system2) { + this.dbClient = dbClient; + this.treeRootHolder = treeRootHolder; + this.system2 = system2; + } + + public void persist(DbSession dbSession) { + if (shouldSkip(treeRootHolder.getRoot())) { + return; + } + + ProjectDto dbProjectDto = dbClient.projectDao().selectProjectByKey(dbSession, treeRootHolder.getRoot().getKey()) + .orElseThrow(() -> new IllegalStateException("Project has been deleted by end-user during analysis")); + ProjectDto projectDto = toProjectDto(treeRootHolder.getRoot()); + + if (hasChanged(dbProjectDto, projectDto)) { + // insert or update in projects table + dbClient.projectDao().update(dbSession, projectDto); + } + } + + private boolean shouldSkip(Component rootComponent) { + return !rootComponent.getType().equals(Component.Type.PROJECT) && !rootComponent.getType().equals(Component.Type.PROJECT_VIEW); + } + + private boolean hasChanged(ProjectDto dbProject, ProjectDto newProject) { + return !StringUtils.equals(dbProject.getName(), newProject.getName()) || + !StringUtils.equals(dbProject.getDescription(), newProject.getDescription()); + } + + private ProjectDto toProjectDto(Component root) { + ProjectDto projectDto = new ProjectDto(); + projectDto.setUuid(root.getUuid()); + projectDto.setName(root.getName()); + projectDto.setDescription(root.getDescription()); + projectDto.setUpdatedAt(system2.now()); + return projectDto; + } +} diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/container/ProjectAnalysisTaskContainerPopulator.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/container/ProjectAnalysisTaskContainerPopulator.java index 6a5e0d89229..c9107ed7d00 100644 --- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/container/ProjectAnalysisTaskContainerPopulator.java +++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/container/ProjectAnalysisTaskContainerPopulator.java @@ -34,6 +34,7 @@ import org.sonar.ce.task.projectanalysis.component.BranchPersisterImpl; import org.sonar.ce.task.projectanalysis.component.ConfigurationRepositoryImpl; import org.sonar.ce.task.projectanalysis.component.DbIdsRepositoryImpl; import org.sonar.ce.task.projectanalysis.component.DisabledComponentsHolderImpl; +import org.sonar.ce.task.projectanalysis.component.ProjectPersister; import org.sonar.ce.task.projectanalysis.component.ReferenceBranchComponentUuids; import org.sonar.ce.task.projectanalysis.component.ReportModulesPath; import org.sonar.ce.task.projectanalysis.component.SiblingComponentsWithOpenIssues; @@ -284,6 +285,7 @@ public final class ProjectAnalysisTaskContainerPopulator implements ContainerPop BaseIssuesLoader.class, IssueTrackingDelegator.class, BranchPersisterImpl.class, + ProjectPersister.class, SiblingsIssuesLoader.class, SiblingsIssueMerger.class, NewCodePeriodResolver.class, diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStep.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStep.java index f53c5ad1ca0..2ed3f307a52 100644 --- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStep.java +++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStep.java @@ -44,6 +44,7 @@ import org.sonar.ce.task.projectanalysis.component.MutableDisabledComponentsHold import org.sonar.ce.task.projectanalysis.component.PathAwareCrawler; import org.sonar.ce.task.projectanalysis.component.PathAwareVisitor; import org.sonar.ce.task.projectanalysis.component.PathAwareVisitorAdapter; +import org.sonar.ce.task.projectanalysis.component.ProjectPersister; import org.sonar.ce.task.projectanalysis.component.TreeRootHolder; import org.sonar.ce.task.step.ComputationStep; import org.sonar.core.util.stream.MoreCollectors; @@ -71,11 +72,12 @@ public class PersistComponentsStep implements ComputationStep { private final MutableDisabledComponentsHolder disabledComponentsHolder; private final AnalysisMetadataHolder analysisMetadataHolder; private final BranchPersister branchPersister; + private final ProjectPersister projectPersister; public PersistComponentsStep(DbClient dbClient, TreeRootHolder treeRootHolder, MutableDbIdsRepository dbIdsRepository, System2 system2, MutableDisabledComponentsHolder disabledComponentsHolder, AnalysisMetadataHolder analysisMetadataHolder, - BranchPersister branchPersister) { + BranchPersister branchPersister, ProjectPersister projectPersister) { this.dbClient = dbClient; this.treeRootHolder = treeRootHolder; this.dbIdsRepository = dbIdsRepository; @@ -83,6 +85,7 @@ public class PersistComponentsStep implements ComputationStep { this.disabledComponentsHolder = disabledComponentsHolder; this.analysisMetadataHolder = analysisMetadataHolder; this.branchPersister = branchPersister; + this.projectPersister = projectPersister; } @Override @@ -94,6 +97,7 @@ public class PersistComponentsStep implements ComputationStep { public void execute(ComputationStep.Context context) { try (DbSession dbSession = dbClient.openSession(false)) { branchPersister.persist(dbSession); + projectPersister.persist(dbSession); String projectUuid = treeRootHolder.getRoot().getUuid(); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/BranchPersisterImplTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/BranchPersisterImplTest.java index 730f0324343..4359d0d8950 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/BranchPersisterImplTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/BranchPersisterImplTest.java @@ -105,7 +105,7 @@ public class BranchPersisterImplTest { // add project and branch in table PROJECTS ComponentDto mainComponent = ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert(), MAIN.getUuid()).setDbKey(MAIN.getKey()); - ComponentDto component = ComponentTesting.newProjectBranch(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); + ComponentDto component = ComponentTesting.newBranchComponent(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); dbTester.getDbClient().componentDao().insert(dbTester.getSession(), mainComponent, component); dbTester.commit(); // set project in metadata @@ -117,7 +117,7 @@ public class BranchPersisterImplTest { dbTester.getSession().commit(); - assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(2); + assertThat(dbTester.countRowsOfTable("components")).isEqualTo(2); Optional<BranchDto> branchDto = dbTester.getDbClient().branchDao().selectByUuid(dbTester.getSession(), BRANCH1.getUuid()); assertThat(branchDto).isPresent(); assertThat(branchDto.get().getBranchType()).isEqualTo(BRANCH); @@ -131,7 +131,7 @@ public class BranchPersisterImplTest { public void main_branch_is_excluded_from_branch_purge_by_default() { analysisMetadataHolder.setBranch(createBranch(BRANCH, true, "master")); treeRootHolder.setRoot(MAIN); - dbTester.components().insertMainBranch(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); + dbTester.components().insertPublicProject(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); dbTester.commit(); underTest.persist(dbTester.getSession()); @@ -146,8 +146,8 @@ public class BranchPersisterImplTest { analysisMetadataHolder.setBranch(createBranch(BRANCH, false, "BRANCH_KEY")); treeRootHolder.setRoot(BRANCH1); - ComponentDto mainComponent = dbTester.components().insertMainBranch(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); - ComponentDto component = ComponentTesting.newProjectBranch(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); + ComponentDto mainComponent = dbTester.components().insertPublicProject(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); + ComponentDto component = ComponentTesting.newBranchComponent(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); dbTester.getDbClient().componentDao().insert(dbTester.getSession(), component); dbTester.commit(); @@ -163,8 +163,8 @@ public class BranchPersisterImplTest { analysisMetadataHolder.setBranch(createBranch(BRANCH, false, "BRANCH_KEY")); treeRootHolder.setRoot(BRANCH1); - ComponentDto mainComponent = dbTester.components().insertMainBranch(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); - ComponentDto component = ComponentTesting.newProjectBranch(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); + ComponentDto mainComponent = dbTester.components().insertPublicProject(p -> p.setDbKey(MAIN.getDbKey()).setUuid(MAIN.getUuid())); + ComponentDto component = ComponentTesting.newBranchComponent(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(BRANCH)); dbTester.getDbClient().componentDao().insert(dbTester.getSession(), component); dbTester.commit(); @@ -188,7 +188,7 @@ public class BranchPersisterImplTest { // add project and branch in table PROJECTS ComponentDto mainComponent = ComponentTesting.newPrivateProjectDto(dbTester.organizations().insert(), MAIN.getUuid()).setDbKey(MAIN.getKey()); - ComponentDto component = ComponentTesting.newProjectBranch(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(PULL_REQUEST)); + ComponentDto component = ComponentTesting.newBranchComponent(mainComponent, new BranchDto().setUuid(BRANCH1.getUuid()).setKey(BRANCH1.getKey()).setBranchType(PULL_REQUEST)); dbTester.getDbClient().componentDao().insert(dbTester.getSession(), mainComponent, component); dbTester.commit(); // set project in metadata @@ -201,7 +201,7 @@ public class BranchPersisterImplTest { dbTester.getSession().commit(); - assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(2); + assertThat(dbTester.countRowsOfTable("components")).isEqualTo(2); Optional<BranchDto> branchDto = dbTester.getDbClient().branchDao().selectByUuid(dbTester.getSession(), BRANCH1.getUuid()); assertThat(branchDto).isPresent(); assertThat(branchDto.get().getBranchType()).isEqualTo(PULL_REQUEST); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ConfigurationRepositoryTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ConfigurationRepositoryTest.java index b40925e9e88..6c8b5144e8c 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ConfigurationRepositoryTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ConfigurationRepositoryTest.java @@ -121,7 +121,7 @@ public class ConfigurationRepositoryTest { @Test public void branch_settings() { - ComponentDto project = db.components().insertMainBranch(); + ComponentDto project = db.components().insertPublicProject(); ComponentDto branchDto = db.components().insertProjectBranch(project); Branch branch = mock(Branch.class); when(branch.getName()).thenReturn(branchDto.getBranch()); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ProjectPersisterTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ProjectPersisterTest.java new file mode 100644 index 00000000000..af89af4648a --- /dev/null +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ProjectPersisterTest.java @@ -0,0 +1,115 @@ +/* + * SonarQube + * Copyright (C) 2009-2020 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.ce.task.projectanalysis.component; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.sonar.api.impl.utils.TestSystem2; +import org.sonar.api.utils.System2; +import org.sonar.ce.task.projectanalysis.analysis.AnalysisMetadataHolderRule; +import org.sonar.db.DbTester; +import org.sonar.db.project.ProjectDto; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; +import static org.sonar.ce.task.projectanalysis.component.Component.Type.PROJECT; +import static org.sonar.ce.task.projectanalysis.component.Component.Type.VIEW; +import static org.sonar.ce.task.projectanalysis.component.ReportComponent.builder; + +public class ProjectPersisterTest { + private final static Component ROOT = builder(PROJECT, 1) + .setUuid("PROJECT_UUID") + .setKey("PROJECT_KEY") + .setDescription("PROJECT_DESC") + .setName("PROJECT_NAME") + .build(); + + @Rule + public AnalysisMetadataHolderRule analysisMetadataHolder = new AnalysisMetadataHolderRule(); + @Rule + public DbTester dbTester = DbTester.create(System2.INSTANCE); + @Rule + public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); + @Rule + public ExpectedException exception = ExpectedException.none(); + public TestSystem2 system2 = new TestSystem2(); + + private ProjectPersister underTest = new ProjectPersister(dbTester.getDbClient(), treeRootHolder, system2); + + @Before + public void prepare() { + treeRootHolder.setRoot(ROOT); + system2.setNow(1000L); + } + + @Test + public void skip_portfolios() { + Component root = ViewsComponent.builder(VIEW, 1).build(); + TreeRootHolder treeRootHolder = mock(TreeRootHolder.class); + when(treeRootHolder.getRoot()).thenReturn(root); + new ProjectPersister(dbTester.getDbClient(), treeRootHolder, system2).persist(dbTester.getSession()); + verify(treeRootHolder).getRoot(); + verifyNoMoreInteractions(treeRootHolder); + + } + + @Test + public void update_description() { + ProjectDto p1 = dbTester.components().insertPublicProjectDto(dbTester.getDefaultOrganization(), + c -> c.setUuid("PROJECT_UUID").setDbKey(ROOT.getKey()).setName(ROOT.getName()).setDescription("OLD_DESC")); + + assertProject("OLD_DESC", ROOT.getName(), p1.getUpdatedAt()); + underTest.persist(dbTester.getSession()); + assertProject(ROOT.getDescription(), ROOT.getName(), 1000L); + } + + @Test + public void update_name() { + ProjectDto p1 = dbTester.components().insertPublicProjectDto(dbTester.getDefaultOrganization(), + c -> c.setUuid("PROJECT_UUID").setDbKey(ROOT.getKey()).setName("OLD_NAME").setDescription(ROOT.getDescription())); + + assertProject(ROOT.getDescription(), "OLD_NAME", p1.getUpdatedAt()); + underTest.persist(dbTester.getSession()); + assertProject(ROOT.getDescription(), ROOT.getName(), 1000L); + } + + @Test + public void dont_update() { + ProjectDto p1 = dbTester.components().insertPublicProjectDto(dbTester.getDefaultOrganization(), + c -> c.setUuid("PROJECT_UUID").setDbKey(ROOT.getKey()).setName(ROOT.getName()).setDescription(ROOT.getDescription())); + + assertProject(ROOT.getDescription(), ROOT.getName(), p1.getUpdatedAt()); + underTest.persist(dbTester.getSession()); + assertProject(ROOT.getDescription(), ROOT.getName(), p1.getUpdatedAt()); + } + + private void assertProject(String description, String name, long updated) { + assertThat(dbTester.getDbClient().projectDao().selectProjectByKey(dbTester.getSession(), ROOT.getKey()).get()) + .extracting(ProjectDto::getName, ProjectDto::getDescription, ProjectDto::getUpdatedAt) + .containsExactly(name, description, updated); + + } +} diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ReferenceBranchComponentUuidsTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ReferenceBranchComponentUuidsTest.java index 7f04822a3d2..dd4b8d83478 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ReferenceBranchComponentUuidsTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/ReferenceBranchComponentUuidsTest.java @@ -62,7 +62,7 @@ public class ReferenceBranchComponentUuidsTest { analysisMetadataHolder.setProject(project); analysisMetadataHolder.setBranch(branch); - ComponentDto projectDto = db.components().insertMainBranch(); + ComponentDto projectDto = db.components().insertPublicProject(); when(project.getUuid()).thenReturn(projectDto.uuid()); branch1 = db.components().insertProjectBranch(projectDto, b -> b.setKey("branch1")); branch2 = db.components().insertProjectBranch(projectDto, b -> b.setKey("branch2")); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/SiblingComponentsWithOpenIssuesTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/SiblingComponentsWithOpenIssuesTest.java index 6079985d17a..bce2e086cd8 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/SiblingComponentsWithOpenIssuesTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/component/SiblingComponentsWithOpenIssuesTest.java @@ -63,7 +63,7 @@ public class SiblingComponentsWithOpenIssuesTest { @Before public void setUp() { - ComponentDto project = db.components().insertMainBranch(); + ComponentDto project = db.components().insertPublicProject(); branch1 = db.components().insertProjectBranch(project, b -> b.setKey("branch1"), b -> b.setBranchType(BranchType.BRANCH)); branch1pr1 = db.components().insertProjectBranch(project, @@ -157,7 +157,7 @@ public class SiblingComponentsWithOpenIssuesTest { @Test public void should_find_sibling_components_with_open_issues_from_pullrequest() { - ComponentDto project = db.components().insertMainBranch(); + ComponentDto project = db.components().insertPublicProject(); setRoot(project); setBranch(BranchType.BRANCH); @@ -176,7 +176,7 @@ public class SiblingComponentsWithOpenIssuesTest { @Test public void should_not_find_sibling_components_on_derived_branch() { - ComponentDto project = db.components().insertMainBranch(); + ComponentDto project = db.components().insertPublicProject(); setRoot(project); setBranch(BranchType.BRANCH); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/ProjectTrackerBaseLazyInputTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/ProjectTrackerBaseLazyInputTest.java index f6f23259141..740c4f0f592 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/ProjectTrackerBaseLazyInputTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/ProjectTrackerBaseLazyInputTest.java @@ -74,7 +74,7 @@ public class ProjectTrackerBaseLazyInputTest { public void prepare() { rule = dbTester.rules().insert(); ruleRepositoryRule.add(rule.getKey()); - rootProjectDto = dbTester.components().insertMainBranch(); + rootProjectDto = dbTester.components().insertPublicProject(); ReportComponent rootProject = ReportComponent.builder(Component.Type.FILE, 1) .setKey(rootProjectDto.getDbKey()) .setUuid(rootProjectDto.uuid()).build(); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssueMergerTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssueMergerTest.java index 3d0ac23eda5..5df924d9aa7 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssueMergerTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssueMergerTest.java @@ -109,7 +109,7 @@ public class SiblingsIssueMergerTest { copier = new SiblingsIssueMerger(new SiblingsIssuesLoader(new SiblingComponentsWithOpenIssues(treeRootHolder, metadataHolder, dbClient), dbClient, componentIssuesLoader), tracker, issueLifecycle); - projectDto = db.components().insertMainBranch(p -> p.setDbKey(PROJECT_KEY).setUuid(PROJECT_UUID)); + projectDto = db.components().insertPublicProject(p -> p.setDbKey(PROJECT_KEY).setUuid(PROJECT_UUID)); branch1Dto = db.components().insertProjectBranch(projectDto, b -> b.setKey("myBranch1") .setBranchType(BranchType.PULL_REQUEST) .setMergeBranchUuid(projectDto.uuid())); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/BuildComponentTreeStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/BuildComponentTreeStepTest.java index 148aaa2f448..3c5307a120a 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/BuildComponentTreeStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/BuildComponentTreeStepTest.java @@ -196,7 +196,7 @@ public class BuildComponentTreeStepTest { @Test public void generate_keys_when_using_existing_branch() { - ComponentDto projectDto = dbTester.components().insertMainBranch(); + ComponentDto projectDto = dbTester.components().insertPublicProject(); ComponentDto branchDto = dbTester.components().insertProjectBranch(projectDto); Branch branch = mock(Branch.class); when(branch.getName()).thenReturn(branchDto.getBranch()); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/LoadPeriodsStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/LoadPeriodsStepTest.java index 104674857b0..b58ffb3c481 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/LoadPeriodsStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/LoadPeriodsStepTest.java @@ -103,7 +103,7 @@ public class LoadPeriodsStepTest extends BaseStepTest { @Before public void setUp() { organization = dbTester.organizations().insert(); - project = dbTester.components().insertMainBranch(organization); + project = dbTester.components().insertPublicProject(organization); when(analysisMetadataHolder.isBranch()).thenReturn(true); when(analysisMetadataHolder.isFirstAnalysis()).thenReturn(false); @@ -241,7 +241,7 @@ public class LoadPeriodsStepTest extends BaseStepTest { @Test public void throw_ISE_when_specific_analysis_is_set_but_does_not_exist_in_DB() { OrganizationDto organization = dbTester.organizations().insert(); - ComponentDto project = dbTester.components().insertMainBranch(organization); + ComponentDto project = dbTester.components().insertPublicProject(organization); setProjectPeriod(project.uuid(), NewCodePeriodType.SPECIFIC_ANALYSIS, "nonexistent"); setupRoot(project); @@ -253,7 +253,7 @@ public class LoadPeriodsStepTest extends BaseStepTest { @Test public void throw_ISE_when_specific_analysis_is_set_but_does_not_belong_to_current_project() { - ComponentDto otherProject = dbTester.components().insertMainBranch(organization); + ComponentDto otherProject = dbTester.components().insertPublicProject(organization); SnapshotDto otherProjectAnalysis = dbTester.components().insertSnapshot(otherProject); setBranchPeriod(project.uuid(), project.uuid(), NewCodePeriodType.SPECIFIC_ANALYSIS, otherProjectAnalysis.getUuid()); setupRoot(project); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStepTest.java index 905d47fb769..d4da264cdc2 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistComponentsStepTest.java @@ -28,6 +28,7 @@ import org.sonar.ce.task.projectanalysis.component.BranchPersister; import org.sonar.ce.task.projectanalysis.component.Component; import org.sonar.ce.task.projectanalysis.component.MutableDbIdsRepository; import org.sonar.ce.task.projectanalysis.component.MutableDisabledComponentsHolder; +import org.sonar.ce.task.projectanalysis.component.ProjectPersister; import org.sonar.ce.task.projectanalysis.component.TreeRootHolder; import org.sonar.ce.task.step.TestComputationStepContext; import org.sonar.db.DbClient; @@ -69,6 +70,7 @@ public class PersistComponentsStepTest { System2.INSTANCE, mock(MutableDisabledComponentsHolder.class), mock(AnalysisMetadataHolder.class), - mock(BranchPersister.class)).execute(new TestComputationStepContext()); + mock(BranchPersister.class), + mock(ProjectPersister.class)).execute(new TestComputationStepContext()); } } diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistComponentsStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistComponentsStepTest.java index e666a663eae..71f2cbcf44a 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistComponentsStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistComponentsStepTest.java @@ -38,6 +38,7 @@ import org.sonar.ce.task.projectanalysis.component.DefaultBranchImpl; import org.sonar.ce.task.projectanalysis.component.FileAttributes; import org.sonar.ce.task.projectanalysis.component.MutableDbIdsRepositoryRule; import org.sonar.ce.task.projectanalysis.component.MutableDisabledComponentsHolder; +import org.sonar.ce.task.projectanalysis.component.ProjectPersister; import org.sonar.ce.task.projectanalysis.component.ReportComponent; import org.sonar.ce.task.projectanalysis.component.TreeRootHolderRule; import org.sonar.ce.task.step.ComputationStep; @@ -95,7 +96,8 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { db.organizations().insertForUuid(ORGANIZATION_UUID); BranchPersister branchPersister = mock(BranchPersister.class); - underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder, branchPersister); + ProjectPersister projectPersister = mock(ProjectPersister.class); + underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder, branchPersister, projectPersister); } @Override @@ -123,7 +125,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { underTest.execute(new TestComputationStepContext()); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); ComponentDto directoryDto = dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir").get(); assertThat(directoryDto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); @@ -185,7 +187,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { underTest.execute(new TestComputationStepContext()); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); ComponentDto directoryDto = dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir").get(); assertThat(directoryDto.getOrganizationUuid()).isEqualTo(ORGANIZATION_UUID); @@ -365,7 +367,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { underTest.execute(new TestComputationStepContext()); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); ComponentDto projectReloaded = dbClient.componentDao().selectByKey(db.getSession(), project.getDbKey()).get(); assertThat(projectReloaded.getId()).isEqualTo(project.getId()); @@ -414,7 +416,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { underTest.execute(new TestComputationStepContext()); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); assertThat(dbClient.componentDao().selectByKey(db.getSession(), project.getDbKey()).get().getId()).isEqualTo(project.getId()); assertThat(dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir").get().getId()).isEqualTo(directory.getId()); assertThat(dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir/Foo.java").get().getId()).isEqualTo(file.getId()); @@ -476,7 +478,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { dbClient.componentDao().applyBChangesForRootComponentUuid(db.getSession(), project.uuid()); db.commit(); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); ComponentDto directoryReloaded = dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir").get(); assertThat(directoryReloaded).isNotNull(); @@ -548,7 +550,7 @@ public class ReportPersistComponentsStepTest extends BaseStepTest { underTest.execute(new TestComputationStepContext()); - assertThat(db.countRowsOfTable("projects")).isEqualTo(3); + assertThat(db.countRowsOfTable("components")).isEqualTo(3); assertThat(dbClient.componentDao().selectByKey(db.getSession(), project.getDbKey()).get().getId()).isEqualTo(project.getId()); assertThat(dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir").get().getId()).isEqualTo(removedDirectory.getId()); assertThat(dbClient.componentDao().selectByKey(db.getSession(), "PROJECT_KEY:src/main/java/dir/Foo.java").get().getId()).isEqualTo(removedFile.getId()); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SendIssueNotificationsStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SendIssueNotificationsStepTest.java index 2c34348cc4f..11be48ed072 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SendIssueNotificationsStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/SendIssueNotificationsStepTest.java @@ -101,7 +101,7 @@ import static org.sonar.db.component.BranchType.PULL_REQUEST; import static org.sonar.db.component.ComponentTesting.newBranchDto; import static org.sonar.db.component.ComponentTesting.newFileDto; import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto; -import static org.sonar.db.component.ComponentTesting.newProjectBranch; +import static org.sonar.db.component.ComponentTesting.newBranchComponent; import static org.sonar.db.issue.IssueTesting.newIssue; import static org.sonar.db.organization.OrganizationTesting.newOrganizationDto; import static org.sonar.db.rule.RuleTesting.newRule; @@ -560,7 +560,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { private void sendIssueChangeNotificationOnBranch(long issueCreatedAt) { ComponentDto project = newPrivateProjectDto(newOrganizationDto()); - ComponentDto branch = newProjectBranch(project, newBranchDto(project).setKey(BRANCH_NAME)); + ComponentDto branch = newBranchComponent(project, newBranchDto(project).setKey(BRANCH_NAME)); ComponentDto file = newFileDto(branch); treeRootHolder.setRoot(builder(Type.PROJECT, 2).setKey(branch.getDbKey()).setPublicKey(branch.getKey()).setName(branch.longName()).setUuid(branch.uuid()).addChildren( builder(Type.FILE, 11).setKey(file.getDbKey()).setPublicKey(file.getKey()).setName(file.longName()).build()).build()); @@ -692,7 +692,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { } private ComponentDto setUpBranch(ComponentDto project, BranchType branchType) { - ComponentDto branch = newProjectBranch(project, newBranchDto(project, branchType).setKey(BRANCH_NAME)); + ComponentDto branch = newBranchComponent(project, newBranchDto(project, branchType).setKey(BRANCH_NAME)); ComponentDto file = newFileDto(branch); treeRootHolder.setRoot(builder(Type.PROJECT, 2).setKey(branch.getDbKey()).setPublicKey(branch.getKey()).setName(branch.longName()).setUuid(branch.uuid()).addChildren( builder(Type.FILE, 11).setKey(file.getDbKey()).setPublicKey(file.getKey()).setName(file.longName()).build()).build()); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStepTest.java index f6ede0e98a1..42a52d6d3a5 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ValidateProjectStepTest.java @@ -69,7 +69,7 @@ public class ValidateProjectStepTest { @Test public void fail_if_pr_is_targeting_branch_with_modules() { - ComponentDto masterProject = dbTester.components().insertMainBranch(); + ComponentDto masterProject = dbTester.components().insertPublicProject(); ComponentDto mergeBranch = dbTester.components().insertProjectBranch(masterProject, b -> b.setKey("mergeBranch")); dbClient.componentDao().insert(dbTester.getSession(), ComponentTesting.newModuleDto(mergeBranch)); setBranch(BranchType.PULL_REQUEST, mergeBranch.uuid()); @@ -86,7 +86,7 @@ public class ValidateProjectStepTest { @Test public void dont_fail_for_long_forked_from_master_with_modules() { - ComponentDto masterProject = dbTester.components().insertMainBranch(); + ComponentDto masterProject = dbTester.components().insertPublicProject(); dbClient.componentDao().insert(dbTester.getSession(), ComponentTesting.newModuleDto(masterProject)); setBranch(BranchType.BRANCH, masterProject.uuid()); dbTester.getSession().commit(); diff --git a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistComponentsStepTest.java b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistComponentsStepTest.java index 11e583ccc27..fe5c7f40f8e 100644 --- a/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistComponentsStepTest.java +++ b/server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ViewsPersistComponentsStepTest.java @@ -36,6 +36,7 @@ import org.sonar.ce.task.projectanalysis.component.Component; import org.sonar.ce.task.projectanalysis.component.DefaultBranchImpl; import org.sonar.ce.task.projectanalysis.component.MutableDbIdsRepositoryRule; import org.sonar.ce.task.projectanalysis.component.MutableDisabledComponentsHolder; +import org.sonar.ce.task.projectanalysis.component.ProjectPersister; import org.sonar.ce.task.projectanalysis.component.ProjectViewAttributes; import org.sonar.ce.task.projectanalysis.component.SubViewAttributes; import org.sonar.ce.task.projectanalysis.component.TreeRootHolderRule; @@ -104,7 +105,8 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { dbTester.organizations().insertForUuid(ORGANIZATION_UUID); analysisMetadataHolder.setBranch(new DefaultBranchImpl()); BranchPersister branchPersister = mock(BranchPersister.class); - underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder, branchPersister); + ProjectPersister projectPersister = mock(ProjectPersister.class); + underTest = new PersistComponentsStep(dbClient, treeRootHolder, dbIdsRepository, system2, disabledComponentsHolder, analysisMetadataHolder, branchPersister, projectPersister); } @Override @@ -482,7 +484,7 @@ public class ViewsPersistComponentsStepTest extends BaseStepTest { } private void assertRowsCountInTableProjects(int rowCount) { - assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(rowCount); + assertThat(dbTester.countRowsOfTable("components")).isEqualTo(rowCount); } private void assertDtoNotUpdated(String componentKey) { |