All files / lib/internal http.js

100% Statements 55/55
100% Branches 9/9
100% Functions 4/4
100% Lines 55/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 5610x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 24870x 24870x 24870x 24870x 10x 493x 493x 493x 493x 493x 10x 32x 32x 32x 10x 12364x 12364x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 12364x 10x 10x 10x 10x 10x 10x 10x  
'use strict';
 
const {
  Symbol,
  Date,
  DatePrototypeGetMilliseconds,
  DatePrototypeToUTCString,
} = primordials;
 
const { setUnrefTimeout } = require('internal/timers');
 
const { InternalPerformanceEntry } = require('internal/perf/performance_entry');
 
const {
  enqueue,
  hasObserver,
} = require('internal/perf/observe');
 
let utcCache;
 
function utcDate() {
  if (!utcCache) cache();
  return utcCache;
}
 
function cache() {
  const d = new Date();
  utcCache = DatePrototypeToUTCString(d);
  setUnrefTimeout(resetCache, 1000 - DatePrototypeGetMilliseconds(d));
}
 
function resetCache() {
  utcCache = undefined;
}
 
function emitStatistics(statistics) {
  if (!hasObserver('http') || statistics == null) return;
  const startTime = statistics.startTime;
  const diff = process.hrtime(startTime);
  const entry = new InternalPerformanceEntry(
    'HttpRequest',
    'http',
    startTime[0] * 1000 + startTime[1] / 1e6,
    diff[0] * 1000 + diff[1] / 1e6,
    undefined,
  );
  enqueue(entry);
}
 
module.exports = {
  kOutHeaders: Symbol('kOutHeaders'),
  kNeedDrain: Symbol('kNeedDrain'),
  utcDate,
  emitStatistics,
};