Skip to content

Commit 8f49fcd

Browse files
committed
fix unit test
1 parent a1a3331 commit 8f49fcd

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/messenger/ChatPromptHandler.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class ChatPromptHandler(private val telemetryHelper: TelemetryHelper) {
9090
ChatMessage(tabId = tabId, triggerId = triggerId, messageId = requestId, messageType = ChatMessageType.Answer, followUps = followUps)
9191

9292
telemetryHelper.setResponseStreamTotalTime(tabId)
93+
telemetryHelper.setResponseHasProjectContext(data, response)
9394
telemetryHelper.recordAddMessage(data, response, responseText.length, statusCode, countTotalNumberOfCodeBlocks(responseText))
9495
emit(response)
9596
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
9696
// When Chat API responds to a user message (full response streamed)
9797
fun recordAddMessage(data: ChatRequestData, response: ChatMessage, responseLength: Int, statusCode: Int, numberOfCodeBlocks: Int) {
9898
val hasProjectContext = getIsProjectContextEnabled() && data.useRelevantDocuments && data.relevantTextDocuments.isNotEmpty()
99+
responseHasProjectContext[response.messageId] = hasProjectContext
99100
AmazonqTelemetry.addMessage(
100101
cwsprChatConversationId = getConversationId(response.tabId).orEmpty(),
101102
cwsprChatMessageId = response.messageId,
@@ -120,7 +121,6 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
120121
codewhispererCustomizationArn = data.customization?.arn,
121122
cwsprChatHasProjectContext = hasProjectContext
122123
)
123-
responseHasProjectContext[response.messageId] = hasProjectContext
124124
val programmingLanguage = data.activeFileContext.fileContext?.fileLanguage
125125
val validProgrammingLanguage = if (ChatSessionV1.validLanguages.contains(programmingLanguage)) programmingLanguage else null
126126

@@ -137,7 +137,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
137137
data.message.length,
138138
responseLength,
139139
numberOfCodeBlocks,
140-
getIsProjectContextEnabled() && data.useRelevantDocuments && data.relevantTextDocuments.isNotEmpty(),
140+
getMessageHasProjectContext(response.messageId),
141141
data.customization
142142
).also {
143143
logger.debug {
@@ -164,9 +164,6 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
164164

165165
// When user interacts with a message (e.g. copy code, insert code, vote)
166166
suspend fun recordInteractWithMessage(message: IncomingCwcMessage) {
167-
val hasProjectContext = { messageId: String ->
168-
responseHasProjectContext.getOrDefault(messageId, false)
169-
}
170167
val event: ChatInteractWithMessageEvent? = when (message) {
171168
is IncomingCwcMessage.ChatItemVoted -> {
172169
AmazonqTelemetry.interactWithMessage(
@@ -178,7 +175,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
178175
else -> CwsprChatInteractionType.Unknown
179176
},
180177
credentialStartUrl = getStartUrl(context.project),
181-
cwsprChatHasProjectContext = hasProjectContext(message.messageId)
178+
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
182179
)
183180
ChatInteractWithMessageEvent.builder().apply {
184181
conversationId(getConversationId(message.tabId).orEmpty())
@@ -190,7 +187,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
190187
else -> ChatMessageInteractionType.UNKNOWN_TO_SDK_VERSION
191188
}
192189
)
193-
hasProjectLevelContext(hasProjectContext(message.messageId))
190+
hasProjectLevelContext(getMessageHasProjectContext(message.messageId))
194191
}.build()
195192
}
196193

@@ -200,13 +197,13 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
200197
cwsprChatMessageId = message.messageId.orEmpty(),
201198
cwsprChatInteractionType = CwsprChatInteractionType.ClickFollowUp,
202199
credentialStartUrl = getStartUrl(context.project),
203-
cwsprChatHasProjectContext = hasProjectContext(message.messageId.orEmpty())
200+
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId.orEmpty())
204201
)
205202
ChatInteractWithMessageEvent.builder().apply {
206203
conversationId(getConversationId(message.tabId).orEmpty())
207204
messageId(message.messageId.orEmpty())
208205
interactionType(ChatMessageInteractionType.CLICK_FOLLOW_UP)
209-
hasProjectLevelContext(hasProjectContext(message.messageId.orEmpty()))
206+
hasProjectLevelContext(getMessageHasProjectContext(message.messageId.orEmpty()))
210207
}.build()
211208
}
212209

