Browse Source

fix wrong dependencies onto package computation.task.projectanalysis

tags/7.5
Sébastien Lesaint 6 years ago
parent
commit
abac7619c3
50 changed files with 237 additions and 407 deletions
  1. 1
    1
      server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
  2. 7
    7
      server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java
  3. 1
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectConfigurationFactory.java
  4. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/component/ConfigurationRepositoryImpl.java
  5. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/formula/counter/RatingValue.java
  6. 1
    0
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepository.java
  7. 70
    5
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryImpl.java
  8. 1
    0
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java
  9. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationCheck.java
  10. 2
    3
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationChecksStep.java
  11. 1
    0
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/MaintainabilityMeasuresVisitor.java
  12. 6
    5
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java
  13. 1
    0
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/RatingSettings.java
  14. 2
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/ReliabilityAndSecurityRatingMeasuresVisitor.java
  15. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java
  16. 2
    3
      server/sonar-server/src/main/java/org/sonar/server/computation/task/step/ComputationStep.java
  17. 7
    7
      server/sonar-server/src/main/java/org/sonar/server/measure/DebtRatingGrid.java
  18. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/measure/Rating.java
  19. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/measure/live/IssueMetricFormula.java
  20. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/measure/live/IssueMetricFormulaFactoryImpl.java
  21. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveMeasureComputerImpl.java
  22. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/measure/live/MeasureMatrix.java
  23. 23
    0
      server/sonar-server/src/main/java/org/sonar/server/measure/package-info.java
  24. 0
    2
      server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java
  25. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java
  26. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java
  27. 6
    8
      server/sonar-server/src/main/java/org/sonar/server/rule/ExternalRuleCreator.java
  28. 2
    40
      server/sonar-server/src/main/java/org/sonar/server/rule/NewExternalRule.java
  29. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java
  30. 1
    2
      server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java
  31. 19
    22
      server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java
  32. 1
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectConfigurationFactoryTest.java
  33. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/component/ConfigurationRepositoryTest.java
  34. 5
    5
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/formula/counter/RatingValueTest.java
  35. 1
    0
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryImplTest.java
  36. 1
    0
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryRule.java
  37. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/measure/BestValueOptimizationTest.java
  38. 2
    4
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationChecksStepTest.java
  39. 5
    3
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/MaintainabilityMeasuresVisitorTest.java
  40. 4
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java
  41. 6
    5
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java
  42. 6
    5
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/ReliabilityAndSecurityRatingMeasuresVisitorTest.java
  43. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistExternalRulesStepTest.java
  44. 6
    6
      server/sonar-server/src/test/java/org/sonar/server/measure/DebtRatingGridTest.java
  45. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/measure/live/IssueMetricFormulaFactoryImplTest.java
  46. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java
  47. 20
    22
      server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java
  48. 0
    217
      server/sonar-server/src/test/java/org/sonar/server/qualitygate/ConditionEvaluatorTest.java
  49. 3
    4
      server/sonar-server/src/test/java/org/sonar/server/rule/ExternalRuleCreatorTest.java
  50. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/rule/NewExternalRuleTest.java

+ 1
- 1
server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java View File

@@ -57,7 +57,7 @@ import org.sonar.ce.platform.CECoreExtensionsInstaller;
import org.sonar.ce.platform.ComputeEngineExtensionInstaller;
import org.sonar.ce.queue.CeQueueCleaner;
import org.sonar.ce.queue.PurgeCeActivities;
import org.sonar.ce.settings.ProjectConfigurationFactory;
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory;
import org.sonar.ce.taskprocessor.CeProcessingScheduler;
import org.sonar.ce.taskprocessor.CeTaskProcessorModule;
import org.sonar.ce.user.CeUserSession;

+ 7
- 7
server/sonar-server/src/main/java/org/sonar/server/badge/ws/MeasureAction.java View File

@@ -38,7 +38,7 @@ import org.sonar.db.component.ComponentDto;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.server.badge.ws.SvgGenerator.Color;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;

@@ -67,12 +67,12 @@ import static org.sonar.server.badge.ws.ETagUtils.getETag;
import static org.sonar.server.badge.ws.SvgFormatter.formatDuration;
import static org.sonar.server.badge.ws.SvgFormatter.formatNumeric;
import static org.sonar.server.badge.ws.SvgFormatter.formatPercent;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.valueOf;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;
import static org.sonar.server.measure.Rating.valueOf;
import static org.sonarqube.ws.MediaTypes.SVG;

