mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-07 03:38:51 +02:00
48 lines
1.7 KiB
JavaScript
48 lines
1.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
ChromeUtils.defineESModuleGetters(this, {
|
|
TelemetryTestUtils: "resource://testing-common/TelemetryTestUtils.sys.mjs",
|
|
});
|
|
|
|
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" });
|
|
});
|