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 56103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 103x 3x       3x 3x 3x 103x 4x 3x 3x 3x 4x 103x 3x 2x 2x 2x 3x 103x 103x 17x 17x 17x 17x 17x 17x 17x 17x 103x 103x  
'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;