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 6019x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 3x     3x 3x 3x 19x 4x 3x 3x 3x 4x 19x 3x 2x 2x 2x 3x 19x 19x 17x 17x 17x 17x 17x 17x 17x 17x 19x 19x  
'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;