diff --git a/news/2 Fixes/18393.md b/news/2 Fixes/18393.md new file mode 100644 index 000000000000..6a457ae7c298 --- /dev/null +++ b/news/2 Fixes/18393.md @@ -0,0 +1 @@ +Log experiments only after we finish updating active experiments list. diff --git a/src/client/common/experiments/service.ts b/src/client/common/experiments/service.ts index fb6c856251e4..f4f957d7a8ac 100644 --- a/src/client/common/experiments/service.ts +++ b/src/client/common/experiments/service.ts @@ -75,8 +75,6 @@ export class ExperimentService implements IExperimentService { telemetryReporter, this.globalState, ); - - this.logExperiments(); } public async activate(): Promise { @@ -99,6 +97,7 @@ export class ExperimentService implements IExperimentService { await this.experimentationService.initialFetch; sendTelemetryEvent(EventName.PYTHON_EXPERIMENTS_INIT_PERFORMANCE, Date.now() - initStart); } + this.logExperiments(); } sendOptInOptOutTelemetry(this._optInto, this._optOutFrom, this.appEnvironment.packageJson); } diff --git a/src/test/common/experiments/service.unit.test.ts b/src/test/common/experiments/service.unit.test.ts index cbbd53d78151..89eab9052de0 100644 --- a/src/test/common/experiments/service.unit.test.ts +++ b/src/test/common/experiments/service.unit.test.ts @@ -138,16 +138,21 @@ suite('Experimentation service', () => { assert.deepEqual(experimentService._optOutFrom, ['Foo - experiment']); }); - test('Experiment data in Memento storage should be logged if it starts with "python"', () => { + test('Experiment data in Memento storage should be logged if it starts with "python"', async () => { const experiments = ['ExperimentOne', 'pythonExperiment']; globalMemento = mock(MockMemento); configureSettings(true, [], []); - configureApplicationEnvironment('stable', extensionVersion); + configureApplicationEnvironment('stable', extensionVersion, { configuration: { properties: {} } }); // eslint-disable-next-line @typescript-eslint/no-explicit-any when(globalMemento.get(anything(), anything())).thenReturn({ features: experiments } as any); - new ExperimentService(instance(workspaceService), instance(appEnvironment), instance(globalMemento)); + const exp = new ExperimentService( + instance(workspaceService), + instance(appEnvironment), + instance(globalMemento), + ); + await exp.activate(); const output = `${Experiments.inGroup().format('pythonExperiment')}\n`; assert.strictEqual(outputChannel.output, output);