From 69ee1a8389e95db1eebee4e683eb2d11f40e3bdd Mon Sep 17 00:00:00 2001 From: David Gageot Date: Mon, 16 Jul 2012 10:10:58 +0200 Subject: [PATCH] Fix measure data not being evicted anymore --- .../java/org/sonar/batch/index/MeasurePersister.java | 6 +++--- .../org/sonar/batch/index/MeasurePersisterTest.java | 10 ++++++++-- .../shouldInsertMeasureWithLargeData-result.xml | 8 +------- .../main/java/org/sonar/core/persistence/MyBatis.java | 3 +++ .../org/sonar/api/database/model/MeasureMapper.java | 2 +- .../org/sonar/api/database/model/MeasureMapper.xml | 8 ++++---- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java index 4ccc106b70a..a03c6c90369 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java +++ b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java @@ -188,7 +188,7 @@ public final class MeasurePersister { for (MeasureModel value : values) { mapper.insert(value); if (value.getMeasureData() != null) { - mapper.insertData(value); + mapper.insertData(value.getMeasureData()); } } @@ -208,7 +208,7 @@ public final class MeasurePersister { mapper.insert(value); if (value.getMeasureData() != null) { - mapper.insertData(value); + mapper.insertData(value.getMeasureData()); } session.commit(); @@ -231,7 +231,7 @@ public final class MeasurePersister { mapper.update(value); mapper.deleteData(value); if (value.getMeasureData() != null) { - mapper.insertData(value); + mapper.insertData(value.getMeasureData()); } session.commit(); 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 26615c99a82..c59dc0e7613 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 @@ -19,6 +19,8 @@ */ package org.sonar.batch.index; +import org.mockito.ArgumentCaptor; + import org.apache.commons.lang.StringUtils; import org.junit.Before; import org.junit.Test; @@ -110,10 +112,14 @@ public class MeasurePersisterTest extends AbstractDaoTestCase { public void should_insert_measure_with_text_data() { setupData("empty"); - measurePersister.saveMeasure(project, new Measure(ncloc()).setData(SHORT)); - measurePersister.saveMeasure(project, new Measure(ncloc()).setData(LONG)); + Measure withLargeData = new Measure(ncloc()).setData(LONG); + measurePersister.saveMeasure(project, withLargeData); checkTables("shouldInsertMeasureWithLargeData", "project_measures", "measure_data"); + + ArgumentCaptor validMeasureModel = ArgumentCaptor.forClass(MeasureModel.class); + verify(memoryOptimizer).evictDataMeasure(eq(withLargeData), validMeasureModel.capture()); + assertThat(validMeasureModel.getValue().getMeasureData().getId()).isNotNull(); } @Test diff --git a/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shouldInsertMeasureWithLargeData-result.xml b/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shouldInsertMeasureWithLargeData-result.xml index c90db3d3f14..77b6b6049a8 100644 --- a/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shouldInsertMeasureWithLargeData-result.xml +++ b/sonar-batch/src/test/resources/org/sonar/batch/index/MeasurePersisterTest/shouldInsertMeasureWithLargeData-result.xml @@ -1,18 +1,12 @@ - - - + diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/MyBatis.java b/sonar-core/src/main/java/org/sonar/core/persistence/MyBatis.java index 543f8f0f31a..e6a62e55356 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/MyBatis.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/MyBatis.java @@ -19,6 +19,8 @@ */ package org.sonar.core.persistence; +import org.sonar.api.database.model.MeasureData; + import ch.qos.logback.classic.Level; import com.google.common.io.Closeables; import org.apache.ibatis.builder.xml.XMLMapperBuilder; @@ -138,6 +140,7 @@ public class MyBatis implements BatchComponent, ServerComponent { loadAlias(conf, "Widget", WidgetDto.class); loadAlias(conf, "WidgetProperty", WidgetPropertyDto.class); loadAlias(conf, "MeasureModel", MeasureModel.class); + loadAlias(conf, "MeasureData", MeasureData.class); Class[] mappers = {ActiveDashboardMapper.class, AuthorMapper.class, FilterMapper.class, CriterionMapper.class, FilterColumnMapper.class, DashboardMapper.class, DependencyMapper.class, DuplicationMapper.class, LoadedTemplateMapper.class, PropertiesMapper.class, PurgeMapper.class, diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/MeasureMapper.java b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/MeasureMapper.java index f9362533a76..e5ca6ecac0e 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/MeasureMapper.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/MeasureMapper.java @@ -22,7 +22,7 @@ package org.sonar.api.database.model; public interface MeasureMapper { void insert(MeasureModel measure); - void insertData(MeasureModel data); + void insertData(MeasureData data); void deleteData(MeasureModel data); diff --git a/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml b/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml index cb892f7009a..bbc0ba808ea 100644 --- a/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml +++ b/sonar-plugin-api/src/main/resources/org/sonar/api/database/model/MeasureMapper.xml @@ -16,9 +16,9 @@ ) - + INSERT INTO measure_data (measure_id, snapshot_id, data) - VALUES (#{id}, #{snapshotId}, #{measureData.data}) + VALUES (#{measure.id}, #{measure.snapshotId}, #{data}) @@ -64,9 +64,9 @@ ) - + INSERT INTO measure_data (id, measure_id, snapshot_id, data) - VALUES (measure_data_seq.NEXTVAL, #{id}, #{snapshotId}, #{measureData.data}) + VALUES (measure_data_seq.NEXTVAL, #{measure.id}, #{measure.snapshotId}, #{data}) -- 2.39.5