Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
/* Test inclusion of previous build ID in telemetry pings when build ID changes.
*
* Cases to cover:
* 1) Run with no "previousBuildID" stored in prefs:
* -> no previousBuildID in telemetry system info, new value set in prefs.
* 2) previousBuildID in prefs, equal to current build ID:
* -> no previousBuildID in telemetry, prefs not updated.
* 3) previousBuildID in prefs, not equal to current build ID:
* -> previousBuildID in telemetry, new value set in prefs.
*/
"use strict";
const { TelemetryController } = ChromeUtils.importESModule(
);
const { TelemetrySession } = ChromeUtils.importESModule(
);
// Set up our dummy AppInfo object so we can control the appBuildID.
const { getAppInfo, updateAppInfo } = ChromeUtils.importESModule(
);
updateAppInfo();
// Check that when run with no previous build ID stored, we update the pref but do not
// put anything into the metadata.
add_task(async function test_firstRun() {
await TelemetryController.testReset();
let metadata = TelemetrySession.getMetadata();
Assert.equal(false, "previousBuildID" in metadata);
let appBuildID = getAppInfo().appBuildID;
let buildIDPref = Services.prefs.getCharPref(
TelemetryUtils.Preferences.PreviousBuildID
);
Assert.equal(appBuildID, buildIDPref);
});
// Check that a subsequent run with the same build ID does not put prev build ID in
// metadata. Assumes testFirstRun() has already been called to set the previousBuildID pref.
add_task(async function test_secondRun() {
await TelemetryController.testReset();
let metadata = TelemetrySession.getMetadata();
Assert.equal(false, "previousBuildID" in metadata);
});
// Set up telemetry with a different app build ID and check that the old build ID
// is returned in the metadata and the pref is updated to the new build ID.
// Assumes testFirstRun() has been called to set the previousBuildID pref.
const NEW_BUILD_ID = "20130314";
add_task(async function test_newBuild() {
let info = getAppInfo();
let oldBuildID = info.appBuildID;
info.appBuildID = NEW_BUILD_ID;
await TelemetryController.testReset();
let metadata = TelemetrySession.getMetadata();
Assert.equal(metadata.previousBuildId, oldBuildID);
let buildIDPref = Services.prefs.getCharPref(
TelemetryUtils.Preferences.PreviousBuildID
);
Assert.equal(NEW_BUILD_ID, buildIDPref);
});
function run_test() {
// Make sure we have a profile directory.
do_get_profile();
run_next_test();
}