openstack-health/app/js/services/metrics.js

51 lines
1.2 KiB
JavaScript

'use strict';
var angular = require('angular');
var servicesModule = require('./_index.js');
/**
* @ngInject
*/
var metricsService = function() {
var service = {};
service.getNewMetrics = function() {
return { passes: 0, failures: 0, skips: 0, failRate: 0 };
};
service.getFailRate = function(metrics) {
var failRate = metrics.failures / (metrics.passes + metrics.failures) || 0;
return Math.round(failRate * 10000) / 10000;
};
service.addMetrics = function(metrics1, metrics2) {
var metrics = angular.copy(metrics1);
metrics.passes += metrics2.passes;
metrics.failures += metrics2.failures;
metrics.skips += metrics2.skips;
metrics.failRate = service.getFailRate(metrics);
return metrics;
};
service.calculateRunMetrics = function(runEntries) {
var runMetrics = service.getNewMetrics();
runEntries.forEach(function(run) {
if (run.fail > 0) {
runMetrics.failures += 1;
} else if (run.pass > 0) {
runMetrics.passes += 1;
} else {
runMetrics.skips += 1;
}
});
runMetrics.failRate = service.getFailRate(runMetrics);
return runMetrics;
};
return service;
};
servicesModule.service('metricsService', metricsService);