Skip to content

Commit 370ed03

Browse files
dhasani23David Hasani
andauthored
telemetry(amazonq): combine metrics (#5227)
* telemetry(amazonq): combine metrics * remove unneeded field * re-run CI * remove unused property * fix detekt --------- Co-authored-by: David Hasani <[email protected]>
1 parent fdfc07c commit 370ed03

File tree

5 files changed

+26
-53
lines changed

5 files changed

+26
-53
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mockitoKotlin = "5.4.0"
2727
mockk = "1.13.10"
2828
nimbus-jose-jwt = "9.40"
2929
node-gradle = "7.0.2"
30-
telemetryGenerator = "1.0.284"
30+
telemetryGenerator = "1.0.291"
3131
testLogger = "4.0.0"
3232
testRetry = "1.5.10"
3333
# test-only; platform provides slf4j transitively at runtime

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ import software.aws.toolkits.jetbrains.utils.notifyStickyInfo
5656
import software.aws.toolkits.jetbrains.utils.notifyStickyWarn
5757
import software.aws.toolkits.resources.message
5858
import software.aws.toolkits.telemetry.CodeTransformArtifactType
59-
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
6059
import java.io.File
6160
import java.nio.file.Files
6261
import java.nio.file.Path
@@ -93,17 +92,17 @@ class ArtifactHandler(
9392
private var totalPatchFiles: Int = 0
9493
private var sharedPatchIndex: Int = 0
9594

96-
internal suspend fun displayDiff(job: JobId, source: CodeTransformVCSViewerSrcComponents) {
95+
internal suspend fun displayDiff(job: JobId) {
9796
if (isCurrentlyDownloading.get()) return
9897
when (val result = downloadArtifact(job, TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS)) {
9998
is DownloadArtifactResult.Success -> {
10099
if (result.artifact !is CodeModernizerArtifact) return notifyUnableToApplyPatch("")
101100
totalPatchFiles = result.artifact.patches.size
102101
if (result.artifact.description == null) {
103-
displayDiffUsingPatch(result.artifact.patches.first(), totalPatchFiles, null, job, source)
102+
displayDiffUsingPatch(result.artifact.patches.first(), totalPatchFiles, null, job)
104103
} else {
105104
val diffDescription = result.artifact.description[getCurrentPatchIndex()]
106-
displayDiffUsingPatch(result.artifact.patches[getCurrentPatchIndex()], totalPatchFiles, diffDescription, job, source)
105+
displayDiffUsingPatch(result.artifact.patches[getCurrentPatchIndex()], totalPatchFiles, diffDescription, job)
107106
}
108107
}
109108
is DownloadArtifactResult.ParseZipFailure -> notifyUnableToApplyPatch(result.failureReason.errorMessage)
@@ -285,7 +284,6 @@ class ArtifactHandler(
285284
totalPatchFiles: Int,
286285
diffDescription: PatchInfo?,
287286
jobId: JobId,
288-
source: CodeTransformVCSViewerSrcComponents,
289287
) {
290288
withContext(EDT) {
291289
val dialog = ApplyPatchDifferentiatedDialog(
@@ -312,8 +310,7 @@ class ArtifactHandler(
312310
dialog.isModal = true
313311

314312
if (dialog.showAndGet()) {
315-
telemetry.submitSelection("Submit-${diffDescription?.name}")
316-
telemetry.viewArtifact(CodeTransformArtifactType.ClientInstructions, jobId, "Submit", source)
313+
telemetry.submitSelection("Submit-${diffDescription?.name}", jobId.toString())
317314
if (diffDescription == null) {
318315
val resultContent = CodeTransformChatMessageContent(
319316
type = CodeTransformChatMessageType.PendingAnswer,
@@ -352,7 +349,7 @@ class ArtifactHandler(
352349
}
353350
}
354351
} else {
355-
telemetry.viewArtifact(CodeTransformArtifactType.ClientInstructions, jobId, "Cancel", source)
352+
telemetry.submitSelection("Cancel", jobId.toString())
356353
}
357354
}
358355
}
@@ -465,9 +462,9 @@ class ArtifactHandler(
465462
)
466463
}
467464

468-
fun displayDiffAction(jobId: JobId, source: CodeTransformVCSViewerSrcComponents) = runReadAction {
465+
fun displayDiffAction(jobId: JobId) = runReadAction {
469466
projectCoroutineScope(project).launch {
470-
displayDiff(jobId, source)
467+
displayDiff(jobId)
471468
}
472469
}
473470

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

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import software.amazon.awssdk.services.codewhispererruntime.model.Transformation
1111
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSelection
1212
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
1313
import software.aws.toolkits.jetbrains.services.codemodernizer.model.ValidationResult
14-
import software.aws.toolkits.jetbrains.services.codemodernizer.state.CodeModernizerSessionState
1514
import software.aws.toolkits.jetbrains.services.codemodernizer.state.CodeTransformTelemetryState
1615
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.calculateTotalLatency
1716
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getAuthType
@@ -24,8 +23,8 @@ import software.aws.toolkits.telemetry.CodeTransformCancelSrcComponents
2423
import software.aws.toolkits.telemetry.CodeTransformJavaSourceVersionsAllowed
2524
import software.aws.toolkits.telemetry.CodeTransformJavaTargetVersionsAllowed
2625
import software.aws.toolkits.telemetry.CodeTransformPreValidationError
27-
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
2826
import software.aws.toolkits.telemetry.CodetransformTelemetry
27+
import software.aws.toolkits.telemetry.MetricResult
2928
import software.aws.toolkits.telemetry.Result
3029
import java.time.Instant
3130
import java.util.Base64
@@ -36,7 +35,6 @@ import java.util.Base64
3635
@Service(Service.Level.PROJECT)
3736
class CodeTransformTelemetryManager(private val project: Project) {
3837
private val sessionId get() = CodeTransformTelemetryState.instance.getSessionId()
39-
private val currentJobStatus get() = CodeModernizerSessionState.getInstance(project).currentJobStatus.toString()
4038

4139
fun initiateTransform(telemetryErrorMessage: String? = null) {
4240
CodetransformTelemetry.initiateTransform(
@@ -65,13 +63,14 @@ class CodeTransformTelemetryManager(private val project: Project) {
6563
)
6664
}
6765

68-
fun submitSelection(userChoice: String, customerSelection: CustomerSelection? = null, telemetryErrorMessage: String? = null) {
66+
fun submitSelection(userChoice: String, jobId: String? = null, customerSelection: CustomerSelection? = null, telemetryErrorMessage: String? = null) {
6967
CodetransformTelemetry.submitSelection(
70-
// TODO: remove below 2 lines (JavaSource / JavaTarget) once BI is updated to use source / target
68+
// TODO: remove the below 2 lines (JavaSource / JavaTarget) once BI is updated to use source / target
7169
codeTransformJavaSourceVersionsAllowed = CodeTransformJavaSourceVersionsAllowed.from(customerSelection?.sourceJavaVersion?.name.orEmpty()),
7270
codeTransformJavaTargetVersionsAllowed = CodeTransformJavaTargetVersionsAllowed.from(customerSelection?.targetJavaVersion?.name.orEmpty()),
7371
codeTransformSessionId = sessionId,
7472
codeTransformProjectId = customerSelection?.let { getProjectHash(it) },
73+
codeTransformJobId = jobId,
7574
source = if (userChoice == "Confirm-Java") customerSelection?.sourceJavaVersion?.name.orEmpty() else customerSelection?.sourceVendor.orEmpty(),
7675
target = if (userChoice == "Confirm-Java") customerSelection?.targetJavaVersion?.name.orEmpty() else customerSelection?.targetVendor.orEmpty(),
7776
userChoice = userChoice,
@@ -128,25 +127,6 @@ class CodeTransformTelemetryManager(private val project: Project) {
128127
)
129128
}
130129

131-
fun viewArtifact(
132-
artifactType: CodeTransformArtifactType,
133-
jobId: JobId,
134-
userChoice: String,
135-
source: CodeTransformVCSViewerSrcComponents,
136-
telemetryErrorMessage: String? = null,
137-
) {
138-
CodetransformTelemetry.viewArtifact(
139-
codeTransformArtifactType = artifactType,
140-
codeTransformVCSViewerSrcComponents = source,
141-
codeTransformSessionId = sessionId,
142-
codeTransformJobId = jobId.id,
143-
codeTransformStatus = currentJobStatus,
144-
userChoice = userChoice,
145-
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
146-
reason = telemetryErrorMessage,
147-
)
148-
}
149-
150130
fun getProjectHash(customerSelection: CustomerSelection) = Base64.getEncoder().encodeToString(
151131
DigestUtils.sha256(customerSelection.configurationFile?.toNioPath()?.toAbsolutePath().toString())
152132
)
@@ -196,12 +176,12 @@ class CodeTransformTelemetryManager(private val project: Project) {
196176

197177
fun logHil(jobId: String, metaData: HilTelemetryMetaData, success: Boolean, reason: String) {
198178
CodetransformTelemetry.humanInTheLoop(
199-
project,
200-
jobId,
201-
metaData.toString(),
202-
sessionId,
203-
reason,
204-
success,
179+
project = project,
180+
codeTransformJobId = jobId,
181+
codeTransformMetadata = metaData.toString(),
182+
codeTransformSessionId = sessionId,
183+
reason = reason,
184+
result = if (success) MetricResult.Succeeded else MetricResult.Failed,
205185
)
206186
}
207187

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.unzipFile
113113
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.validateSctMetadata
114114
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType
115115
import software.aws.toolkits.resources.message
116-
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
117116

118117
class CodeTransformChatController(
119118
private val context: AmazonQAppInitContext,
@@ -273,7 +272,7 @@ class CodeTransformChatController(
273272

274273
override suspend fun processCodeTransformCancelAction(message: IncomingCodeTransformMessage.CodeTransformCancel) {
275274
if (!checkForAuth(message.tabId)) {
276-
telemetry.submitSelection("Cancel", null, "User is not authenticated")
275+
telemetry.submitSelection("Cancel", null, null, "User is not authenticated")
277276
return
278277
}
279278

@@ -288,7 +287,7 @@ class CodeTransformChatController(
288287

289288
override suspend fun processCodeTransformStartAction(message: IncomingCodeTransformMessage.CodeTransformStart) {
290289
if (!checkForAuth(message.tabId)) {
291-
telemetry.submitSelection("Confirm", null, "User is not authenticated")
290+
telemetry.submitSelection("Confirm", null, null, "User is not authenticated")
292291
return
293292
}
294293

@@ -311,7 +310,7 @@ class CodeTransformChatController(
311310
codeModernizerManager.createCodeModernizerSession(selection, context.project)
312311

313312
// Publish metric to capture user selection before local build starts
314-
telemetry.submitSelection("Confirm-Java", selection)
313+
telemetry.submitSelection("Confirm-Java", null, selection)
315314

316315
codeTransformChatHelper.run {
317316
addNewMessage(buildUserInputSkipTestsFlagChatIntroContent())
@@ -343,7 +342,7 @@ class CodeTransformChatController(
343342

344343
unzipFile(selectedZipFile.toNioPath(), extractedZip.toPath(), true)
345344

346-
val sctFile = extractedZip.listFiles { file -> file.name.endsWith(".sct") }.firstOrNull()
345+
val sctFile = extractedZip.listFiles { file -> file.name.endsWith(".sct") }?.firstOrNull()
347346

348347
val metadataValidationResult = validateSctMetadata(sctFile)
349348

@@ -373,7 +372,7 @@ class CodeTransformChatController(
373372
sqlMetadataZip = extractedZip,
374373
)
375374
codeModernizerManager.createCodeModernizerSession(selection, context.project)
376-
telemetry.submitSelection("Confirm-SQL", selection)
375+
telemetry.submitSelection("Confirm-SQL", null, selection)
377376
}
378377
}
379378

@@ -494,7 +493,6 @@ class CodeTransformChatController(
494493
override suspend fun processCodeTransformViewDiff(message: IncomingCodeTransformMessage.CodeTransformViewDiff) {
495494
artifactHandler.displayDiffAction(
496495
CodeModernizerSessionState.getInstance(context.project).currentJobId as JobId,
497-
CodeTransformVCSViewerSrcComponents.Chat
498496
)
499497
}
500498

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.ValidationR
3535
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.filterOnlyParentFiles
3636
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.unzipFile
3737
import software.aws.toolkits.telemetry.CodeTransformPreValidationError
38-
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
3938
import kotlin.io.path.Path
4039
import kotlin.io.path.createTempDirectory
4140
import kotlin.io.path.exists
@@ -55,7 +54,7 @@ class CodeWhispererCodeModernizerTest : CodeWhispererCodeModernizerTestBase() {
5554
doNothing().whenever(handler).notifyUnableToApplyPatch(any())
5655
val result = DownloadArtifactResult.ParseZipFailure(expectedError)
5756
doReturn(result).whenever(handler).downloadArtifact(any(), eq(TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS), eq(false))
58-
handler.displayDiff(jobId, CodeTransformVCSViewerSrcComponents.ToastNotification)
57+
handler.displayDiff(jobId)
5958
verify(handler, times(1)).notifyUnableToApplyPatch(any())
6059
}
6160

@@ -136,15 +135,14 @@ class CodeWhispererCodeModernizerTest : CodeWhispererCodeModernizerTestBase() {
136135
doAnswer {
137136
mockDialog.showAndGet()
138137
mockDialog
139-
}.whenever(handler).displayDiffUsingPatch(any(), any(), any(), any(), any())
140-
handler.displayDiff(jobId, CodeTransformVCSViewerSrcComponents.Chat)
138+
}.whenever(handler).displayDiffUsingPatch(any(), any(), any(), any())
139+
handler.displayDiff(jobId)
141140
verify(handler, never()).notifyUnableToApplyPatch(any())
142141
verify(handler, times(1)).displayDiffUsingPatch(
143142
testCodeModernizerArtifact.patches[0],
144143
testCodeModernizerArtifact.patches.size,
145144
testCodeModernizerArtifact.description?.get(0),
146145
jobId,
147-
CodeTransformVCSViewerSrcComponents.Chat
148146
)
149147
}
150148

0 commit comments

Comments
 (0)