81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"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"
|
|
);
|
|
});
|