public class MeasureAction implements ProjectBadgesWsAction {

server/sonar-server/src/main/java/org/sonar/ce/settings/ProjectConfigurationFactory.java → server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectConfigurationFactory.java View File

@@ -17,7 +17,7 @@
* 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.settings;
package org.sonar.server.computation.task.projectanalysis.analysis;

import org.sonar.api.ce.ComputeEngineSide;
import org.sonar.api.config.Configuration;
@@ -25,7 +25,6 @@ import org.sonar.api.config.Settings;
import org.sonar.api.config.internal.ConfigurationBridge;
import org.sonar.db.DbClient;
import org.sonar.db.component.BranchType;
import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
import org.sonar.server.settings.ChildSettings;

import static org.sonar.db.component.ComponentDto.generateBranchKey;

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/component/ConfigurationRepositoryImpl.java View File

@@ -22,7 +22,7 @@ package org.sonar.server.computation.task.projectanalysis.component;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import org.sonar.api.config.Configuration;
import org.sonar.ce.settings.ProjectConfigurationFactory;
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;

/**

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/formula/counter/RatingValue.java View File

@@ -20,7 +20,7 @@
package org.sonar.server.computation.task.projectanalysis.formula.counter;

import javax.annotation.Nullable;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;

/**
* Convenience class wrapping a rating to compute the value and know it is has ever been set.

+ 1
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepository.java View File

@@ -23,6 +23,7 @@ import java.util.Optional;
import java.util.function.Supplier;
import org.sonar.api.rule.RuleKey;
import org.sonar.db.DbSession;
import org.sonar.server.rule.NewExternalRule;

/**
* Repository of every rule in DB (including manual rules) whichever their status.

+ 70
- 5
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryImpl.java View File

@@ -20,12 +20,17 @@
package org.sonar.server.computation.task.projectanalysis.issue;

import com.google.common.collect.Multimap;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.Supplier;
import javax.annotation.CheckForNull;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rules.RuleType;
import org.sonar.api.server.debt.DebtRemediationFunction;
import org.sonar.core.util.stream.MoreCollectors;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -33,6 +38,7 @@ import org.sonar.db.rule.DeprecatedRuleKeyDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;
import org.sonar.server.rule.ExternalRuleCreator;
import org.sonar.server.rule.NewExternalRule;

import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
@@ -58,7 +64,7 @@ public class RuleRepositoryImpl implements RuleRepository {
ensureInitialized();

if (!rulesByKey.containsKey(ruleKey)) {
rulesByKey.computeIfAbsent(ruleKey, s -> ruleSupplier.get());
rulesByKey.computeIfAbsent(ruleKey, s -> new ExternalRuleWrapper(ruleSupplier.get()));
}
}

@@ -67,12 +73,12 @@ public class RuleRepositoryImpl implements RuleRepository {
ensureInitialized();

rulesByKey.values().stream()
.filter(NewExternalRule.class::isInstance)
.forEach(extRule -> persistAndIndex(dbSession, (NewExternalRule) extRule));
.filter(ExternalRuleWrapper.class::isInstance)
.forEach(extRule -> persistAndIndex(dbSession, (ExternalRuleWrapper) extRule));
}

private void persistAndIndex(DbSession dbSession, NewExternalRule external) {
Rule rule = creator.persistAndIndex(dbSession, external);
private void persistAndIndex(DbSession dbSession, ExternalRuleWrapper external) {
Rule rule = new RuleImpl(creator.persistAndIndex(dbSession, external.getDelegate()));
rulesById.put(rule.getId(), rule);
rulesByKey.put(external.getKey(), rule);
}
@@ -139,4 +145,63 @@ public class RuleRepositoryImpl implements RuleRepository {
}
}

private static class ExternalRuleWrapper implements Rule {
private final NewExternalRule externalRule;

private ExternalRuleWrapper(NewExternalRule externalRule) {
this.externalRule = externalRule;
}

public NewExternalRule getDelegate() {
return externalRule;
}

@Override
public int getId() {
return 0;
}

@Override
public RuleKey getKey() {
return externalRule.getKey();
}

@Override
public String getName() {
return externalRule.getName();
}

@Override
public RuleStatus getStatus() {
return RuleStatus.defaultStatus();
}

@Override
@CheckForNull
public RuleType getType() {
return null;
}

@Override
public boolean isExternal() {
return true;
}

@Override
public Set<String> getTags() {
return Collections.emptySet();
}

@CheckForNull
@Override
public DebtRemediationFunction getRemediationFunction() {
return null;
}

@CheckForNull
@Override
public String getPluginKey() {
return externalRule.getPluginKey();
}
}
}

+ 1
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/TrackerRawInputFactory.java View File

@@ -46,6 +46,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.filter.IssueFilte
import org.sonar.server.computation.task.projectanalysis.qualityprofile.ActiveRulesHolder;
import org.sonar.server.computation.task.projectanalysis.source.SourceLinesHashRepository;
import org.sonar.server.rule.CommonRuleKeys;
import org.sonar.server.rule.NewExternalRule;

import static org.apache.commons.lang.StringUtils.isNotEmpty;


server/sonar-server/src/main/java/org/sonar/server/computation/task/step/PostMeasuresComputationCheck.java → server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationCheck.java View File

@@ -17,7 +17,7 @@
* 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.task.step;
package org.sonar.server.computation.task.projectanalysis.measure;

import org.sonar.api.ExtensionPoint;
import org.sonar.api.ce.ComputeEngineSide;

server/sonar-server/src/main/java/org/sonar/server/computation/task/step/PostMeasuresComputationChecksStep.java → server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationChecksStep.java View File

@@ -17,17 +17,16 @@
* 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.task.step;
package org.sonar.server.computation.task.projectanalysis.measure;

import com.google.common.base.Optional;
import org.sonar.api.ce.ComputeEngineSide;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder;
import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository;
import org.sonar.server.computation.task.projectanalysis.metric.Metric;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository;
import org.sonar.server.computation.task.step.ComputationStep;

/**
* Execute {@link PostMeasuresComputationCheck} instances in no specific order.

+ 1
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/MaintainabilityMeasuresVisitor.java View File

@@ -29,6 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository;
import org.sonar.server.computation.task.projectanalysis.metric.Metric;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository;
import org.sonar.server.measure.Rating;

import static org.sonar.api.measures.CoreMetrics.DEVELOPMENT_COST_KEY;
import static org.sonar.api.measures.CoreMetrics.EFFORT_TO_REACH_MAINTAINABILITY_RATING_A_KEY;

+ 6
- 5
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitor.java View File

@@ -33,6 +33,7 @@ import org.sonar.server.computation.task.projectanalysis.metric.Metric;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository;
import org.sonar.server.computation.task.projectanalysis.period.Period;
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolder;
import org.sonar.server.measure.Rating;

import static org.sonar.api.measures.CoreMetrics.NEW_RELIABILITY_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.NEW_SECURITY_RATING_KEY;
@@ -48,11 +49,11 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon
import static org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit.LEAVES;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;

import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;

/**
* Compute following measures :

+ 1
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/RatingSettings.java View File

@@ -27,6 +27,7 @@ import javax.annotation.concurrent.Immutable;
import org.sonar.api.ce.ComputeEngineSide;
import org.sonar.api.config.Configuration;
import org.sonar.api.utils.MessageException;
import org.sonar.server.measure.DebtRatingGrid;

import static java.lang.String.format;
import static org.sonar.api.CoreProperties.DEVELOPMENT_COST;

+ 2
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/ReliabilityAndSecurityRatingMeasuresVisitor.java View File

@@ -29,6 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.ComponentIssuesRe
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepository;
import org.sonar.server.computation.task.projectanalysis.metric.Metric;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepository;
import org.sonar.server.measure.Rating;

import static org.sonar.api.measures.CoreMetrics.RELIABILITY_RATING_KEY;
import static org.sonar.api.measures.CoreMetrics.SECURITY_RATING_KEY;
@@ -37,7 +38,7 @@ import static org.sonar.api.rules.RuleType.VULNERABILITY;
import static org.sonar.server.computation.task.projectanalysis.component.ComponentVisitor.Order.POST_ORDER;
import static org.sonar.server.computation.task.projectanalysis.component.CrawlerDepthLimit.FILE;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.RATING_BY_SEVERITY;
import static org.sonar.server.measure.Rating.RATING_BY_SEVERITY;

/**
* Compute following measures for projects and descendants:

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ReportComputationSteps.java View File

@@ -25,7 +25,7 @@ import org.sonar.server.computation.task.container.TaskContainer;
import org.sonar.server.computation.task.projectanalysis.filemove.FileMoveDetectionStep;
import org.sonar.server.computation.task.step.ComputationStep;
import org.sonar.server.computation.task.step.ExecuteStatelessInitExtensionsStep;
import org.sonar.server.computation.task.step.PostMeasuresComputationChecksStep;
import org.sonar.server.computation.task.projectanalysis.measure.PostMeasuresComputationChecksStep;

/**
* Ordered list of steps classes and instances to be executed for batch processing

+ 2
- 3
server/sonar-server/src/main/java/org/sonar/server/computation/task/step/ComputationStep.java View File

@@ -19,10 +19,9 @@
*/
package org.sonar.server.computation.task.step;

import org.sonar.server.computation.task.projectanalysis.step.ReportComputationSteps;

/**
* Implementations must be declared into {@link ReportComputationSteps#orderedStepClasses()}
* A way of splitting the processing of a task into smaller items which can be executed sequencially
* by {@link ComputationStepExecutor}.
*/
public interface ComputationStep {


server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/DebtRatingGrid.java → server/sonar-server/src/main/java/org/sonar/server/measure/DebtRatingGrid.java View File

@@ -17,7 +17,7 @@
* 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.task.projectanalysis.qualitymodel;
package org.sonar.server.measure;

import com.google.common.annotations.VisibleForTesting;
import java.util.Arrays;
@@ -29,11 +29,11 @@ import static com.google.common.base.Preconditions.checkState;
import static java.lang.String.format;
import static org.sonar.api.CoreProperties.RATING_GRID;
import static org.sonar.api.CoreProperties.RATING_GRID_DEF_VALUES;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;

public class DebtRatingGrid {

@@ -86,7 +86,7 @@ public class DebtRatingGrid {
}

@VisibleForTesting
double[] getGridValues() {
public double[] getGridValues() {
return gridValues;
}


server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/Rating.java → server/sonar-server/src/main/java/org/sonar/server/measure/Rating.java View File

@@ -17,7 +17,7 @@
* 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.task.projectanalysis.qualitymodel;
package org.sonar.server.measure;

import com.google.common.collect.ImmutableMap;
import java.util.Map;

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/measure/live/IssueMetricFormula.java View File

@@ -24,8 +24,8 @@ import java.util.Optional;
import java.util.function.BiConsumer;
import org.sonar.api.measures.Metric;
import org.sonar.db.component.ComponentDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.DebtRatingGrid;
import org.sonar.server.measure.Rating;

import static java.util.Collections.emptyList;


+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/measure/live/IssueMetricFormulaFactoryImpl.java View File

@@ -27,10 +27,10 @@ import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Metric;
import org.sonar.api.rule.Severity;
import org.sonar.api.rules.RuleType;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;

import static java.util.Arrays.asList;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.RATING_BY_SEVERITY;
import static org.sonar.server.measure.Rating.RATING_BY_SEVERITY;

public class IssueMetricFormulaFactoryImpl implements IssueMetricFormulaFactory {


+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/measure/live/LiveMeasureComputerImpl.java View File

@@ -39,8 +39,8 @@ import org.sonar.db.component.SnapshotDto;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.DebtRatingGrid;
import org.sonar.server.measure.Rating;
import org.sonar.server.es.ProjectIndexer;
import org.sonar.server.es.ProjectIndexers;
import org.sonar.server.qualitygate.EvaluatedQualityGate;

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/measure/live/MeasureMatrix.java View File

@@ -36,7 +36,7 @@ import javax.annotation.Nullable;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;

import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;

+ 23
- 0
server/sonar-server/src/main/java/org/sonar/server/measure/package-info.java View File

@@ -0,0 +1,23 @@
/*
* SonarQube
* Copyright (C) 2009-2018 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.
*/
@ParametersAreNonnullByDefault
package org.sonar.server.measure;

import javax.annotation.ParametersAreNonnullByDefault;

+ 0
- 2
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java View File

@@ -30,7 +30,6 @@ import org.sonar.api.rules.XMLRuleParser;
import org.sonar.api.server.rule.RulesDefinitionXmlLoader;
import org.sonar.ce.CeModule;
import org.sonar.ce.notification.ReportAnalysisFailureNotificationModule;
import org.sonar.ce.settings.ProjectConfigurationFactory;
import org.sonar.core.component.DefaultResourceTypes;
import org.sonar.core.extension.CoreExtensionsInstaller;
import org.sonar.core.platform.ComponentContainer;
@@ -551,7 +550,6 @@ public class PlatformLevel4 extends PlatformLevel {
PlatformEditionProvider.class,

InternalPropertiesImpl.class,
ProjectConfigurationFactory.class,

// UI
NavigationWsModule.class,

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGateConditionsUpdater.java View File

@@ -34,7 +34,7 @@ import org.sonar.db.DbSession;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.qualitygate.QualityGateConditionDto;
import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;
import org.sonar.server.exceptions.NotFoundException;

import static com.google.common.base.Strings.isNullOrEmpty;
@@ -46,7 +46,7 @@ import static java.util.Arrays.stream;
import static org.sonar.api.measures.Metric.ValueType.RATING;
import static org.sonar.api.measures.Metric.ValueType.valueOf;
import static org.sonar.db.qualitygate.QualityGateConditionDto.isOperatorAllowed;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.E;
import static org.sonar.server.qualitygate.ValidRatingMetrics.isCoreRatingMetric;
import static org.sonar.server.ws.WsUtils.checkRequest;


+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/qualitygate/RegisterQualityGates.java View File

@@ -39,7 +39,7 @@ import org.sonar.db.qualitygate.QualityGateConditionDao;
import org.sonar.db.qualitygate.QualityGateConditionDto;
import org.sonar.db.qualitygate.QualityGateDao;
import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;

import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toMap;

+ 6
- 8
server/sonar-server/src/main/java/org/sonar/server/rule/ExternalRuleCreator.java View File

@@ -24,9 +24,7 @@ import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.rule.RuleDao;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule;
import org.sonar.server.computation.task.projectanalysis.issue.Rule;
import org.sonar.server.computation.task.projectanalysis.issue.RuleImpl;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.rule.index.RuleIndexer;

import static org.sonar.api.rule.RuleStatus.READY;
@@ -48,21 +46,21 @@ public class ExternalRuleCreator {
* Persists a rule in the DB and indexes it.
* @return the rule that was inserted in the DB, which <b>includes the generated ID</b>.
*/
public Rule persistAndIndex(DbSession dbSession, NewExternalRule external) {
public RuleDto persistAndIndex(DbSession dbSession, NewExternalRule external) {
RuleDao dao = dbClient.ruleDao();
dao.insert(dbSession, new RuleDefinitionDto()
.setRuleKey(external.getKey())
.setPluginKey(external.getPluginKey())
.setIsExternal(external.isExternal())
.setIsExternal(true)
.setName(external.getName())
.setScope(ALL)
.setStatus(READY)
.setCreatedAt(system2.now())
.setUpdatedAt(system2.now()));

Rule newRule = new RuleImpl(dao.selectOrFailByKey(dbSession, external.getKey()));
ruleIndexer.commitAndIndex(dbSession, newRule.getId());
return newRule;
RuleDto ruleDto = dao.selectOrFailByKey(dbSession, external.getKey());
ruleIndexer.commitAndIndex(dbSession, ruleDto.getId());
return ruleDto;
}

}

server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/NewExternalRule.java → server/sonar-server/src/main/java/org/sonar/server/rule/NewExternalRule.java View File

@@ -17,19 +17,14 @@
* 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.task.projectanalysis.issue;
package org.sonar.server.rule;

import java.util.Collections;
import java.util.Objects;
import java.util.Set;
import javax.annotation.concurrent.Immutable;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rules.RuleType;
import org.sonar.api.server.debt.DebtRemediationFunction;

@Immutable
public class NewExternalRule implements Rule {
public class NewExternalRule {
private final RuleKey key;
private final String name;
private final String pluginKey;
@@ -41,47 +36,14 @@ public class NewExternalRule implements Rule {
this.name = builder.name;
}

@Override
public int getId() {
return 0;
}

@Override
public RuleKey getKey() {
return key;
}

@Override
public String getName() {
return name;
}

@Override
public RuleStatus getStatus() {
return RuleStatus.defaultStatus();
}

@Override
public RuleType getType() {
return null;
}

@Override
public boolean isExternal() {
return true;
}

@Override
public Set<String> getTags() {
return Collections.emptySet();
}

@Override
public DebtRemediationFunction getRemediationFunction() {
return null;
}

@Override
public String getPluginKey() {
return pluginKey;
}

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/badge/ws/MeasureActionTest.java View File

@@ -44,7 +44,7 @@ import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.badge.ws.SvgGenerator.Color;
import org.sonar.server.component.ComponentFinder;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.TestResponse;
import org.sonar.server.ws.WsActionTester;

+ 1
- 2
server/sonar-server/src/test/java/org/sonar/server/component/ws/ProjectMeasuresQueryFactoryTest.java View File

@@ -42,7 +42,6 @@ import static org.sonar.server.component.ws.FilterParser.Operator.IN;
import static org.sonar.server.component.ws.FilterParser.Operator.LT;
import static org.sonar.server.component.ws.FilterParser.Operator.LTE;
import static org.sonar.server.component.ws.ProjectMeasuresQueryFactory.newProjectMeasuresQuery;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.Level.OK;

public class ProjectMeasuresQueryFactoryTest {

@@ -98,7 +97,7 @@ public class ProjectMeasuresQueryFactoryTest {
ProjectMeasuresQuery query = newProjectMeasuresQuery(singletonList(Criterion.builder().setKey("alert_status").setOperator(EQ).setValue("OK").build()),
emptySet());

assertThat(query.getQualityGateStatus().get().name()).isEqualTo(OK.name());
assertThat(query.getQualityGateStatus().get().name()).isEqualTo("OK");
}

@Test

+ 19
- 22
server/sonar-server/src/test/java/org/sonar/server/component/ws/SearchProjectsActionTest.java View File

@@ -83,9 +83,6 @@ import static org.sonar.api.server.ws.WebService.Param.PAGE_SIZE;
import static org.sonar.api.server.ws.WebService.Param.SORT;
import static org.sonar.api.utils.DateUtils.formatDateTime;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.DATA;
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.PERCENT;
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.RATING;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_002;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_003;
@@ -199,7 +196,7 @@ public class SearchProjectsActionTest {
OrganizationDto organization1Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-1").setName("Foo"));
OrganizationDto organization2Dto = db.organizations().insert(dto -> dto.setKey("my-org-key-2").setName("Bar"));

MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organization1Dto, c -> c
.setDbKey(KEY_PROJECT_EXAMPLE_001)
.setName("My Project 1")
@@ -302,7 +299,7 @@ public class SearchProjectsActionTest {
userSession.logIn();
OrganizationDto organization1 = db.organizations().insert();
OrganizationDto organization2 = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
MetricDto ncloc = db.measures().insertMetric(c -> c.setKey(NCLOC).setValueType(INT.name()));
ComponentDto project1 = insertProject(organization1, new Measure(coverage, c -> c.setValue(81d)), new Measure(ncloc, c -> c.setValue(10_000d)));
ComponentDto project2 = insertProject(organization1, new Measure(coverage, c -> c.setValue(80d)), new Measure(ncloc, c -> c.setValue(10_000d)));
@@ -339,7 +336,7 @@ public class SearchProjectsActionTest {
public void filter_projects_by_languages() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name()));
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
ComponentDto project1 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
ComponentDto project2 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=3;xoo=9")));
ComponentDto project3 = insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
@@ -397,7 +394,7 @@ public class SearchProjectsActionTest {
public void filter_projects_by_coverage() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d)));
ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d)));
ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
@@ -411,7 +408,7 @@ public class SearchProjectsActionTest {
public void filter_projects_by_new_coverage() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d)));
ComponentDto project2 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d)));
ComponentDto project3 = insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d)));
@@ -425,7 +422,7 @@ public class SearchProjectsActionTest {
public void filter_projects_by_duplications() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(80d)));
ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(85d)));
ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d)));
@@ -439,8 +436,8 @@ public class SearchProjectsActionTest {
public void filter_projects_by_no_duplication() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
ComponentDto project2 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(0d)));
ComponentDto project3 = insertProject(organizationDto, new Measure(duplications, c -> c.setValue(79d)));
@@ -454,8 +451,8 @@ public class SearchProjectsActionTest {
public void filter_projects_by_no_duplication_should_not_return_projects_with_duplication() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
MetricDto duplications = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
insertProject(organizationDto, new Measure(duplications, c -> c.setValue(10d)), new Measure(coverage, c -> c.setValue(50d)));

SearchProjectsWsResponse result = call(request.setFilter("duplicated_lines_density = NO_DATA"));
@@ -467,7 +464,7 @@ public class SearchProjectsActionTest {
public void filter_projects_by_new_duplications() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto newDuplications = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto newDuplications = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
ComponentDto project1 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(80d)));
ComponentDto project2 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(85d)));
ComponentDto project3 = insertProject(organizationDto, new Measure(newDuplications, c -> c.setVariation(10d)));
@@ -635,7 +632,7 @@ public class SearchProjectsActionTest {
public void return_languages_facet() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name()));
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6;xoo=18")));
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5;xoo=19")));
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("xoo=1")));
@@ -658,7 +655,7 @@ public class SearchProjectsActionTest {
public void return_languages_facet_with_language_having_no_project_if_language_is_in_filter() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType(DATA.name()));
MetricDto languagesDistribution = db.measures().insertMetric(c -> c.setKey(NCLOC_LANGUAGE_DISTRIBUTION_KEY).setValueType("DATA"));
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("<null>=2;java=6")));
insertProject(organizationDto, new Measure(languagesDistribution, c -> c.setValue(null).setData("java=5")));

