[starter] Fix naming of SpanFilter to make it more clear and add a new filter

GitOrigin-RevId: 35c7627da1ceb34a088d29ef85e2e8cab2460f14
This commit is contained in:
Maxim.Kolmakov
2024-09-03 12:21:40 +02:00
committed by intellij-monorepo-bot
parent d41f745ce8
commit 7239413e00
3 changed files with 15 additions and 6 deletions

View File

@@ -19,14 +19,23 @@ class SpanFilter internal constructor(
return SpanFilter(filter = { spanData -> spanData.name == name }, rawFilter = { it.operationName == name })
}
fun containsNameIn(names: List<String>): SpanFilter {
fun nameInList(names: List<String>): SpanFilter {
return SpanFilter(filter = { names.contains(it.name) }, rawFilter = { names.contains(it.operationName) })
}
fun containsNameIn(vararg names: String): SpanFilter {
return SpanFilter(filter = { names.contains(it.name) }, rawFilter = { names.contains(it.operationName) })
fun nameInList(vararg names: String): SpanFilter {
return nameInList(names.toList())
}
fun nameContainsAny(names: List<String>): SpanFilter {
return SpanFilter(filter = { span -> names.any { span.name.contains(it) } }, rawFilter = { span -> names.any { span.operationName.contains(it) } })
}
fun nameContainsAny(vararg names: String): SpanFilter {
return nameContainsAny(names.toList())
}
fun nameContains(substring: String): SpanFilter {
return SpanFilter(filter = { it.name.contains(substring) }, rawFilter = { it.operationName.contains(substring) })
}

View File

@@ -29,7 +29,7 @@ private val logger = logger<OpentelemetrySpanJsonParser>()
*/
fun getMetricsBasedOnDiffBetweenSpans(name: String, file: Path, fromSpanName: String, toSpanName: String): List<Metric> {
val betweenSpanProcessor = SpanInfoProcessor()
val spanElements = OpentelemetrySpanJsonParser(SpanFilter.containsNameIn(listOf(fromSpanName, toSpanName))).getSpanElements(file)
val spanElements = OpentelemetrySpanJsonParser(SpanFilter.nameInList(listOf(fromSpanName, toSpanName))).getSpanElements(file)
val spanToMetricMap = spanElements
.mapNotNull { betweenSpanProcessor.process(it) }
.groupBy { it.name }
@@ -78,7 +78,7 @@ fun getStartupTimestampMs(file: Path): Long {
fun getMetricsForStartup(file: Path): List<Metric> {
val spansToPublish = listOf("bootstrap", "startApplication", "ProjectImpl container")
val spansSuffixesToIgnore = listOf(": scheduled", ": completing")
val filter = SpanFilter.containsNameIn(spansToPublish)
val filter = SpanFilter.nameInList(spansToPublish)
val childFilter = SpanFilter(
filter = { span -> spansSuffixesToIgnore.none { span.name.endsWith(it) } },
rawFilter = { span -> spansSuffixesToIgnore.none { span.operationName.endsWith(it) } },

View File

@@ -49,7 +49,7 @@ class OpenTelemetrySpanExtractionTest {
OpenTelemetrySpanCollector(SpanFilter.nameEquals(spanName)).collect(file)
}.flatten()
val result = OpenTelemetrySpanCollector(SpanFilter.containsNameIn(spanNames))
val result = OpenTelemetrySpanCollector(SpanFilter.nameInList(spanNames))
.collect(file)
result.shouldContainExactlyInAnyOrder(expected)