mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-07 19:59:18 +02:00
# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36052 --HG-- extra : source : b5be5b4f4b47c256e28a29f665dc754f6407ee7f
50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
ChromeUtils.defineModuleGetter(
|
|
this,
|
|
"TelemetryTestUtils",
|
|
"resource://testing-common/TelemetryTestUtils.jsm"
|
|
);
|
|
|
|
add_task(async function test_bug1555798() {
|
|
/*
|
|
The idea behind this bug is that the registration of dynamic scalars causes
|
|
the position of the scalarinfo for telemetry.dynamic_events_count to move
|
|
which causes things to asplode.
|
|
|
|
So to test this we'll be registering two dynamic events, recording to one of
|
|
the events (to ensure the Scalar for event1 is allocated from the unmoved
|
|
DynamicScalarInfo&), registering several dynamic scalars to cause the
|
|
nsTArray of DynamicScalarInfo to realloc, and then recording to the second
|
|
event to make the Event Summary Scalar for event2 try to allocate from where
|
|
the DynamicScalarInfo used to be.
|
|
*/
|
|
Telemetry.clearEvents();
|
|
|
|
const DYNAMIC_CATEGORY = "telemetry.test.dynamic.event";
|
|
Telemetry.registerEvents(DYNAMIC_CATEGORY, {
|
|
an_event: {
|
|
methods: ["a_method"],
|
|
objects: ["an_object", "another_object"],
|
|
record_on_release: true,
|
|
expired: false,
|
|
},
|
|
});
|
|
Telemetry.recordEvent(DYNAMIC_CATEGORY, "a_method", "an_object");
|
|
|
|
for (let i = 0; i < 100; ++i) {
|
|
Telemetry.registerScalars("telemetry.test.dynamic" + i, {
|
|
scalar_name: {
|
|
kind: Ci.nsITelemetry.SCALAR_TYPE_COUNT,
|
|
record_on_release: true,
|
|
},
|
|
});
|
|
Telemetry.scalarAdd("telemetry.test.dynamic" + i + ".scalar_name", 1);
|
|
}
|
|
|
|
Telemetry.recordEvent(DYNAMIC_CATEGORY, "a_method", "another_object");
|
|
|
|
TelemetryTestUtils.assertNumberOfEvents(2, {}, { process: "dynamic" });
|
|
});
|