blob: 2a093596d7bf657005dfe31a057e4cf2ad599bee [file] [log] [blame]
# Copyright (c) 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from perf_insights import map_results
import json
class JSONMapResults(map_results.MapResults):
def __init__(self, output_file):
self.output_file = output_file
self.run_infos = set()
self.num_mapped_traces = 0
self.num_failures = 0
@property
def had_failures(self):
return self.num_failures > 0
def WillMapTraces(self):
self.output_file.write("""{
"results" : [
""")
self.output_file.flush()
def WillMapSingleTrace(self, trace_handle):
pass
def DidMapSingleTrace(self, trace_handle, result_value):
self.run_infos.add(trace_handle.run_info)
if result_value['type'] == 'failure':
self.num_failures += 1
if self.num_mapped_traces > 0:
self.output_file.write(',\n')
self.num_mapped_traces += 1
full_result = {
'run': trace_handle.run_info.AsDict(),
'metadata': trace_handle.metadata,
'value': result_value
}
json.dump(full_result, self.output_file, indent=2)
self.output_file.flush()
def DidMapTraces(self):
runs_table = dict([(run_info.run_id, run_info.AsDict())
for run_info in self.run_infos])
self.output_file.write("""
]
}
""")