Skip to content

Commit 600ee8f

Browse files
authored
telemetry(amazonq): status field tracking user actions #6750
## Problem - The current unit test generation telemetry event lacks a field to distinguish between user actions: acceptance, rejection, failure, or cancellation. ## Solution - Enhancing the amazonq_utgGenerateTests telemetry event by incorporating a status field to capture user actions in toolkit metrics. - Bumping telemetry version to `1.0.307`
1 parent 514e78d commit 600ee8f

File tree

6 files changed

+44
-13
lines changed

6 files changed

+44
-13
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"skippedTestReport": "ts-node ./scripts/skippedTestReport.ts ./packages/amazonq/test/e2e/"
4242
},
4343
"devDependencies": {
44-
"@aws-toolkits/telemetry": "^1.0.305",
44+
"@aws-toolkits/telemetry": "^1.0.307",
4545
"@playwright/browser-chromium": "^1.43.1",
4646
"@stylistic/eslint-plugin": "^2.11.0",
4747
"@types/he": "^1.2.3",

packages/core/src/amazonqTest/chat/controller/controller.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ export class TestController {
286286
}
287287
TelemetryHelper.instance.sendTestGenerationToolkitEvent(
288288
session,
289-
true,
289+
session.isSupportedLanguage,
290290
true,
291291
isCancel ? 'Cancelled' : 'Failed',
292292
session.startTestGenerationRequestId,
@@ -295,7 +295,15 @@ export class TestController {
295295
session.isCodeBlockSelected,
296296
session.artifactsUploadDuration,
297297
session.srcPayloadSize,
298-
session.srcZipFileSize
298+
session.srcZipFileSize,
299+
session.charsOfCodeAccepted,
300+
session.numberOfTestsGenerated,
301+
session.linesOfCodeGenerated,
302+
session.charsOfCodeGenerated,
303+
session.numberOfTestsGenerated,
304+
session.linesOfCodeGenerated,
305+
undefined,
306+
isCancel ? 'CANCELLED' : 'FAILED'
299307
)
300308
if (session.stopIteration) {
301309
// Error from Science
@@ -502,6 +510,7 @@ export class TestController {
502510
unsupportedMessage = `<span style="color: #EE9D28;">&#9888;<b>I'm sorry, but /test only supports Python and Java</b><br></span> I will still generate a suggestion below.`
503511
}
504512
this.messenger.sendMessage(unsupportedMessage, tabID, 'answer')
513+
session.isSupportedLanguage = false
505514
await this.onCodeGeneration(
506515
session,
507516
userPrompt,
@@ -529,6 +538,7 @@ export class TestController {
529538
)
530539
}
531540
session.isCodeBlockSelected = selectionRange !== undefined
541+
session.isSupportedLanguage = true
532542

533543
/**
534544
* Zip the project
@@ -792,7 +802,9 @@ export class TestController {
792802
session.linesOfCodeAccepted,
793803
session.charsOfCodeGenerated,
794804
session.numberOfTestsGenerated,
795-
session.linesOfCodeGenerated
805+
session.linesOfCodeGenerated,
806+
undefined,
807+
'ACCEPTED'
796808
)
797809

798810
await this.endSession(message, FollowUpTypes.SkipBuildAndFinish)
@@ -918,7 +930,9 @@ export class TestController {
918930
0,
919931
session.charsOfCodeGenerated,
920932
session.numberOfTestsGenerated,
921-
session.linesOfCodeGenerated
933+
session.linesOfCodeGenerated,
934+
undefined,
935+
'REJECTED'
922936
)
923937
telemetry.ui_click.emit({ elementId: 'unitTestGeneration_rejectDiff' })
924938
}

packages/core/src/amazonqTest/chat/controller/messenger/messenger.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ export class Messenger {
296296
undefined,
297297
undefined,
298298
undefined,
299-
'TestGenCancelled'
299+
'TestGenCancelled',
300+
'CANCELLED'
300301
)
301302
this.dispatcher.sendUpdatePromptProgress(
302303
new UpdatePromptProgressMessage(tabID, cancellingProgressField)
@@ -310,7 +311,19 @@ export class Messenger {
310311
'Succeeded',
311312
messageId,
312313
performance.now() - session.testGenerationStartTime,
313-
undefined
314+
undefined,
315+
undefined,
316+
undefined,
317+
undefined,
318+
undefined,
319+
undefined,
320+
undefined,
321+
undefined,
322+
undefined,
323+
undefined,
324+
undefined,
325+
undefined,
326+
'ACCEPTED'
314327
)
315328
this.dispatcher.sendUpdatePromptProgress(
316329
new UpdatePromptProgressMessage(tabID, testGenCompletedField)

packages/core/src/amazonqTest/chat/session/session.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export class Session {
3535
public testGenerationJob: TestGenerationJob | undefined
3636

3737
// Start Test generation
38+
public isSupportedLanguage: boolean = false
3839
public conversationState: ConversationState = ConversationState.IDLE
3940
public shortAnswer: ShortAnswer | undefined
4041
public sourceFilePath: string = ''

packages/core/src/codewhisperer/util/telemetryHelper.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
CodewhispererPreviousSuggestionState,
1414
CodewhispererUserDecision,
1515
CodewhispererUserTriggerDecision,
16+
Status,
1617
telemetry,
1718
} from '../../shared/telemetry/telemetry'
1819
import { CodewhispererCompletionType, CodewhispererSuggestionState } from '../../shared/telemetry/telemetry'
@@ -85,12 +86,13 @@ export class TelemetryHelper {
8586
generatedCharactersCount?: number,
8687
generatedCount?: number,
8788
generatedLinesCount?: number,
88-
reason?: string
89+
reason?: string,
90+
status?: Status
8991
) {
9092
telemetry.amazonq_utgGenerateTests.emit({
9193
cwsprChatProgrammingLanguage: session.fileLanguage ?? 'plaintext',
9294
hasUserPromptSupplied: session.hasUserPromptSupplied,
93-
isSupportedLanguage: isSupportedLanguage,
95+
isSupportedLanguage: session.isSupportedLanguage,
9496
isFileInWorkspace: isFileInWorkspace,
9597
result: result,
9698
artifactsUploadDuration: artifactsUploadDuration,
@@ -110,6 +112,7 @@ export class TelemetryHelper {
110112
requestId: requestId,
111113
reasonDesc: reasonDesc,
112114
reason: reason,
115+
status: status,
113116
})
114117
}
115118

0 commit comments

Comments
 (0)