From a5fe1c55fd695711edf087fed2e4b437cd25e2b4 Mon Sep 17 00:00:00 2001 From: simonbrandhof Date: Tue, 30 Nov 2010 10:40:19 +0000 Subject: [PATCH] SONAR-249 fix detection of "best value measures" in delayed mode - add unit tests --- .../batch/index/MeasurePersisterTest.java | 32 ++++++++++++++++--- .../index/MeasurePersisterTest/shared.xml | 11 ++++++- .../shouldDelaySaving-result.xml | 14 ++++++-- .../shouldInsertMeasure-result.xml | 10 +++++- ...aySavingWithDatabaseOnlyMeasure-result.xml | 10 +++++- .../shouldUpdateMeasure-result.xml | 10 +++++- 6 files changed, 76 insertions(+), 11 deletions(-) diff --git a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java index 5c556b8a53a..aa7f42a44bb 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java @@ -45,25 +45,34 @@ import static org.mockito.Mockito.when; public class MeasurePersisterTest extends AbstractDbUnitTestCase { + public static final int PROJECT_SNAPSHOT_ID = 3001; + public static final int PACKAGE_SNAPSHOT_ID = 3002; + public static final int FILE_SNAPSHOT_ID = 3003; + public static final int COVERAGE_METRIC_ID = 2; + private ResourcePersister resourcePersister; private MeasurePersister measurePersister; private Project project = new Project("foo"); private JavaPackage aPackage = new JavaPackage("org.foo"); - private Snapshot projectSnapshot, packageSnapshot; + private JavaFile aFile = new JavaFile("org.foo.Bar"); + private Snapshot projectSnapshot, packageSnapshot, fileSnapshot; private Metric ncloc, coverage; @Before public void mockResourcePersister() { setupData("shared"); resourcePersister = mock(ResourcePersister.class); - projectSnapshot = getSession().getSingleResult(Snapshot.class, "id", 3001); - packageSnapshot = getSession().getSingleResult(Snapshot.class, "id", 3002); + projectSnapshot = getSession().getSingleResult(Snapshot.class, "id", PROJECT_SNAPSHOT_ID); + packageSnapshot = getSession().getSingleResult(Snapshot.class, "id", PACKAGE_SNAPSHOT_ID); + fileSnapshot = getSession().getSingleResult(Snapshot.class, "id", FILE_SNAPSHOT_ID); ncloc = getSession().getSingleResult(Metric.class, "key", "ncloc"); coverage = getSession().getSingleResult(Metric.class, "key", "coverage"); when(resourcePersister.saveResource((Project) anyObject(), eq(project))).thenReturn(projectSnapshot); when(resourcePersister.saveResource((Project) anyObject(), eq(aPackage))).thenReturn(packageSnapshot); + when(resourcePersister.saveResource((Project) anyObject(), eq(aFile))).thenReturn(fileSnapshot); when(resourcePersister.getSnapshot(project)).thenReturn(projectSnapshot); when(resourcePersister.getSnapshot(aPackage)).thenReturn(packageSnapshot); + when(resourcePersister.getSnapshot(aFile)).thenReturn(fileSnapshot); measurePersister = new MeasurePersister(getSession(), resourcePersister, new DefaultRuleFinder(getSessionFactory())); } @@ -97,7 +106,7 @@ public class MeasurePersisterTest extends AbstractDbUnitTestCase { measurePersister.dump(); - List coverageMeasures = getSession().getResults(MeasureModel.class, "snapshotId", 3001, "metricId", 1); + List coverageMeasures = getSession().getResults(MeasureModel.class, "snapshotId", PROJECT_SNAPSHOT_ID, "metricId", 1); assertThat(coverageMeasures.size(), is(1)); assertThat(coverageMeasures.get(0).getValue(), is(300.0)); } @@ -147,6 +156,21 @@ public class MeasurePersisterTest extends AbstractDbUnitTestCase { assertThat(MeasurePersister.shouldPersistMeasure(file, measure), is(false)); } + @Test + public void shouldNotSaveBestValueMeasuresInDelayedMode() { + measurePersister.setDelayedMode(true); + + measurePersister.saveMeasure(project, aFile, new Measure(coverage).setValue(100.0)); + + assertThat(getSession().getResults(MeasureModel.class, "metricId", COVERAGE_METRIC_ID, "snapshotId", FILE_SNAPSHOT_ID).size(), is(0)); + + measurePersister.dump(); + + // not saved because it's a best value measure + assertThat(getSession().getResults(MeasureModel.class, "metricId", COVERAGE_METRIC_ID, "snapshotId", FILE_SNAPSHOT_ID).size(), is(0)); + } + + @Test public void shouldNotSaveMemoryOnlyMeasures() { Measure measure = new Measure("ncloc").setPersistenceMode(PersistenceMode.MEMORY); diff --git a/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shared.xml b/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shared.xml index 3a12e1fde0b..86703017b20 100644 --- a/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shared.xml +++ b/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shared.xml @@ -9,10 +9,14 @@ name="project name" long_name="project name" description="project description" enabled="true" language="java" copy_resource_id="[null]" profile_id="[null]"/> - + + @@ -21,6 +25,11 @@ scope="DIR" qualifier="PAC" created_at="2010-12-23 00:00:00.00" version="[null]" path="3001." status="U" islast="false" depth="1" /> + + + - + + + status="U" islast="false" depth="0" /> + status="U" islast="false" depth="1" /> + + - + + @@ -22,6 +26,10 @@ scope="DIR" qualifier="PAC" created_at="2010-12-23 00:00:00.00" version="[null]" path="3001." status="U" islast="false" depth="1" /> + + - + + @@ -22,6 +26,10 @@ scope="DIR" qualifier="PAC" created_at="2010-12-23 00:00:00.00" version="[null]" path="3001." status="U" islast="false" depth="1" /> + + - + + @@ -22,6 +26,10 @@ scope="DIR" qualifier="PAC" created_at="2010-12-23 00:00:00.00" version="[null]" path="3001." status="U" islast="false" depth="1" /> + +