Skip to content

Commit 7916359

Browse files
authored
feat(server): add info about typing's source to metrics (#1952)
Thanks to this, we'll be able to monitor the source of typings, and also proactively add typings for untyped actions.
1 parent e681dd9 commit 7916359

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed

jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutes.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.github.typesafegithub.workflows.jitbindingserver
33
import com.sksamuel.aedile.core.LoadingCache
44
import io.github.oshai.kotlinlogging.KotlinLogging.logger
55
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
6+
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
67
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.prettyPrint
78
import io.github.typesafegithub.workflows.mavenbinding.JarArtifact
89
import io.github.typesafegithub.workflows.mavenbinding.TextArtifact
@@ -73,7 +74,7 @@ private fun Route.headArtifact(
7374
call.respondNotFound()
7475
}
7576

76-
prometheusRegistry?.incrementArtifactCounter(call)
77+
prometheusRegistry?.incrementArtifactCounter(call, bindingArtifacts.typingActualSource)
7778
}
7879
}
7980

@@ -96,7 +97,7 @@ private fun Route.getArtifact(
9697
is JarArtifact -> call.respondBytes(artifact.data(), ContentType.parse("application/java-archive"))
9798
}
9899

99-
prometheusRegistry?.incrementArtifactCounter(call)
100+
prometheusRegistry?.incrementArtifactCounter(call, bindingArtifacts.typingActualSource)
100101
}
101102
}
102103

@@ -122,7 +123,10 @@ private suspend fun ApplicationCall.toBindingArtifacts(
122123
return bindingsCache.get(actionCoords)
123124
}
124125

125-
private fun PrometheusMeterRegistry.incrementArtifactCounter(call: ApplicationCall) {
126+
private fun PrometheusMeterRegistry.incrementArtifactCounter(
127+
call: ApplicationCall,
128+
typingActualSource: TypingActualSource?,
129+
) {
126130
val owner = call.parameters["owner"] ?: "unknown"
127131
val name = call.parameters["name"] ?: "unknown"
128132
val version = call.parameters["version"] ?: "unknown"
@@ -133,6 +137,12 @@ private fun PrometheusMeterRegistry.incrementArtifactCounter(call: ApplicationCa
133137
.status()
134138
?.value
135139
?.toString() ?: "unknown"
140+
val typingActualSourceString =
141+
when (typingActualSource) {
142+
TypingActualSource.ACTION -> "action"
143+
TypingActualSource.TYPING_CATALOG -> "typing_catalog"
144+
null -> "no_typing"
145+
}
136146

137147
val counter =
138148
this.counter(
@@ -144,6 +154,7 @@ private fun PrometheusMeterRegistry.incrementArtifactCounter(call: ApplicationCa
144154
Tag.of("file", file),
145155
Tag.of("method", method),
146156
Tag.of("status", status),
157+
Tag.of("typing_actual_source", typingActualSourceString),
147158
),
148159
)
149160
counter.increment()

jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.typesafegithub.workflows.jitbindingserver
22

33
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
4+
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
45
import io.github.typesafegithub.workflows.mavenbinding.TextArtifact
56
import io.github.typesafegithub.workflows.mavenbinding.VersionArtifacts
67
import io.kotest.core.spec.style.FunSpec
@@ -24,6 +25,7 @@ class ArtifactRoutesTest :
2425
buildVersionArtifacts = {
2526
VersionArtifacts(
2627
files = mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" }),
28+
typingActualSource = TypingActualSource.TYPING_CATALOG,
2729
)
2830
},
2931
// Irrelevant for these tests.
@@ -89,6 +91,7 @@ class ArtifactRoutesTest :
8991
Exception("An internal error occurred!") andThen
9092
VersionArtifacts(
9193
files = mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" }),
94+
typingActualSource = TypingActualSource.TYPING_CATALOG,
9295
)
9396
application {
9497
appModule(

jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/MetadataRoutesTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class MetadataRoutesTest :
2828
buildVersionArtifacts = {
2929
VersionArtifacts(
3030
files = emptyMap(),
31+
typingActualSource = null,
3132
)
3233
},
3334
)
@@ -55,6 +56,7 @@ class MetadataRoutesTest :
5556
buildVersionArtifacts = {
5657
VersionArtifacts(
5758
files = emptyMap(),
59+
typingActualSource = null,
5860
)
5961
},
6062
)
@@ -81,6 +83,7 @@ class MetadataRoutesTest :
8183
buildVersionArtifacts = {
8284
VersionArtifacts(
8385
files = emptyMap(),
86+
typingActualSource = null,
8487
)
8588
},
8689
)
@@ -116,6 +119,7 @@ class MetadataRoutesTest :
116119
buildVersionArtifacts = {
117120
VersionArtifacts(
118121
files = emptyMap(),
122+
typingActualSource = null,
119123
)
120124
},
121125
)

maven-binding-builder/src/main/kotlin/io/github/typesafegithub/workflows/mavenbinding/JarBuilding.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package io.github.typesafegithub.workflows.mavenbinding
44

55
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
66
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.NewestForVersion
7+
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
78
import io.github.typesafegithub.workflows.actionbindinggenerator.generation.ActionBinding
89
import io.github.typesafegithub.workflows.actionbindinggenerator.generation.generateBinding
910
import org.jetbrains.kotlin.cli.common.ExitCode
@@ -24,6 +25,7 @@ import kotlin.io.path.writeText
2425
internal data class Jars(
2526
val mainJar: () -> ByteArray,
2627
val sourcesJar: () -> ByteArray,
28+
val typingActualSource: TypingActualSource?,
2729
)
2830

2931
internal fun ActionCoords.buildJars(): Jars? {
@@ -53,6 +55,7 @@ internal fun ActionCoords.buildJars(): Jars? {
5355
return Jars(
5456
mainJar = { mainJar },
5557
sourcesJar = { sourcesJar },
58+
typingActualSource = binding.firstNotNullOfOrNull { it.typingActualSource },
5659
)
5760
}
5861

maven-binding-builder/src/main/kotlin/io/github/typesafegithub/workflows/mavenbinding/VersionArtifactsBuilding.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.typesafegithub.workflows.mavenbinding
22

33
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
4+
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
45

56
sealed interface Artifact
67

@@ -14,6 +15,7 @@ data class JarArtifact(
1415

1516
data class VersionArtifacts(
1617
val files: Map<String, Artifact>,
18+
val typingActualSource: TypingActualSource?,
1719
)
1820

1921
fun buildVersionArtifacts(actionCoords: ActionCoords): VersionArtifacts? {
@@ -68,6 +70,7 @@ fun buildVersionArtifacts(actionCoords: ActionCoords): VersionArtifacts? {
6870
"$mavenName-$version.module.sha256" to TextArtifact { module.sha256Checksum() },
6971
"$mavenName-$version.module.sha512" to TextArtifact { module.sha512Checksum() },
7072
),
73+
typingActualSource = jars.typingActualSource,
7174
)
7275
}
7376
}

0 commit comments

Comments
 (0)