@@ -723,7 +720,7 @@ public class SearchProjectsActionTest {
public void return_rating_facet(String ratingMetricKey) {
userSession.logIn();
OrganizationDto organization = db.organizations().insert();
MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(ratingMetricKey).setValueType(RATING.name()));
MetricDto ratingMetric = db.measures().insertMetric(c -> c.setKey(ratingMetricKey).setValueType("RATING"));
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d)));
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(1d)));
insertProject(organization, new Measure(ratingMetric, c -> c.setValue(3d)));
@@ -749,7 +746,7 @@ public class SearchProjectsActionTest {
public void return_new_rating_facet(String newRatingMetricKey) {
userSession.logIn();
OrganizationDto organization = db.organizations().insert();
MetricDto newRatingMetric = db.measures().insertMetric(c -> c.setKey(newRatingMetricKey).setValueType(RATING.name()));
MetricDto newRatingMetric = db.measures().insertMetric(c -> c.setKey(newRatingMetricKey).setValueType("RATING"));
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d)));
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(1d)));
insertProject(organization, new Measure(newRatingMetric, c -> c.setVariation(3d)));
@@ -774,7 +771,7 @@ public class SearchProjectsActionTest {
public void return_coverage_facet() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(COVERAGE).setValueType("PERCENT"));
insertProject(organizationDto);
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(80d)));
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(85d)));
@@ -800,7 +797,7 @@ public class SearchProjectsActionTest {
public void return_new_coverage_facet() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_COVERAGE).setValueType("PERCENT"));
insertProject(organizationDto);
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(80d)));
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(85d)));
@@ -826,7 +823,7 @@ public class SearchProjectsActionTest {
public void return_duplications_facet() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(10d)));
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(15d)));
insertProject(organizationDto, new Measure(coverage, c -> c.setValue(5d)));
@@ -852,7 +849,7 @@ public class SearchProjectsActionTest {
public void return_new_duplications_facet() {
userSession.logIn();
OrganizationDto organizationDto = db.organizations().insert();
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType(PERCENT.name()));
MetricDto coverage = db.measures().insertMetric(c -> c.setKey(NEW_DUPLICATED_LINES_DENSITY_KEY).setValueType("PERCENT"));
insertProject(organizationDto);
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(10d)));
insertProject(organizationDto, new Measure(coverage, c -> c.setVariation(15d)));

