From 1eb0636088b70e8d744074fc6bccee8561c27c1c Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Tue, 10 May 2016 15:18:40 +0200 Subject: [PATCH] SONAR-7412 clear revision in DB when no changeset in report --- .../step/PersistFileSourcesStep.java | 10 +----- .../step/PersistFileSourcesStepTest.java | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java index 38c94955002..074546d588f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java @@ -165,7 +165,7 @@ public class PersistFileSourcesStep implements ComputationStep { // Update only if data_hash has changed or if src_hash is missing or revision is missing (progressive migration) boolean binaryDataUpdated = !dataHash.equals(previousDto.getDataHash()); boolean srcHashUpdated = !srcHash.equals(previousDto.getSrcHash()); - String revision = computeRevision(previousDto, latestChange); + String revision = computeRevision(latestChange); boolean revisionUpdated = !ObjectUtils.equals(revision, previousDto.getRevision()); if (binaryDataUpdated || srcHashUpdated || revisionUpdated) { previousDto @@ -181,14 +181,6 @@ public class PersistFileSourcesStep implements ComputationStep { } } - @CheckForNull - private String computeRevision(FileSourceDto previousDto, @Nullable Changeset latestChange) { - if (latestChange == null) { - return previousDto.getRevision(); - } - return latestChange.getRevision(); - } - @CheckForNull private String computeRevision(@Nullable Changeset latestChange) { if (latestChange == null) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java index c1c4a9964df..9303a915f21 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java @@ -431,6 +431,39 @@ public class PersistFileSourcesStepTest extends BaseStepTest { assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1"); } + @Test + public void clear_revision_when_no_ChangeSet() { + // Existing sources + long past = 150000L; + dbClient.fileSourceDao().insert(dbTester.getSession(), new FileSourceDto() + .setProjectUuid(PROJECT_UUID) + .setFileUuid(FILE_UUID) + .setDataType(Type.SOURCE) + .setSrcHash("137f72c3708c6bd0de00a0e5a69c699b") + .setLineHashes("137f72c3708c6bd0de00a0e5a69c699b") + .setDataHash("8e84c0d961cfe364e43833c4cc4ddef5") + // Revision is missing, update will be made + .setSourceData(DbFileSources.Data.newBuilder() + .addLines(DbFileSources.Line.newBuilder() + .setLine(1) + .setSource("line") + .build()) + .build()) + .setCreatedAt(past) + .setUpdatedAt(past)); + dbTester.getSession().commit(); + + initBasicReport(1); + + underTest.execute(); + + assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); + FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID); + assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past); + assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); + assertThat(fileSourceDto.getRevision()).isNull(); + } + private void initBasicReport(int numberOfLines) { treeRootHolder.setRoot(ReportComponent.builder(Component.Type.PROJECT, 1).setUuid(PROJECT_UUID).setKey(PROJECT_KEY).addChildren( ReportComponent.builder(Component.Type.MODULE, 2).setUuid("MODULE").setKey("MODULE_KEY").addChildren( -- 2.39.5