Bug 1320052 - Remove now obsolete full-session/subsession tests for histograms. r=chutten draft
authorJan-Erik Rediger <jrediger@mozilla.com>
Wed, 02 May 2018 15:55:01 +0200
changeset 791449 bd3df2987f1e91588ef13005c9b51117b6c47672
parent 791448 1768d82c088761f1dfce6ec06ebdda0b8bb2d1cd
child 791450 13335d8278a5d417f65d426f3baaa0a92e8b1519
push id108818
push userbmo:jrediger@mozilla.com
push dateFri, 04 May 2018 13:17:24 +0000
reviewerschutten
bugs1320052
milestone61.0a1
Bug 1320052 - Remove now obsolete full-session/subsession tests for histograms. r=chutten MozReview-Commit-ID: 1NJ6OAYEqIs
toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js
toolkit/components/telemetry/tests/unit/test_TelemetrySession.js
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryHistograms.js
@@ -823,182 +823,16 @@ add_task(async function test_datasets() 
   Assert.ok(registered.has("TELEMETRY_TEST_KEYED_RELEASE_OPTOUT"));
   registered = Telemetry.snapshotKeyedHistograms(RELEASE_CHANNEL_OPTOUT,
                                                  false /* clear */);
   registered = new Set(Object.keys(registered.parent));
   Assert.ok(!registered.has("TELEMETRY_TEST_KEYED_FLAG"));
   Assert.ok(registered.has("TELEMETRY_TEST_KEYED_RELEASE_OPTOUT"));
 });
 