server/sonar-server/src/test/java/org/sonar/ce/settings/ProjectConfigurationFactoryTest.java → server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/analysis/ProjectConfigurationFactoryTest.java View File

@@ -17,7 +17,7 @@
* 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.settings;
package org.sonar.server.computation.task.projectanalysis.analysis;

import org.junit.Rule;
import org.junit.Test;
@@ -25,7 +25,6 @@ import org.sonar.api.config.Configuration;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.server.computation.task.projectanalysis.analysis.Branch;
import org.sonar.server.computation.task.projectanalysis.component.DefaultBranchImpl;

import static org.assertj.core.api.Assertions.assertThat;

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/component/ConfigurationRepositoryTest.java View File

@@ -25,7 +25,7 @@ import org.junit.Test;
import org.sonar.api.config.Configuration;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.utils.System2;
import org.sonar.ce.settings.ProjectConfigurationFactory;
import org.sonar.server.computation.task.projectanalysis.analysis.ProjectConfigurationFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;

+ 5
- 5
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/formula/counter/RatingValueTest.java View File

@@ -20,13 +20,13 @@
package org.sonar.server.computation.task.projectanalysis.formula.counter;

import org.junit.Test;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;

public class RatingValueTest {


+ 1
- 0
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryImplTest.java View File

@@ -38,6 +38,7 @@ import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
import org.sonar.server.rule.ExternalRuleCreator;
import org.sonar.server.rule.NewExternalRule;
import org.sonar.server.rule.index.RuleIndexer;

import static org.assertj.core.api.Assertions.assertThat;

+ 1
- 0
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/RuleRepositoryRule.java View File

@@ -27,6 +27,7 @@ import java.util.function.Supplier;
import org.junit.rules.ExternalResource;
import org.sonar.api.rule.RuleKey;
import org.sonar.db.DbSession;
import org.sonar.server.rule.NewExternalRule;

import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/measure/BestValueOptimizationTest.java View File

@@ -28,8 +28,8 @@ import org.sonar.server.computation.task.projectanalysis.metric.MetricImpl;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;

public class BestValueOptimizationTest {


server/sonar-server/src/test/java/org/sonar/server/computation/task/step/PostMeasuresComputationChecksStepTest.java → server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/measure/PostMeasuresComputationChecksStepTest.java View File

@@ -17,7 +17,7 @@
* 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.task.step;
package org.sonar.server.computation.task.projectanalysis.measure;

import org.junit.Rule;
import org.junit.Test;
@@ -27,10 +27,8 @@ import org.mockito.InOrder;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolderRule;
import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule;
import org.sonar.server.computation.task.projectanalysis.measure.PostMeasuresComputationCheck.Context;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule;
import org.sonar.server.computation.task.step.PostMeasuresComputationCheck.Context;
import org.sonar.server.project.Project;

import static org.assertj.core.api.Assertions.assertThat;

+ 5
- 3
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/MaintainabilityMeasuresVisitorTest.java View File

@@ -31,6 +31,8 @@ import org.sonar.server.computation.task.projectanalysis.issue.ComponentIssuesRe
import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule;
import org.sonar.server.measure.DebtRatingGrid;
import org.sonar.server.measure.Rating;

import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
@@ -56,9 +58,9 @@ import static org.sonar.server.computation.task.projectanalysis.component.Report
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.entryOf;
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.toEntries;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.E;

public class MaintainabilityMeasuresVisitorTest {


+ 4
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewMaintainabilityMeasuresVisitorTest.java View File

@@ -43,6 +43,8 @@ import org.sonar.server.computation.task.projectanalysis.period.Period;
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolderRule;
import org.sonar.server.computation.task.projectanalysis.scm.Changeset;
import org.sonar.server.computation.task.projectanalysis.scm.ScmInfoRepositoryRule;
import org.sonar.server.measure.DebtRatingGrid;
import org.sonar.server.measure.Rating;

import static com.google.common.base.Preconditions.checkArgument;
import static org.mockito.Mockito.mock;
@@ -63,8 +65,8 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT;
import static org.sonar.server.computation.task.projectanalysis.measure.Measure.newMeasureBuilder;
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureAssert.assertThat;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.D;

public class NewMaintainabilityMeasuresVisitorTest {


+ 6
- 5
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/NewReliabilityAndSecurityRatingMeasuresVisitorTest.java View File

@@ -39,6 +39,7 @@ import org.sonar.server.computation.task.projectanalysis.measure.MeasureReposito
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule;
import org.sonar.server.computation.task.projectanalysis.period.Period;
import org.sonar.server.computation.task.projectanalysis.period.PeriodHolderRule;
import org.sonar.server.measure.Rating;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.api.issue.Issue.RESOLUTION_FIXED;
@@ -60,11 +61,11 @@ import static org.sonar.server.computation.task.projectanalysis.component.Compon
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT;
import static org.sonar.server.computation.task.projectanalysis.component.ReportComponent.builder;

import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;

public class NewReliabilityAndSecurityRatingMeasuresVisitorTest {


+ 6
- 5
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/ReliabilityAndSecurityRatingMeasuresVisitorTest.java View File

@@ -37,6 +37,7 @@ import org.sonar.server.computation.task.projectanalysis.issue.FillComponentIssu
import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.computation.task.projectanalysis.measure.MeasureRepositoryRule;
import org.sonar.server.computation.task.projectanalysis.metric.MetricRepositoryRule;
import org.sonar.server.measure.Rating;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.api.issue.Issue.RESOLUTION_FIXED;
@@ -61,11 +62,11 @@ import static org.sonar.server.computation.task.projectanalysis.measure.Measure.
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.entryOf;
import static org.sonar.server.computation.task.projectanalysis.measure.MeasureRepoEntry.toEntries;

import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;

public class ReliabilityAndSecurityRatingMeasuresVisitorTest {


+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/PersistExternalRulesStepTest.java View File

@@ -30,7 +30,7 @@ import org.sonar.db.DbTester;
import org.sonar.db.rule.RuleDao;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolderRule;
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule;
import org.sonar.server.rule.NewExternalRule;
import org.sonar.server.computation.task.projectanalysis.issue.RuleRepositoryImpl;
import org.sonar.server.computation.task.step.ComputationStep;
import org.sonar.server.es.EsTester;

server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/qualitymodel/DebtRatingGridTest.java → server/sonar-server/src/test/java/org/sonar/server/measure/DebtRatingGridTest.java View File

@@ -17,7 +17,7 @@
* 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.task.projectanalysis.qualitymodel;
package org.sonar.server.measure;

import org.junit.Before;
import org.junit.Rule;
@@ -25,11 +25,11 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.A;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.B;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.C;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.D;
import static org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating.E;
import static org.sonar.server.measure.Rating.A;
import static org.sonar.server.measure.Rating.B;
import static org.sonar.server.measure.Rating.C;
import static org.sonar.server.measure.Rating.D;
import static org.sonar.server.measure.Rating.E;

public class DebtRatingGridTest {


+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/measure/live/IssueMetricFormulaFactoryImplTest.java View File

@@ -35,8 +35,8 @@ import org.sonar.api.rule.Severity;
import org.sonar.api.rules.RuleType;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.issue.IssueGroupDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.DebtRatingGrid;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.DebtRatingGrid;
import org.sonar.server.measure.Rating;

import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/measure/live/LiveMeasureComputerImplTest.java View File

@@ -47,7 +47,7 @@ import org.sonar.db.component.ComponentTesting;
import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.server.computation.task.projectanalysis.qualitymodel.Rating;
import org.sonar.server.measure.Rating;
import org.sonar.server.es.ProjectIndexer;
import org.sonar.server.es.TestProjectIndexers;
import org.sonar.server.qualitygate.EvaluatedQualityGate;

+ 20
- 22
server/sonar-server/src/test/java/org/sonar/server/measure/ws/ComponentActionTest.java View File

@@ -33,7 +33,6 @@ import org.sonar.db.measure.LiveMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.server.component.TestComponentFinder;
import org.sonar.server.computation.task.projectanalysis.measure.Measure;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
@@ -53,15 +52,14 @@ import static org.sonar.api.web.UserRole.USER;
import static org.sonar.db.component.BranchType.PULL_REQUEST;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newProjectCopy;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_PULL_REQUEST;
import static org.sonar.server.computation.task.projectanalysis.metric.Metric.MetricType.INT;
import static org.sonar.test.JsonAssert.assertJson;
import static org.sonar.server.component.ws.MeasuresWsParameters.DEPRECATED_PARAM_COMPONENT_ID;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_ADDITIONAL_FIELDS;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_BRANCH;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_COMPONENT;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_DEVELOPER_ID;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_METRIC_KEYS;
import static org.sonar.server.component.ws.MeasuresWsParameters.PARAM_PULL_REQUEST;
import static org.sonar.test.JsonAssert.assertJson;

public class ComponentActionTest {

@@ -95,7 +93,7 @@ public class ComponentActionTest {
public void provided_project() {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

ComponentWsResponse response = newRequest(project.getKey(), metric.getKey());

@@ -109,7 +107,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
db.components().insertSnapshot(project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

String response = ws.newRequest()
.setParam(PARAM_COMPONENT, project.getKey())
@@ -128,7 +126,7 @@ public class ComponentActionTest {
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("my_branch"));
SnapshotDto analysis = db.components().insertSnapshot(branch);
ComponentDto file = db.components().insertComponent(newFileDto(branch));
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType(INT.name()));
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType("INT"));
LiveMeasureDto measure = db.measures().insertLiveMeasure(file, complexity, m -> m.setValue(12.0d).setVariation(2.0d));

ComponentWsResponse response = ws.newRequest()
@@ -151,7 +149,7 @@ public class ComponentActionTest {
ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("pr-123").setBranchType(PULL_REQUEST));
SnapshotDto analysis = db.components().insertSnapshot(branch);
ComponentDto file = db.components().insertComponent(newFileDto(branch));
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType(INT.name()));
MetricDto complexity = db.measures().insertMetric(m1 -> m1.setKey("complexity").setValueType("INT"));
LiveMeasureDto measure = db.measures().insertLiveMeasure(file, complexity, m -> m.setValue(12.0d).setVariation(2.0d));

ComponentWsResponse response = ws.newRequest()
@@ -174,7 +172,7 @@ public class ComponentActionTest {
ComponentDto view = db.components().insertView();
db.components().insertSnapshot(view);
ComponentDto projectCopy = db.components().insertComponent(newProjectCopy("project-uuid-copy", project, view));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

ComponentWsResponse response = newRequest(projectCopy.getKey(), metric.getKey());

@@ -187,7 +185,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
db.components().insertSnapshot(project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

ComponentWsResponse response = newRequest(project.getKey(), metric.getKey());

@@ -199,7 +197,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
userSession.addProjectPermission(USER, project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

ComponentWsResponse response = ws.newRequest()
.setParam("componentId", project.uuid())
@@ -214,7 +212,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
userSession.addProjectPermission(USER, project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

ComponentWsResponse response = ws.newRequest()
.setParam("componentKey", project.getKey())
@@ -229,7 +227,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
MetricDto metricWithoutDomain = db.measures().insertMetric(m -> m
.setValueType(Measure.ValueType.INT.name())
.setValueType("INT")
.setDomain(null));
db.measures().insertLiveMeasure(project, metricWithoutDomain);

@@ -251,7 +249,7 @@ public class ComponentActionTest {
ComponentDto file = db.components().insertComponent(newFileDto(project));
userSession.addProjectPermission(UserRole.USER, project);
MetricDto metric = db.measures().insertMetric(m -> m
.setValueType(Measure.ValueType.INT.name())
.setValueType("INT")
.setBestValue(7.0d)
.setOptimizedBestValue(true)
.setDomain(null));
@@ -273,7 +271,7 @@ public class ComponentActionTest {
userSession.addProjectPermission(UserRole.USER, project);
db.components().insertSnapshot(project);

MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("The Developer Cockpit feature has been dropped. The specified developer cannot be found.");
@@ -289,8 +287,8 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject();
userSession.addProjectPermission(UserRole.USER, project);
db.components().insertSnapshot(project);
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType(INT.name()));
db.measures().insertMetric(m -> m.setKey("complexity").setValueType(INT.name()));
db.measures().insertMetric(m -> m.setKey("ncloc").setValueType("INT"));
db.measures().insertMetric(m -> m.setKey("complexity").setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("The following metric keys are not found: unknown-metric, another-unknown-metric");
@@ -315,7 +313,7 @@ public class ComponentActionTest {
userSession.logIn();
ComponentDto project = db.components().insertPrivateProject();
db.components().insertSnapshot(project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(ForbiddenException.class);

@@ -324,7 +322,7 @@ public class ComponentActionTest {

@Test
public void fail_when_component_does_not_exist() {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage("Component key 'project-key' not found");
@@ -340,7 +338,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertPrivateProject(p -> p.setEnabled(false));
userSession.addProjectPermission(UserRole.USER, project);
userSession.addProjectPermission(USER, project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage(String.format("Component key '%s' not found", project.getKey()));
@@ -391,7 +389,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertMainBranch(organization);
userSession.logIn().addProjectPermission(UserRole.USER, project);
ComponentDto branch = db.components().insertProjectBranch(project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage(format("Component key '%s' not found", branch.getDbKey()));
@@ -408,7 +406,7 @@ public class ComponentActionTest {
ComponentDto project = db.components().insertMainBranch(organization);
userSession.logIn().addProjectPermission(UserRole.USER, project);
ComponentDto branch = db.components().insertProjectBranch(project);
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()));
MetricDto metric = db.measures().insertMetric(m -> m.setValueType("INT"));

expectedException.expect(NotFoundException.class);
expectedException.expectMessage(format("Component id '%s' not found", branch.uuid()));

+ 0
- 217
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ConditionEvaluatorTest.java View File

@@ -216,221 +216,4 @@ public class ConditionEvaluatorTest {
}
}

// @Test
// public void testEquals_for_String() {
// Metric metric = createMetric(STRING);
// Measure measure = newMeasureBuilder().create("TEST");
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "TEST"),
// measure)).hasLevel(ERROR).hasValue("TEST");
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "TEST2"),
// measure)).hasLevel(OK).hasValue("TEST");
// }
//
// @Test
//
// public void testNotEquals() {
// Metric metric = createMetric(STRING);
// Measure measure = newMeasureBuilder().create("TEST");
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "TEST"),
// measure)).hasLevel(OK).hasValue("TEST");
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "TEST2"),
// measure)).hasLevel(ERROR).hasValue("TEST");
// }
//
// @Test
// public void testEquals_Percent() {
// Metric metric = createMetric(PERCENT);
// Measure measure = newMeasureBuilder().create(10.2d, 1, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"),
// measure)).hasLevel(ERROR).hasValue(10.2d);
// }
//
// @Test
// public void testEquals_Float() {
// Metric metric = createMetric(PERCENT);
// Measure measure = newMeasureBuilder().create(10.2d, 1, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"),
// measure)).hasLevel(ERROR).hasValue(10.2d);
// }
//
// @Test
// public void testEquals_Int() {
// Metric metric = createMetric(INT);
// Measure measure = newMeasureBuilder().create(10, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10"), measure)).hasLevel(ERROR).hasValue(10);
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"),
// measure)).hasLevel(ERROR).hasValue(10);
// }
//
// @Test
// public void testEquals_Level() {
// Metric metric = createMetric(LEVEL);
// Measure measure = newMeasureBuilder().create(ERROR);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, ERROR.name()),
// measure)).hasLevel(ERROR).hasValue(ERROR.name());
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, OK.name()),
// measure)).hasLevel(OK).hasValue(ERROR.name());
// }
//
// @Test
// public void testNotEquals_Level() {
// Metric metric = createMetric(LEVEL);
// Measure measure = newMeasureBuilder().create(ERROR);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, OK.name()),
// measure)).hasLevel(ERROR).hasValue(ERROR.name());
// }
//
// @Test
// public void testEquals_BOOL() {
// Metric metric = createMetric(BOOL);
// Measure measure = newMeasureBuilder().create(false, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "1"), measure)).hasLevel(OK).hasValue(false);
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "0"),
// measure)).hasLevel(ERROR).hasValue(false);
// }
//
// @Test
// public void testNotEquals_BOOL() {
// Metric metric = createMetric(BOOL);
// Measure measure = newMeasureBuilder().create(false, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "1"),
// measure)).hasLevel(ERROR).hasValue(false);
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, NOT_EQUALS, "0"),
// measure)).hasLevel(OK).hasValue(false);
// }
//
// @Test
// public void getLevel_throws_IEA_if_error_threshold_is_not_parsable_boolean() {
// Metric metric = createMetric(BOOL);
// Measure measure = newMeasureBuilder().create(false, null);
//
// expectedException.expect(IllegalArgumentException.class);
// expectedException.expectMessage("Quality Gate: Unable to parse value 'polop' to compare against name");
//
// underTest.evaluate(createErrorCondition(metric, EQUALS, "polop"), measure);
// }
//
// @Test
// public void testEquals_work_duration() {
// Metric metric = createMetric(WORK_DUR);
// Measure measure = newMeasureBuilder().create(60l, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "60"), measure)).hasLevel(ERROR);
// }
//
// @Test
// public void getLevel_throws_IEA_if_error_threshold_is_not_parsable_long() {
// Metric metric = createMetric(WORK_DUR);
// Measure measure = newMeasureBuilder().create(60l, null);
//
// expectedException.expect(IllegalArgumentException.class);
// expectedException.expectMessage("Quality Gate: Unable to parse value 'polop' to compare against name");
//
// underTest.evaluate(createErrorCondition(metric, EQUALS, "polop"), measure);
// }
//
// @Test
// public void testErrorAndWarningLevel() {
// Metric metric = createMetric(FLOAT);
// Measure measure = newMeasureBuilder().create(10.2d, 1, null);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), measure)).hasLevel(ERROR);
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.1"), measure)).hasLevel(OK);
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// EQUALS.getDbValue(), "10.3", "10.2", false), measure)).hasLevel(Measure.Level.WARN);
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// LESS_THAN.getDbValue(), "10.3", "10.2", false), measure)).hasLevel(Measure.Level.ERROR);
// }
//
// @Test
// public void condition_is_always_ok_when_measure_is_noValue() {
// for (Metric.MetricType metricType : from(asList(values())).filter(not(in(ImmutableSet.of(DATA, LEVEL))))) {
// Metric metric = createMetric(metricType);
// Measure measure = newMeasureBuilder().createNoValue();
//
// EvaluationResultAssert.assertThat(underTest.evaluate(createErrorCondition(metric, EQUALS, "10.2"), measure)).hasLevel(OK);
// }
// }
//
// @Test
// public void testUnsupportedType() {
// Metric metric = createMetric(DATA);
// Measure measure = newMeasureBuilder().create("3.14159265358");
//
// expectedException.expect(IllegalArgumentException.class);
// expectedException.expectMessage("Conditions on MetricType DATA are not supported");
//
// underTest.evaluate(createErrorCondition(metric, EQUALS, "1.60217657"), measure);
// }
//
// @Test
// public void condition_on_period() {
// for (Metric.MetricType metricType : ImmutableList.of(FLOAT, INT, WORK_DUR)) {
// Metric metric = createMetric(metricType);
// Measure measure = newMeasureBuilder().setVariation(3d).createNoValue();
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "3", null, true), measure)).hasLevel(OK);
// }
// }
//
// @Test
// public void condition_on_period_without_value_is_OK() {
// Metric metric = createMetric(FLOAT);
// Measure measure = newMeasureBuilder().createNoValue();
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "3", null, true), measure)).hasLevel(OK).hasValue(null);
// }
//
// @Test
// public void condition_on_rating() throws Exception {
// Metric metric = createMetric(RATING);
// Measure measure = newMeasureBuilder().create(4, "D");
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "4", null, false), measure)).hasLevel(OK).hasValue(4);
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "2", null, false), measure)).hasLevel(ERROR).hasValue(4);
// }
//
// @Test
// public void condition_on_rating_on_leak_period() throws Exception {
// Metric metric = createMetric(RATING);
// Measure measure = newMeasureBuilder().setVariation(4d).createNoValue();
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "5", null, true), measure)).hasLevel(OK).hasValue(4);
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "2", null, true), measure)).hasLevel(ERROR).hasValue(4);
// }
//
// @Test
// public void condition_on_rating_on_leak_period_when_variation_is_zero() throws Exception {
// Metric metric = createMetric(RATING);
// Measure measure = newMeasureBuilder().setVariation(0d).createNoValue();
//
// EvaluationResultAssert.assertThat(underTest.evaluate(new org.sonar.server.computation.task.projectanalysis.qualitygate.Condition(metric,
// GREATER_THAN.getDbValue(), "4", null, true), measure)).hasLevel(OK).hasValue(0);
// }
//
// private static org.sonar.server.computation.task.projectanalysis.qualitygate.Condition createErrorCondition(Metric metric,
// org.sonar.server.computation.task.projectanalysis.qualitygate.Condition.Operator operator, String errorThreshold) {
// return new Condition(metric, operator.getDbValue(), errorThreshold, null, false);
// }
//
// private static MetricImpl createMetric(Metric.MetricType metricType) {
// return new MetricImpl(1, "key", "name", metricType);
// }
}

