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
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,8 @@
import assert from 'assert'
import * as vscode from 'vscode'
import * as sinon from 'sinon'
import {
onAcceptance,
AcceptedSuggestionEntry,
session,
CodeWhispererTracker,
RecommendationHandler,
AuthUtil,
} from 'aws-core-vscode/codewhisperer'
import { onAcceptance, AcceptedSuggestionEntry, session, CodeWhispererTracker } from 'aws-core-vscode/codewhisperer'
import { resetCodeWhispererGlobalVariables, createMockTextEditor } from 'aws-core-vscode/test'
import { assertTelemetryCurried } from 'aws-core-vscode/test'

describe('onAcceptance', function () {
describe('onAcceptance', function () {
Expand Down Expand Up @@ -68,46 +60,5 @@ describe('onAcceptance', function () {
assert.deepStrictEqual(actualArg.endPosition, new vscode.Position(1, 26))
assert.strictEqual(actualArg.index, 0)
})

it('Should report telemetry that records this user decision event', async function () {
const testStartUrl = 'testStartUrl'
sinon.stub(AuthUtil.instance, 'startUrl').value(testStartUrl)
const mockEditor = createMockTextEditor()
session.requestIdList = ['test']
RecommendationHandler.instance.requestId = 'test'
session.sessionId = 'test'
session.startPos = new vscode.Position(1, 0)
mockEditor.selection = new vscode.Selection(new vscode.Position(1, 0), new vscode.Position(1, 0))
session.recommendations = [{ content: "print('Hello World!')" }]
session.setSuggestionState(0, 'Showed')
session.triggerType = 'OnDemand'
session.setCompletionType(0, session.recommendations[0])
const assertTelemetry = assertTelemetryCurried('codewhisperer_userDecision')
await onAcceptance({
editor: mockEditor,
range: new vscode.Range(new vscode.Position(1, 0), new vscode.Position(1, 21)),
effectiveRange: new vscode.Range(new vscode.Position(1, 0), new vscode.Position(1, 26)),
acceptIndex: 0,
recommendation: "print('Hello World!')",
requestId: '',
sessionId: '',
triggerType: 'OnDemand',
completionType: 'Line',
language: 'python',
references: undefined,
})
assertTelemetry({
codewhispererRequestId: 'test',
codewhispererSessionId: 'test',
codewhispererPaginationProgress: 1,
codewhispererTriggerType: 'OnDemand',
codewhispererSuggestionIndex: 0,
codewhispererSuggestionState: 'Accept',
codewhispererSuggestionReferenceCount: 0,
codewhispererCompletionType: 'Line',
codewhispererLanguage: 'python',
credentialStartUrl: testStartUrl,
})
})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ import assert from 'assert'
import * as vscode from 'vscode'
import * as sinon from 'sinon'
import { resetCodeWhispererGlobalVariables, createMockTextEditor } from 'aws-core-vscode/test'
import { assertTelemetryCurried } from 'aws-core-vscode/test'
import { onInlineAcceptance, RecommendationHandler, AuthUtil, session } from 'aws-core-vscode/codewhisperer'
import { globals } from 'aws-core-vscode/shared'
import { extensionVersion } from 'aws-core-vscode/shared'
import { onInlineAcceptance, RecommendationHandler, session } from 'aws-core-vscode/codewhisperer'

describe('onInlineAcceptance', function () {
describe('onInlineAcceptance', function () {
Expand Down Expand Up @@ -42,51 +39,5 @@ describe('onInlineAcceptance', function () {
})
assert.ok(spy.calledWith())
})

it('Should report telemetry that records this user decision event', async function () {
await globals.globalState.update('CODEWHISPERER_USER_GROUP', {
version: extensionVersion,
})

const testStartUrl = 'testStartUrl'
sinon.stub(AuthUtil.instance, 'startUrl').value(testStartUrl)
const mockEditor = createMockTextEditor()
session.requestIdList = ['test']
RecommendationHandler.instance.requestId = 'test'
session.requestIdList = ['test']
session.sessionId = 'test'
session.startPos = new vscode.Position(1, 0)
mockEditor.selection = new vscode.Selection(new vscode.Position(1, 0), new vscode.Position(1, 0))
session.recommendations = [{ content: "print('Hello World!')" }]
session.setSuggestionState(0, 'Showed')
session.triggerType = 'OnDemand'
session.setCompletionType(0, session.recommendations[0])
const assertTelemetry = assertTelemetryCurried('codewhisperer_userDecision')
await onInlineAcceptance({
editor: mockEditor,
range: new vscode.Range(new vscode.Position(1, 0), new vscode.Position(1, 21)),
effectiveRange: new vscode.Range(new vscode.Position(1, 0), new vscode.Position(1, 21)),
acceptIndex: 0,
recommendation: "print('Hello World!')",
requestId: '',
sessionId: '',
triggerType: 'OnDemand',
completionType: 'Line',
language: 'python',
references: undefined,
})
assertTelemetry({
codewhispererRequestId: 'test',
codewhispererSessionId: 'test',
codewhispererPaginationProgress: 1,
codewhispererTriggerType: 'OnDemand',
codewhispererSuggestionIndex: 0,
codewhispererSuggestionState: 'Accept',
codewhispererSuggestionReferenceCount: 0,
codewhispererCompletionType: 'Line',
codewhispererLanguage: 'python',
credentialStartUrl: testStartUrl,
})
})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -150,41 +150,6 @@ describe('recommendationHandler', function () {
codewhispererSupplementalContextLength: 100,
})
})

it('should call telemetry function that records a Empty userDecision event', async function () {
const mockServerResult = {
recommendations: [],
nextToken: '',
$response: {
requestId: 'test_request_empty',
httpResponse: {
headers: {
'x-amzn-sessionid': 'test_request_empty',
},
},
},
}
const handler = new RecommendationHandler()
sinon.stub(handler, 'getServerResponse').resolves(mockServerResult)
sinon.stub(performance, 'now').returns(0.0)
session.startPos = new vscode.Position(1, 0)
session.requestIdList = ['test_request_empty']
session.startCursorOffset = 2
await handler.getRecommendations(mockClient, mockEditor, 'AutoTrigger', config, 'Enter')
const assertTelemetry = assertTelemetryCurried('codewhisperer_userDecision')
assertTelemetry({
codewhispererRequestId: 'test_request_empty',
codewhispererSessionId: 'test_request_empty',
codewhispererPaginationProgress: 0,
codewhispererTriggerType: 'AutoTrigger',
codewhispererSuggestionIndex: -1,
codewhispererSuggestionState: 'Empty',
codewhispererSuggestionReferenceCount: 0,
codewhispererCompletionType: 'Line',
codewhispererLanguage: 'python',
credentialStartUrl: testStartUrl,
})
})
})

describe('isValidResponse', function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,41 +282,4 @@ describe('telemetryHelper', function () {
assert.strictEqual(actual, 'Empty')
})
})

describe('recordUserDecisionTelemetry', function () {
beforeEach(async function () {
await resetCodeWhispererGlobalVariables()
})

it('Should call telemetry record for each recommendations with proper arguments', async function () {
const telemetryHelper = new TelemetryHelper()
const response = [{ content: "print('Hello')" }]
const requestIdList = ['test_x', 'test_x', 'test_y']
const sessionId = 'test_x'
session.triggerType = 'AutoTrigger'
const assertTelemetry = assertTelemetryCurried('codewhisperer_userDecision')
const suggestionState = new Map<number, string>([[0, 'Showed']])
const completionTypes = new Map<number, CodewhispererCompletionType>([[0, 'Line']])
telemetryHelper.recordUserDecisionTelemetry(
requestIdList,
sessionId,
response,
0,
0,
completionTypes,
suggestionState
)
assertTelemetry({
codewhispererRequestId: 'test_x',
codewhispererSessionId: 'test_x',
codewhispererPaginationProgress: 0,
codewhispererTriggerType: 'AutoTrigger',
codewhispererSuggestionIndex: 0,
codewhispererSuggestionState: 'Accept',
codewhispererSuggestionReferenceCount: 0,
codewhispererCompletionType: 'Line',
codewhispererLanguage: 'python',
})
})
})
})
20 changes: 0 additions & 20 deletions packages/core/src/codewhisperer/util/telemetryHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,25 +158,6 @@ export class TelemetryHelper {
) {
const selectedCustomization = getSelectedCustomization()

telemetry.codewhisperer_userDecision.emit({
codewhispererCompletionType: 'Line',
codewhispererGettingStartedTask: session.taskType,
codewhispererLanguage: language,
codewhispererPaginationProgress: paginationIndex,
codewhispererRequestId: requestIdList[0],
codewhispererSessionId: sessionId ? sessionId : undefined,
codewhispererSuggestionIndex: -1,
codewhispererSuggestionState: 'Empty',
codewhispererSuggestionReferenceCount: 0,
codewhispererSuggestionReferences: undefined,
codewhispererSupplementalContextIsUtg: supplementalContextMetadata?.isUtg,
codewhispererSupplementalContextLength: supplementalContextMetadata?.contentsLength,
codewhispererSupplementalContextTimeout: supplementalContextMetadata?.isProcessTimeout,
codewhispererTriggerType: session.triggerType,
credentialStartUrl: AuthUtil.instance.startUrl,
traceId: this.traceId,
})

telemetry.codewhisperer_userTriggerDecision.emit({
codewhispererAutomatedTriggerType: session.autoTriggerType,
codewhispererClassifierResult: this.classifierResult,
Expand Down Expand Up @@ -297,7 +278,6 @@ export class TelemetryHelper {
credentialStartUrl: AuthUtil.instance.startUrl,
traceId: this.traceId,
}
telemetry.codewhisperer_userDecision.emit(event)
events.push(event)
}

Expand Down
1 change: 0 additions & 1 deletion packages/core/src/shared/telemetry/exemptMetrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ const validationExemptMetrics: Set<string> = new Set([
'codeTransform_jobStatusChanged',
'codeTransform_logApiError',
'codeTransform_logApiLatency',
'codewhisperer_userDecision',
'codewhisperer_codeScanIssueHover',
'codewhisperer_codePercentage',
'codewhisperer_userModification',
Expand Down
Loading