File: test_logFromPreference.js

package info (click to toggle)
firefox 147.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,324 kB
  • sloc: cpp: 7,607,156; javascript: 6,532,492; ansic: 3,775,158; python: 1,415,368; xml: 634,556; asm: 438,949; java: 186,241; sh: 62,751; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (42 lines) | stat: -rw-r--r-- 1,575 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

const kPrefName = "logging.prof";
const kPrefValue = 5;
add_task(async () => {
  Services.prefs.setIntPref(kPrefName, kPrefValue);
  registerCleanupFunction(() => {
    Services.prefs.clearUserPref(kPrefName);
  });

  const entries = 10000;
  const interval = 1;
  const threads = ["GeckoMain"];
  const features = ["nostacksampling"];
  await Services.profiler.StartProfiler(entries, interval, features, threads);
  // We need to pause the profiler here, otherwise we get crashes.
  // This seems to be a combination of json streaming + markers from Rust.
  // See Bug 1920704 for more details.
  await Services.profiler.Pause();
  const profileData = await Services.profiler.getProfileDataAsync();
  await Services.profiler.StopProfiler();
  const { markers, stringTable } = profileData.threads[0];
  const stringIndexForLogMessages = stringTable.indexOf("LogMessages");
  Assert.greaterOrEqual(
    stringIndexForLogMessages,
    0,
    "A string index for the string LogMessages have been found."
  );

  // At least one log for the profiler json streaming operation should exist.
  // See https://searchfox.org/mozilla-central/rev/445a6e86233c733c5557ef44e1d33444adaddefc/mozglue/baseprofiler/core/platform.cpp#2015
  const logMessageMarkers = markers.data.filter(
    tuple => tuple[markers.schema.name] === stringIndexForLogMessages
  );

  Assert.greaterOrEqual(
    logMessageMarkers.length,
    0,
    "At least one log message have been found."
  );
});