Skip to content

Commit 8c908db

Browse files
georges-armTamarChristinaArm
authored andcommitted
Add __json__ methods for DailyReport class.
Change-Id: I1c6ae57ec7cf34afbcfbc7f4e943f38971886220
1 parent ab900d2 commit 8c908db

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

lnt/server/reporting/dailyreport.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,3 +324,45 @@ def render(self, ts_url, only_html_body=True):
324324
return template.render(
325325
report=self, styles=report_css_styles, analysis=lnt.server.reporting.analysis,
326326
ts_url=ts_url, only_html_body=only_html_body)
327+
328+
def __json__(self):
329+
ret = {}
330+
# Input values.
331+
ret['num_prior_days_to_include'] = self.num_prior_days_to_include
332+
ret['year'] = self.year
333+
ret['month'] = self.month
334+
ret['day'] = self.day
335+
ret['day_start_offset'] = self.day_start_offset.seconds
336+
ret['filter_machine_regex_str'] = self.filter_machine_regex_str
337+
338+
# Computed values.
339+
ret['error'] = self.error
340+
ret['next_day'] = self.next_day
341+
ret['prior_days'] = self.prior_days
342+
ret['machine_runs'] = {}
343+
for (machine_id, day_index) in self.machine_runs.keys():
344+
if machine_id not in ret['machine_runs']:
345+
ret['machine_runs'][machine_id] = {}
346+
assert day_index not in ret['machine_runs'][machine_id]
347+
ret['machine_runs'][machine_id][day_index] = self.machine_runs[(machine_id, day_index)][0]
348+
349+
ret['reporting_machines'] = dict((m.id, m) for m in self.reporting_machines)
350+
ret['reporting_tests'] = dict((t.id, t) for t in self.reporting_tests)
351+
352+
ret['nr_tests_table'] = {}
353+
for (machine, nr_tests_seen) in self.nr_tests_table:
354+
assert machine.id not in ret['nr_tests_table']
355+
ret['nr_tests_table'][machine.id] = nr_tests_seen
356+
357+
ret['result_table'] = {}
358+
for (field, field_results) in self.result_table:
359+
assert field.name not in ret['result_table']
360+
ret['result_table'][field.name] = {}
361+
for (test, visible_results) in field_results:
362+
assert test.id not in ret['result_table'][field.name]
363+
ret['result_table'][field.name][test.id] = {}
364+
for (machine, day_results) in visible_results:
365+
assert machine.id not in ret['result_table'][field.name][test.id]
366+
ret['result_table'][field.name][test.id][machine.id] = day_results.__json__()
367+
368+
return ret

lnt/server/reporting/report.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,19 @@ def __init__(self, comparisonResult):
6969
if self.samples is None:
7070
self.samples = []
7171

72+
def __json__(self):
73+
ret = {}
74+
ret['current'] = self.cr.current
75+
ret['delta'] = self.cr.delta
76+
ret['hash'] = self.hash
77+
ret['hash_rgb_color'] = self.hash_rgb_color
78+
ret['pct_delta'] = self.cr.pct_delta
79+
ret['previous'] = self.cr.previous
80+
ret['samples'] = self.samples
81+
ret['test_status'] = self.cr.get_test_status()
82+
ret['value_status'] = self.cr.get_value_status()
83+
return ret
84+
7285

7386
class RunResults:
7487
"""
@@ -118,6 +131,9 @@ def complete(self):
118131
if dr is not None:
119132
dr.hash_rgb_color = rgb_colors[i]
120133

134+
def __json__(self):
135+
return [(dr.__json__() if dr is not None else None) for dr in self.results]
136+
121137

122138
# Compute static CSS styles for elements. We use the style directly on
123139
# elements instead of via a stylesheet to support major email clients

0 commit comments

Comments
 (0)