| // 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'); |