-add_task({
-  skip_if: () => gIsAndroid
-},
-function test_subsession() {
-  const COUNT = "TELEMETRY_TEST_COUNT";
-  const FLAG = "TELEMETRY_TEST_FLAG";
-  let h = Telemetry.getHistogramById(COUNT);
-  let flag = Telemetry.getHistogramById(FLAG);
-
-  // Both original and duplicate should start out the same.
-  h.clear();
-  let snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                              false /* subsession */,
-                                              false /* clear */).parent;
-  let subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                                true /* subsession */,
-                                                false /* clear */).parent;
-  Assert.ok(!(COUNT in snapshot));
-  Assert.ok(!(COUNT in subsession));
-
-  // They should instantiate and pick-up the count.
-  h.add(1);
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.ok(COUNT in snapshot);
-  Assert.ok(COUNT in subsession);
-  Assert.equal(snapshot[COUNT].sum, 1);
-  Assert.equal(subsession[COUNT].sum, 1);
-
-  // They should still reset properly.
-  h.clear();
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.ok(!(COUNT in snapshot));
-  Assert.ok(!(COUNT in subsession));
-
-  // Both should instantiate and pick-up the count.
-  h.add(1);
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.ok(COUNT in snapshot);
-  Assert.ok(COUNT in subsession);
-  Assert.equal(snapshot[COUNT].sum, 1);
-  Assert.equal(subsession[COUNT].sum, 1);
-
-  // Check that we are able to only reset the duplicate histogram.
-  h.clear(true);
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.ok(COUNT in snapshot);
-  Assert.ok(!(COUNT in subsession));
-  Assert.equal(snapshot[COUNT].sum, 1);
-
-  // Both should register the next count.
-  h.add(1);
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.equal(snapshot[COUNT].sum, 2);
-  Assert.equal(subsession[COUNT].sum, 1);
-
-  // Retrieve a subsession snapshot and pass the flag to
-  // clear subsession histograms too.
-  h.clear();
-  flag.clear();
-  h.add(1);
-  flag.add(1);
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            true /* clear */).parent;
-  Assert.ok(COUNT in snapshot);
-  Assert.ok(COUNT in subsession);
-  Assert.ok(FLAG in snapshot);
-  Assert.ok(FLAG in subsession);
-  Assert.equal(snapshot[COUNT].sum, 1);
-  Assert.equal(subsession[COUNT].sum, 1);
-  Assert.equal(snapshot[FLAG].sum, 1);
-  Assert.equal(subsession[FLAG].sum, 1);
-
-  // The next subsesssion snapshot should show the histograms
-  // got reset.
-  snapshot = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                          false /* subsession */,
-                                          false /* clear */).parent;
-  subsession = Telemetry.snapshotHistograms(Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTIN,
-                                            true /* subsession */,
-                                            false /* clear */).parent;
-  Assert.ok(COUNT in snapshot);
-  Assert.ok(!(COUNT in subsession));
-  Assert.ok(FLAG in snapshot);
-  Assert.ok(FLAG in subsession);
-  Assert.equal(snapshot[COUNT].sum, 1);
-  Assert.equal(snapshot[FLAG].sum, 1);
-  Assert.equal(subsession[FLAG].sum, 0);
-});
-
-add_task({
-  skip_if: () => gIsAndroid
-},
-function test_keyed_subsession() {
-  let h = Telemetry.getKeyedHistogramById("TELEMETRY_TEST_KEYED_FLAG");
-  const KEY = "foo";
-
-  // Both original and subsession should start out the same.
-  h.clear();
-  Assert.ok(!(KEY in h.snapshot()));
-  Assert.ok(!(KEY in h.subsessionSnapshot()));
-  Assert.equal(h.snapshot(KEY).sum, 0);
-  Assert.equal(h.subsessionSnapshot(KEY).sum, 0);
-
-  // Both should register the flag.
-  h.add(KEY, 1);
-  Assert.ok(KEY in h.snapshot());
-  Assert.ok(KEY in h.subsessionSnapshot());
-  Assert.equal(h.snapshot(KEY).sum, 1);
-  Assert.equal(h.subsessionSnapshot(KEY).sum, 1);
-
-  // Check that we are able to only reset the subsession histogram.
-  h.clear(true);
-  Assert.ok(KEY in h.snapshot());
-  Assert.ok(!(KEY in h.subsessionSnapshot()));
-  Assert.equal(h.snapshot(KEY).sum, 1);
-  Assert.equal(h.subsessionSnapshot(KEY).sum, 0);
-
-  // Setting the flag again should make both match again.
-  h.add(KEY, 1);
-  Assert.ok(KEY in h.snapshot());
-  Assert.ok(KEY in h.subsessionSnapshot());
-  Assert.equal(h.snapshot(KEY).sum, 1);
-  Assert.equal(h.subsessionSnapshot(KEY).sum, 1);
-
-  // Check that "snapshot and clear" works properly.
-  let snapshot = h.snapshot();
-  let subsession = h.snapshotSubsessionAndClear();
-  Assert.ok(KEY in snapshot);
-  Assert.ok(KEY in subsession);
-  Assert.equal(snapshot[KEY].sum, 1);
-  Assert.equal(subsession[KEY].sum, 1);
-
-  subsession = h.subsessionSnapshot();
-  Assert.ok(!(KEY in subsession));
-  Assert.equal(h.subsessionSnapshot(KEY).sum, 0);
-});
-
 add_task(async function test_keyed_keys() {
   let h = Telemetry.getKeyedHistogramById("TELEMETRY_TEST_KEYED_KEYS");
   h.clear();
   Telemetry.clearScalars();
 
   // The |add| method should not throw for keys that are not allowed.
   h.add("testkey", true);
   h.add("thirdKey", false);
--- a/toolkit/components/telemetry/tests/unit/test_TelemetrySession.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetrySession.js
@@ -747,258 +747,16 @@ add_task(async function test_checkSubses
   subsession = TelemetrySession.getPayload("environment-change", false);
   Assert.ok("events" in subsession.processes.parent, "Should have an events field in subsession payload.");
   events = subsession.processes.parent.events.filter(e => e[1] === "telemetry.test");
   Assert.equal(events.length, 0, "Should have no test events in the subsession payload now.");
 
   await TelemetryController.testShutdown();
 });
 
-add_task(async function test_checkSubsessionHistograms() {
-  if (gIsAndroid) {
-    // We don't support subsessions yet on Android.
-    return;
-  }
-
-  let now = new Date(2020, 1, 1, 12, 0, 0);
-  let expectedDate = new Date(2020, 1, 1, 12, 0, 0);
-  fakeNow(now);
-  await TelemetryController.testReset();
-
-  const COUNT_ID = "TELEMETRY_TEST_COUNT";
-  const KEYED_ID = "TELEMETRY_TEST_KEYED_COUNT";
-  const count = Telemetry.getHistogramById(COUNT_ID);
-  const keyed = Telemetry.getKeyedHistogramById(KEYED_ID);
-
-  const stableHistograms = new Set([
-    "TELEMETRY_TEST_FLAG",
-    "TELEMETRY_TEST_COUNT",
-    "TELEMETRY_TEST_RELEASE_OPTOUT",
-    "TELEMETRY_TEST_RELEASE_OPTIN",
-    "STARTUP_CRASH_DETECTED",
-  ]);
-
-  const stableKeyedHistograms = new Set([
-    "TELEMETRY_TEST_KEYED_FLAG",
-    "TELEMETRY_TEST_KEYED_COUNT",
-    "TELEMETRY_TEST_KEYED_RELEASE_OPTIN",
-    "TELEMETRY_TEST_KEYED_RELEASE_OPTOUT",
-  ]);
-
-  // List of prefixes of histograms that could anomalously be present in
-  // the subsession snapshot but not the session snapshot.
-  // If you add something to this list, please reference a bug#
-  const possibleAnomalyPrefixes = [
-    "CYCLE_COLLECTOR_WORKER", // non-MT CC can happen between payload gathering - bug 1398431
-  ];
-
-  // Compare the two sets of histograms.
-  // The "subsession" histograms should match the registered
-  // "classic" histograms. However, histograms can change
-  // between us collecting the different payloads, so we only
-  // check for deep equality on known stable histograms.
-  let checkHistograms = (classic, subsession, message) => {
-    for (let id of Object.keys(subsession)) {
-      if (possibleAnomalyPrefixes.some(prefix => id.startsWith(prefix))) {
-        continue;
-      }
-      Assert.ok(id in classic, message + ` (${id})`);
-      if (stableHistograms.has(id)) {
-        Assert.deepEqual(classic[id],
-                         subsession[id], message);
-      } else {
-        Assert.equal(classic[id].histogram_type,
-                     subsession[id].histogram_type, message);
-      }
-    }
-  };
-
-  // Same as above, except for keyed histograms.
-  let checkKeyedHistograms = (classic, subsession, message) => {
-    for (let id of Object.keys(subsession)) {
-      Assert.ok(id in classic, message);
-      if (stableKeyedHistograms.has(id)) {
-        Assert.deepEqual(classic[id],
-                         subsession[id], message);
-      }
-    }
-  };
-
-  // Both classic and subsession payload histograms should start the same.
-  // The payloads should be identical for now except for the reason.
-  count.clear();
-  keyed.clear();
-  let classic = TelemetrySession.getPayload();
-  let subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.equal(classic.info.reason, "gather-payload");
-  Assert.equal(subsession.info.reason, "environment-change");
-  Assert.ok(!(COUNT_ID in classic.histograms));
-  Assert.ok(!(COUNT_ID in subsession.histograms));
-  Assert.ok(!(KEYED_ID in classic.keyedHistograms));
-  Assert.ok(!(KEYED_ID in subsession.keyedHistograms));
-
-  checkHistograms(classic.histograms, subsession.histograms, "Should start the same");
-  checkKeyedHistograms(classic.keyedHistograms, subsession.keyedHistograms, "Keyed should start the same");
-
-  // Adding values should get picked up in both.
-  count.add(1);
-  keyed.add("a", 1);
-  keyed.add("b", 1);
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.ok(COUNT_ID in classic.histograms);
-  Assert.ok(COUNT_ID in subsession.histograms);
-  Assert.ok(KEYED_ID in classic.keyedHistograms);
-  Assert.ok(KEYED_ID in subsession.keyedHistograms);
-  Assert.equal(classic.histograms[COUNT_ID].sum, 1);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].a.sum, 1);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].b.sum, 1);
-
-  checkHistograms(classic.histograms, subsession.histograms, "Added values should be picked up");
-  checkKeyedHistograms(classic.keyedHistograms, subsession.keyedHistograms, "Added values should be picked up by keyed");
-
-  // Values should still reset properly.
-  count.clear();
-  keyed.clear();
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.ok(!(COUNT_ID in classic.histograms));
-  Assert.ok(!(COUNT_ID in subsession.histograms));
-  Assert.ok(!(KEYED_ID in classic.keyedHistograms));
-  Assert.ok(!(KEYED_ID in subsession.keyedHistograms));
-
-  checkHistograms(classic.histograms, subsession.histograms, "Values should reset");
-  checkKeyedHistograms(classic.keyedHistograms, subsession.keyedHistograms, "Keyed values should reset");
-
-  // Adding values should get picked up in both.
-  count.add(1);
-  keyed.add("a", 1);
-  keyed.add("b", 1);
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.ok(COUNT_ID in classic.histograms);
-  Assert.ok(COUNT_ID in subsession.histograms);
-  Assert.ok(KEYED_ID in classic.keyedHistograms);
-  Assert.ok(KEYED_ID in subsession.keyedHistograms);
-  Assert.equal(classic.histograms[COUNT_ID].sum, 1);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].a.sum, 1);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].b.sum, 1);
-
-  checkHistograms(classic.histograms, subsession.histograms, "Adding values should be picked up again");
-  checkKeyedHistograms(classic.keyedHistograms, subsession.keyedHistograms, "Adding values should be picked up by keyed again");
-
-  // We should be able to reset only the subsession histograms.
-  // First check that "snapshot and clear" still returns the old state...
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change", true);
-
-  let subsessionStartDate = new Date(classic.info.subsessionStartDate);
-  Assert.equal(subsessionStartDate.toISOString(), expectedDate.toISOString());
-  subsessionStartDate = new Date(subsession.info.subsessionStartDate);
-  Assert.equal(subsessionStartDate.toISOString(), expectedDate.toISOString());
-  checkHistograms(classic.histograms, subsession.histograms, "Should be able to reset subsession");
-  checkKeyedHistograms(classic.keyedHistograms, subsession.keyedHistograms, "Should be able to reset subsession keyed");
-
-  // ... then check that the next snapshot shows the subsession
-  // histograms got reset.
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.ok(COUNT_ID in classic.histograms);
-  Assert.ok(!(COUNT_ID in subsession.histograms));
-  Assert.equal(classic.histograms[COUNT_ID].sum, 1);
-
-  Assert.ok(KEYED_ID in classic.keyedHistograms);
-  Assert.ok(!(KEYED_ID in subsession.keyedHistograms));
-  Assert.equal(classic.keyedHistograms[KEYED_ID].a.sum, 1);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].b.sum, 1);
-
-  // Adding values should get picked up in both again.
-  count.add(1);
-  keyed.add("a", 1);
-  keyed.add("b", 1);
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-
-  Assert.ok(COUNT_ID in classic.histograms);
-  Assert.ok(COUNT_ID in subsession.histograms);
-  Assert.equal(classic.histograms[COUNT_ID].sum, 2);
-  Assert.equal(subsession.histograms[COUNT_ID].sum, 1);
-
-  Assert.ok(KEYED_ID in classic.keyedHistograms);
-  Assert.ok(KEYED_ID in subsession.keyedHistograms);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].a.sum, 2);
-  Assert.equal(classic.keyedHistograms[KEYED_ID].b.sum, 2);
-  Assert.equal(subsession.keyedHistograms[KEYED_ID].a.sum, 1);
-  Assert.equal(subsession.keyedHistograms[KEYED_ID].b.sum, 1);
-
-  await TelemetryController.testShutdown();
-});
-
-add_task(async function test_checkSubsessionData() {
-  if (gIsAndroid) {
-    // We don't support subsessions yet on Android.
-    return;
-  }
-
-  // Keep track of the active ticks count if the session recorder is available.
-  let getActiveTicks = () => TelemetrySession.getPayload().simpleMeasurements.activeTicks;
-  let activeTicksAtSubsessionStart = getActiveTicks();
-  let expectedActiveTicks = activeTicksAtSubsessionStart;
-
-  let incrementActiveTicks = () => {
-    TelemetrySession.observe(null, "user-interaction-active");
-    ++expectedActiveTicks;
-  };
-
-  await TelemetryController.testReset();
-
-  // Both classic and subsession payload data should be the same on the first subsession.
-  incrementActiveTicks();
-  let classic = TelemetrySession.getPayload();
-  let subsession = TelemetrySession.getPayload("environment-change");
-  Assert.equal(classic.simpleMeasurements.activeTicks, expectedActiveTicks,
-    "Classic pings must count active ticks (in simpleMeasurements) since the beginning of the session.");
-  Assert.equal(subsession.simpleMeasurements.activeTicks, expectedActiveTicks,
-    "Subsessions must count active ticks (in simpleMeasurements) as classic pings on the first subsession.");
-  Assert.equal(subsession.processes.parent.scalars["browser.engagement.active_ticks"], expectedActiveTicks,
-    "Subsessions must count active ticks (in scalars) as classic pings on the first subsession.");
-
-  // Start a new subsession and check that the active ticks are correctly reported.
-  incrementActiveTicks();
-  activeTicksAtSubsessionStart = getActiveTicks();
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change", true);
-  Assert.equal(classic.simpleMeasurements.activeTicks, expectedActiveTicks,
-    "Classic pings must count active ticks (in simpleMeasurements) since the beginning of the session.");
-  Assert.equal(subsession.simpleMeasurements.activeTicks, expectedActiveTicks,
-    "Pings must not lose the tick count when starting a new subsession.");
-  Assert.equal(subsession.processes.parent.scalars["browser.engagement.active_ticks"], expectedActiveTicks,
-    "Active ticks (in scalars) must not lose count for a previous subsession when starting a new subsession.");
-
-  // Get a new subsession payload without clearing the subsession.
-  incrementActiveTicks();
-  classic = TelemetrySession.getPayload();
-  subsession = TelemetrySession.getPayload("environment-change");
-  Assert.equal(classic.simpleMeasurements.activeTicks, expectedActiveTicks,
-    "Classic pings must count active ticks (in simpleMeasurements) since the beginning of the session.");
-  Assert.equal(subsession.simpleMeasurements.activeTicks,
-    expectedActiveTicks - activeTicksAtSubsessionStart,
-    "Subsessions must count active ticks (in simpleMeasurements) since the last new subsession.");
-  Assert.equal(subsession.processes.parent.scalars["browser.engagement.active_ticks"],
-    expectedActiveTicks - activeTicksAtSubsessionStart,
-    "Subsessions must count active ticks (in scalars) since the last new subsession.");
-
-  await TelemetryController.testShutdown();
-});
-
 add_task(async function test_dailyCollection() {
   if (gIsAndroid) {
     // We don't do daily collections yet on Android.
     return;
   }
 
   let now = new Date(2030, 1, 1, 12, 0, 0);
   let nowHour = new Date(2030, 1, 1, 12, 0, 0);