Browse Source

Fix Network Simulator result aggregation for buffered regions (#1132)

pull/6/head
Matthew Neil 8 years ago
committed by GitHub
parent
commit
6ed093235e
  1. 34
      utils/switcher/aggregate-simulations.js
  2. 4
      utils/switcher/fn.js

34
utils/switcher/aggregate-simulations.js

@ -5,7 +5,10 @@ import {
average,
} from './fn';
const isBuffered = (previous, current) => previous && previous.buffered && current.buffered;
const isBuffered = (previous, current) => previous &&
((!previous.buffered && current.buffered) ||
(previous.buffered && !current.buffered));
const sumTime = (regions) => _.sumBy(regions, ({
start,
end
@ -17,13 +20,28 @@ const summarizeSimulation = ({
playlists
}) => {
const bufferedGroups = groupContiguous(buffered, isBuffered);
const bufferedRegions = _.map(bufferedGroups, (group) => ({
start: _.head(group).time,
end: _.last(group).time,
buffered: _.head(group).buffered
}));
const bufferedRegions = _.map(bufferedGroups, (group, index) => {
const prevGroup = bufferedGroups[index - 1];
let start;
let end = _.last(group).time;
if (!prevGroup) {
// first group, start is 0
start = 0;
} else {
// there is a previous group, set start to be the end of the previous group
start = _.last(prevGroup).time;
}
return {
start,
end,
buffered: _.head(group).buffered
};
}).slice(0, bufferedGroups.length - 1);
const emptyBufferedRegions = _.filter(bufferedRegions, ['buffered', false]);
const emptyBufferedRegions = _.filter(bufferedRegions, ['buffered', 0]);
return {
startTime: _.get(_.find(buffered, 'buffered'), 'time', Infinity),
@ -72,4 +90,4 @@ const summarizeSimulations = ({
};
};
export { appendToSimulations, summarizeSimulations };
export { appendToSimulations, summarizeSimulations };

4
utils/switcher/fn.js

@ -24,7 +24,7 @@ const groupContiguous = (list, condition) =>
const previousElement = list[i - 1];
// start a new group if no longer contigious
const changed = !previousElement || !condition(previousElement, element);
const changed = !previousElement || condition(previousElement, element);
const groupIndex = changed ? groups.length : groups.length - 1;
const selectedGroup = groups[groupIndex] || [];
@ -33,4 +33,4 @@ const groupContiguous = (list, condition) =>
return groups;
}, []);
export { $, average, quantiles, groupContiguous };
export { $, average, quantiles, groupContiguous };
Loading…
Cancel
Save