All files / lib/internal http.js

100% Statements 55/55
100% Branches 8/8
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 24985x 24985x 24985x 24985x 10x 498x 498x 498x 498x 498x 10x 38x 38x 38x 10x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 12476x 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,
};