Log http statistic exception only ones
#KT-59769 Fixed
diff --git a/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt
index de2efa8..d92cd09 100644
--- a/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt
+++ b/compiler/build-tools/kotlin-build-statistics/src/org/jetbrains/kotlin/build/report/statistics/HttpReportService.kt
@@ -20,7 +20,7 @@
private val user: String?,
) : Serializable {
- private var invalidUrl = false
+ private var unableToSendHttpRequest = false
private var requestPreviousFailed = false
private fun checkResponseAndLog(connection: HttpURLConnection, log: KotlinLogger) {
@@ -38,14 +38,14 @@
fun sendData(data: Any, log: KotlinLogger) {
val elapsedTime = measureTimeMillis {
- if (invalidUrl) {
+ if (unableToSendHttpRequest) {
return
}
val connection = try {
URL(url).openConnection() as HttpURLConnection
} catch (e: IOException) {
- log.warn("Unable to open connection to ${url}: ${e.message}")
- invalidUrl = true
+ log.warn("Http report: Unable to open connection to ${url}: ${e.message}")
+ unableToSendHttpRequest = true
return
}
@@ -65,7 +65,8 @@
connection.connect()
checkResponseAndLog(connection, log)
} catch (e: Exception) {
- log.warn("Unexpected exception happened ${e.message}: ${e.stackTrace}")
+ log.warn("Http report: Unexpected exception happened: '${e.message}': ${e.stackTraceToString()}")
+ unableToSendHttpRequest = true
checkResponseAndLog(connection, log)
} finally {
connection.disconnect()
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsIT.kt
index 30dfc82..e235f6a 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsIT.kt
@@ -21,7 +21,18 @@
project("incrementalMultiproject", gradleVersion) {
enableStatisticReports(BuildReportType.HTTP, "invalid/url")
build("assemble") {
- assertOutputContainsExactTimes("Unable to open connection to")
+ assertOutputContainsExactlyTimes("Http report: Unable to open connection to")
+ }
+ }
+ }
+
+ @DisplayName("invalid http host")
+ @GradleTest
+ fun testHttpReportWithUnknownHost(gradleVersion: GradleVersion) {
+ project("incremetnalMultiproject", gradleVersion) {
+ enableStatisticReports(BuildReportType.HTTP, "https://invalid")
+ build("compileKotlin") {
+ assertOutputContainsExactlyTimes("Http report: Unexpected exception happened ")
}
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt
index a5cf255..19fe550 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildStatisticsWithKtorIT.kt
@@ -156,7 +156,7 @@
project("incrementalMultiproject", gradleVersion) {
enableStatisticReports(BuildReportType.HTTP, "http://localhost:$port/badRequest")
build("assemble") {
- assertOutputContainsExactTimes("Failed to send statistic to", 1)
+ assertOutputContainsExactlyTimes("Failed to send statistic to", 1)
}
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIT.kt
index 121e94b..a5cddb8 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIT.kt
@@ -29,8 +29,8 @@
jdkVersion: JdkVersions.ProvidedJdk,
) {
fun BuildResult.assertKotlinGradleBuildServicesAreInitialized() {
- assertOutputContainsExactTimes("Initialized KotlinGradleBuildServices", expectedRepetitionTimes = 1)
- assertOutputContainsExactTimes("Disposed KotlinGradleBuildServices", expectedRepetitionTimes = 1)
+ assertOutputContainsExactlyTimes("Initialized KotlinGradleBuildServices", expectedRepetitionTimes = 1)
+ assertOutputContainsExactlyTimes("Disposed KotlinGradleBuildServices", expectedRepetitionTimes = 1)
}
project(
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/outputAssertions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/outputAssertions.kt
index 39df50c..466b16d 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/outputAssertions.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/outputAssertions.kt
@@ -38,30 +38,6 @@
}
/**
- * Asserts Gradle output contains [expectedSubString] string exact times.
- */
-fun BuildResult.assertOutputContainsExactTimes(
- expectedSubString: String,
- expectedRepetitionTimes: Int = 1,
-) {
- var currentOffset = 0
- var count = 0
- var nextIndex = output.indexOf(expectedSubString, currentOffset)
-
- while (nextIndex != -1 && count < expectedRepetitionTimes + 1) {
- count++
- currentOffset = nextIndex + expectedSubString.length
- nextIndex = output.indexOf(expectedSubString, currentOffset)
- }
-
- assert(count == expectedRepetitionTimes) {
- printBuildOutput()
- "Build output contains \"$expectedSubString\" $count times"
- }
-}
-
-
-/**
* Asserts Gradle output does not contain [notExpectedSubString] string.
*
* @param wrappingCharsCount amount of chars to include before and after [notExpectedSubString] occurrence