def test_eval_sla(self): records = [{'type': 'agent', 'test': 'iperf_tcp', 'stats': {'bandwidth': {'avg': 700}}}, {'type': 'agent', 'test': 'iperf_udp', 'stats': {'bandwidth': {'avg': 1000}}}, {'type': 'node', 'test': 'iperf_tcp', 'stats': {'bandwidth': {'avg': 850}}}] expr = 'stats.bandwidth.avg > 800' sla_records = sla.eval_expr('[type == "agent"] >> (%s)' % expr, records) self.assertEqual([ sla.SLAItem(record=records[0], state=sla.STATE_FALSE, expression=expr), sla.SLAItem(record=records[1], state=sla.STATE_TRUE, expression=expr)], sla_records) expr = 'stats.bandwidth.avg > 900' sla_records = sla.eval_expr('[test == "iperf_udp", type == "node"] >> ' '(%s)' % expr, records) self.assertEqual([ sla.SLAItem(record=records[1], state=sla.STATE_TRUE, expression=expr), sla.SLAItem(record=records[2], state=sla.STATE_FALSE, expression=expr)], sla_records)
def test_eval_sla(self): records = [ {"type": "agent", "test": "iperf_tcp", "stats": {"bandwidth": {"mean": 700}}}, {"type": "agent", "test": "iperf_udp", "stats": {"bandwidth": {"mean": 1000}}}, {"type": "node", "test": "iperf_tcp", "stats": {"bandwidth": {"mean": 850}}}, ] expr = "stats.bandwidth.mean > 800" sla_records = sla.eval_expr('[type == "agent"] >> (%s)' % expr, records) self.assertEqual( [ sla.SLAItem(record=records[0], state=False, expression=expr), sla.SLAItem(record=records[1], state=True, expression=expr), ], sla_records, ) expr = "stats.bandwidth.mean > 900" sla_records = sla.eval_expr('[test == "iperf_udp", type == "node"] >> ' "(%s)" % expr, records) self.assertEqual( [ sla.SLAItem(record=records[1], state=True, expression=expr), sla.SLAItem(record=records[2], state=False, expression=expr), ], sla_records, )
def verify_sla(records, tests): record_map = collections.defaultdict(list) # test -> [record] for r in records.values(): if ('test' in r) and ('sla' in tests[r['test']]): record_map[r['test']].append(r) sla_records = [] for test_id, records_per_test in record_map.items(): for sla_expr in tests[test_id]['sla']: sla_records += sla.eval_expr(sla_expr, records_per_test) return sla_records
def test_eval_sla_undefined_ref(self): records = [{'type': 'agent', 'test': 'iperf_tcp', 'stats': {'bandwidth': {'avg': 850}}}] expr = 'stats.nonexistent.avg > 800' sla_records = sla.eval_expr('[type == "agent"] >> (%s)' % expr, records) self.assertEqual([ sla.SLAItem(record=records[0], state='Value "stats.nonexistent" is not found', expression=expr)], sla_records)
def test_eval_regex(self): self.assertTrue(sla.eval_expr('"some text" & "\w+\s+\w+"')) self.assertFalse(sla.eval_expr('"some text" & "\d+"')) self.assertFalse(sla.eval_expr('a & "\d+"', {'a': ''}))
def test_eval(self): self.assertEqual(2 ** 6, sla.eval_expr('2**6')) self.assertTrue(sla.eval_expr('11 > a > 5', {'a': 7})) self.assertEqual(42, sla.eval_expr('2 + a.b', {'a': {'b': 40}})) self.assertTrue(sla.eval_expr('11 > 7 and 5 < 6')) self.assertFalse(sla.eval_expr('(not 11 > 7) or (not 5 < 6)'))
def test_eval_regex(self): self.assertEqual(True, sla.eval_expr('"some text" & "\w+\s+\w+"')) self.assertEqual(False, sla.eval_expr('"some text" & "\d+"')) self.assertEqual(False, sla.eval_expr('a & "\d+"', {})) # a == None
def test_eval(self): self.assertEqual(2 ** 6, sla.eval_expr("2**6")) self.assertEqual(True, sla.eval_expr("11 > a > 5", {"a": 7})) self.assertEqual(42, sla.eval_expr("2 + a.b", {"a": {"b": 40}})) self.assertEqual(True, sla.eval_expr("11 > 7 and 5 < 6")) self.assertEqual(False, sla.eval_expr("(not 11 > 7) or (not 5 < 6)"))