Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ mockitoKotlin = "5.4.0"
mockk = "1.13.10"
nimbus-jose-jwt = "9.40"
node-gradle = "7.0.2"
telemetryGenerator = "1.0.259"
telemetryGenerator = "1.0.262"
testLogger = "4.0.0"
testRetry = "1.5.10"
# test-only; platform provides slf4j transitively at runtime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,18 +102,18 @@
cwsprChatUserIntent = data.userIntent?.let { getTelemetryUserIntent(it) },
cwsprChatHasCodeSnippet = data.activeFileContext.focusAreaContext?.codeSelection?.isNotEmpty() ?: false,
cwsprChatProgrammingLanguage = data.activeFileContext.fileContext?.fileLanguage,
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length,
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size,
cwsprChatResponseCodeSnippetCount = numberOfCodeBlocks,
cwsprChatResponseCode = statusCode,
cwsprChatSourceLinkCount = response.relatedSuggestions?.size,
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length?.toLong(),
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size?.toLong(),
cwsprChatResponseCodeSnippetCount = numberOfCodeBlocks.toLong(),
cwsprChatResponseCode = statusCode.toLong(),

Check warning on line 108 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added lines #L107 - L108 were not covered by tests
cwsprChatSourceLinkCount = response.relatedSuggestions?.size?.toLong(),
cwsprChatReferencesCount = 0, // TODO
cwsprChatFollowUpCount = response.followUps?.size,
cwsprChatTimeToFirstChunk = getResponseStreamTimeToFirstChunk(response.tabId).toInt(),
cwsprChatFollowUpCount = response.followUps?.size?.toLong(),
cwsprChatTimeToFirstChunk = getResponseStreamTimeToFirstChunk(response.tabId).toLong(),

Check warning on line 112 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L112 was not covered by tests
cwsprChatTimeBetweenChunks = "[${getResponseStreamTimeBetweenChunks(response.tabId).joinToString(",")}]",
cwsprChatFullResponseLatency = responseStreamTotalTime[response.tabId] ?: 0,
cwsprChatRequestLength = data.message.length,
cwsprChatResponseLength = responseLength,
cwsprChatFullResponseLatency = responseStreamTotalTime[response.tabId]?.toLong() ?: 0,
cwsprChatRequestLength = data.message.length.toLong(),
cwsprChatResponseLength = responseLength.toLong(),

Check warning on line 116 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added lines #L115 - L116 were not covered by tests
cwsprChatConversationType = CwsprChatConversationType.Chat,
credentialStartUrl = getStartUrl(context.project),
codewhispererCustomizationArn = data.customization?.arn,
Expand Down Expand Up @@ -152,10 +152,10 @@
cwsprChatUserIntent = data.userIntent?.let { getTelemetryUserIntent(it) },
cwsprChatHasCodeSnippet = data.activeFileContext.focusAreaContext?.codeSelection?.isNotEmpty() ?: false,
cwsprChatProgrammingLanguage = data.activeFileContext.fileContext?.fileLanguage,
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length,
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size,
cwsprChatResponseCode = responseCode,
cwsprChatRequestLength = data.message.length,
cwsprChatActiveEditorTotalCharacters = data.activeFileContext.focusAreaContext?.codeSelection?.length?.toLong(),
cwsprChatActiveEditorImportCount = data.activeFileContext.focusAreaContext?.codeNames?.fullyQualifiedNames?.used?.size?.toLong(),
cwsprChatResponseCode = responseCode.toLong(),
cwsprChatRequestLength = data.message.length.toLong(),

Check warning on line 158 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added lines #L157 - L158 were not covered by tests
cwsprChatConversationType = CwsprChatConversationType.Chat,
credentialStartUrl = getStartUrl(context.project)
)
Expand Down Expand Up @@ -211,12 +211,12 @@
cwsprChatConversationId = getConversationId(message.tabId).orEmpty(),
cwsprChatMessageId = message.messageId,
cwsprChatInteractionType = CwsprChatInteractionType.CopySnippet,
cwsprChatAcceptedCharactersLength = message.code.length,
cwsprChatAcceptedCharactersLength = message.code.length.toLong(),

