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 6021x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 21x 3x     3x 3x 3x 21x 4x 3x 3x 3x 4x 21x 3x 2x 2x 2x 3x 21x 21x 17x 17x 17x 17x 17x 17x 17x 17x 21x 21x  
'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;