"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();
}

let TRR_OK = 1;

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)";
  }
  TelemetryTestUtils.assertKeyedHistogramValue(hist, expectedKey, TRR_OK, 1);
}

add_task(async function test_trr_lookup_mode_2() {
  await trrLookup(2);
});

add_task(async function test_trr_lookup_mode_3() {
  await trrLookup(3);
});

add_task(async function test_trr_lookup_mode_0() {
  await trrLookup(0, 2);
});