Check warning on line 214 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L214 was not covered by tests
cwsprChatInteractionTarget = message.insertionTargetType,
cwsprChatHasReference = null,
credentialStartUrl = getStartUrl(context.project),
cwsprChatCodeBlockIndex = message.codeBlockIndex,
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
cwsprChatCodeBlockIndex = message.codeBlockIndex?.toLong(),
cwsprChatTotalCodeBlocks = message.totalCodeBlocks?.toLong(),
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
)
ChatInteractWithMessageEvent.builder().apply {
Expand All @@ -234,13 +234,13 @@
cwsprChatConversationId = getConversationId(message.tabId).orEmpty(),
cwsprChatMessageId = message.messageId,
cwsprChatInteractionType = CwsprChatInteractionType.InsertAtCursor,
cwsprChatAcceptedCharactersLength = message.code.length,
cwsprChatAcceptedNumberOfLines = message.code.lines().size,
cwsprChatAcceptedCharactersLength = message.code.length.toLong(),
cwsprChatAcceptedNumberOfLines = message.code.lines().size.toLong(),

Check warning on line 238 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added lines #L237 - L238 were not covered by tests
cwsprChatInteractionTarget = message.insertionTargetType,
cwsprChatHasReference = null,
credentialStartUrl = getStartUrl(context.project),
cwsprChatCodeBlockIndex = message.codeBlockIndex,
cwsprChatTotalCodeBlocks = message.totalCodeBlocks,
cwsprChatCodeBlockIndex = message.codeBlockIndex?.toLong(),
cwsprChatTotalCodeBlocks = message.totalCodeBlocks?.toLong(),
cwsprChatHasProjectContext = getMessageHasProjectContext(message.messageId)
)
ChatInteractWithMessageEvent.builder().apply {
Expand Down Expand Up @@ -422,11 +422,11 @@
AmazonqTelemetry.indexWorkspace(
project = null,
duration = duration,
amazonqIndexFileCount = fileCount,
amazonqIndexFileSizeInMB = fileSize,
amazonqIndexFileCount = fileCount.toLong(),
amazonqIndexFileSizeInMB = fileSize.toLong(),

Check warning on line 426 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/chat/telemetry/TelemetryHelper.kt

View check run for this annotation

Codecov / codecov/patch

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

Added lines #L425 - L426 were not covered by tests
success = isSuccess,
amazonqIndexMemoryUsageInMB = memoryUsage,
amazonqIndexCpuUsagePercentage = cpuUsage,
amazonqIndexMemoryUsageInMB = memoryUsage?.toLong(),
amazonqIndexCpuUsagePercentage = cpuUsage?.toLong(),
credentialStartUrl = startUrl
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@

fun uploadProject(payloadSize: Int, startTime: Instant, dependenciesCopied: Boolean = false, telemetryErrorMessage: String? = null) {
CodetransformTelemetry.uploadProject(
codeTransformRunTimeLatency = calculateTotalLatency(startTime, Instant.now()),
codeTransformRunTimeLatency = calculateTotalLatency(startTime, Instant.now()).toLong(),

Check warning on line 92 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L92 was not covered by tests
codeTransformSessionId = sessionId,
codeTransformTotalByteSize = payloadSize,
codeTransformTotalByteSize = payloadSize.toLong(),

Check warning on line 94 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L94 was not covered by tests
codeTransformDependenciesCopied = dependenciesCopied,
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
reason = telemetryErrorMessage,
Expand All @@ -101,7 +101,7 @@
fun jobStart(transformStartTime: Instant, jobId: JobId?, telemetryErrorMessage: String? = null) = CodetransformTelemetry.jobStart(
codeTransformSessionId = sessionId,
codeTransformJobId = jobId?.id.orEmpty(),
codeTransformRunTimeLatency = calculateTotalLatency(transformStartTime, Instant.now()), // subtract current time by project start time
codeTransformRunTimeLatency = calculateTotalLatency(transformStartTime, Instant.now()).toLong(), // subtract current time by project start time

Check warning on line 104 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L104 was not covered by tests
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
reason = telemetryErrorMessage,
)
Expand All @@ -117,9 +117,9 @@
codeTransformArtifactType = artifactType,
codeTransformJobId = jobId.id,
codeTransformRuntimeError = telemetryErrorMessage,
codeTransformRunTimeLatency = calculateTotalLatency(downloadStartTime, Instant.now()),
codeTransformRunTimeLatency = calculateTotalLatency(downloadStartTime, Instant.now()).toLong(),

Check warning on line 120 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L120 was not covered by tests
codeTransformSessionId = sessionId,
codeTransformTotalByteSize = totalDownloadBytes,
codeTransformTotalByteSize = totalDownloadBytes.toLong(),

Check warning on line 122 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L122 was not covered by tests
result = if (telemetryErrorMessage.isNullOrEmpty()) Result.Succeeded else Result.Failed,
reason = telemetryErrorMessage,
)
Expand Down Expand Up @@ -175,7 +175,7 @@
codeTransformRunTimeLatency = calculateTotalLatency(
CodeTransformTelemetryState.instance.getStartTime(),
Instant.now()
),
).toLong(),

Check warning on line 178 in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformTelemetryManager.kt

View check run for this annotation

Codecov / codecov/patch

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

Added line #L178 was not covered by tests
codeTransformLocalJavaVersion = getJavaVersionFromProjectSetting(project),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@
fun sendCodePercentageTelemetry(
language: CodeWhispererProgrammingLanguage,
customizationArn: String?,
acceptedTokenCount: Int,
totalTokenCount: Int,
unmodifiedAcceptedTokenCount: Int?
acceptedTokenCount: Long,
totalTokenCount: Long,
unmodifiedAcceptedTokenCount: Long?
): SendTelemetryEventResponse

fun sendUserModificationTelemetry(
Expand Down Expand Up @@ -337,18 +337,18 @@
override fun sendCodePercentageTelemetry(
language: CodeWhispererProgrammingLanguage,
customizationArn: String?,
acceptedTokenCount: Int,
totalTokenCount: Int,
unmodifiedAcceptedTokenCount: Int?
acceptedTokenCount: Long,
totalTokenCount: Long,
unmodifiedAcceptedTokenCount: Long?
): SendTelemetryEventResponse = bearerClient().sendTelemetryEvent { requestBuilder ->
requestBuilder.telemetryEvent { telemetryEventBuilder ->
telemetryEventBuilder.codeCoverageEvent {
it.programmingLanguage { languageBuilder -> languageBuilder.languageName(language.toCodeWhispererRuntimeLanguage().languageId) }
it.customizationArn(customizationArn)
it.acceptedCharacterCount(acceptedTokenCount)
it.totalCharacterCount(totalTokenCount)
it.acceptedCharacterCount(acceptedTokenCount.toInt())
it.totalCharacterCount(totalTokenCount.toInt())

Check warning on line 349 in plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/credentials/CodeWhispererClientAdaptor.kt#L348-L349

Added lines #L348 - L349 were not covered by tests
it.timestamp(Instant.now())
it.unmodifiedAcceptedCharacterCount(unmodifiedAcceptedTokenCount)
it.unmodifiedAcceptedCharacterCount(unmodifiedAcceptedTokenCount?.toInt())
}
}
requestBuilder.optOutPreference(getTelemetryOptOutPreference())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import java.time.Instant
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicInteger
import kotlin.math.roundToInt
import kotlin.math.roundToLong

// TODO: reset code coverage calculator on logging out connection?
abstract class CodeWhispererCodeCoverageTracker(
Expand All @@ -49,15 +49,15 @@
private val fileToTokens: MutableMap<Document, CodeCoverageTokens>,
private val myServiceInvocationCount: AtomicInteger
) : Disposable {
val percentage: Int?
get() = if (totalTokensSize != 0) calculatePercentage(acceptedTokensSize, totalTokensSize) else null
val acceptedTokensSize: Int
val percentage: Long?
get() = if (totalTokensSize != 0L) calculatePercentage(acceptedTokensSize, totalTokensSize) else null
val acceptedTokensSize: Long
get() = fileToTokens.map {
it.value.acceptedTokens.get()
}.fold(0) { acc, next ->
acc + next
}
val totalTokensSize: Int
val totalTokensSize: Long
get() = fileToTokens.map {
it.value.totalTokens.get()
}.fold(0) { acc, next ->
Expand Down Expand Up @@ -203,7 +203,7 @@
if (myServiceInvocationCount.get() <= 0) return

// accepted char count without considering modification
var rawAcceptedCharacterCount = 0
var rawAcceptedCharacterCount = 0L

Check warning on line 206 in plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt#L206

Added line #L206 was not covered by tests
rangeMarkers.forEach { rangeMarker ->
if (!rangeMarker.isValid) return@forEach
// if users add more code upon the recommendation generated from CodeWhisperer, we consider those added part as userToken but not CwsprTokens
Expand Down Expand Up @@ -253,7 +253,7 @@
codewhispererLanguage = language.toTelemetryType(),
codewhispererPercentage = percentage,
codewhispererTotalTokens = totalTokensSize,
successCount = myServiceInvocationCount.get(),
successCount = myServiceInvocationCount.get().toLong(),

Check warning on line 256 in plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt#L256

Added line #L256 was not covered by tests
codewhispererCustomizationArn = customizationArn,
codewhispererUserGroup = CodeWhispererUserGroupSettings.getInstance().getUserGroup().name,
credentialStartUrl = getCodeWhispererStartUrl(project)
Expand Down Expand Up @@ -284,7 +284,7 @@
private val LOG = getLogger<CodeWhispererCodeCoverageTracker>()
private val instances: MutableMap<CodeWhispererProgrammingLanguage, CodeWhispererCodeCoverageTracker> = mutableMapOf()

fun calculatePercentage(acceptedTokens: Int, totalTokens: Int): Int = ((acceptedTokens.toDouble() * 100) / totalTokens).roundToInt()
fun calculatePercentage(acceptedTokens: Long, totalTokens: Long): Long = ((acceptedTokens.toDouble() * 100) / totalTokens).roundToLong()

Check warning on line 287 in plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererCodeCoverageTracker.kt#L287

Added line #L287 was not covered by tests
fun getInstance(project: Project, language: CodeWhispererProgrammingLanguage): CodeWhispererCodeCoverageTracker =
when (val instance = instances[language]) {
null -> {
Expand Down
Loading
Loading