function extractServiceSummary(serviceTrends) { const successCount = extractTrendPointsForSingleServiceOperation(serviceTrends, 'count.success-span'); const failureCount = extractTrendPointsForSingleServiceOperation(serviceTrends, 'count.failure-span'); const countPoints = toCountPoints(successCount, failureCount); const tp99DurationPoints = extractTrendPointsForSingleServiceOperation(serviceTrends, '*_99.duration'); const latestTp99DurationDatapoint = _.findLast(tp99DurationPoints, point => point.value); return [{ type: 'Incoming Requests', totalCount: dataPointsSum(countPoints), countPoints, avgSuccessPercent: toSuccessPercent(successCount, failureCount), successPercentPoints: toSuccessPercentPoints(successCount, failureCount), latestTp99Duration: latestTp99DurationDatapoint && latestTp99DurationDatapoint.value, tp99DurationPoints }]; }
function extractOperationSummary(values) { const groupedByOperationName = _.groupBy(values, val => val.operationName); return Object.keys(groupedByOperationName).map((operationName) => { const operationTrends = groupedByOperationName[operationName]; const successPoints = extractTrendPointsForSingleServiceOperation(operationTrends, 'count.success-span'); const failurePoints = extractTrendPointsForSingleServiceOperation(operationTrends, 'count.failure-span'); const countPoints = toCountPoints(successPoints, failurePoints); const tp99DurationPoints = extractTrendPointsForSingleServiceOperation(operationTrends, '*_99.duration'); const latestTp99DurationDatapoint = _.findLast(tp99DurationPoints, point => point.value); return { operationName, totalCount: dataPointsSum(countPoints), countPoints, avgSuccessPercent: toSuccessPercent(successPoints, failurePoints), successPercentPoints: toSuccessPercentPoints(successPoints, failurePoints), latestTp99Duration: latestTp99DurationDatapoint && latestTp99DurationDatapoint.value, tp99DurationPoints, failurePoints }; }); }