示例#1
0
    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)
示例#2
0
    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,
        )
示例#3
0
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
示例#4
0
    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)
示例#5
0
文件: report.py 项目: voron3x/shaker
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
示例#6
0
    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': ''}))
示例#7
0
 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)'))
示例#8
0
    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
示例#9
0
    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
示例#10
0
 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)"))