From: Zipeng WU Date: Wed, 22 Feb 2023 13:57:06 +0000 (+0100) Subject: SONAR-18545 Report processing fails when a warning message is too long X-Git-Tag: 10.0.0.68432~199 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=02b061457c66541c79833839005bb6afdef3c0d3;p=sonarqube.git SONAR-18545 Report processing fails when a warning message is too long --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeTaskMessageDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeTaskMessageDto.java index 204043161b6..1b3b710fa81 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeTaskMessageDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/ce/CeTaskMessageDto.java @@ -19,9 +19,14 @@ */ package org.sonar.db.ce; +import com.google.common.annotations.VisibleForTesting; + import static com.google.common.base.Preconditions.checkArgument; +import static org.apache.commons.lang.StringUtils.abbreviate; public class CeTaskMessageDto { + @VisibleForTesting + static final int MAX_MESSAGE_SIZE = 4000; /** * Unique identifier of each message. Not null */ @@ -67,8 +72,7 @@ public class CeTaskMessageDto { public CeTaskMessageDto setMessage(String message) { checkArgument(message != null && !message.isEmpty(), "message can't be null nor empty"); - checkArgument(message.length() <= 4000, "message is too long: %s", message.length()); - this.message = message; + this.message = abbreviate(message, MAX_MESSAGE_SIZE); return this; } diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeTaskMessageDtoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeTaskMessageDtoTest.java index 9370f5c2de8..597b2d55b22 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeTaskMessageDtoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/ce/CeTaskMessageDtoTest.java @@ -19,12 +19,12 @@ */ package org.sonar.db.ce; -import java.util.Random; import org.junit.Test; import static org.apache.commons.lang.StringUtils.repeat; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.sonar.db.ce.CeTaskMessageDto.MAX_MESSAGE_SIZE; public class CeTaskMessageDtoTest { @@ -46,19 +46,18 @@ public class CeTaskMessageDtoTest { @Test public void setMessage_accept_argument_of_size_4000() { - String str = repeat("a", 4000); + String str = repeat("a", MAX_MESSAGE_SIZE); underTest.setMessage(str); assertThat(underTest.getMessage()).isEqualTo(str); } @Test - public void setMessage_fails_with_IAE_if_argument_has_size_bigger_then_4000() { - int size = 4000 + 1 + new Random().nextInt(100); - String str = repeat("a", size); + public void setMessage_truncates_the_message_if_argument_has_size_bigger_then_4000() { + String str = repeat("a", MAX_MESSAGE_SIZE) + "extra long tail!!!"; - assertThatThrownBy(() -> underTest.setMessage(str)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessage("message is too long: " + size); + underTest.setMessage(str); + + assertThat(underTest.getMessage()).isEqualTo(repeat("a", MAX_MESSAGE_SIZE - 3) + "..."); } }