126 lines
4.2 KiB
JavaScript
126 lines
4.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
add_task(async () => {
|
|
Assert.ok(!Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
|
|
let startPromise = Services.profiler.StartProfiler(1000, 10, []);
|
|
|
|
// Default: Active and not paused.
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
await startPromise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
// Pause everything, implicitly pauses sampling.
|
|
let pausePromise = Services.profiler.Pause();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await pausePromise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
// While fully paused, pause and resume sampling only, no expected changes.
|
|
let pauseSamplingPromise = Services.profiler.PauseSampling();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await pauseSamplingPromise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
let resumeSamplingPromise = Services.profiler.ResumeSampling();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await resumeSamplingPromise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
// Resume everything.
|
|
let resumePromise = Services.profiler.Resume();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
await resumePromise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
// Pause sampling only.
|
|
let pauseSampling2Promise = Services.profiler.PauseSampling();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await pauseSampling2Promise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
// While sampling is paused, pause everything.
|
|
let pause2Promise = Services.profiler.Pause();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await pause2Promise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
// Resume, but sampling is still paused separately.
|
|
let resume2promise = Services.profiler.Resume();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
await resume2promise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(Services.profiler.IsSamplingPaused());
|
|
|
|
// Resume sampling only.
|
|
let resumeSampling2Promise = Services.profiler.ResumeSampling();
|
|
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
await resumeSampling2Promise;
|
|
Assert.ok(Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
let stopPromise = Services.profiler.StopProfiler();
|
|
Assert.ok(!Services.profiler.IsActive());
|
|
// Stopping is not pausing.
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
|
|
await stopPromise;
|
|
Assert.ok(!Services.profiler.IsActive());
|
|
Assert.ok(!Services.profiler.IsPaused());
|
|
Assert.ok(!Services.profiler.IsSamplingPaused());
|
|
});
|