@@ -221,15 +218,15 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
221218
credentialStartUrl = getStartUrl(context.project),
222219
cwsprChatCodeBlockIndex = message.codeBlockIndex,
223220
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
224-
cwsprChatHasProjectContext = hasProjectContext(message.messageId)
221+
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
225222
)
226223
ChatInteractWithMessageEvent.builder().apply {
227224
conversationId(getConversationId(message.tabId).orEmpty())
228225
messageId(message.messageId)
229226
interactionType(ChatMessageInteractionType.COPY_SNIPPET)
230227
interactionTarget(message.insertionTargetType)
231228
acceptedCharacterCount(message.code.length)
232-
hasProjectLevelContext(hasProjectContext(message.messageId))
229+
hasProjectLevelContext(getMessageHasProjectContext(message.messageId))
233230
}.build()
234231
}
235232

@@ -245,7 +242,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
245242
credentialStartUrl = getStartUrl(context.project),
246243
cwsprChatCodeBlockIndex = message.codeBlockIndex,
247244
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
248-
cwsprChatHasProjectContext = hasProjectContext(message.messageId)
245+
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
249246
)
250247
ChatInteractWithMessageEvent.builder().apply {
251248
conversationId(getConversationId(message.tabId).orEmpty())
@@ -254,7 +251,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
254251
interactionTarget(message.insertionTargetType)
255252
acceptedCharacterCount(message.code.length)
256253
acceptedLineCount(message.code.lines().size)
257-
hasProjectLevelContext(hasProjectContext(message.messageId))
254+
hasProjectLevelContext(getMessageHasProjectContext(message.messageId))
258255
}.build()
259256
}
260257

@@ -274,7 +271,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
274271
cwsprChatInteractionTarget = message.link,
275272
cwsprChatHasReference = null,
276273
credentialStartUrl = getStartUrl(context.project),
277-
cwsprChatHasProjectContext = hasProjectContext(message.messageId)
274+
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
278275
)
279276
ChatInteractWithMessageEvent.builder().apply {
280277
conversationId(getConversationId(message.tabId).orEmpty())
@@ -287,7 +284,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
287284
}
288285
)
289286
interactionTarget(message.link)
290-
hasProjectLevelContext(hasProjectContext(message.messageId))
287+
hasProjectLevelContext(getMessageHasProjectContext(message.messageId))
291288
}.build()
292289
}
293290

@@ -374,6 +371,14 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
374371
responseStreamTotalTime[tabId] = totalTime
375372
}
376373

374+
fun setResponseHasProjectContext(data: ChatRequestData, response: ChatMessage) {
375+
responseHasProjectContext[response.messageId] = getIsProjectContextEnabled() && data.useRelevantDocuments && data.relevantTextDocuments.isNotEmpty()
376+
}
377+
378+
fun getMessageHasProjectContext(messageId: String): Boolean {
379+
return responseHasProjectContext.getOrDefault(messageId, false)
380+
}
381+
377382
@VisibleForTesting
378383
fun getResponseStreamTimeToFirstChunk(tabId: String): Double {
379384
val chunkTimes = responseStreamTimeForChunks[tabId] ?: return 0.0

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/TelemetryHelperTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ class TelemetryHelperTest {
331331
messageId(messageId)
332332
interactionType(ChatMessageInteractionType.UPVOTE)
333333
customizationArn(customizationArn)
334+
hasProjectLevelContext(false)
334335
}.build()
335336
)
336337
)
@@ -373,6 +374,7 @@ class TelemetryHelperTest {
373374
messageId(messageId)
374375
interactionType(ChatMessageInteractionType.CLICK_FOLLOW_UP)
375376
customizationArn(customizationArn)
377+
hasProjectLevelContext(false)
376378
}.build()
377379
)
378380
)
@@ -429,6 +431,7 @@ class TelemetryHelperTest {
429431
interactionTarget("insertionTargetType")
430432
acceptedCharacterCount("println()".length)
431433
customizationArn(customizationArn)
434+
hasProjectLevelContext(false)
432435
}.build()
433436
)
434437
)
@@ -462,7 +465,6 @@ class TelemetryHelperTest {
462465
mockClient.stub {
463466
on { this.sendChatInteractWithMessageTelemetry(any<ChatInteractWithMessageEvent>()) } doReturn mockSteResponse
464467
}
465-
466468
val codeBlockIndex = 1
467469
val totalCodeBlocks = 10
468470
val inserTionTargetType = "insertionTargetType"
@@ -493,6 +495,7 @@ class TelemetryHelperTest {
493495
acceptedCharacterCount(code.length)
494496
acceptedLineCount(code.lines().size)
495497
customizationArn(customizationArn)
498+
hasProjectLevelContext(false)
496499
}.build()
497500
)
498501
)
@@ -552,6 +555,7 @@ class TelemetryHelperTest {
552555
interactionType(ChatMessageInteractionType.CLICK_LINK)
553556
interactionTarget(link)
554557
customizationArn(customizationArn)
558+
hasProjectLevelContext(false)
555559
}.build()
556560
)
557561
)

0 commit comments

Comments
 (0)