All files / lib/internal/perf event_loop_delay.js

96.61% Statements 57/59
90% Branches 9/10
100% Functions 4/4
96.61% Lines 57/59

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 56 57 58 59 6022x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 3x     3x 3x 3x 22x 4x 3x 3x 3x 4x 22x 3x 2x 2x 2x 3x 22x 22x 17x 17x 17x 17x 17x 17x 17x 17x 22x 22x  
'use strict';
const {
  Symbol,
} = primordials;
 
const {
  codes: {
    ERR_ILLEGAL_CONSTRUCTOR,
  }
} = require('internal/errors');
 
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)) {
      throw new ERR_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;