def percentileOfSeries(requestContext, *args): levels = [] seriesList = [] for arg in args: logging.info("Arg: %s", arg) if isinstance(arg, (int, long, float)): levels.append(arg) elif isinstance(arg, basestring): levels += [float(x) for x in arg.split(";")] else: seriesList += arg logging.info("Levels: %s", levels) logging.info("Series: %s", seriesList) result = [] for level in levels: if levels <= 0: raise ValueError('The requested percent is required to be greater than 0') name = 'percentilesOfSeries(%s,%g)' % (seriesList[0].pathExpression, level) (start, end, step) = functions.normalize([seriesList])[1:] values = [functions._getPercentile(row, level, False) for row in functions.izip(*seriesList)] resultSeries = TimeSeries(name, start, end, step, values) resultSeries.pathExpression = name result.append(resultSeries) return result
def test_normalize_generate_series_list_input(self): seriesList = self._generate_series_list() self.assertEqual(functions.normalize([seriesList]), (seriesList, 0, 101, 1))
def test_normalize_None_values(self): seriesList = [] seriesList.append(TimeSeries("collectd.test-db{0}.load.value", 0, 5, 1, [None, None, None, None, None])) self.assertEqual(functions.normalize([seriesList]), (seriesList, 0, 5, 1))
def test_normalize_empty(self): with self.assertRaises(NormalizeEmptyResultError): functions.normalize([])
def test_normalize_empty(self): try: functions.normalize([]) except NormalizeEmptyResultError: pass