[starter] Apply transform also to JSON meter

GitOrigin-RevId: 1d4fdd1ba5289338612c1c86acaab1d82bca8645
This commit is contained in:
Maxim.Kolmakov
2024-07-15 09:53:53 +02:00
committed by intellij-monorepo-bot
parent 4e4a60f849
commit c9782abeaa
8 changed files with 20 additions and 16 deletions

View File

@@ -26,16 +26,16 @@ open class OpenTelemetryCsvMeterCollector(
return metricsCsvFiles
}
fun collect(logsDirPath: Path, transform: (Map.Entry<String, LongPointData>) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
fun collect(logsDirPath: Path, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val telemetryMetrics: Map<String, LongPointData> =
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<PerformanceMetrics.Metric> {
return collect(logsDirPath) { it.key to it.value.value.toInt() }
return collect(logsDirPath) { name, value -> name to value.toInt() }
}
}

View File

@@ -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<String, LongPointData>) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
fun collect(logsDirPath: Path, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
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<PerformanceMetrics.Metric> {
return collect(logsDirPath) { it.key to it.value.value.toInt() }
return collect(logsDirPath) { name, value -> name to value.toInt() }
}
}

View File

@@ -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<PerformanceMetrics.Metric> {
return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.doubleSumData.points.first().value.toInt()))
override fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val metric = transform(metricData.name, metricData.doubleSumData.points.first().value.toLong())
return listOf(PerformanceMetrics.newDuration(metric.first, metric.second))
}
}

View File

@@ -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<PerformanceMetrics.Metric> {
return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.doubleGaugeData.points.first().value.toInt()))
override fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val metric = transform(metricData.name, metricData.doubleGaugeData.points.first().value.toLong())
return listOf(PerformanceMetrics.newDuration(metric.first, metric.second))
}
}

View File

@@ -13,7 +13,7 @@ class DoubleHistogramMeterToMetricConverter : MeterToMetricConverter {
.removeSuffix(".")
}
override fun convert(metricData: MetricData): List<PerformanceMetrics.Metric> {
override fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val dataPoint: HistogramPointData = metricData.histogramData.points.first()
val minMetric = PerformanceMetrics.newDuration(metricData.getMetricName("min"),

View File

@@ -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<PerformanceMetrics.Metric> {
return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.longSumData.points.first().value.toInt()))
override fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val metric = transform(metricData.name, metricData.longSumData.points.first().value)
return listOf(PerformanceMetrics.newDuration(metric.first, metric.second))
}
}

View File

@@ -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<PerformanceMetrics.Metric> {
return listOf(PerformanceMetrics.newDuration(metricData.name, metricData.longGaugeData.points.first().value.toInt()))
override fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric> {
val metric = transform(metricData.name, metricData.longGaugeData.points.first().value)
return listOf(PerformanceMetrics.newDuration(metric.first, metric.second))
}
}

View File

@@ -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<PerformanceMetrics.Metric>
fun convert(metricData: MetricData, transform: (String, Long) -> Pair<String, Int>): List<PerformanceMetrics.Metric>
}