All files / lib/internal/perf event_loop_delay.js

94.55% Statements 52/55
90% Branches 9/10
100% Functions 4/4
94.55% Lines 52/55

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 43 44 45 46 47 48 49 50 51 52 53 54 55 56104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 104x 3x       3x 3x 3x 104x 4x 3x 3x 3x 4x 104x 3x 2x 2x 2x 3x 104x 104x 17x 17x 17x 17x 17x 17x 17x 17x 104x 104x  
'use strict';
const {
  Symbol,
  TypeError,
} = primordials;
 
const {
  ELDHistogram: _ELDHistogram,
} = internalBinding('performance');
 
const {
  validateInteger,
  validateObject,
} = require('internal/validators');
 
const {
  Histogram,
  kHandle,
} = require('internal/histogram');
 
const kEnabled = Symbol('kEnabled');
 
class ELDHistogram extends Histogram {
  constructor(i) {
    if (!(i instanceof _ELDHistogram)) {
      // eslint-disable-next-line no-restricted-syntax
      throw new TypeError('illegal constructor');
    }
    super(i);
    this[kEnabled] = false;
  }
  enable() {
    if (this[kEnabled]) return false;
    this[kEnabled] = true;
    this[kHandle].start();
    return true;
  }
  disable() {
    if (!this[kEnabled]) return false;
    this[kEnabled] = false;
    this[kHandle].stop();
    return true;
  }
}
 
function monitorEventLoopDelay(options = {}) {
  validateObject(options, 'options');
 
  const { resolution = 10 } = options;
  validateInteger(resolution, 'options.resolution', 1);
 
  return new ELDHistogram(new _ELDHistogram(resolution));
}
 
module.exports = monitorEventLoopDelay;