mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 974009 - Telemetry experiments - Tests 2 - Experiment activation. r=felipe
This commit is contained in:
parent
c1f1046e76
commit
72e19830fe
137
browser/experiments/test/xpcshell/test_activate.js
Normal file
137
browser/experiments/test/xpcshell/test_activate.js
Normal file
@ -0,0 +1,137 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
Cu.import("resource:///modules/experiments/Experiments.jsm");
|
||||
|
||||
const FILE_MANIFEST = "experiments.manifest";
|
||||
const PREF_EXPERIMENTS_ENABLED = "experiments.enabled";
|
||||
const PREF_LOGGING_LEVEL = "experiments.logging.level";
|
||||
const PREF_LOGGING_DUMP = "experiments.logging.dump";
|
||||
const PREF_MANIFEST_URI = "experiments.manifest.uri";
|
||||
|
||||
const SEC_IN_ONE_DAY = 24 * 60 * 60;
|
||||
const MS_IN_ONE_DAY = SEC_IN_ONE_DAY * 1000;
|
||||
|
||||
let gProfileDir = null;
|
||||
let gHttpServer = null;
|
||||
let gHttpRoot = null;
|
||||
let gReporter = null;
|
||||
let gPolicy = null;
|
||||
|
||||
let gGlobalScope = this;
|
||||
function loadAddonManager() {
|
||||
let ns = {};
|
||||
Cu.import("resource://gre/modules/Services.jsm", ns);
|
||||
let head = "../../../../toolkit/mozapps/extensions/test/xpcshell/head_addons.js";
|
||||
let file = do_get_file(head);
|
||||
let uri = ns.Services.io.newFileURI(file);
|
||||
ns.Services.scriptloader.loadSubScript(uri.spec, gGlobalScope);
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
||||
startupManager();
|
||||
}
|
||||
|
||||
function ManifestEntry(data) {
|
||||
this.id = data.id || EXPERIMENT1_ID;
|
||||
this.xpiURL = data.xpiURL || gHttpRoot + EXPERIMENT1_XPI_NAME;
|
||||
this.xpiHash = data.xpiHash || EXPERIMENT1_XPI_SHA1;
|
||||
this.appName = data.appName || ["XPCShell"];
|
||||
this.channel = data.appName || ["nightly"];
|
||||
this.startTime = data.startTime || new Date(2010, 0, 1, 12).getTime() / 1000;
|
||||
this.endTime = data.endTime || new Date(9001, 0, 1, 12).getTime() / 1000;
|
||||
this.maxActiveSeconds = data.maxActiveSeconds || 5 * SEC_IN_ONE_DAY;
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
add_task(function* test_setup() {
|
||||
loadAddonManager();
|
||||
gProfileDir = do_get_profile();
|
||||
gPolicy = new Experiments.Policy();
|
||||
|
||||
gHttpServer = new HttpServer();
|
||||
gHttpServer.start(-1);
|
||||
let port = gHttpServer.identity.primaryPort;
|
||||
gHttpRoot = "http://localhost:" + port + "/";
|
||||
gHttpServer.registerDirectory("/", do_get_cwd());
|
||||
do_register_cleanup(() => gHttpServer.stop(() => {}));
|
||||
|
||||
gReporter = yield getReporter("json_payload_simple");
|
||||
yield gReporter.collectMeasurements();
|
||||
let payload = yield gReporter.getJSONPayload(true);
|
||||
|
||||
patchPolicy(gPolicy, {
|
||||
updatechannel: () => "nightly",
|
||||
healthReportPayload: () => Promise.resolve(payload),
|
||||
});
|
||||
|
||||
Services.prefs.setBoolPref(PREF_EXPERIMENTS_ENABLED, true);
|
||||
Services.prefs.setIntPref(PREF_LOGGING_LEVEL, 0);
|
||||
Services.prefs.setBoolPref(PREF_LOGGING_DUMP, true);
|
||||
|
||||
let experiments = new Experiments.Experiments();
|
||||
});
|
||||
|
||||
function isApplicable(experiment) {
|
||||
let deferred = Promise.defer();
|
||||
experiment.isApplicable().then(
|
||||
result => deferred.resolve({ applicable: true, reason: null }),
|
||||
reason => deferred.resolve({ applicable: false, reason: reason })
|
||||
);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
add_task(function* test_startStop() {
|
||||
let baseDate = new Date(2014, 5, 1, 12);
|
||||
let startDate = futureDate(baseDate, 30 * MS_IN_ONE_DAY);
|
||||
let endDate = futureDate(baseDate, 60 * MS_IN_ONE_DAY);
|
||||
let manifestData = new ManifestEntry({
|
||||
startTime: dateToSeconds(startDate),
|
||||
endTime: dateToSeconds(endDate),
|
||||
maxActiveSeconds: 10 * SEC_IN_ONE_DAY,
|
||||
});
|
||||
let experiment = new Experiments.ExperimentEntry(gPolicy);
|
||||
experiment.initFromManifestData(manifestData);
|
||||
let result;
|
||||
|
||||
defineNow(gPolicy, baseDate);
|
||||
result = yield isApplicable(experiment);
|
||||
Assert.equal(result.applicable, false, "Experiment should not be applicable.");
|
||||
Assert.equal(experiment.enabled, false, "Experiment should not be enabled.");
|
||||
|
||||
defineNow(gPolicy, futureDate(startDate, 5 * MS_IN_ONE_DAY));
|
||||
result = yield isApplicable(experiment);
|
||||
Assert.equal(result.applicable, true, "Experiment should now be applicable.");
|
||||
Assert.equal(experiment.enabled, false, "Experiment should not be enabled.");
|
||||
|
||||
yield experiment.start();
|
||||
Assert.equal(experiment.enabled, true, "Experiment should now be enabled.");
|
||||
|
||||
yield experiment.stop();
|
||||
Assert.equal(experiment.enabled, false, "Experiment should not be enabled.");
|
||||
|
||||
yield experiment.start();
|
||||
Assert.equal(experiment.enabled, true, "Experiment should now be enabled.");
|
||||
|
||||
let shouldStop = yield experiment._shouldStop();
|
||||
Assert.equal(shouldStop, false, "shouldStop should be false.");
|
||||
let maybeStop = yield experiment.maybeStop();
|
||||
Assert.equal(maybeStop, false, "Experiment should not have been stopped.");
|
||||
Assert.equal(experiment.enabled, true, "Experiment should be enabled.");
|
||||
|
||||
defineNow(gPolicy, futureDate(endDate, MS_IN_ONE_DAY));
|
||||
shouldStop = yield experiment._shouldStop();
|
||||
Assert.equal(shouldStop, true, "shouldStop should now be true.");
|
||||
maybeStop = yield experiment.maybeStop();
|
||||
Assert.equal(maybeStop, true, "Experiment should have been stopped.");
|
||||
Assert.equal(experiment.enabled, false, "Experiment should be disabled.");
|
||||
});
|
||||
|
||||
add_task(function* shutdown() {
|
||||
yield gReporter._shutdown();
|
||||
});
|
@ -6,4 +6,5 @@ support-files =
|
||||
experiments_1.manifest
|
||||
../experiment-1.xpi
|
||||
|
||||
[test_conditions.js]
|
||||
[test_activate.js]
|
||||
[test_conditions.js]
|
Loading…
Reference in New Issue
Block a user