CeTaskQuery query = new CeTaskQuery();
query.setType(request.getType());
query.setOnlyCurrents(request.getOnlyCurrents());
- query.setMinSubmittedAt(parseDateTimeAsLong(request.getMinSubmittedAt()));
- query.setMaxExecutedAt(parseDateTimeAsLong(request.getMaxExecutedAt()));
+ query.setMinSubmittedAt(parseFromDate(request.getMinSubmittedAt()));
+ query.setMaxExecutedAt(parseToDate(request.getMaxExecutedAt()));
List<String> statuses = request.getStatus();
if (statuses != null && !statuses.isEmpty()) {
}
@CheckForNull
- private static Long parseDateTimeAsLong(@Nullable String dateAsString) {
+ private static Long parseToDate(@Nullable String dateAsString) {
if (dateAsString == null) {
return null;
}
return date.getTime();
}
+ @CheckForNull
+ private static Long parseFromDate(@Nullable String dateAsString) {
+ if (dateAsString == null) {
+ return null;
+ }
+
+ Date date = parseDateTimeQuietly(dateAsString);
+ if (date == null) {
+ date = parseDateQuietly(dateAsString);
+ checkRequest(date != null, "Date '%s' cannot be parsed as either a date or date+time", dateAsString);
+ }
+
+ return date.getTime();
+ }
+
public static boolean isAllowedOnComponentUuid(UserSession userSession, String componentUuid) {
return userSession.hasPermission(GlobalPermissions.SYSTEM_ADMIN) || userSession.hasComponentUuidPermission(UserRole.ADMIN, componentUuid);
}
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.WsCe;
import org.sonarqube.ws.WsCe.ActivityResponse;
-import org.sonarqube.ws.client.ce.CeWsParameters;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.component.ComponentTesting.newView;
import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_COMPONENT_ID;
import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_COMPONENT_QUERY;
+import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_MAX_EXECUTED_AT;
+import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_MIN_SUBMITTED_AT;
import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_STATUS;
import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_TYPE;
insertActivity("T2", "PROJECT_2", CeActivityDto.Status.FAILED);
ActivityResponse activityResponse = call(ws.newRequest()
- .setParam(CeWsParameters.PARAM_MAX_EXECUTED_AT, formatDateTime(EXECUTED_AT + 2_000)));
+ .setParam(PARAM_MAX_EXECUTED_AT, formatDateTime(EXECUTED_AT + 2_000)));
assertThat(activityResponse.getTasksCount()).isEqualTo(2);
// chronological order, from newest to oldest
ActivityResponse activityResponse = call(ws.newRequest()
.setParam("status", "FAILED,IN_PROGRESS,SUCCESS")
- .setParam(CeWsParameters.PARAM_MAX_EXECUTED_AT, "2016-02-15"));
+ .setParam(PARAM_MAX_EXECUTED_AT, "2016-02-15"));
assertThat(activityResponse.getTasksCount()).isEqualTo(0);
}
@Test
- public void filter_by_max_executed_at_include_day_filled() {
+ public void filter_by_min_submitted_and_max_executed_at_include_day() {
globalAdmin();
insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS);
String today = formatDate(new Date(EXECUTED_AT));
ActivityResponse activityResponse = call(ws.newRequest()
- .setParam(CeWsParameters.PARAM_MAX_EXECUTED_AT, today));
+ .setParam(PARAM_MIN_SUBMITTED_AT, today)
+ .setParam(PARAM_MAX_EXECUTED_AT, today));
assertThat(activityResponse.getTasksCount()).isEqualTo(1);
}
expectedException.expectMessage("Date 'ill-formatted-date' cannot be parsed as either a date or date+time");
ws.newRequest()
- .setParam(CeWsParameters.PARAM_MAX_EXECUTED_AT, "ill-formatted-date")
+ .setParam(PARAM_MAX_EXECUTED_AT, "ill-formatted-date")
.execute();
}
queueDto.setTaskType(CeTaskTypes.REPORT);
queueDto.setComponentUuid(componentUuid);
queueDto.setUuid(taskUuid);
+ queueDto.setCreatedAt(EXECUTED_AT);
CeActivityDto activityDto = new CeActivityDto(queueDto);
activityDto.setStatus(status);
activityDto.setExecutionTimeMs(500L);