From c9782abeaa81e78905e5b4475b3f2ad2096bd7bd Mon Sep 17 00:00:00 2001 From: "Maxim.Kolmakov" Date: Mon, 15 Jul 2024 09:53:53 +0200 Subject: [PATCH] [starter] Apply transform also to JSON meter GitOrigin-RevId: 1d4fdd1ba5289338612c1c86acaab1d82bca8645 --- .../ide/metrics/collector/OpenTelemetryCsvMeterCollector.kt | 6 +++--- .../metrics/collector/OpenTelemetryJsonMeterCollector.kt | 6 +++--- .../collector/meters/DoubleCounterToMetricConverter.kt | 5 +++-- .../collector/meters/DoubleGaugeToMetricConverter.kt | 5 +++-- .../meters/DoubleHistogramMeterToMetricConverter.kt | 2 +- .../collector/meters/LongCounterToMetricConverter.kt | 5 +++-- .../metrics/collector/meters/LongGaugeToMetricConverter.kt | 5 +++-- .../ide/metrics/collector/meters/MeterToMetricConverter.kt | 2 +- 8 files changed, 20 insertions(+), 16 deletions(-) diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryCsvMeterCollector.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryCsvMeterCollector.kt index 68e4505e65dd..b78f3d76d4dd 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryCsvMeterCollector.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryCsvMeterCollector.kt @@ -26,16 +26,16 @@ open class OpenTelemetryCsvMeterCollector( return metricsCsvFiles } - fun collect(logsDirPath: Path, transform: (Map.Entry) -> Pair): List { + fun collect(logsDirPath: Path, transform: (String, Long) -> Pair): List { val telemetryMetrics: Map = MetricsImporterUtils.fromCsvFile(getOpenTelemetryCsvReportFiles(logsDirPath)) .filter(metersFilter) .map { it.key to metricsSelectionStrategy.selectMetric(it.value) }.toMap() - return telemetryMetrics.map { transform(it) }.map { PerformanceMetrics.newDuration(name = it.first, durationMillis = it.second) } + return telemetryMetrics.map { transform(it.key, it.value.value) }.map { PerformanceMetrics.newDuration(name = it.first, durationMillis = it.second) } } override fun collect(logsDirPath: Path): List { - return collect(logsDirPath) { it.key to it.value.value.toInt() } + return collect(logsDirPath) { name, value -> name to value.toInt() } } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryJsonMeterCollector.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryJsonMeterCollector.kt index 350aedfc7ade..9be20998ff29 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryJsonMeterCollector.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/OpenTelemetryJsonMeterCollector.kt @@ -23,7 +23,7 @@ import kotlin.io.path.name open class OpenTelemetryJsonMeterCollector(val metricsSelectionStrategy: MetricsSelectionStrategy, val meterFilter: (MetricData) -> Boolean) : TelemetryMetricsCollector { - fun collect(logsDirPath: Path, transform: (Map. Entry) -> Pair): List { + fun collect(logsDirPath: Path, transform: (String, Long) -> Pair): List { val metricsFiles = logsDirPath.listDirectoryEntries("*.json").filter { it.name.startsWith("open-telemetry-meter") } // fallback to the collecting meters from the .csv files for older IDEs versions (where meters aren't exported to JSON files) @@ -60,12 +60,12 @@ open class OpenTelemetryJsonMeterCollector(val metricsSelectionStrategy: Metrics MetricDataType.DOUBLE_GAUGE -> DoubleGaugeToMetricConverter() MetricDataType.HISTOGRAM -> DoubleHistogramMeterToMetricConverter() else -> TODO("Type ${it.type} isn't supported yet") - }.convert(it) + }.convert(it, transform) } } override fun collect(logsDirPath: Path): List { - return collect(logsDirPath) { it.key to it.value.value.toInt() } + return collect(logsDirPath) { name, value -> name to value.toInt() } } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleCounterToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleCounterToMetricConverter.kt index 85601a6d0cc9..6fb28dca14e0 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleCounterToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleCounterToMetricConverter.kt @@ -4,7 +4,8 @@ import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics import io.opentelemetry.sdk.metrics.data.MetricData class DoubleCounterToMetricConverter : MeterToMetricConverter { - override fun convert(metricData: MetricData): List { - return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.doubleSumData.points.first().value.toInt())) + override fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List { + val metric = transform(metricData.name, metricData.doubleSumData.points.first().value.toLong()) + return listOf(PerformanceMetrics.newDuration(metric.first, metric.second)) } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleGaugeToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleGaugeToMetricConverter.kt index b3aceb410eef..bdb1464e11ad 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleGaugeToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleGaugeToMetricConverter.kt @@ -4,7 +4,8 @@ import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics import io.opentelemetry.sdk.metrics.data.MetricData class DoubleGaugeToMetricConverter : MeterToMetricConverter { - override fun convert(metricData: MetricData): List { - return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.doubleGaugeData.points.first().value.toInt())) + override fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List { + val metric = transform(metricData.name, metricData.doubleGaugeData.points.first().value.toLong()) + return listOf(PerformanceMetrics.newDuration(metric.first, metric.second)) } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleHistogramMeterToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleHistogramMeterToMetricConverter.kt index 86455743cc1e..110deb9a765c 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleHistogramMeterToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/DoubleHistogramMeterToMetricConverter.kt @@ -13,7 +13,7 @@ class DoubleHistogramMeterToMetricConverter : MeterToMetricConverter { .removeSuffix(".") } - override fun convert(metricData: MetricData): List { + override fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List { val dataPoint: HistogramPointData = metricData.histogramData.points.first() val minMetric = PerformanceMetrics.newDuration(metricData.getMetricName("min"), diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongCounterToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongCounterToMetricConverter.kt index 36b729dec69c..b01e85ffae95 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongCounterToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongCounterToMetricConverter.kt @@ -4,7 +4,8 @@ import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics import io.opentelemetry.sdk.metrics.data.MetricData class LongCounterToMetricConverter : MeterToMetricConverter { - override fun convert(metricData: MetricData): List { - return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.longSumData.points.first().value.toInt())) + override fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List { + val metric = transform(metricData.name, metricData.longSumData.points.first().value) + return listOf(PerformanceMetrics.newDuration(metric.first, metric.second)) } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongGaugeToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongGaugeToMetricConverter.kt index f478300947d1..c365f52c1d6f 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongGaugeToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/LongGaugeToMetricConverter.kt @@ -4,7 +4,8 @@ import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics import io.opentelemetry.sdk.metrics.data.MetricData class LongGaugeToMetricConverter : MeterToMetricConverter { - override fun convert(metricData: MetricData): List { - return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.longGaugeData.points.first().value.toInt())) + override fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List { + val metric = transform(metricData.name, metricData.longGaugeData.points.first().value) + return listOf(PerformanceMetrics.newDuration(metric.first, metric.second)) } } \ No newline at end of file diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/MeterToMetricConverter.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/MeterToMetricConverter.kt index c8cb20e8975d..f5bd4206e223 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/MeterToMetricConverter.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/meters/MeterToMetricConverter.kt @@ -4,5 +4,5 @@ import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics import io.opentelemetry.sdk.metrics.data.MetricData interface MeterToMetricConverter { - fun convert(metricData: MetricData): List + fun convert(metricData: MetricData, transform: (String, Long) -> Pair): List } \ No newline at end of file