All files / app/assets/javascripts/pipelines/components/graph perf_utils.js

100% Statements 10/10
100% Branches 2/2
100% Functions 3/3
100% Lines 10/10

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                        15x 2x     15x 2x                   2x 2x       2x 1x     1x                     1x      
import {
  PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START,
  PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END,
  PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION,
  PIPELINES_DETAIL_LINK_DURATION,
  PIPELINES_DETAIL_LINKS_TOTAL,
  PIPELINES_DETAIL_LINKS_JOB_RATIO,
} from '~/performance/constants';
 
import { performanceMarkAndMeasure } from '~/performance/utils';
import { reportPerformance } from '../graph_shared/api';
 
export const beginPerfMeasure = () => {
  performanceMarkAndMeasure({ mark: PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START });
};
 
export const finishPerfMeasureAndSend = (numLinks, numGroups, metricsPath) => {
  performanceMarkAndMeasure({
    mark: PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END,
    measures: [
      {
        name: PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION,
        start: PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START,
      },
    ],
  });
 
  window.requestAnimationFrame(() => {
    const duration = window.performance.getEntriesByName(
      PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION,
    )[0]?.duration;
 
    if (!duration) {
      return;
    }
 
    const data = {
      histograms: [
        { name: PIPELINES_DETAIL_LINK_DURATION, value: duration / 1000 },
        { name: PIPELINES_DETAIL_LINKS_TOTAL, value: numLinks },
        {
          name: PIPELINES_DETAIL_LINKS_JOB_RATIO,
          value: numLinks / numGroups,
        },
      ],
    };
 
    reportPerformance(metricsPath, data);
  });
};