Test API add start_date, stop_date parameters in results
[releng.git] / utils / test / result_collection_api / resources / result_models.py
1
2 class ResultCreateRequest(object):
3     def __init__(self,
4                  pod_name=None,
5                  project_name=None,
6                  case_name=None,
7                  installer=None,
8                  version=None,
9                  start_date=None,
10                  stop_date=None,
11                  details=None,
12                  build_tag=None,
13                  scenario=None,
14                  criteria=None,
15                  trust_indicator=None):
16         self.pod_name = pod_name
17         self.project_name = project_name
18         self.case_name = case_name
19         self.installer = installer
20         self.version = version
21         self.start_date = start_date
22         self.stop_date = stop_date
23         self.details = details
24         self.build_tag = build_tag
25         self.scenario = scenario
26         self.criteria = criteria
27         self.trust_indicator = trust_indicator
28
29     def format(self):
30         return {
31             "pod_name": self.pod_name,
32             "project_name": self.project_name,
33             "case_name": self.case_name,
34             "installer": self.installer,
35             "version": self.version,
36             "start_date": self.start_date,
37             "stop_date": self.stop_date,
38             "details": self.details,
39             "build_tag": self.build_tag,
40             "scenario": self.scenario,
41             "criteria": self.criteria,
42             "trust_indicator": self.trust_indicator
43         }
44
45
46 class TestResult:
47     """ Describes a test result"""
48
49     def __init__(self):
50         self._id = None
51         self.case_name = None
52         self.project_name = None
53         self.pod_name = None
54         self.installer = None
55         self.version = None
56         self.start_date = None
57         self.stop_date = None
58         self.details = None
59         self.build_tag = None
60         self.scenario = None
61         self.criteria = None
62         self.trust_indicator = None
63
64     @staticmethod
65     def from_dict(a_dict):
66
67         if a_dict is None:
68             return None
69
70         t = TestResult()
71         t._id = a_dict.get('_id')
72         t.case_name = a_dict.get('case_name')
73         t.pod_name = a_dict.get('pod_name')
74         t.project_name = a_dict.get('project_name')
75         t.description = a_dict.get('description')
76         t.start_date = str(a_dict.get('start_date'))
77         t.stop_date = str(a_dict.get('stop_date'))
78         t.details = a_dict.get('details')
79         t.version = a_dict.get('version')
80         t.installer = a_dict.get('installer')
81         t.build_tag = a_dict.get('build_tag')
82         t.scenario = a_dict.get('scenario')
83         t.criteria = a_dict.get('criteria')
84         # 0 < trust indicator < 1
85         # if bad value =>  set this indicator to 0
86         t.trust_indicator = a_dict.get('trust_indicator')
87         if t.trust_indicator is not None:
88             if isinstance(t.trust_indicator, (int, long, float)):
89                 if t.trust_indicator < 0:
90                     t.trust_indicator = 0
91                 elif t.trust_indicator > 1:
92                     t.trust_indicator = 1
93             else:
94                 t.trust_indicator = 0
95         else:
96             t.trust_indicator = 0
97         return t
98
99     def format(self):
100         return {
101             "case_name": self.case_name,
102             "project_name": self.project_name,
103             "pod_name": self.pod_name,
104             "description": self.description,
105             "start_date": str(self.start_date),
106             "stop_date": str(self.stop_date),
107             "version": self.version,
108             "installer": self.installer,
109             "details": self.details,
110             "build_tag": self.build_tag,
111             "scenario": self.scenario,
112             "criteria": self.criteria,
113             "trust_indicator": self.trust_indicator
114         }
115
116     def format_http(self):
117         return {
118             "_id": str(self._id),
119             "case_name": self.case_name,
120             "project_name": self.project_name,
121             "pod_name": self.pod_name,
122             "description": self.description,
123             "start_date": str(self.start_date),
124             "stop_date": str(self.stop_date),
125             "version": self.version,
126             "installer": self.installer,
127             "details": self.details,
128             "build_tag": self.build_tag,
129             "scenario": self.scenario,
130             "criteria": self.criteria,
131             "trust_indicator": self.trust_indicator
132         }
133
134
135 class TestResults(object):
136     def __init__(self, results=list()):
137         self.results = results
138
139     @staticmethod
140     def from_dict(a_dict):
141         if a_dict is None:
142             return None
143
144         res = TestResults()
145         for result in a_dict.get('results'):
146             res.results.append(TestResult.from_dict(result))
147         return res