Skip to content

Commit f2a72cc

Browse files
author
David Hasani
committed
emit metric only after initial download
1 parent e99c9b7 commit f2a72cc

File tree

6 files changed

+21
-14
lines changed

6 files changed

+21
-14
lines changed

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/ArtifactHandler.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,6 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
7171
is DownloadArtifactResult.Success -> {
7272
if (result.artifact !is CodeModernizerArtifact) return notifyUnableToApplyPatch("")
7373
displayDiffUsingPatch(result.artifact.patch, job, source)
74-
val linesOfCodeSubmitted = CodeModernizerSessionState.getInstance(project).getLinesOfCodeSubmitted()
75-
result.artifact.metrics.linesOfCodeSubmitted = linesOfCodeSubmitted
76-
clientAdaptor.sendTransformTelemetryEvent(job, result.artifact.metrics)
7774
}
7875
is DownloadArtifactResult.ParseZipFailure -> notifyUnableToApplyPatch(result.failureReason.errorMessage)
7976
is DownloadArtifactResult.UnzipFailure -> notifyUnableToApplyPatch(result.failureReason.errorMessage)
@@ -203,6 +200,11 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
203200
downloadedBuildLogPath[job] = path
204201
} else {
205202
downloadedArtifacts[job] = path
203+
if (output.artifact is CodeModernizerArtifact) {
204+
output.artifact.metrics.linesOfCodeSubmitted = CodeModernizerSessionState.getInstance(project).getLinesOfCodeSubmitted()
205+
output.artifact.metrics.programmingLanguage = CodeModernizerSessionState.getInstance(project).getTransformationLanguage()
206+
clientAdaptor.sendTransformTelemetryEvent(job, output.artifact.metrics)
207+
}
206208
}
207209
output
208210
} catch (e: RuntimeException) {

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/client/GumbyClient.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,11 @@ class GumbyClient(private val project: Project) {
222222
it.timestamp(Instant.now())
223223
it.ideCategory(IdeCategory.JETBRAINS)
224224
it.programmingLanguage { language ->
225-
language.languageName("JAVA") // TODO: figure out when/how to make this SQL
225+
language.languageName(metrics.programmingLanguage)
226226
}
227227
it.linesOfCodeChanged(metrics.linesOfCodeChanged)
228-
it.charsOfCodeChanged(metrics.charsOfCodeChanged)
229-
it.linesOfCodeSubmitted(metrics.linesOfCodeSubmitted)
228+
it.charsOfCodeChanged(metrics.charactersOfCodeChanged)
229+
it.linesOfCodeSubmitted(metrics.linesOfCodeSubmitted) // currently unavailable for SQL conversions
230230
}
231231
}
232232
requestBuilder.optOutPreference(getTelemetryOptOutPreference())

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerArtifact.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ open class CodeModernizerArtifact(
6262
val patches = extractPatches(manifest)
6363
val summary = extractSummary(manifest)
6464
val summaryMarkdownFile = getSummaryFile(manifest)
65-
val metrics = loadMetrics()
65+
val metrics = loadMetrics(manifest)
6666
if (patches.size != 1) throw RuntimeException("Expected 1 patch, but found ${patches.size}")
6767
return CodeModernizerArtifact(zipPath, manifest, patches, summary, summaryMarkdownFile, metrics)
6868
}
@@ -100,10 +100,10 @@ open class CodeModernizerArtifact(
100100
}
101101
}
102102

103-
private fun loadMetrics(): CodeModernizerMetrics {
103+
private fun loadMetrics(manifest: CodeModernizerManifest): CodeModernizerMetrics {
104104
try {
105105
val metricsFile =
106-
tempDir.listFiles()
106+
tempDir.resolve(manifest.metricsRoot).listFiles()
107107
?.firstOrNull { it.name.endsWith(METRICS_FILE_NAME) }
108108
return MAPPER.readValue(metricsFile, CodeModernizerMetrics::class.java)
109109
} catch (exception: JsonProcessingException) {

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerMetrics.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ package software.aws.toolkits.jetbrains.services.codemodernizer.model
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
77

88
@JsonIgnoreProperties(ignoreUnknown = true)
9-
data class CodeModernizerMetrics(val linesOfCodeChanged: Int, val charsOfCodeChanged: Int, var linesOfCodeSubmitted: Int?)
9+
data class CodeModernizerMetrics(val linesOfCodeChanged: Int?, val charactersOfCodeChanged: Int?, var linesOfCodeSubmitted: Int?, var programmingLanguage: String?)

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerSessionState.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModerni
1212
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerSessionContext
1313
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobHistoryItem
1414
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
15+
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getLinesOfCodeSubmitted
1516
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getTableMapping
1617
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.parseTableMapping
17-
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getLinesOfCodeSubmitted
1818
import java.time.Duration
1919
import java.time.Instant
2020
import kotlin.io.path.Path
@@ -59,10 +59,13 @@ class CodeModernizerSessionState {
5959

6060
fun getJobHistory(): Array<JobHistoryItem> = previousJobHistory.values.toTypedArray()
6161

62-
// used to emit a TransformEvent metric at end of transformation
62+
// LOC submitted only available for Java upgrades
6363
fun getLinesOfCodeSubmitted(): Int? {
6464
val tableMapping = transformationPlan?.transformationSteps()?.get(0)?.let { getTableMapping(it.progressUpdates()) }
6565
val planTable = tableMapping?.let { parseTableMapping(it) }
6666
return planTable?.let { getLinesOfCodeSubmitted(it) }
6767
}
68+
69+
// we only create a transformationPlan for Java upgrades
70+
fun getTransformationLanguage(): String = if (transformationPlan != null) "JAVA" else "SQL"
6871
}

plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerTestBase.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,10 @@ open class CodeWhispererCodeModernizerTestBase(
133133

134134
internal val validMetrics =
135135
CodeModernizerMetrics(
136-
charsOfCodeChanged = 1234,
137-
linesOfCodeChanged = 567
136+
charactersOfCodeChanged = 1234,
137+
linesOfCodeChanged = 567,
138+
linesOfCodeSubmitted = 8910,
139+
programmingLanguage = "JAVA",
138140
)
139141

140142
internal val exampleCreateUploadUrlResponse =

0 commit comments

Comments
 (0)