diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2014-09-29 11:43:58 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2014-09-29 17:14:58 +0200 |
commit | 7de252ea61bdfc2cb33f74f04aa781d0ad773183 (patch) | |
tree | 04710c8a2bc8a74d2039ed0e5e90c56b2aa6e00e /server/sonar-server | |
parent | 64b43e759608ba4bec30be11dc9c6a0feed6fc8e (diff) | |
download | sonarqube-7de252ea61bdfc2cb33f74f04aa781d0ad773183.tar.gz sonarqube-7de252ea61bdfc2cb33f74f04aa781d0ad773183.zip |
SONAR-5624 clean analysis report tasks to pending when server is starting and truncate when upgrading
Diffstat (limited to 'server/sonar-server')
15 files changed, 455 insertions, 18 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/batch/UploadReportAction.java b/server/sonar-server/src/main/java/org/sonar/server/batch/UploadReportAction.java index 3c0d2f90b1b..15290fb9cfb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/batch/UploadReportAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/batch/UploadReportAction.java @@ -76,19 +76,19 @@ public class UploadReportAction implements RequestHandler { public void handle(Request request, Response response) throws Exception { UserSession.get().checkGlobalPermission(GlobalPermissions.SCAN_EXECUTION); - // Switch Issue search - if (settings.getString("sonar.issues.use_es_backend") != null) { - String projectKey = request.mandatoryParam(PARAM_PROJECT); + String projectKey = request.mandatoryParam(PARAM_PROJECT); - DbSession session = dbClient.openSession(false); - try { - dbClient.componentDao().getAuthorizedComponentByKey(projectKey, session); - computationService.create(projectKey); + DbSession session = dbClient.openSession(false); + try { + dbClient.componentDao().getAuthorizedComponentByKey(projectKey, session); + computationService.create(projectKey); - } finally { - MyBatis.closeQuietly(session); - } + } finally { + MyBatis.closeQuietly(session); + } + // Switch Issue search + if (settings.getString("sonar.issues.use_es_backend") != null) { // Synchronization of lot of data can only be done with a batch session for the moment session = dbClient.openSession(true); try { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTasksCleaner.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTasksCleaner.java new file mode 100644 index 00000000000..77929d47b98 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportTasksCleaner.java @@ -0,0 +1,62 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.computation; + +import org.picocontainer.Startable; +import org.sonar.api.ServerComponent; +import org.sonar.api.platform.ServerUpgradeStatus; +import org.sonar.core.persistence.DbSession; +import org.sonar.core.persistence.MyBatis; +import org.sonar.server.computation.db.AnalysisReportDao; +import org.sonar.server.db.DbClient; + +public class AnalysisReportTasksCleaner implements Startable, ServerComponent { + private final ServerUpgradeStatus serverUpgradeStatus; + private final DbClient dbClient; + + public AnalysisReportTasksCleaner(ServerUpgradeStatus serverUpgradeStatus, DbClient dbClient) { + this.serverUpgradeStatus = serverUpgradeStatus; + this.dbClient = dbClient; + } + + @Override + public void start() { + DbSession session = dbClient.openSession(false); + AnalysisReportDao dao = dbClient.analysisReportDao(); + + try { + if (serverUpgradeStatus.isUpgraded()) { + dao.cleanWithTruncate(session); + } else { + dao.cleanWithUpdateAllToPendingStatus(session); + } + + session.commit(); + } finally { + MyBatis.closeQuietly(session); + } + } + + @Override + public void stop() { + // do nothing + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java index 37cd3abc274..74112ddd24e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ComputationService.java @@ -23,9 +23,12 @@ package org.sonar.server.computation; import org.sonar.api.ServerComponent; import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; +import org.sonar.core.persistence.MyBatis; import org.sonar.server.computation.db.AnalysisReportDao; import org.sonar.server.db.DbClient; +import java.util.List; + import static org.sonar.core.computation.db.AnalysisReportDto.Status.PENDING; /** @@ -50,7 +53,18 @@ public class ComputationService implements ServerComponent { dao.insert(session, report); session.commit(); } finally { - session.close(); + MyBatis.closeQuietly(session); + } + } + + public List<AnalysisReportDto> findByProjectKey(String projectKey) { + AnalysisReportDao dao = dbClient.analysisReportDao(); + + DbSession session = dbClient.openSession(false); + try { + return dao.findByProjectKey(session, projectKey); + } finally { + MyBatis.closeQuietly(session); } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java b/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java index 88fa780a4ea..6b26191e1fd 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/db/AnalysisReportDao.java @@ -23,29 +23,51 @@ package org.sonar.server.computation.db; import com.google.common.annotations.VisibleForTesting; import org.sonar.api.utils.System2; import org.sonar.core.computation.db.AnalysisReportDto; +import org.sonar.core.computation.db.AnalysisReportDto.Status; import org.sonar.core.computation.db.AnalysisReportMapper; import org.sonar.core.persistence.DaoComponent; import org.sonar.core.persistence.DbSession; import org.sonar.server.db.BaseDao; import java.util.Date; +import java.util.List; import java.util.Map; -import static com.google.common.base.Preconditions.checkNotNull; - public class AnalysisReportDao extends BaseDao<AnalysisReportMapper, AnalysisReportDto, String> implements DaoComponent { + private System2 system2; + public AnalysisReportDao() { this(System2.INSTANCE); } @VisibleForTesting - public AnalysisReportDao(System2 system) { - super(AnalysisReportMapper.class, system); + public AnalysisReportDao(System2 system2) { + super(AnalysisReportMapper.class, system2); + this.system2 = system2; + } + + /** + * startup task use only + */ + public void cleanWithUpdateAllToPendingStatus(DbSession session) { + mapper(session).cleanWithUpdateAllToPendingStatus(Status.PENDING, new Date(system2.now())); + } + + /** + * startup task use only + */ + public void cleanWithTruncate(DbSession session) { + mapper(session).cleanWithTruncate(); + } + + public List<AnalysisReportDto> findByProjectKey(DbSession session, String projectKey) { + List<AnalysisReportDto> analysisReports = mapper(session).selectByProjectKey(projectKey); + return analysisReports; } @Override - protected AnalysisReportDto doGetNullableByKey(DbSession session, String key) { + protected AnalysisReportDto doGetNullableByKey(DbSession session, String projectKey) { throw new UnsupportedOperationException(); } @@ -56,7 +78,6 @@ public class AnalysisReportDao extends BaseDao<AnalysisReportMapper, AnalysisRep @Override protected AnalysisReportDto doInsert(DbSession session, AnalysisReportDto report) { - checkNotNull(report.getProjectKey(), "Cannot insert Report with no project key!"); mapper(session).insert(report); return report; } diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java index 50da0a6d595..2fc25c2f8eb 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java @@ -99,6 +99,7 @@ import org.sonar.server.component.ws.ComponentsWs; import org.sonar.server.component.ws.EventsWs; import org.sonar.server.component.ws.ProjectsWs; import org.sonar.server.component.ws.ResourcesWs; +import org.sonar.server.computation.AnalysisReportTasksCleaner; import org.sonar.server.computation.ComputationService; import org.sonar.server.computation.db.AnalysisReportDao; import org.sonar.server.config.ws.PropertiesWs; @@ -766,6 +767,7 @@ class ServerComponents { startupContainer.addSingleton(RegisterServletFilters.class); startupContainer.addSingleton(CleanPreviewAnalysisCache.class); startupContainer.addSingleton(CopyRequirementsFromCharacteristicsToRules.class); + startupContainer.addSingleton(AnalysisReportTasksCleaner.class); DoPrivileged.execute(new DoPrivileged.Task() { @Override diff --git a/server/sonar-server/src/test/java/org/sonar/server/batch/UploadReportActionMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/batch/UploadReportActionMediumTest.java index 2804a736dde..dcae8594b9a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/batch/UploadReportActionMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/batch/UploadReportActionMediumTest.java @@ -27,6 +27,7 @@ import org.sonar.api.server.ws.WebService; import org.sonar.api.utils.DateUtils; import org.sonar.api.web.UserRole; import org.sonar.core.component.ComponentDto; +import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.issue.db.IssueDto; import org.sonar.core.permission.GlobalPermissions; import org.sonar.core.permission.PermissionFacade; @@ -53,6 +54,7 @@ import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.fest.assertions.Assertions.assertThat; +import static org.sonar.core.computation.db.AnalysisReportDto.Status.PENDING; public class UploadReportActionMediumTest { @@ -112,6 +114,31 @@ public class UploadReportActionMediumTest { // Check that issue authorization index has been created assertThat(tester.get(IssueAuthorizationIndex.class).getNullableByKey(project.getKey())).isNotNull(); } + + @Test + public void add_analysis_report_in_database() throws Exception { + final String projectKey = "123456789-987654321"; + ComponentDto project = new ComponentDto() + .setKey(projectKey); + db.componentDao().insert(session, project); + + // project can be seen by anyone + tester.get(PermissionFacade.class).insertGroupPermission(project.getId(), DefaultGroups.ANYONE, UserRole.USER, session); + + session.commit(); + + MockUserSession.set().setLogin("john").setGlobalPermissions(GlobalPermissions.SCAN_EXECUTION); + WsTester.TestRequest request = wsTester.newGetRequest(BatchWs.API_ENDPOINT, UploadReportAction.UPLOAD_REPORT_ACTION); + request.setParam(UploadReportAction.PARAM_PROJECT, project.key()); + request.execute(); + + List<AnalysisReportDto> analysisReports = db.analysisReportDao().findByProjectKey(session, projectKey); + AnalysisReportDto analysisReport = analysisReports.get(0); + + assertThat(analysisReports).hasSize(1); + assertThat(analysisReport.getProjectKey()).isEqualTo(projectKey); + assertThat(analysisReport.getStatus()).isEqualTo(PENDING); + } @Test(expected = ForbiddenException.class) public void fail_without_global_scan_permission() throws Exception { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTasksCleanerTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTasksCleanerTest.java new file mode 100644 index 00000000000..e9ee75f1638 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportTasksCleanerTest.java @@ -0,0 +1,67 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.computation; + +import org.junit.Before; +import org.junit.Test; +import org.sonar.api.platform.ServerUpgradeStatus; +import org.sonar.core.persistence.DbSession; +import org.sonar.server.computation.db.AnalysisReportDao; +import org.sonar.server.db.DbClient; + +import static org.mockito.Mockito.*; + +public class AnalysisReportTasksCleanerTest { + + AnalysisReportTasksCleaner sut; + ServerUpgradeStatus serverUpgradeStatus; + DbClient dbClient; + AnalysisReportDao analysisReportDao; + DbSession session; + + @Before + public void before() { + analysisReportDao = mock(AnalysisReportDao.class); + serverUpgradeStatus = mock(ServerUpgradeStatus.class); + dbClient = mock(DbClient.class); + session = mock(DbSession.class); + + when(dbClient.analysisReportDao()).thenReturn(analysisReportDao); + when(dbClient.openSession(false)).thenReturn(session); + + sut = new AnalysisReportTasksCleaner(serverUpgradeStatus, dbClient); + } + + @Test + public void start_must_call_dao_clean_update_to_pending_by_default() { + sut.start(); + verify(analysisReportDao).cleanWithUpdateAllToPendingStatus(any(DbSession.class)); + sut.stop(); + } + + @Test + public void start_must_call_dao_truncate_when_upgrading() { + when(serverUpgradeStatus.isUpgraded()).thenReturn(Boolean.TRUE); + sut.start(); + verify(analysisReportDao).cleanWithTruncate(any(DbSession.class)); + sut.stop(); + } +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java new file mode 100644 index 00000000000..cacc48e9483 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ComputationServiceTest.java @@ -0,0 +1,59 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.computation; + +import org.junit.Before; +import org.junit.Test; +import org.sonar.core.computation.db.AnalysisReportDto; +import org.sonar.core.persistence.DbSession; +import org.sonar.server.computation.db.AnalysisReportDao; +import org.sonar.server.db.DbClient; + +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class ComputationServiceTest { + + ComputationService sut; + DbClient dbClient; + AnalysisReportDao analysisReportDao; + DbSession session; + + @Before + public void before() { + analysisReportDao = mock(AnalysisReportDao.class); + dbClient = mock(DbClient.class); + session = mock(DbSession.class); + + when(dbClient.analysisReportDao()).thenReturn(analysisReportDao); + when(dbClient.openSession(false)).thenReturn(session); + + sut = new ComputationService(dbClient); + } + + @Test + public void create_must_call_dao_insert() throws Exception { + sut.create("ANY-KEY"); + verify(analysisReportDao).insert(any(DbSession.class), any(AnalysisReportDto.class)); + } +}
\ No newline at end of file diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java index cc07f14d388..d442b589b8a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java @@ -30,6 +30,9 @@ import org.sonar.core.computation.db.AnalysisReportDto; import org.sonar.core.persistence.DbSession; import org.sonar.core.persistence.TestDatabase; +import java.util.List; + +import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.sonar.core.computation.db.AnalysisReportDto.Status.PENDING; @@ -55,7 +58,7 @@ public class AnalysisReportDaoTest { } @Test - public void insert() { + public void insert_multiple_reports() { when(system2.now()).thenReturn(DateUtils.parseDate("2014-09-26").getTime()); AnalysisReportDto report = new AnalysisReportDto() @@ -66,8 +69,55 @@ public class AnalysisReportDaoTest { .setUpdatedAt(DateUtils.parseDate("2014-09-25")); dao.insert(session, report); + dao.insert(session, report); + session.commit(); db.assertDbUnit(getClass(), "insert-result.xml", "analysis_reports"); } + + @Test + public void update_all_to_status() { + when(system2.now()).thenReturn(DateUtils.parseDate("2014-09-26").getTime()); + + db.prepareDbUnit(getClass(), "update-all-to-status-pending.xml"); + + dao.cleanWithUpdateAllToPendingStatus(session); + session.commit(); + + db.assertDbUnit(getClass(), "update-all-to-status-pending-result.xml", "analysis_reports"); + } + + @Test + public void truncate() { + db.prepareDbUnit(getClass(), "any-analysis-reports.xml"); + + dao.cleanWithTruncate(session); + session.commit(); + + db.assertDbUnit(getClass(), "truncate-result.xml", "analysis_reports"); + } + + @Test + public void select_one_report_by_project_key() { + db.prepareDbUnit(getClass(), "select.xml"); + + final String projectKey = "123456789-987654321"; + List<AnalysisReportDto> reports = dao.findByProjectKey(session, projectKey); + AnalysisReportDto report = reports.get(0); + + assertThat(reports).hasSize(1); + assertThat(report.getProjectKey()).isEqualTo(projectKey); + assertThat(report.getId()).isEqualTo(1); + } + + @Test + public void select_several_reports_by_project_key() { + db.prepareDbUnit(getClass(), "select.xml"); + + final String projectKey = "987654321-123456789"; + List<AnalysisReportDto> reports = dao.findByProjectKey(session, projectKey); + + assertThat(reports).hasSize(2); + } } diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/any-analysis-reports.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/any-analysis-reports.xml new file mode 100644 index 00000000000..66cdd2a55dc --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/any-analysis-reports.xml @@ -0,0 +1,26 @@ +<dataset> + <analysis_reports + id="1" + project_key="123456789-987654321" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-24" + updated_at="2014-09-24" + /> + <analysis_reports + id="2" + project_key="123456789-987654321" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-25" + updated_at="2014-09-25" + /> + <analysis_reports + id="3" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-26" + updated_at="2014-09-26" + /> +</dataset>
\ No newline at end of file diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/insert-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/insert-result.xml index 1275fb9bd3d..2dcc8a250b7 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/insert-result.xml +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/insert-result.xml @@ -7,4 +7,12 @@ created_at="2014-09-24" updated_at="2014-09-26" /> + <analysis_reports + id="2" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-24" + updated_at="2014-09-26" + /> </dataset> diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/select.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/select.xml new file mode 100644 index 00000000000..6a347bb7795 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/select.xml @@ -0,0 +1,26 @@ +<dataset> + <analysis_reports + id="1" + project_key="123456789-987654321" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-24" + updated_at="2014-09-24" + /> + <analysis_reports + id="2" + project_key="987654321-123456789" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-25" + updated_at="2014-09-25" + /> + <analysis_reports + id="3" + project_key="987654321-123456789" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-26" + updated_at="2014-09-26" + /> +</dataset>
\ No newline at end of file diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/truncate-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/truncate-result.xml new file mode 100644 index 00000000000..e573e0c5b06 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/truncate-result.xml @@ -0,0 +1,3 @@ +<dataset> + <analysis_reports/> +</dataset> diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending-result.xml new file mode 100644 index 00000000000..fd1f1c1d3e9 --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending-result.xml @@ -0,0 +1,46 @@ +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<dataset> + <analysis_reports + id="1" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-24" + updated_at="2014-09-26" + /> + <analysis_reports + id="2" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-25" + updated_at="2014-09-26" + /> + <analysis_reports + id="3" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-26" + updated_at="2014-09-26" + /> +</dataset>
\ No newline at end of file diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending.xml new file mode 100644 index 00000000000..66cdd2a55dc --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending.xml @@ -0,0 +1,26 @@ +<dataset> + <analysis_reports + id="1" + project_key="123456789-987654321" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-24" + updated_at="2014-09-24" + /> + <analysis_reports + id="2" + project_key="123456789-987654321" + report_data="data-project" + report_status="WORKING" + created_at="2014-09-25" + updated_at="2014-09-25" + /> + <analysis_reports + id="3" + project_key="123456789-987654321" + report_data="data-project" + report_status="PENDING" + created_at="2014-09-26" + updated_at="2014-09-26" + /> +</dataset>
\ No newline at end of file |