aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2014-10-21 16:15:39 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2014-10-22 09:26:25 +0200
commit99e61ab58b3bc76bbf9e3d9524c79282e046505d (patch)
treeac19b460c484d0e343f11c3345ce2a61a92e3c94 /server
parent9c03512e5342c127ce904ffa2a8a0e42d1819826 (diff)
downloadsonarqube-99e61ab58b3bc76bbf9e3d9524c79282e046505d.tar.gz
sonarqube-99e61ab58b3bc76bbf9e3d9524c79282e046505d.zip
SONAR-5698 SONAR-5694 Add business dates finishedAt startedAt and submittedAt to analysis report
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java15
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java12
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java9
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/db/AnalysisReportDaoTest.java44
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest.java9
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/insert-result.xml4
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/one_analysis_report.xml2
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending-result.xml6
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending.xml6
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest/list_active_reports.json5
-rw-r--r--server/sonar-web/src/main/webapp/WEB-INF/db/migrate/707_add_business_dates_to_analysis_reports.rb31
13 files changed, 109 insertions, 47 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java
index 9f41a3fdfd8..025325e8999 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportLog.java
@@ -44,8 +44,10 @@ public class AnalysisReportLog implements ActivityLog {
.put("projectKey", report.getProjectKey())
.put("projectName", report.getProjectName())
.put("status", String.valueOf(report.getStatus()))
- .put("createdAt", DateUtils.formatDateTime(report.getCreatedAt()))
- .put("updatedAt", DateUtils.formatDateTime(report.getUpdatedAt()))
+ .put("submittedAt", DateUtils.formatDateTimeNullSafe(report.getCreatedAt()))
+ .put("updatedAt", DateUtils.formatDateTimeNullSafe(report.getUpdatedAt()))
+ .put("startedAt", DateUtils.formatDateTimeNullSafe(report.getStartedAt()))
+ .put("finishedAt", DateUtils.formatDateTimeNullSafe(report.getFinishedAt()))
.build();
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java
index 64c2c2c146c..06a721129db 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/AnalysisReportQueue.java
@@ -21,6 +21,7 @@
package org.sonar.server.computation;
import org.sonar.api.ServerComponent;
+import org.sonar.api.utils.System2;
import org.sonar.core.activity.Activity;
import org.sonar.core.computation.db.AnalysisReportDto;
import org.sonar.core.permission.GlobalPermissions;
@@ -33,6 +34,7 @@ import org.sonar.server.user.UserSession;
import javax.annotation.CheckForNull;
+import java.util.Date;
import java.util.List;
import static com.google.common.base.Preconditions.checkArgument;
@@ -42,11 +44,13 @@ public class AnalysisReportQueue implements ServerComponent {
private final DbClient dbClient;
private final AnalysisReportDao dao;
private final ActivityService activityService;
+ private final System2 system2;
- public AnalysisReportQueue(DbClient dbClient, ActivityService activityService) {
+ public AnalysisReportQueue(DbClient dbClient, ActivityService activityService, System2 system2) {
this.dbClient = dbClient;
this.activityService = activityService;
this.dao = dbClient.analysisReportDao();
+ this.system2 = system2;
}
public AnalysisReportDto add(String projectKey, Long snapshotId) {
@@ -86,6 +90,7 @@ public class AnalysisReportQueue implements ServerComponent {
DbSession session = dbClient.openSession(false);
try {
+ report.setFinishedAt(new Date(system2.now()));
dao.delete(session, report);
logActivity(report, session);
session.commit();
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java
index d37bcb2fcdf..3c559b9c3ab 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActiveAnalysisReportsAction.java
@@ -58,8 +58,9 @@ public class ActiveAnalysisReportsAction implements RequestHandler {
json.prop("id", report.getId());
json.prop("project", report.getProjectKey());
json.prop("projectName", report.getProjectName());
- json.propDateTime("startDate", report.getCreatedAt());
- json.propDateTime("updateDate", report.getUpdatedAt());
+ json.propDateTime("startedAt", report.getStartedAt());
+ json.propDateTime("finishedAt", report.getFinishedAt());
+ json.propDateTime("submittedAt", report.getCreatedAt());
json.prop("status", report.getStatus().toString());
json.endObject();
}
@@ -68,11 +69,11 @@ public class ActiveAnalysisReportsAction implements RequestHandler {
void define(WebService.NewController controller) {
controller
- .createAction("active")
- .setDescription("List all the active analysis reports")
- .setSince("5.0")
- .setResponseExample(Resources.getResource(getClass(), "example-list.json"))
- .setHandler(this);
+ .createAction("active")
+ .setDescription("List all the active analysis reports")
+ .setSince("5.0")
+ .setResponseExample(Resources.getResource(getClass(), "example-list.json"))
+ .setHandler(this);
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java
index e520d4bab3c..72ad3f443ae 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportLogMediumTest.java
@@ -66,9 +66,11 @@ public class AnalysisReportLogMediumTest {
AnalysisReportDto report = AnalysisReportDto.newForTests(1L)
.setProjectKey("projectKey")
.setProjectName("projectName")
- .setStatus(FAILED);
- report.setCreatedAt(DateUtils.parseDate("2014-10-15"))
- .setUpdatedAt(DateUtils.parseDate("2014-10-16"));
+ .setStatus(FAILED)
+ .setCreatedAt(DateUtils.parseDate("2014-10-15"))
+ .setUpdatedAt(DateUtils.parseDate("2014-10-16"))
+ .setStartedAt(DateUtils.parseDate("2014-10-17"))
+ .setFinishedAt(DateUtils.parseDate("2014-10-18"));
service.write(dbSession, ANALYSIS_REPORT, new AnalysisReportLog(report));
dbSession.commit();
@@ -83,8 +85,10 @@ public class AnalysisReportLogMediumTest {
assertThat(details.get("projectKey")).isEqualTo(report.getProjectKey());
assertThat(details.get("projectName")).isEqualTo(report.getProjectName());
assertThat(details.get("status")).isEqualTo("FAILED");
- assertThat(details.get("createdAt")).isEqualTo("2014-10-15T00:00:00+0200");
+ assertThat(details.get("submittedAt")).isEqualTo("2014-10-15T00:00:00+0200");
assertThat(details.get("updatedAt")).isEqualTo("2014-10-16T00:00:00+0200");
+ assertThat(details.get("startedAt")).isEqualTo("2014-10-17T00:00:00+0200");
+ assertThat(details.get("finishedAt")).isEqualTo("2014-10-18T00:00:00+0200");
}
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java
index 84a1392e57e..050330acba4 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/AnalysisReportQueueMediumTest.java
@@ -26,6 +26,7 @@ import org.junit.ClassRule;
import org.junit.Test;
import org.sonar.api.security.DefaultGroups;
import org.sonar.api.web.UserRole;
+import org.sonar.core.activity.Activity;
import org.sonar.core.component.ComponentDto;
import org.sonar.core.computation.db.AnalysisReportDto;
import org.sonar.core.permission.GlobalPermissions;
@@ -40,6 +41,7 @@ import org.sonar.server.tester.ServerTester;
import org.sonar.server.user.MockUserSession;
import java.util.List;
+import java.util.Map;
import static org.fest.assertions.Assertions.assertThat;
import static org.sonar.core.computation.db.AnalysisReportDto.Status.SUCCESS;
@@ -92,6 +94,7 @@ public class AnalysisReportQueueMediumTest {
assertThat(reports).hasSize(1);
assertThat(report.getProjectKey()).isEqualTo(DEFAULT_PROJECT_KEY);
assertThat(report.getSnapshotId()).isEqualTo(123L);
+ assertThat(report.getCreatedAt()).isNotNull();
}
private ComponentDto insertPermissionsForProject(String projectKey) {
@@ -122,6 +125,7 @@ public class AnalysisReportQueueMediumTest {
assertThat(firstBookedReport.getProjectKey()).isEqualTo(DEFAULT_PROJECT_KEY);
assertThat(firstBookedReport.getStatus()).isEqualTo(WORKING);
+ assertThat(firstBookedReport.getStartedAt()).isNotNull();
assertThat(secondBookedReport.getProjectKey()).isEqualTo("2");
assertThat(thirdBookedReport.getProjectKey()).isEqualTo("3");
}
@@ -156,7 +160,10 @@ public class AnalysisReportQueueMediumTest {
sut.remove(report);
assertThat(sut.all()).isEmpty();
- assertThat(tester.get(ActivityIndex.class).findAll().getHits()).hasSize(1);
+ List<Activity> activities = tester.get(ActivityIndex.class).findAll().getHits();
+ Map<String, String> details = activities.get(0).details();
+ assertThat(activities).hasSize(1);
+ assertThat(details.get("finishedAt")).isNotEmpty();
}
@Test(expected = ForbiddenException.class)
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 6fd0a31bd02..5aa270e5bfb 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
@@ -75,8 +75,10 @@ public class AnalysisReportDaoTest {
.setProjectName(DEFAULT_PROJECT_NAME)
.setSnapshotId(DEFAULT_SNAPSHOT_ID)
.setData("data-project")
- .setStatus(PENDING);
- report.setCreatedAt(DateUtils.parseDate("2014-09-24"))
+ .setStatus(PENDING)
+ .setStartedAt(DateUtils.parseDate("2014-09-25"))
+ .setFinishedAt(DateUtils.parseDate("2014-09-27"))
+ .setCreatedAt(DateUtils.parseDate("2014-09-24"))
.setUpdatedAt(DateUtils.parseDate("2014-09-25"));
sut.insert(session, report);
@@ -161,16 +163,20 @@ public class AnalysisReportDaoTest {
}
@Test
- public void getById_maps_all_the_fields_except_report_data() {
- db.prepareDbUnit(getClass(), "select.xml");
+ public void getById_maps_all_the_fields_except_the_data() {
+ db.prepareDbUnit(getClass(), "one_analysis_report.xml");
AnalysisReportDto report = sut.getById(session, 1L);
- assertThat(report.getId()).isEqualTo(1L);
- assertThat(report.getStatus()).isEqualTo(WORKING);
- assertThat(report.getProjectKey()).isEqualTo("123456789-987654321");
- assertThat(report.getData()).isNull();
+
+ assertThat(report.getProjectKey()).isEqualTo(DEFAULT_PROJECT_KEY);
+ assertThat(report.getProjectName()).isEqualTo(DEFAULT_PROJECT_NAME);
assertThat(report.getCreatedAt()).isEqualTo(DateUtils.parseDate("2014-09-24"));
assertThat(report.getUpdatedAt()).isEqualTo(DateUtils.parseDate("2014-09-25"));
+ assertThat(report.getStartedAt()).isEqualTo(DateUtils.parseDate("2014-09-26"));
+ assertThat(report.getFinishedAt()).isEqualTo(DateUtils.parseDate("2014-09-27"));
+ assertThat(report.getStatus()).isEqualTo(WORKING);
+ assertThat(report.getData()).isNull();
+ assertThat(report.getKey()).isEqualTo("1");
}
@Test
@@ -208,7 +214,7 @@ public class AnalysisReportDaoTest {
assertThat(reportBooked.getId()).isEqualTo(1L);
assertThat(reportBooked.getStatus()).isEqualTo(WORKING);
- assertThat(reportBooked.getUpdatedAt()).isEqualTo(mockedNow);
+ assertThat(reportBooked.getStartedAt()).isEqualTo(mockedNow);
}
@Test
@@ -242,21 +248,6 @@ public class AnalysisReportDaoTest {
}
@Test
- public void getById_maps_all_the_fields_except_the_data() {
- db.prepareDbUnit(getClass(), "one_analysis_report.xml");
-
- AnalysisReportDto report = sut.getById(session, 1L);
-
- assertThat(report.getProjectKey()).isEqualTo(DEFAULT_PROJECT_KEY);
- assertThat(report.getProjectName()).isEqualTo(DEFAULT_PROJECT_NAME);
- assertThat(report.getCreatedAt()).isEqualTo(DateUtils.parseDate("2014-09-24"));
- assertThat(report.getUpdatedAt()).isEqualTo(DateUtils.parseDate("2014-09-25"));
- assertThat(report.getStatus()).isEqualTo(WORKING);
- assertThat(report.getData()).isNull();
- assertThat(report.getKey()).isEqualTo("1");
- }
-
- @Test
public void findAll_one_analysis_report() {
db.prepareDbUnit(getClass(), "one_analysis_report.xml");
@@ -301,9 +292,10 @@ public class AnalysisReportDaoTest {
private AnalysisReportDto newDefaultReport() {
AnalysisReportDto report = AnalysisReportDto.newForTests(1L)
.setStatus(PENDING)
- .setProjectKey(DEFAULT_PROJECT_KEY);
- report
+ .setProjectKey(DEFAULT_PROJECT_KEY)
.setCreatedAt(DateUtils.parseDate("2014-09-30"))
+ .setFinishedAt(DateUtils.parseDate("2014-09-30"))
+ .setStartedAt(DateUtils.parseDate("2014-09-30"))
.setUpdatedAt(DateUtils.parseDate("2014-09-30"));
return report;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest.java
index 7770b3ce1e0..56817de9884 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest.java
@@ -54,14 +54,15 @@ public class ActiveAnalysisReportsActionTest {
.setProjectName("Project Name")
.setProjectKey("project-name")
.setStatus(PENDING)
- .setData(null);
- report.setCreatedAt(DateUtils.parseDateTime("2014-10-13T00:00:00+0200"))
- .setUpdatedAt(DateUtils.parseDateTime("2014-10-14T00:00:00+0200"));
+ .setData(null)
+ .setCreatedAt(DateUtils.parseDateTime("2014-10-13T00:00:00+0200"))
+ .setStartedAt(DateUtils.parseDateTime("2014-10-13T00:00:00+0200"))
+ .setFinishedAt(DateUtils.parseDateTime("2014-10-13T00:00:00+0200"));
List<AnalysisReportDto> reports = Lists.newArrayList(report);
when(queue.all()).thenReturn(reports);
WsTester.TestRequest request = tester.newGetRequest(AnalysisReportWebService.API_ENDPOINT, "active");
- request.execute().assertJson(getClass(), "list_active_reports.json");
+ request.execute().assertJson(getClass(), "list_active_reports.json", false);
}
@Test
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 816774bdb21..189aa5a770c 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,6 +7,8 @@
report_data="data-project"
report_status="PENDING"
created_at="2014-09-24"
+ started_at="2014-09-25"
+ finished_at="2014-09-27"
updated_at="2014-09-26"
/>
<analysis_reports
@@ -17,6 +19,8 @@
report_data="data-project"
report_status="PENDING"
created_at="2014-09-24"
+ started_at="2014-09-25"
+ finished_at="2014-09-27"
updated_at="2014-09-26"
/>
</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/one_analysis_report.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/one_analysis_report.xml
index 7a384fef8bf..fad68c874f3 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/one_analysis_report.xml
+++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/one_analysis_report.xml
@@ -8,5 +8,7 @@
report_status="WORKING"
created_at="2014-09-24"
updated_at="2014-09-25"
+ started_at="2014-09-26"
+ finished_at="2014-09-27"
/>
</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-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/computation/db/AnalysisReportDaoTest/update-all-to-status-pending-result.xml
index ee97b8c8c3b..4a32fbe8dd0 100644
--- 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
@@ -8,6 +8,8 @@
report_status="PENDING"
created_at="2014-09-24"
updated_at="2014-09-26"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
<analysis_reports
id="2"
@@ -18,6 +20,8 @@
report_status="PENDING"
created_at="2014-09-25"
updated_at="2014-09-26"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
<analysis_reports
id="3"
@@ -28,5 +32,7 @@
report_status="PENDING"
created_at="2014-09-26"
updated_at="2014-09-26"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
</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
index cb5e9a70c3f..71e67e7b911 100644
--- 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
@@ -8,6 +8,8 @@
report_status="WORKING"
created_at="2014-09-24"
updated_at="2014-09-24"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
<analysis_reports
id="2"
@@ -18,6 +20,8 @@
report_status="WORKING"
created_at="2014-09-25"
updated_at="2014-09-25"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
<analysis_reports
id="3"
@@ -28,5 +32,7 @@
report_status="PENDING"
created_at="2014-09-26"
updated_at="2014-09-26"
+ started_at="2014-09-24"
+ finished_at="2014-09-24"
/>
</dataset> \ No newline at end of file
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest/list_active_reports.json b/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest/list_active_reports.json
index 1f30d284f52..e5bd54abf0a 100644
--- a/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest/list_active_reports.json
+++ b/server/sonar-server/src/test/resources/org/sonar/server/computation/ws/ActiveAnalysisReportsActionTest/list_active_reports.json
@@ -5,8 +5,9 @@
"status": "PENDING",
"projectName": "Project Name",
"project": "project-name",
- "startDate": "2014-10-13T00:00:00+0200",
- "updateDate": "2014-10-14T00:00:00+0200"
+ "submittedAt": "2014-10-13T00:00:00+0200",
+ "startedAt": "2014-10-13T00:00:00+0200",
+ "finishedAt": "2014-10-13T00:00:00+0200"
}
]
} \ No newline at end of file
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/707_add_business_dates_to_analysis_reports.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/707_add_business_dates_to_analysis_reports.rb
new file mode 100644
index 00000000000..6456d78eb10
--- /dev/null
+++ b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/707_add_business_dates_to_analysis_reports.rb
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+#
+# SonarQube 5.0
+# SONAR-5698 SONAR-5694
+#
+class AddBusinessDatesToAnalysisReports < ActiveRecord::Migration
+ def self.up
+ add_column 'analysis_reports', :started_at, :datetime, :null => true
+ add_column 'analysis_reports', :finished_at, :datetime, :null => true
+ end
+end
+