summaryrefslogtreecommitdiffstats
path: root/toolkit/components/telemetry/tests/unit/test_bug1555798.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /toolkit/components/telemetry/tests/unit/test_bug1555798.js
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/telemetry/tests/unit/test_bug1555798.js')
-rw-r--r--toolkit/components/telemetry/tests/unit/test_bug1555798.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/tests/unit/test_bug1555798.js b/toolkit/components/telemetry/tests/unit/test_bug1555798.js
new file mode 100644
index 0000000000..a7716d5875
--- /dev/null
+++ b/toolkit/components/telemetry/tests/unit/test_bug1555798.js
@@ -0,0 +1,50 @@
+/* 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" });
+});