private static Ce.Task formatActivity(CeActivityDto dto, DtoCache cache, @Nullable String scannerContext, List<String> warnings) { Ce.Task.Builder builder = Ce.Task.newBuilder(); String organizationKey = cache.getOrganizationKey(dto.getComponentUuid()); ofNullable(organizationKey).ifPresent(builder::setOrganization); builder.setId(dto.getUuid()); builder.setStatus(Ce.TaskStatus.valueOf(dto.getStatus().name())); builder.setType(dto.getTaskType()); builder.setLogs(false); ofNullable(dto.getComponentUuid()).ifPresent(uuid -> setComponent(builder, uuid, cache).setComponentId(uuid)); String analysisUuid = dto.getAnalysisUuid(); ofNullable(analysisUuid).ifPresent(builder::setAnalysisId); setBranchOrPullRequest(builder, dto.getUuid(), cache); ofNullable(analysisUuid).ifPresent(builder::setAnalysisId); cache.getUser(dto.getSubmitterUuid()).ifPresent(user -> builder.setSubmitterLogin(user.getLogin())); builder.setSubmittedAt(formatDateTime(new Date(dto.getSubmittedAt()))); ofNullable(dto.getStartedAt()).map(DateUtils::formatDateTime).ifPresent(builder::setStartedAt); ofNullable(dto.getExecutedAt()).map(DateUtils::formatDateTime).ifPresent(builder::setExecutedAt); ofNullable(dto.getExecutionTimeMs()).ifPresent(builder::setExecutionTimeMs); ofNullable(dto.getErrorMessage()).ifPresent(builder::setErrorMessage); ofNullable(dto.getErrorStacktrace()).ifPresent(builder::setErrorStacktrace); ofNullable(dto.getErrorType()).ifPresent(builder::setErrorType); ofNullable(scannerContext).ifPresent(builder::setScannerContext); builder.setHasScannerContext(dto.isHasScannerContext()); builder.setWarningCount(dto.getWarningCount()); warnings.forEach(builder::addWarnings); return builder.build(); }
.setDescription("Comma separated list of task statuses") .setPossibleValues(ImmutableList.builder() .add(CeActivityDto.Status.values()) .add(CeQueueDto.Status.values()).build()) .setExampleValue(Joiner.on(",").join(CeQueueDto.Status.IN_PROGRESS, CeActivityDto.Status.SUCCESS)) .setDefaultValue(Joiner.on(",").join(CeActivityDto.Status.values())); action.createParam(PARAM_ONLY_CURRENTS) .setDescription("Filter on the last tasks (only the most recent finished task by project)")
private static Ce.Task formatActivity(CeActivityDto dto, DtoCache cache, @Nullable String scannerContext) { Ce.Task.Builder builder = Ce.Task.newBuilder(); String organizationKey = cache.getOrganizationKey(dto.getComponentUuid()); setNullable(organizationKey, builder::setOrganization); builder.setId(dto.getUuid()); builder.setStatus(Ce.TaskStatus.valueOf(dto.getStatus().name())); builder.setType(dto.getTaskType()); builder.setLogs(false); setNullable(dto.getComponentUuid(), uuid -> setComponent(builder, uuid, cache).setComponentId(uuid)); String analysisUuid = dto.getAnalysisUuid(); setNullable(analysisUuid, builder::setAnalysisId); setBranchOrPullRequest(builder, dto.getUuid(), cache); setNullable(analysisUuid, builder::setAnalysisId); cache.getUser(dto.getSubmitterUuid()).ifPresent(user -> builder.setSubmitterLogin(user.getLogin())); builder.setSubmittedAt(formatDateTime(new Date(dto.getSubmittedAt()))); setNullable(dto.getStartedAt(), builder::setStartedAt, DateUtils::formatDateTime); setNullable(dto.getExecutedAt(), builder::setExecutedAt, DateUtils::formatDateTime); setNullable(dto.getExecutionTimeMs(), builder::setExecutionTimeMs); setNullable(dto.getErrorMessage(), builder::setErrorMessage); setNullable(dto.getErrorStacktrace(), builder::setErrorStacktrace); setNullable(dto.getErrorType(), builder::setErrorType); setNullable(scannerContext, builder::setScannerContext); builder.setHasScannerContext(dto.isHasScannerContext()); return builder.build(); }
.setDescription("Comma separated list of task statuses") .setPossibleValues(ImmutableList.builder() .addAll(asList(CeActivityDto.Status.values())) .addAll(asList(CeQueueDto.Status.values())).build()) .setExampleValue(Joiner.on(",").join(CeQueueDto.Status.IN_PROGRESS, CeActivityDto.Status.SUCCESS)) .setDefaultValue(Joiner.on(",").join(CeActivityDto.Status.values())); action.createParam(PARAM_ONLY_CURRENTS) .setDescription("Filter on the last tasks (only the most recent finished task by project)")
query = new CeTaskQuery().setStatuses(singletonList(SUCCESS.name())); assertThat(underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100))) .extracting(CeActivityDto::getUuid, CeActivityDto::getWarningCount)
@Test public void test_selectByQuery() { insert("TASK_1", REPORT, MAINCOMPONENT_1, SUCCESS); insert("TASK_2", REPORT, MAINCOMPONENT_1, FAILED); insert("TASK_3", REPORT, MAINCOMPONENT_2, SUCCESS); insert("TASK_4", "views", null, SUCCESS); // no filters CeTaskQuery query = new CeTaskQuery().setStatuses(Collections.emptyList()); List<CeActivityDto> dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(10)); assertThat(dtos).extracting("uuid").containsExactly("TASK_4", "TASK_3", "TASK_2", "TASK_1"); // select by component uuid query = new CeTaskQuery().setMainComponentUuid(MAINCOMPONENT_1); dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100)); assertThat(dtos).extracting("uuid").containsExactly("TASK_2", "TASK_1"); // select by status query = new CeTaskQuery().setStatuses(singletonList(SUCCESS.name())); dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100)); assertThat(dtos).extracting("uuid").containsExactly("TASK_4", "TASK_3", "TASK_1"); // select by type query = new CeTaskQuery().setType(REPORT); dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100)); assertThat(dtos).extracting("uuid").containsExactly("TASK_3", "TASK_2", "TASK_1"); query = new CeTaskQuery().setType("views"); dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100)); assertThat(dtos).extracting("uuid").containsExactly("TASK_4"); // select by multiple conditions query = new CeTaskQuery().setType(REPORT).setOnlyCurrents(true).setMainComponentUuid(MAINCOMPONENT_1); dtos = underTest.selectByQuery(db.getSession(), query, forPage(1).andSize(100)); assertThat(dtos).extracting("uuid").containsExactly("TASK_2"); }
@Test public void onEnd_delegates_to_ceTaskInterrupter_onEnd() { CeTask ceTask = mock(CeTask.class); CeActivityDto.Status randomStatus = CeActivityDto.Status.values()[new Random().nextInt(CeActivityDto.Status.values().length)]; underTest.onEnd(ceTask, randomStatus, null, null); verify(ceTaskInterrupter).onEnd(same(ceTask)); } }
private static void stopLogProfiler(Profiler profiler, CeActivityDto.Status status) { profiler.addContext("status", status.name()); profiler.stopInfo("Executed task"); }
@DataProvider public static Object[][] notCanceledStatus() { return Arrays.stream(CeActivityDto.Status.values()) .filter(t -> t != CANCELED) .map(t -> new Object[] {t}) .toArray(Object[][]::new); }