+ 3
- 4
server/sonar-server/src/test/java/org/sonar/server/rule/ExternalRuleCreatorTest.java View File

@@ -24,8 +24,7 @@ import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.System2;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.server.computation.task.projectanalysis.issue.NewExternalRule;
import org.sonar.server.computation.task.projectanalysis.issue.Rule;
import org.sonar.db.rule.RuleDto;
import org.sonar.server.es.EsTester;
import org.sonar.server.rule.index.RuleIndexer;

@@ -51,7 +50,7 @@ public class ExternalRuleCreatorTest {
.setName("name")
.build();

Rule rule1 = underTest.persistAndIndex(dbSession, externalRule);
RuleDto rule1 = underTest.persistAndIndex(dbSession, externalRule);

assertThat(rule1).isNotNull();
assertThat(rule1.isExternal()).isTrue();
@@ -59,7 +58,7 @@ public class ExternalRuleCreatorTest {
assertThat(rule1.getKey()).isEqualTo(ruleKey);
assertThat(rule1.getPluginKey()).isEqualTo("eslint");
assertThat(rule1.getName()).isEqualTo("name");
assertThat(rule1.getType()).isNull();
assertThat(rule1.getType()).isEqualTo(0);
}

}

server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/NewExternalRuleTest.java → server/sonar-server/src/test/java/org/sonar/server/rule/NewExternalRuleTest.java View File

@@ -17,7 +17,7 @@
* 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.task.projectanalysis.issue;
package org.sonar.server.rule;

import org.junit.Test;
import org.junit.rules.ExpectedException;

Loading…
Cancel
Save