diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /netwerk/test/unit/test_trr_telemetry.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream/124.0.1.tar.xz firefox-upstream/124.0.1.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'netwerk/test/unit/test_trr_telemetry.js')
-rw-r--r-- | netwerk/test/unit/test_trr_telemetry.js | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_trr_telemetry.js b/netwerk/test/unit/test_trr_telemetry.js new file mode 100644 index 0000000000..fff6f07774 --- /dev/null +++ b/netwerk/test/unit/test_trr_telemetry.js @@ -0,0 +1,118 @@ +"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 + ); +}); |