Skip to content

Commit 2202fbe

Browse files
author
Kartik Raj
authored
Call the correct API to determine if a user is in treatment or control group (#20690)
Closes #20183
1 parent b0ab10d commit 2202fbe

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

.github/workflows/pr-check.yml

-9
Original file line numberDiff line numberDiff line change
@@ -266,15 +266,6 @@ jobs:
266266
working-directory: ${{ env.special-working-directory }}
267267
if: matrix.test-suite == 'single-workspace'
268268

269-
- name: Run multi-workspace tests
270-
env:
271-
CI_PYTHON_VERSION: ${{ matrix.python }}
272-
uses: GabrielBB/[email protected]
273-
with:
274-
run: npm run testMultiWorkspace
275-
working-directory: ${{ env.special-working-directory }}
276-
if: matrix.test-suite == 'multi-workspace'
277-
278269
- name: Run debugger tests
279270
env:
280271
CI_PYTHON_VERSION: ${{ matrix.python }}

src/client/common/experiments/service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export class ExperimentService implements IExperimentService {
142142
// it means that the value for this experiment was not found on the server.
143143
const treatmentVariable = this.experimentationService.getTreatmentVariable(EXP_CONFIG_ID, experiment);
144144

145-
return treatmentVariable !== undefined;
145+
return treatmentVariable === true;
146146
}
147147

148148
public async getExperimentValue<T extends boolean | number | string>(experiment: string): Promise<T | undefined> {

src/test/common/experiments/service.unit.test.ts

+32-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ suite('Experimentation service', () => {
177177
telemetryEvents.push(telemetry);
178178
});
179179

180-
getTreatmentVariable = sinon.stub().returns(Promise.resolve(true));
180+
getTreatmentVariable = sinon.stub().returns(true);
181181
sinon.stub(tasClient, 'getExperimentationService').returns(({
182182
getTreatmentVariable,
183183
} as unknown) as tasClient.IExperimentationService);
@@ -205,6 +205,37 @@ suite('Experimentation service', () => {
205205
sinon.assert.calledOnce(getTreatmentVariable);
206206
});
207207

208+
test('If in control group, return false', async () => {
209+
sinon.restore();
210+
sendTelemetryEventStub = sinon
211+
.stub(Telemetry, 'sendTelemetryEvent')
212+
.callsFake((eventName: string, _, properties: unknown) => {
213+
const telemetry = { eventName, properties };
214+
telemetryEvents.push(telemetry);
215+
});
216+
217+
// Control group returns false.
218+
getTreatmentVariable = sinon.stub().returns(false);
219+
sinon.stub(tasClient, 'getExperimentationService').returns(({
220+
getTreatmentVariable,
221+
} as unknown) as tasClient.IExperimentationService);
222+
223+
configureApplicationEnvironment('stable', extensionVersion);
224+
225+
configureSettings(true, [], []);
226+
227+
const experimentService = new ExperimentService(
228+
instance(workspaceService),
229+
instance(appEnvironment),
230+
instance(stateFactory),
231+
);
232+
const result = experimentService.inExperimentSync(experiment);
233+
234+
assert.isFalse(result);
235+
sinon.assert.notCalled(sendTelemetryEventStub);
236+
sinon.assert.calledOnce(getTreatmentVariable);
237+
});
238+
208239
test('If the experiment setting is disabled, inExperiment should return false', async () => {
209240
configureSettings(false, [], []);
210241

0 commit comments

Comments
 (0)