From b222556c6a28c8fb6d7a0c71741e770d84cffa3b Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 2 Mar 2023 16:21:12 -0800 Subject: [PATCH 1/2] Fix ability to recognize extensions which access environment API --- src/client/proposedApi.ts | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/client/proposedApi.ts b/src/client/proposedApi.ts index f49d7338975d..70f4b96a44aa 100644 --- a/src/client/proposedApi.ts +++ b/src/client/proposedApi.ts @@ -125,20 +125,16 @@ export function buildProposedApi( const extensions = serviceContainer.get(IExtensions); const envVarsProvider = serviceContainer.get(IEnvironmentVariablesProvider); function sendApiTelemetry(apiName: string, args?: unknown) { - setTimeout(() => - extensions - .determineExtensionFromCallStack() - .then((info) => { - sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, { - apiName, - extensionId: info.extensionId, - }); - traceVerbose( - `Extension ${info.extensionId} accessed ${apiName} with args: ${JSON.stringify(args)}`, - ); - }) - .ignoreErrors(), - ); + extensions + .determineExtensionFromCallStack() + .then((info) => { + sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, { + apiName, + extensionId: info.extensionId, + }); + traceVerbose(`Extension ${info.extensionId} accessed ${apiName} with args: ${JSON.stringify(args)}`); + }) + .ignoreErrors(); } disposables.push( discoveryApi.onChanged((e) => { From 1ba921e7a26cc79d28dc78b4f7758a77e2533915 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 2 Mar 2023 16:24:23 -0800 Subject: [PATCH 2/2] Add test --- src/test/proposedApi.unit.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/proposedApi.unit.test.ts b/src/test/proposedApi.unit.test.ts index 5dfa54492c6b..750b88438d2f 100644 --- a/src/test/proposedApi.unit.test.ts +++ b/src/test/proposedApi.unit.test.ts @@ -99,6 +99,8 @@ suite('Proposed Extension API', () => { }); teardown(() => { + // Verify each API method sends telemetry regarding who called the API. + extensions.verifyAll(); sinon.restore(); });