Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { ContentRelevancyManager } = ChromeUtils.importESModule(
"resource://gre/modules/ContentRelevancyManager.sys.mjs"
);
const PREF_CONTENT_RELEVANCY_ENABLED = "toolkit.contentRelevancy.enabled";
add_setup(async function setup() {
// FOG needs a profile directory to put its data in.
do_get_profile();
// FOG needs to be initialized in order for data to flow.
Services.fog.initializeFOG();
Services.prefs.setBoolPref(PREF_CONTENT_RELEVANCY_ENABLED, true);
ContentRelevancyManager.init();
registerCleanupFunction(() => {
Services.prefs.clearUserPref(PREF_CONTENT_RELEVANCY_ENABLED);
});
});
/**
* Test classification metrics - succeed.
*/
add_task(async function test_classify_succeed() {
Services.fog.testResetFOG();
Assert.equal(null, Glean.relevancyClassify.succeed.testGetValue());
Assert.equal(null, Glean.relevancyClassify.duration.testGetValue());
await ContentRelevancyManager._test_doClassification();
Assert.deepEqual(
{
input_size: 0,
input_classified_size: 0,
input_inconclusive_size: 0,
output_interest_size: 0,
interest_top_1_hits: 0,
interest_top_2_hits: 0,
interest_top_3_hits: 0,
},
Glean.relevancyClassify.succeed.testGetValue()[0].extra,
"Should record the succeed event"
);
Assert.ok(
Glean.relevancyClassify.duration.testGetValue().sum > 0,
"Should record the duration"
);
});
/**
* Test classification metrics - fail - insufficient-input.
*/
add_task(async function test_classify_fail_case1() {
Services.fog.testResetFOG();
Assert.equal(null, Glean.relevancyClassify.fail.testGetValue());
Assert.equal(null, Glean.relevancyClassify.duration.testGetValue());
// Require at least 1 input to trigger the failure.
await ContentRelevancyManager._test_doClassification({ minUrlsForTest: 1 });
Assert.deepEqual(
{
reason: "insufficient-input",
},
Glean.relevancyClassify.fail.testGetValue()[0].extra,
"Should record the fail event"
);
Assert.equal(
null,
Glean.relevancyClassify.duration.testGetValue(),
"Should not record the duration"
);
});