summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_trr_telemetry.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /netwerk/test/unit/test_trr_telemetry.js
parentInitial commit. (diff)
downloadfirefox-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.js118
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
+ );
+});