kiloeyes/kiloeyes/tests/common/test_alarm_expr_calculator.py

75 lines
2.9 KiB
Python
Executable File

# Copyright 2015 Carnegie Mellon University
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_log import log
import random
import time
from kiloeyes.common import alarm_expr_calculator as calculator
from kiloeyes import tests
LOG = log.getLogger(__name__)
class TestAlarmExprCalculator(tests.BaseTestCase):
def setUp(self):
super(TestAlarmExprCalculator, self).setUp()
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_compare_thresh(self):
values = [501, 500, 4999]
self.assertEqual('ALARM',
calculator.compare_thresh(values, 'GTE', 500))
self.assertEqual('OK', calculator.compare_thresh(values, 'GT', 500))
values = [501, 500, 4999, None]
self.assertEqual('UNDETERMINED',
calculator.compare_thresh(values, 'LTE', 5000))
values = [501, 500, 4999, None]
self.assertEqual('OK', calculator.compare_thresh(values, 'LT', 4999))
def test_calc_logic(self):
op = 'AND'
subs = ['ALARM', 'OK', 'ALARM', 'UNDETERMINED']
self.assertEqual('OK', calculator.calc_logic(op, subs))
subs = ['ALARM', 'UNDETERMINED', 'ALARM', 'UNDETERMINED']
self.assertEqual('UNDETERMINED', calculator.calc_logic(op, subs))
subs = ['ALARM', 'ALARM', 'ALARM']
self.assertEqual('ALARM', calculator.calc_logic(op, subs))
op = 'OR'
subs = ['ALARM', 'OK', 'ALARM', 'UNDETERMINED']
self.assertEqual('ALARM', calculator.calc_logic(op, subs))
subs = ['UNDETERMINED', 'OK', 'UNDETERMINED']
self.assertEqual('UNDETERMINED', calculator.calc_logic(op, subs))
subs = ['OK', 'OK', 'OK']
self.assertEqual('OK', calculator.calc_logic(op, subs))
op = 'NOT'
self.assertEqual('UNDETERMINED', calculator.calc_logic(op, subs))