118 lines
2.8 KiB
JavaScript
118 lines
2.8 KiB
JavaScript
"use strict";
|
|
|
|
/* import-globals-from trr_common.js */
|
|
|
|
// Allow telemetry probes which may otherwise be disabled for some
|
|
// applications (e.g. Thunderbird).
|
|
Services.prefs.setBoolPref(
|
|
"toolkit.telemetry.testing.overrideProductsCheck",
|
|
true
|
|
);
|
|
|
|
const { TelemetryTestUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/TelemetryTestUtils.sys.mjs"
|
|
);
|
|
|
|
function setup() {
|
|
h2Port = trr_test_setup();
|
|
}
|
|
|
|
setup();
|
|
registerCleanupFunction(async () => {
|
|
trr_clear_prefs();
|
|
});
|
|
|
|
async function trrLookup(mode, rolloutMode) {
|
|
let hist = TelemetryTestUtils.getAndClearKeyedHistogram(
|
|
"TRR_SKIP_REASON_TRR_FIRST2"
|
|
);
|
|
|
|
if (rolloutMode) {
|
|
info("Testing doh-rollout.mode");
|
|
setModeAndURI(0, "doh?responseIP=2.2.2.2");
|
|
Services.prefs.setIntPref("doh-rollout.mode", rolloutMode);
|
|
} else {
|
|
setModeAndURI(mode, "doh?responseIP=2.2.2.2");
|
|
}
|
|
|
|
Services.dns.clearCache(true);
|
|
await new TRRDNSListener("test.example.com", "2.2.2.2");
|
|
let expectedKey = `(other)_${mode}`;
|
|
if (mode == 0) {
|
|
expectedKey = "(other)";
|
|
}
|
|
|
|
let snapshot = hist.snapshot();
|
|
await TestUtils.waitForCondition(() => {
|
|
snapshot = hist.snapshot();
|
|
info("snapshot:" + JSON.stringify(snapshot));
|
|
return snapshot;
|
|
});
|
|
TelemetryTestUtils.assertKeyedHistogramValue(
|
|
hist,
|
|
expectedKey,
|
|
Ci.nsITRRSkipReason.TRR_OK,
|
|
1
|
|
);
|
|
}
|
|
|
|
add_task(async function test_trr_lookup_mode_2() {
|
|
await trrLookup(Ci.nsIDNSService.MODE_TRRFIRST);
|
|
});
|
|
|
|
add_task(async function test_trr_lookup_mode_3() {
|
|
await trrLookup(Ci.nsIDNSService.MODE_TRRONLY);
|
|
});
|
|
|
|
add_task(async function test_trr_lookup_mode_0() {
|
|
await trrLookup(
|
|
Ci.nsIDNSService.MODE_NATIVEONLY,
|
|
Ci.nsIDNSService.MODE_TRRFIRST
|
|
);
|
|
});
|
|
|
|
async function trrByTypeLookup(trrURI, expectedSuccess, expectedSkipReason) {
|
|
Services.prefs.setIntPref(
|
|
"doh-rollout.mode",
|
|
Ci.nsIDNSService.MODE_NATIVEONLY
|
|
);
|
|
|
|
let hist = TelemetryTestUtils.getAndClearKeyedHistogram(
|
|
"TRR_RELEVANT_SKIP_REASON_TRR_FIRST_TYPE_REC"
|
|
);
|
|
|
|
setModeAndURI(Ci.nsIDNSService.MODE_TRRFIRST, trrURI);
|
|
|
|
Services.dns.clearCache(true);
|
|
await new TRRDNSListener("test.httpssvc.com", {
|
|
type: Ci.nsIDNSService.RESOLVE_TYPE_HTTPSSVC,
|
|
expectedSuccess,
|
|
});
|
|
let expectedKey = `(other)_2`;
|
|
|
|
let snapshot = hist.snapshot();
|
|
await TestUtils.waitForCondition(() => {
|
|
snapshot = hist.snapshot();
|
|
info("snapshot:" + JSON.stringify(snapshot));
|
|
return snapshot;
|
|
});
|
|
|
|
TelemetryTestUtils.assertKeyedHistogramValue(
|
|
hist,
|
|
expectedKey,
|
|
expectedSkipReason,
|
|
1
|
|
);
|
|
}
|
|
|
|
add_task(async function test_trr_by_type_lookup_success() {
|
|
await trrByTypeLookup("httpssvc", true, Ci.nsITRRSkipReason.TRR_OK);
|
|
});
|
|
|
|
add_task(async function test_trr_by_type_lookup_fail() {
|
|
await trrByTypeLookup(
|
|
"doh?responseIP=none",
|
|
false,
|
|
Ci.nsITRRSkipReason.TRR_NO_ANSWERS
|
|
);
|
|
});
|