mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
Bug 1631487 - Query Experiment Manager for CFR cohort info r=k88hudson
Differential Revision: https://phabricator.services.mozilla.com/D71979
This commit is contained in:
parent
31574e8914
commit
c94de28dad
@ -19,11 +19,6 @@ const { classifySite } = ChromeUtils.import(
|
||||
"resource://activity-stream/lib/SiteClassifier.jsm"
|
||||
);
|
||||
|
||||
ChromeUtils.defineModuleGetter(
|
||||
this,
|
||||
"ASRouterPreferences",
|
||||
"resource://activity-stream/lib/ASRouterPreferences.jsm"
|
||||
);
|
||||
ChromeUtils.defineModuleGetter(
|
||||
this,
|
||||
"perfService",
|
||||
@ -71,6 +66,7 @@ ChromeUtils.defineModuleGetter(
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetters(this, {
|
||||
ExperimentAPI: "resource://messaging-system/experiments/ExperimentAPI.jsm",
|
||||
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
|
||||
TelemetrySession: "resource://gre/modules/TelemetrySession.jsm",
|
||||
});
|
||||
@ -311,13 +307,19 @@ this.TelemetryFeed = class TelemetryFeed {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if it is in the CFR experiment cohort. ASRouterPreferences lazily parses AS router pref.
|
||||
* Check if it is in the CFR experiment cohort by querying against the
|
||||
* experiment manager of Messaging System
|
||||
*/
|
||||
get isInCFRCohort() {
|
||||
for (let provider of ASRouterPreferences.providers) {
|
||||
if (provider.id === "cfr" && provider.enabled && provider.cohort) {
|
||||
try {
|
||||
const experimentData = ExperimentAPI.getExperiment({
|
||||
group: "cfr",
|
||||
});
|
||||
if (experimentData && experimentData.slug) {
|
||||
return true;
|
||||
}
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -20,9 +20,6 @@ import injector from "inject!lib/TelemetryFeed.jsm";
|
||||
|
||||
const FAKE_UUID = "{foo-123-foo}";
|
||||
const FAKE_ROUTER_MESSAGE_PROVIDER = [{ id: "cfr", enabled: true }];
|
||||
const FAKE_ROUTER_MESSAGE_PROVIDER_COHORT = [
|
||||
{ id: "cfr", enabled: true, cohort: "cohort_group" },
|
||||
];
|
||||
const FAKE_TELEMETRY_ID = "foo123";
|
||||
|
||||
describe("TelemetryFeed", () => {
|
||||
@ -39,6 +36,7 @@ describe("TelemetryFeed", () => {
|
||||
let fakeHomePageUrl;
|
||||
let fakeHomePage;
|
||||
let fakeExtensionSettingsStore;
|
||||
let ExperimentAPI = { getExperiment: () => {} };
|
||||
class PingCentre {
|
||||
sendPing() {}
|
||||
uninit() {}
|
||||
@ -105,6 +103,7 @@ describe("TelemetryFeed", () => {
|
||||
globals.set("ClientID", {
|
||||
getClientID: sandbox.spy(async () => FAKE_TELEMETRY_ID),
|
||||
});
|
||||
globals.set("ExperimentAPI", ExperimentAPI);
|
||||
sandbox
|
||||
.stub(ASRouterPreferences, "providers")
|
||||
.get(() => FAKE_ROUTER_MESSAGE_PROVIDER);
|
||||
@ -832,9 +831,9 @@ describe("TelemetryFeed", () => {
|
||||
return "release";
|
||||
},
|
||||
});
|
||||
sandbox
|
||||
.stub(ASRouterPreferences, "providers")
|
||||
.get(() => FAKE_ROUTER_MESSAGE_PROVIDER_COHORT);
|
||||
sandbox.stub(ExperimentAPI, "getExperiment").returns({
|
||||
slug: "SOME-CFR-EXP",
|
||||
});
|
||||
const data = {
|
||||
action: "cfr_user_event",
|
||||
event: "IMPRESSION",
|
||||
@ -1830,4 +1829,21 @@ describe("TelemetryFeed", () => {
|
||||
assert.notCalled(instance.sendStructuredIngestionEvent);
|
||||
});
|
||||
});
|
||||
describe("#isInCFRCohort", () => {
|
||||
it("should return false if there is no CFR experiment registered", () => {
|
||||
assert.ok(!instance.isInCFRCohort);
|
||||
});
|
||||
it("should return false if getExperiment throws", () => {
|
||||
sandbox.stub(ExperimentAPI, "getExperiment").throws();
|
||||
|
||||
assert.ok(!instance.isInCFRCohort);
|
||||
});
|
||||
it("should return true if there is a CFR experiment registered", () => {
|
||||
sandbox.stub(ExperimentAPI, "getExperiment").returns({
|
||||
slug: "SOME-CFR-EXP",
|
||||
});
|
||||
|
||||
assert.ok(instance.isInCFRCohort);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user