Merge "More support of snaps for VNF"
[functest.git] / functest / opnfv_tests / vnf / router / vnf_controller / checker.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2017 Okinawa Open Laboratory and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 """vrouter test result check module"""
11
12 import json
13 import logging
14 import re
15
16 from jinja2 import Environment, FileSystemLoader
17
18
19 class Checker(object):
20     """vrouter test result check class"""
21
22     logger = logging.getLogger(__name__)
23
24     def __init__(self):
25         self.logger.debug("init checker")
26
27     def load_check_rule(self, rule_file_dir, rule_file_name, parameter):
28         loader = FileSystemLoader(rule_file_dir,
29                                   encoding='utf8')
30         env = Environment(loader=loader)
31         check_rule_template = env.get_template(rule_file_name)
32         check_rule = check_rule_template.render(parameter)
33         check_rule_data = json.loads(check_rule)
34         return check_rule_data
35
36     def regexp_information(self, response, rules):
37         status = False
38         result_data = {}
39
40         for rule in rules["rules"]:
41             result_data = {
42                 "test_name": rule["description"],
43                 "result": "NG"
44             }
45
46             match = re.search(rule["regexp"],
47                               response)
48             rule["response"] = response
49             if match is None:
50                 status = False
51                 break
52
53             if not match.group(1) == rule["result"]:
54                 status = False
55             else:
56                 result_data["result"] = "OK"
57                 status = True
58
59         return status, result_data