summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js')
-rw-r--r--testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js b/testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js
new file mode 100644
index 0000000000..659d4cd14d
--- /dev/null
+++ b/testing/web-platform/tests/js-self-profiling/max-buffer-size.window.js
@@ -0,0 +1,49 @@
+// META: script=resources/profile-utils.js
+
+promise_test(async t => {
+ assert_throws_js(TypeError, () => {
+ new Profiler({ sampleInterval: 10 });
+ });
+}, 'max buffer size must be defined');
+
+promise_test(async t => {
+ const profiler = new Profiler({
+ sampleInterval: 10,
+ maxBufferSize: 2,
+ });
+
+ // Force 3 samples with a max buffer size of 2.
+ for (let i = 0; i < 3; i++) {
+ ProfileUtils.forceSample();
+ }
+
+ const trace = await profiler.stop();
+ assert_equals(trace.samples.length, 2);
+}, 'max buffer size is not exceeded');
+
+promise_test(async t => {
+ const largeBufferProfiler = new Profiler({ sampleInterval: 10, maxBufferSize: Number.MAX_SAFE_INTEGER });
+ const smallBufferProfiler = new Profiler({ sampleInterval: 10, maxBufferSize: 1 });
+
+ const watcher = new EventWatcher(t, smallBufferProfiler, ['samplebufferfull']);
+
+ largeBufferProfiler.addEventListener('samplebufferfull', () => {
+ assert_unreached('samplebufferfull invoked on wrong profiler');
+ largeBufferProfiler.stop();
+ smallBufferProfiler.stop();
+ });
+
+ smallBufferProfiler.addEventListener('samplebufferfull', () => {
+ largeBufferProfiler.stop();
+ smallBufferProfiler.stop();
+ });
+
+ // Force two samples to be taken, which should exceed
+ // |smallBufferProfiler|'s buffer size.
+ for (let i = 0; i < 2; i++) {
+ ProfileUtils.forceSample();
+ }
+
+ // Ensure that |smallBufferProfiler|'s buffer size is exceeded.
+ await watcher.wait_for('samplebufferfull');
+}, 'ensure samplebufferfull is fired on full profiler');