From: Sébastien Lesaint Date: Thu, 21 May 2015 13:44:14 +0000 (+0200) Subject: SONAR-6568 add LanguageRepository X-Git-Tag: 5.2-RC1~1859 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1528580c9b9e8397b6bdfdefa22f60b37340c097;p=sonarqube.git SONAR-6568 add LanguageRepository quality profile events computation requires to access the Language in the container --- diff --git a/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/PersistFileSourcesStepTest.java b/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/PersistFileSourcesStepTest.java index c18ee881aed..1f6d704cf76 100644 --- a/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/PersistFileSourcesStepTest.java +++ b/server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/PersistFileSourcesStepTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.sonar.api.config.Settings; import org.sonar.api.utils.System2; import org.sonar.api.utils.internal.Uuids; import org.sonar.batch.protocol.Constants; @@ -79,7 +80,7 @@ public class PersistFileSourcesStepTest { long start = System.currentTimeMillis(); PersistFileSourcesStep step = new PersistFileSourcesStep(dbClient, System2.INSTANCE, dbComponentsRefCache); - step.execute(new ComputationContext(new BatchReportReader(reportDir), "PROJECT_KEY")); + step.execute(new ComputationContext(new BatchReportReader(reportDir), "PROJECT_KEY", new Settings())); long end = System.currentTimeMillis(); long duration = end - start; diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContainer.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContainer.java index 32525bf6cb4..6be59fd467b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContainer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContainer.java @@ -19,6 +19,9 @@ */ package org.sonar.server.computation; +import java.util.Arrays; +import java.util.List; + import org.sonar.core.issue.db.UpdateConflictResolver; import org.sonar.core.platform.ComponentContainer; import org.sonar.server.computation.component.ComputeComponentsRefCache; @@ -30,14 +33,12 @@ import org.sonar.server.computation.issue.RuleCacheLoader; import org.sonar.server.computation.issue.ScmAccountCache; import org.sonar.server.computation.issue.ScmAccountCacheLoader; import org.sonar.server.computation.issue.SourceLinesCache; +import org.sonar.server.computation.language.PlatformLanguageRepository; import org.sonar.server.computation.measure.MetricCache; import org.sonar.server.computation.step.ComputationSteps; import org.sonar.server.platform.Platform; import org.sonar.server.view.index.ViewIndex; -import java.util.Arrays; -import java.util.List; - public class ComputationContainer { /** @@ -46,6 +47,9 @@ public class ComputationContainer { */ static List componentClasses() { return Arrays.asList( + // context-scope repositories + PlatformLanguageRepository.class, + ComputationService.class, ComputationSteps.class, diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContext.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContext.java index 28ad3baea3a..77cb3847907 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContext.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationContext.java @@ -24,8 +24,6 @@ import org.sonar.api.config.Settings; import org.sonar.batch.protocol.output.BatchReport; import org.sonar.batch.protocol.output.BatchReportReader; -import static com.google.common.base.Preconditions.checkState; - public class ComputationContext { private final BatchReportReader reportReader; @@ -33,11 +31,12 @@ public class ComputationContext { private final String projectKey; // cache of metadata as it's frequently accessed private final BatchReport.Metadata reportMetadata; - private Settings projectSettings; + private final Settings projectSettings; - public ComputationContext(BatchReportReader reportReader, String projectKey) { + public ComputationContext(BatchReportReader reportReader, String projectKey, Settings projectSettings) { this.reportReader = reportReader; this.projectKey = projectKey; + this.projectSettings = projectSettings; this.reportMetadata = reportReader.readMetadata(); } @@ -57,8 +56,4 @@ public class ComputationContext { return projectSettings; } - public void setProjectSettings(Settings projectSettings) { - checkState(this.projectSettings == null, "can't set project settings twice"); - this.projectSettings = projectSettings; - } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java index 6d19500eed0..698b883eaac 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java @@ -22,6 +22,7 @@ package org.sonar.server.computation; import com.google.common.base.Throwables; import org.apache.commons.io.FileUtils; +import org.sonar.api.config.Settings; import org.sonar.api.server.ServerSide; import org.sonar.api.utils.System2; import org.sonar.api.utils.TempFolder; @@ -81,8 +82,8 @@ public class ComputationService { try { File reportDir = extractReportInDir(item); BatchReportReader reader = new BatchReportReader(reportDir); - ComputationContext context = new ComputationContext(reader, projectKey); - context.setProjectSettings(projectSettingsFactory.newProjectSettings(projectKey)); + Settings projectSettings = projectSettingsFactory.newProjectSettings(projectKey); + ComputationContext context = new ComputationContext(reader, projectKey, projectSettings); for (ComputationStep step : steps.orderedSteps()) { Profiler stepProfiler = Profiler.createIfDebug(LOG).startDebug(step.getDescription()); step.execute(context); diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/language/LanguageRepository.java b/server/sonar-server/src/main/java/org/sonar/server/computation/language/LanguageRepository.java new file mode 100644 index 00000000000..14eae04d92f --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/language/LanguageRepository.java @@ -0,0 +1,27 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.server.computation.language; + +import com.google.common.base.Optional; +import org.sonar.api.resources.Language; + +public interface LanguageRepository { + Optional find(String languageKey); +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/language/PlatformLanguageRepository.java b/server/sonar-server/src/main/java/org/sonar/server/computation/language/PlatformLanguageRepository.java new file mode 100644 index 00000000000..7199c0e8a82 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/language/PlatformLanguageRepository.java @@ -0,0 +1,59 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.server.computation.language; + +import com.google.common.base.Function; +import com.google.common.base.Optional; +import java.util.Collections; +import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.sonar.api.resources.Language; + +import static com.google.common.base.Predicates.notNull; +import static com.google.common.collect.Iterables.filter; +import static com.google.common.collect.Maps.uniqueIndex; +import static java.util.Arrays.asList; + +/** + * Implementation of {@link LanguageRepository} which find {@link Language} instances available in the container. + */ +public class PlatformLanguageRepository implements LanguageRepository { + + private final Map languagesByKey; + + public PlatformLanguageRepository(@Nullable Language... languages) { + this.languagesByKey = languages == null ? Collections.emptyMap() : uniqueIndex(filter(asList(languages), notNull()), LanguageToKey.INSTANCE); + } + + @Override + public Optional find(String languageKey) { + return Optional.fromNullable(languagesByKey.get(languageKey)); + } + + private enum LanguageToKey implements Function { + INSTANCE; + + @Override + public String apply(@Nonnull Language input) { + return input.getKey(); + } + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/language/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/computation/language/package-info.java new file mode 100644 index 00000000000..7558295915e --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/language/package-info.java @@ -0,0 +1,24 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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. + */ + +@ParametersAreNonnullByDefault +package org.sonar.server.computation.language; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationContextTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationContextTest.java deleted file mode 100644 index e005666d046..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationContextTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube 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. - * - * SonarQube 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.server.computation; - -import org.junit.Test; -import org.sonar.api.config.Settings; -import org.sonar.batch.protocol.output.BatchReportReader; - -import static org.mockito.Mockito.mock; - -public class ComputationContextTest { - - ComputationContext sut = new ComputationContext(mock(BatchReportReader.class), "ProjectKey"); - - @Test(expected = IllegalStateException.class) - public void setProjectSettings() { - sut.setProjectSettings(mock(Settings.class)); - sut.setProjectSettings(mock(Settings.class)); - } -} diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/language/PlatformLanguageRepositoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/language/PlatformLanguageRepositoryTest.java new file mode 100644 index 00000000000..5206ab67701 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/language/PlatformLanguageRepositoryTest.java @@ -0,0 +1,77 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube 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. + * + * SonarQube 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.server.computation.language; + +import com.google.common.base.Optional; +import org.junit.Test; +import org.sonar.api.resources.Language; + +import static org.assertj.core.api.Assertions.assertThat; + +public class PlatformLanguageRepositoryTest { + + private static final String ANY_KEY = "Any_Key"; + private static final String SOME_LANGUAGE_KEY = "SoMe language_Key"; + private static final Language SOME_LANGUAGE = createLanguage(SOME_LANGUAGE_KEY, "_name"); + + @Test(expected = IllegalArgumentException.class) + public void constructor_fails_is_language_have_the_same_key() throws Exception { + new PlatformLanguageRepository(createLanguage(SOME_LANGUAGE_KEY, " 1"), createLanguage(SOME_LANGUAGE_KEY, " 2")); + } + + @Test + public void find_on_empty_LanguageRepository_returns_absent() throws Exception { + assertThat(new PlatformLanguageRepository().find(ANY_KEY).isPresent()).isFalse(); + } + + @Test + public void find_by_key_returns_the_same_object() throws Exception { + PlatformLanguageRepository languageRepository = new PlatformLanguageRepository(SOME_LANGUAGE); + Optional language = languageRepository.find(SOME_LANGUAGE_KEY); + assertThat(language.isPresent()).isTrue(); + assertThat(language.get()).isSameAs(SOME_LANGUAGE); + } + + @Test + public void find_by_other_key_returns_absent() throws Exception { + PlatformLanguageRepository languageRepository = new PlatformLanguageRepository(SOME_LANGUAGE); + Optional language = languageRepository.find(ANY_KEY); + assertThat(language.isPresent()).isFalse(); + } + + private static Language createLanguage(final String key, final String nameSuffix) { + return new Language() { + @Override + public String getKey() { + return key; + } + + @Override + public String getName() { + return key + nameSuffix; + } + + @Override + public String[] getFileSuffixes() { + return new String[0]; + } + }; + } +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedComponentsCacheStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedComponentsCacheStepTest.java index 97f8300a8ed..def1b081758 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedComponentsCacheStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/FeedComponentsCacheStepTest.java @@ -26,6 +26,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; import org.sonar.batch.protocol.output.BatchReportReader; @@ -59,6 +60,8 @@ public class FeedComponentsCacheStepTest extends BaseStepTest { DbClient dbClient; + Settings projectSettings; + ComputeComponentsRefCache computeComponentsRefCache; FeedComponentsCacheStep sut; @@ -72,6 +75,7 @@ public class FeedComponentsCacheStepTest extends BaseStepTest { reportDir = temp.newFolder(); computeComponentsRefCache = new ComputeComponentsRefCache(); + projectSettings = new Settings(); sut = new FeedComponentsCacheStep(dbClient, computeComponentsRefCache); } @@ -112,7 +116,7 @@ public class FeedComponentsCacheStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(computeComponentsRefCache.getByRef(1).getKey()).isEqualTo(PROJECT_KEY); assertThat(computeComponentsRefCache.getByRef(1).getUuid()).isNotNull(); @@ -168,7 +172,7 @@ public class FeedComponentsCacheStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(computeComponentsRefCache.getByRef(4).getKey()).isEqualTo("SUB_MODULE_KEY:src/main/java/dir"); assertThat(computeComponentsRefCache.getByRef(5).getKey()).isEqualTo("SUB_MODULE_KEY:src/main/java/dir/Foo.java"); @@ -209,7 +213,7 @@ public class FeedComponentsCacheStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(computeComponentsRefCache.getByRef(1).getKey()).isEqualTo("PROJECT_KEY:origin/master"); assertThat(computeComponentsRefCache.getByRef(2).getKey()).isEqualTo("MODULE_KEY:origin/master"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexComponentsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexComponentsStepTest.java index be67e9bdd85..8a4bf022854 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexComponentsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexComponentsStepTest.java @@ -22,6 +22,7 @@ package org.sonar.server.computation.step; import org.junit.Rule; import org.junit.Test; +import org.sonar.api.config.Settings; import org.junit.rules.TemporaryFolder; import org.sonar.batch.protocol.output.BatchReport; import org.sonar.batch.protocol.output.BatchReportReader; @@ -62,7 +63,7 @@ public class IndexComponentsStepTest extends BaseStepTest { ComponentDto project = mock(ComponentDto.class); when(project.getId()).thenReturn(123L); - ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY); + ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, new Settings()); sut.execute(context); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexSourceLinesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexSourceLinesStepTest.java index 82376d9146e..771315f5a06 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexSourceLinesStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexSourceLinesStepTest.java @@ -91,7 +91,7 @@ public class IndexSourceLinesStepTest extends BaseStepTest { .setRootComponentRef(1) .build()); - step().execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step().execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, new Settings())); List docs = esTester.getDocuments(SourceLineIndexDefinition.INDEX, SourceLineIndexDefinition.TYPE); assertThat(docs).hasSize(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexTestsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexTestsStepTest.java index 070682a9c5b..fed0a235a6e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexTestsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/IndexTestsStepTest.java @@ -91,7 +91,7 @@ public class IndexTestsStepTest extends BaseStepTest { .setRootComponentRef(1) .build()); - step().execute(new ComputationContext(new BatchReportReader(reportDir), "PROJECT_KEY")); + step().execute(new ComputationContext(new BatchReportReader(reportDir), "PROJECT_KEY", new Settings())); List docs = esTester.getDocuments(TestIndexDefinition.INDEX, TestIndexDefinition.TYPE); assertThat(docs).hasSize(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/ParseReportStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ParseReportStepTest.java index 25279ebebde..53034ed466a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/ParseReportStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ParseReportStepTest.java @@ -23,6 +23,7 @@ import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; import org.sonar.batch.protocol.output.BatchReportReader; @@ -69,7 +70,7 @@ public class ParseReportStepTest extends BaseStepTest { File reportDir = generateReport(); - ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY); + ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, new Settings()); sut.execute(context); assertThat(context.getReportMetadata().getRootComponentRef()).isEqualTo(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistComponentsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistComponentsStepTest.java index 65edea6265a..8ef3b41423a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistComponentsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistComponentsStepTest.java @@ -20,6 +20,7 @@ package org.sonar.server.computation.step; +import java.io.File; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -27,6 +28,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; import org.sonar.batch.protocol.output.BatchReportReader; @@ -42,8 +44,6 @@ import org.sonar.server.computation.component.DbComponentsRefCache; import org.sonar.server.db.DbClient; import org.sonar.test.DbTests; -import java.io.File; - import static org.assertj.core.api.Assertions.assertThat; @Category(DbTests.class) @@ -63,6 +63,7 @@ public class PersistComponentsStepTest extends BaseStepTest { DbClient dbClient; + Settings projectSettings; ComputeComponentsRefCache computeComponentsRefCache; DbComponentsRefCache dbComponentsRefCache; @@ -77,6 +78,7 @@ public class PersistComponentsStepTest extends BaseStepTest { reportDir = temp.newFolder(); computeComponentsRefCache = new ComputeComponentsRefCache(); + projectSettings = new Settings(); dbComponentsRefCache = new DbComponentsRefCache(); sut = new PersistComponentsStep(dbClient, computeComponentsRefCache, dbComponentsRefCache); } @@ -133,7 +135,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setLanguage("java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(4); @@ -223,7 +225,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setPath("pom.xml") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); ComponentDto directory = dbClient.componentDao().selectNullableByKey(session, "PROJECT_KEY:/"); assertThat(directory).isNotNull(); @@ -268,7 +270,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setIsTest(true) .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); ComponentDto file = dbClient.componentDao().selectNullableByKey(session, "PROJECT_KEY:src/test/java/dir/FooTest.java"); assertThat(file).isNotNull(); @@ -324,7 +326,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(4); @@ -403,7 +405,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setPath("src/main/java/dir") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(5); @@ -476,7 +478,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(4); assertThat(dbClient.componentDao().selectNullableByKey(session, PROJECT_KEY).getId()).isEqualTo(project.getId()); @@ -554,7 +556,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setDescription("New module description") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); ComponentDto projectReloaded = dbClient.componentDao().selectNullableByKey(session, PROJECT_KEY); assertThat(projectReloaded.name()).isEqualTo("New project name"); @@ -623,7 +625,7 @@ public class PersistComponentsStepTest extends BaseStepTest { .setPath("src/main/java/dir/Foo.java") .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(5); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistDuplicationsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistDuplicationsStepTest.java index 9137b515fa6..b5689dc7175 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistDuplicationsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistDuplicationsStepTest.java @@ -27,6 +27,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.measures.CoreMetrics; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; @@ -67,6 +68,8 @@ public class PersistDuplicationsStepTest extends BaseStepTest { DbClient dbClient; + Settings projectSettings; + DbComponentsRefCache dbComponentsRefCache; PersistDuplicationsStep sut; @@ -79,6 +82,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { reportDir = temp.newFolder(); + projectSettings = new Settings(); dbComponentsRefCache = new DbComponentsRefCache(); sut = new PersistDuplicationsStep(dbClient, dbComponentsRefCache); } @@ -98,7 +102,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { saveDuplicationMetric(); initReportWithProjectAndFile(); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(0); } @@ -124,7 +128,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(2, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); @@ -184,7 +188,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(3, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); @@ -243,7 +247,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(3, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); @@ -309,7 +313,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(10, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); @@ -345,7 +349,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(2, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); @@ -374,7 +378,7 @@ public class PersistDuplicationsStepTest extends BaseStepTest { .build(); writer.writeComponentDuplications(2, newArrayList(duplication)); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java index de8be139f82..a055d877613 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java @@ -20,6 +20,7 @@ package org.sonar.server.computation.step; +import java.io.File; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -27,6 +28,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.utils.System2; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; @@ -41,8 +43,6 @@ import org.sonar.server.db.DbClient; import org.sonar.server.event.db.EventDao; import org.sonar.test.DbTests; -import java.io.File; - import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -63,6 +63,8 @@ public class PersistEventsStepTest extends BaseStepTest { System2 system2; + Settings projectSettings; + DbComponentsRefCache dbComponentsRefCache; PersistEventsStep step; @@ -76,6 +78,8 @@ public class PersistEventsStepTest extends BaseStepTest { system2 = mock(System2.class); when(system2.now()).thenReturn(1225630680000L); + projectSettings = new Settings(); + dbComponentsRefCache = new DbComponentsRefCache(); step = new PersistEventsStep(dbClient, system2, dbComponentsRefCache); } @@ -109,7 +113,7 @@ public class PersistEventsStepTest extends BaseStepTest { .setType(Constants.ComponentType.PROJECT) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "nothing_to_do_when_no_events_in_report.xml", "events"); } @@ -146,7 +150,7 @@ public class PersistEventsStepTest extends BaseStepTest { ) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "add_events-result.xml", "events"); } @@ -189,7 +193,7 @@ public class PersistEventsStepTest extends BaseStepTest { .build() ).build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "persist_report_events_with_component_children-result.xml", "events"); } @@ -215,7 +219,7 @@ public class PersistEventsStepTest extends BaseStepTest { .setVersion("1.0") .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "add_version_event-result.xml", "events"); } @@ -241,7 +245,7 @@ public class PersistEventsStepTest extends BaseStepTest { .setVersion("1.5-SNAPSHOT") .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "keep_one_event_by_version-result.xml", "events"); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java index fde151e5987..eeb757d4b73 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java @@ -29,6 +29,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.utils.System2; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; @@ -77,6 +78,8 @@ public class PersistFileSourcesStepTest extends BaseStepTest { DbClient dbClient; + Settings projectSettings; + System2 system2; DbComponentsRefCache dbComponentsRefCache; @@ -90,6 +93,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { dbTester.truncateTables(); session = dbTester.myBatis().openSession(false); dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), new FileSourceDao(dbTester.myBatis())); + projectSettings = new Settings(); reportDir = temp.newFolder(); @@ -113,7 +117,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { public void persist_sources() throws Exception { initBasicReport(2); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -156,7 +160,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { .setLines(3) .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -170,7 +174,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { public void persist_source_hashes() throws Exception { initBasicReport(2); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource("FILE"); @@ -192,7 +196,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { .setOverallCoveredConditions(4) .build())); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -225,7 +229,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { .addChangesetIndexByLine(0) .build()); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -251,7 +255,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { .build() )); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -277,7 +281,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { ).build() )); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -309,7 +313,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { .build() )); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -347,7 +351,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { // Sources from the report initBasicReport(1); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -381,7 +385,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { initBasicReport(1); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -412,7 +416,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { initBasicReport(1); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID); @@ -437,7 +441,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { )); try { - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); failBecauseExceptionWasNotThrown(IllegalStateException.class); } catch (IllegalStateException e){ assertThat(e).hasMessage("Cannot persist sources of src/Foo.java").hasCauseInstanceOf(IllegalArgumentException.class); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistMeasuresStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistMeasuresStepTest.java index f158fd33b36..16e9e6a0387 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistMeasuresStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistMeasuresStepTest.java @@ -27,6 +27,9 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; +import org.sonar.api.config.Settings; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.Severity; import org.sonar.api.utils.System2; @@ -176,7 +179,7 @@ public class PersistMeasuresStepTest extends BaseStepTest { .setCharactericId(123456) .build())); - sut.execute(new ComputationContext(new BatchReportReader(dir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(dir), PROJECT_KEY, new Settings())); session.commit(); assertThat(dbTester.countRowsOfTable("project_measures")).isEqualTo(2); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistNumberOfDaysSinceLastCommitStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistNumberOfDaysSinceLastCommitStepTest.java index 3d65c32b8d9..fe09b054623 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistNumberOfDaysSinceLastCommitStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistNumberOfDaysSinceLastCommitStepTest.java @@ -20,11 +20,14 @@ package org.sonar.server.computation.step; +import java.io.File; +import java.util.Date; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.System2; import org.sonar.batch.protocol.Constants; @@ -40,9 +43,6 @@ import org.sonar.server.db.DbClient; import org.sonar.server.measure.persistence.MeasureDao; import org.sonar.server.source.index.SourceLineIndex; -import java.io.File; -import java.util.Date; - import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -60,6 +60,7 @@ public class PersistNumberOfDaysSinceLastCommitStepTest extends BaseStepTest { DbClient dbClient; SourceLineIndex sourceLineIndex; MetricCache metricCache; + Settings projectSettings; DbComponentsRefCache dbComponentsRefCache; @@ -69,6 +70,7 @@ public class PersistNumberOfDaysSinceLastCommitStepTest extends BaseStepTest { dbClient = new DbClient(db.database(), db.myBatis(), new MeasureDao()); sourceLineIndex = mock(SourceLineIndex.class); metricCache = mock(MetricCache.class); + projectSettings = new Settings(); when(metricCache.get(anyString())).thenReturn(new MetricDto().setId(10)); dbComponentsRefCache = new DbComponentsRefCache(); dir = temp.newFolder(); @@ -94,7 +96,7 @@ public class PersistNumberOfDaysSinceLastCommitStepTest extends BaseStepTest { ) .build() ); - ComputationContext context = new ComputationContext(new BatchReportReader(dir), "PROJECT_KEY"); + ComputationContext context = new ComputationContext(new BatchReportReader(dir), "PROJECT_KEY", projectSettings); sut.execute(context); @@ -106,7 +108,7 @@ public class PersistNumberOfDaysSinceLastCommitStepTest extends BaseStepTest { Date sixDaysAgo = DateUtils.addDays(new Date(), -6); when(sourceLineIndex.lastCommitDateOnProject("project-uuid")).thenReturn(sixDaysAgo); initReportWithProjectAndFile(); - ComputationContext context = new ComputationContext(new BatchReportReader(dir), "PROJECT_KEY"); + ComputationContext context = new ComputationContext(new BatchReportReader(dir), "PROJECT_KEY", projectSettings); sut.execute(context); @@ -116,7 +118,7 @@ public class PersistNumberOfDaysSinceLastCommitStepTest extends BaseStepTest { @Test public void no_scm_information_in_report_and_index() { initReportWithProjectAndFile(); - ComputationContext context = new ComputationContext(new BatchReportReader(dir),"PROJECT_KEY"); + ComputationContext context = new ComputationContext(new BatchReportReader(dir),"PROJECT_KEY", projectSettings); sut.execute(context); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistProjectLinksStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistProjectLinksStepTest.java index 97e9d23b147..61031784c55 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistProjectLinksStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistProjectLinksStepTest.java @@ -20,6 +20,8 @@ package org.sonar.server.computation.step; +import java.io.File; +import java.util.Locale; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -27,6 +29,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.i18n.I18n; import org.sonar.batch.protocol.Constants; import org.sonar.batch.protocol.output.BatchReport; @@ -40,9 +43,6 @@ import org.sonar.server.computation.component.DbComponentsRefCache; import org.sonar.server.db.DbClient; import org.sonar.test.DbTests; -import java.io.File; -import java.util.Locale; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown; import static org.mockito.Mockito.mock; @@ -60,6 +60,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { public static DbTester dbTester = new DbTester(); DbSession session; + Settings projectSettings; ComponentLinkDao dao; @@ -73,6 +74,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { public void setup() { session = dbTester.myBatis().openSession(false); dao = new ComponentLinkDao(); + projectSettings = new Settings(); DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), dao); i18n = mock(I18n.class); @@ -128,7 +130,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .addLink(BatchReport.ComponentLink.newBuilder().setType(Constants.ComponentLinkType.SCM).setHref("https://github.com/SonarSource/sonar/server").build()) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "add_links_on_project_and_module-result.xml", "project_links"); } @@ -152,7 +154,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .addLink(BatchReport.ComponentLink.newBuilder().setType(Constants.ComponentLinkType.HOME).setHref("http://www.sonarqube.org").build()) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "nothing_to_do_when_link_already_exists.xml", "project_links"); } @@ -176,7 +178,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .addLink(BatchReport.ComponentLink.newBuilder().setType(Constants.ComponentLinkType.HOME).setHref("http://www.sonarqube.org").build()) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_links")).isEqualTo(0); } @@ -200,7 +202,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .addLink(BatchReport.ComponentLink.newBuilder().setType(Constants.ComponentLinkType.HOME).setHref("http://www.sonarqube.org").build()) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "update_link-result.xml", "project_links"); } @@ -223,7 +225,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .setType(Constants.ComponentType.PROJECT) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbTester.countRowsOfTable("project_links")).isEqualTo(0); } @@ -246,7 +248,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .setType(Constants.ComponentType.PROJECT) .build()); - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); dbTester.assertDbUnit(getClass(), "not_delete_custom_link.xml", "project_links"); } @@ -272,7 +274,7 @@ public class PersistProjectLinksStepTest extends BaseStepTest { .build()); try { - step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + step.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); failBecauseExceptionWasNotThrown(IllegalArgumentException.class); } catch (IllegalArgumentException e) { assertThat(e).hasMessage("Link of type 'homepage' has already been declared on component 'ABCD'"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java index 6cf77c1a94d..9e45fdb347f 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java @@ -20,12 +20,16 @@ package org.sonar.server.computation.step; +import java.io.File; +import java.util.Arrays; +import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.sonar.api.config.Settings; import org.sonar.api.utils.System2; import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; @@ -45,10 +49,6 @@ import org.sonar.server.db.DbClient; import org.sonar.server.source.db.FileSourceDao; import org.sonar.server.source.db.FileSourceDb; -import java.io.File; -import java.util.Arrays; -import java.util.List; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; import static org.mockito.Mockito.mock; @@ -81,6 +81,7 @@ public class PersistTestsStepTest extends BaseStepTest { DbSession session; DbClient dbClient; System2 system2; + Settings projectSettings; long now = 123456789L; @@ -94,6 +95,7 @@ public class PersistTestsStepTest extends BaseStepTest { session = db.myBatis().openSession(false); dbClient = new DbClient(db.database(), db.myBatis(), new FileSourceDao(db.myBatis())); reportDir = temp.newFolder(); + projectSettings = new Settings(); system2 = mock(System2.class); when(system2.now()).thenReturn(now); @@ -117,7 +119,7 @@ public class PersistTestsStepTest extends BaseStepTest { @Test public void no_test_in_database_and_batch_report() { - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1)).isNull(); assertThat(log.logs()).isEmpty(); @@ -135,7 +137,7 @@ public class PersistTestsStepTest extends BaseStepTest { ); writer.writeCoverageDetails(TEST_FILE_REF_1, coverageDetails); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(db.countRowsOfTable("file_sources")).isEqualTo(1); @@ -159,7 +161,7 @@ public class PersistTestsStepTest extends BaseStepTest { writer.writeTests(TEST_FILE_REF_1, Arrays.asList(newTest(1))); writer.writeCoverageDetails(TEST_FILE_REF_1, Arrays.asList(newCoverageDetail(1, MAIN_FILE_REF_1))); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); FileSourceDto dto = dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1); assertThat(dto.getCreatedAt()).isEqualTo(now); @@ -186,7 +188,7 @@ public class PersistTestsStepTest extends BaseStepTest { List batchTests = Arrays.asList(newTest(1)); writer.writeTests(TEST_FILE_REF_1, batchTests); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); FileSourceDto dto = dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1); assertThat(dto.getFileUuid()).isEqualTo(TEST_FILE_UUID_1); @@ -205,7 +207,7 @@ public class PersistTestsStepTest extends BaseStepTest { writer.writeCoverageDetails(TEST_FILE_REF_1, coverageDetails); writer.writeCoverageDetails(TEST_FILE_REF_2, coverageDetails); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); assertThat(log.logs(LoggerLevel.WARN)).hasSize(1); assertThat(log.logs(LoggerLevel.WARN).get(0)).isEqualTo("Some coverage tests are not taken into account during analysis of project 'PROJECT_KEY'"); @@ -223,7 +225,7 @@ public class PersistTestsStepTest extends BaseStepTest { newCoverageDetailWithLines(1, MAIN_FILE_REF_1, 1, 3), newCoverageDetailWithLines(1, MAIN_FILE_REF_1, 2, 4))); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); FileSourceDto dto = dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1); List coveredLines = dto.getTestData().get(0).getCoveredFile(0).getCoveredLineList(); @@ -257,7 +259,7 @@ public class PersistTestsStepTest extends BaseStepTest { writer.writeCoverageDetails(TEST_FILE_REF_1, Arrays.asList(newCoverageDetail)); // ACT - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); // ASSERT FileSourceDto dto = dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PurgeDatastoresStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PurgeDatastoresStepTest.java index 04f6015cb35..efb967031e3 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PurgeDatastoresStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PurgeDatastoresStepTest.java @@ -67,7 +67,7 @@ public class PurgeDatastoresStepTest extends BaseStepTest { .build()); ComponentDto project = mock(ComponentDto.class); - ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY); + ComputationContext context = new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, new Settings()); sut.execute(context); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java index 4b8ca753b75..443f3dc8681 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/SendIssueNotificationsStepTest.java @@ -24,6 +24,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.mockito.Mockito; +import org.sonar.api.config.Settings; import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.notifications.Notification; import org.sonar.api.rule.Severity; @@ -64,6 +65,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { IssueCache issueCache; DbComponentsRefCache dbComponentsRefCache; NewIssuesNotificationFactory newIssuesNotificationFactory = mock(NewIssuesNotificationFactory.class, Mockito.RETURNS_DEEP_STUBS); + Settings projectSettings = new Settings(); SendIssueNotificationsStep sut; File reportDir; @@ -93,7 +95,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { public void do_not_send_notifications_if_no_subscribers() throws IOException { when(notifService.hasProjectSubscribersForTypes(PROJECT_UUID, SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(false); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); verify(notifService, never()).deliver(any(Notification.class)); } @@ -105,7 +107,7 @@ public class SendIssueNotificationsStepTest extends BaseStepTest { when(notifService.hasProjectSubscribersForTypes(PROJECT_UUID, SendIssueNotificationsStep.NOTIF_TYPES)).thenReturn(true); - sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY)); + sut.execute(new ComputationContext(new BatchReportReader(reportDir), PROJECT_KEY, projectSettings)); verify(notifService).deliver(any(NewIssuesNotification.class)); verify(notifService, atLeastOnce()).deliver(any(IssueChangeNotification.class));