def _update_state(): """Update state of a sub expr.""" data_sub = expr_data['data'][expr.fmtd_sub_expr_str] data_list = data_sub['metrics'] if len(data_list) == 0: data_sub['state'] = 'UNDETERMINED' else: period = float(expr.period) periods = int(expr.periods) right = t_now left = right - period temp_data = [] value_in_periods = [] for i in range(len(data_list) - 1, -1, -1): if data_list[i]['timestamp'] >= left: temp_data.append(float(data_list[i]['value'])) else: value = calculator.calc_value( expr.normalized_func, temp_data) value_in_periods.append(value) right = left left = right - period temp_data = [] value = calculator.calc_value( expr.normalized_func, temp_data) value_in_periods.append(value) for i in range(len(value_in_periods), periods, 1): value_in_periods.append(None) expr_data['data'][expr.fmtd_sub_expr_str]['values'] = ( value_in_periods) expr_data['data'][expr.fmtd_sub_expr_str]['state'] = ( calculator.compare_thresh( value_in_periods, expr.normalized_operator, float(expr.threshold)))
def _update_state(): """Update state of a sub expr.""" data_sub = expr_data['data'][expr.fmtd_sub_expr_str] data_list = data_sub['metrics'] period = float(expr.period) periods = int(expr.periods) right = t_now left = right - period temp_data = [] value_in_periods = [] i = len(data_list) - 1 while i >= 0: if data_list[i]['timestamp'] >= left: temp_data.append(float(data_list[i]['value'])) else: value = calculator.calc_value(expr.normalized_func, temp_data) value_in_periods.append(value) right = left left = right - period temp_data = [] i += 1 i -= 1 value = calculator.calc_value(expr.normalized_func, temp_data) value_in_periods.append(value) for i in range(len(value_in_periods), periods, 1): value_in_periods.append( calculator.calc_value(expr.normalized_func, [])) expr_data['data'][expr.fmtd_sub_expr_str]['values'] = ( value_in_periods) expr_data['data'][expr.fmtd_sub_expr_str]['state'] = ( calculator.compare_thresh(value_in_periods, expr.normalized_operator, float(expr.threshold)))
def test_calc_value(self): self.assertEqual(0, calculator.calc_value('MAX', [0])) data = [] self.assertEqual(None, calculator.calc_value('MAX', data)) random.seed(time.time()) for i in range(0, 30, 1): data.append(random.uniform(0, 1000)) self.assertEqual(max(data), calculator.calc_value('MAX', data)) self.assertEqual(sum(data), calculator.calc_value('SUM', data)) self.assertEqual(len(data), calculator.calc_value('COUNT', data)) self.assertEqual(min(data), calculator.calc_value('MIN', data)) self.assertEqual(sum(data) / len(data), calculator.calc_value('AVG', data))
def test_calc_value(self): self.assertEqual(0, calculator.calc_value('MAX', [0])) data = [] self.assertEqual(None, calculator.calc_value('MAX', data)) random.seed(time.time()) for i in range(0, 30, 1): data.append(random.uniform(0, 1000)) self.assertEqual(max(data), calculator.calc_value('MAX', data)) self.assertEqual(sum(data), calculator.calc_value('SUM', data)) self.assertEqual(len(data), calculator.calc_value('COUNT', data)) self.assertEqual(min(data), calculator.calc_value('MIN', data)) self.assertEqual( sum(data) / len(data), calculator.calc_value('AVG', data))