private static void maskErrorStacktrace(CeActivityDto ceActivityDto, Set<AdditionalField> additionalFields) { if (!additionalFields.contains(AdditionalField.STACKTRACE)) { ceActivityDto.setErrorStacktrace(null); } }
private static void updateError(CeActivityDto activityDto, @Nullable Throwable error) { if (error == null) { return; } if (error instanceof VisitException && error.getCause() != null) { activityDto.setErrorMessage(format("%s (%s)", error.getCause().getMessage(), error.getMessage())); } else { activityDto.setErrorMessage(error.getMessage()); } String stacktrace = getStackTraceForPersistence(error); if (stacktrace != null) { activityDto.setErrorStacktrace(stacktrace); } if (error instanceof TypedException) { activityDto.setErrorType(((TypedException) error).getType()); } }
@Test @UseDataProvider("stringsWithChar0") public void setStacktrace_filters_out_char_zero(String withChar0, String expected) { underTest.setErrorStacktrace(withChar0); assertThat(underTest.getErrorStacktrace()).isEqualTo(expected); }
@Test public void formatActivity_with_both_error_message_and_stacktrace() { CeActivityDto dto = newActivity("UUID", "COMPONENT_UUID", CeActivityDto.Status.FAILED, null) .setErrorMessage("error msg") .setErrorStacktrace("error stacktrace") .setErrorType("anErrorType"); Ce.Task task = underTest.formatActivity(db.getSession(), Collections.singletonList(dto)).iterator().next(); assertThat(task.getErrorMessage()).isEqualTo(dto.getErrorMessage()); assertThat(task.getErrorStacktrace()).isEqualTo(dto.getErrorStacktrace()); assertThat(task.getErrorType()).isEqualTo(dto.getErrorType()); }
@Test public void test_insert_error_message_and_stacktrace() { CeActivityDto dto = createActivityDto("TASK_1", REPORT, COMPONENT_1, MAINCOMPONENT_1, FAILED) .setErrorStacktrace("error stack"); underTest.insert(db.getSession(), dto); Optional<CeActivityDto> saved = underTest.selectByUuid(db.getSession(), "TASK_1"); CeActivityDto read = saved.get(); assertThat(read.getErrorMessage()).isEqualTo(dto.getErrorMessage()); assertThat(read.getErrorStacktrace()).isEqualTo(dto.getErrorStacktrace()); assertThat(read.getErrorType()).isNotNull().isEqualTo(dto.getErrorType()); }
@Test public void do_not_return_stacktrace_of_failed_activity_with_stacktrace_when_additionalField_is_not_set() { logInAsRoot(); CeActivityDto activityDto = createActivityDto(SOME_TASK_UUID) .setErrorMessage("error msg") .setErrorStacktrace("error stack"); persist(activityDto); Ce.TaskResponse taskResponse = ws.newRequest() .setParam("id", SOME_TASK_UUID) .executeProtobuf(Ce.TaskResponse.class); Ce.Task task = taskResponse.getTask(); assertThat(task.getId()).isEqualTo(SOME_TASK_UUID); assertThat(task.getErrorMessage()).isEqualTo(activityDto.getErrorMessage()); assertThat(task.hasErrorStacktrace()).isFalse(); }
@Test public void return_stacktrace_of_failed_activity_with_stacktrace_when_additionalField_is_set() { logInAsRoot(); CeActivityDto activityDto = createActivityDto(SOME_TASK_UUID) .setErrorMessage("error msg") .setErrorStacktrace("error stack"); persist(activityDto); Ce.TaskResponse taskResponse = ws.newRequest() .setParam("id", SOME_TASK_UUID) .setParam("additionalFields", "stacktrace") .executeProtobuf(Ce.TaskResponse.class); Ce.Task task = taskResponse.getTask(); assertThat(task.getId()).isEqualTo(SOME_TASK_UUID); assertThat(task.getErrorMessage()).isEqualTo(activityDto.getErrorMessage()); assertThat(task.hasErrorStacktrace()).isTrue(); assertThat(task.getErrorStacktrace()).isEqualTo(activityDto.getErrorStacktrace()); }
@Test public void selectByQuery_does_not_populate_errorStacktrace_field() { insert("TASK_1", REPORT, MAINCOMPONENT_1, FAILED); underTest.insert(db.getSession(), createActivityDto("TASK_2", REPORT, COMPONENT_1, MAINCOMPONENT_1, FAILED).setErrorStacktrace("some stack")); List<CeActivityDto> dtos = underTest.selectByQuery(db.getSession(), new CeTaskQuery().setMainComponentUuid(MAINCOMPONENT_1), forPage(1).andSize(100)); assertThat(dtos) .hasSize(2) .extracting("errorStacktrace").containsOnly((String) null); }
private static void maskErrorStacktrace(CeActivityDto ceActivityDto, Set<AdditionalField> additionalFields) { if (!additionalFields.contains(AdditionalField.STACKTRACE)) { ceActivityDto.setErrorStacktrace(null); } }
private static void updateError(CeActivityDto activityDto, @Nullable Throwable error) { if (error == null) { return; } if (error instanceof VisitException && error.getCause() != null) { activityDto.setErrorMessage(format("%s (%s)", error.getCause().getMessage(), error.getMessage())); } else { activityDto.setErrorMessage(error.getMessage()); } String stacktrace = getStackTraceForPersistence(error); if (stacktrace != null) { activityDto.setErrorStacktrace(stacktrace); } if (error instanceof TypedException) { activityDto.setErrorType(((TypedException) error).getType()); } }