Chromium Code Reviews| Index: systrace/systrace/output_generator_unittest.py |
| diff --git a/systrace/systrace/output_generator_unittest.py b/systrace/systrace/output_generator_unittest.py |
| index 9b74ed19ca6f933bf0f9a14aa9e85437aec68e33..08a277b2def833d8b0d6e332662ad940a9e538be 100644 |
| --- a/systrace/systrace/output_generator_unittest.py |
| +++ b/systrace/systrace/output_generator_unittest.py |
| @@ -4,6 +4,7 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +import hashlib |
| import json |
| import os |
| import unittest |
| @@ -13,10 +14,12 @@ from systrace import output_generator |
| from systrace import trace_result |
| from systrace import update_systrace_trace_viewer |
| from systrace import util |
| +from tracing.trace_data import trace_data as trace_data_module |
| TEST_DIR = os.path.join(os.path.dirname(__file__), 'test_data') |
| ATRACE_DATA = os.path.join(TEST_DIR, 'atrace_data') |
| +BATTOR_DATA = os.path.join(TEST_DIR, 'battor_test_data.txt') |
| COMBINED_PROFILE_CHROME_DATA = os.path.join( |
| TEST_DIR, 'profile-chrome_systrace_perf_chrome_data') |
| @@ -70,30 +73,52 @@ class OutputGeneratorTest(unittest.TestCase): |
| @decorators.HostOnlyTest |
| def testHtmlOutputGenerationFormatsMultipleTraces(self): |
| - update_systrace_trace_viewer.update(force_update=True) |
| - self.assertTrue(os.path.exists( |
| - update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE)) |
| - json_data = open(COMBINED_PROFILE_CHROME_DATA).read() |
|
Chris Craik
2017/03/21 19:52:23
can we delete the file COMBINED_PROFILE_CHROME_DAT
rnephew (Reviews Here)
2017/03/23 15:14:15
The new unittest still uses it.
|
| - combined_data = json.loads(json_data) |
| trace_results = [] |
| - trace_results_expected = [] |
| - for (trace_name, data) in combined_data.iteritems(): |
| - trace_results.append(trace_result.TraceResult(str(trace_name), |
| - str(data))) |
| - trace_results_expected.append(str(data).replace(" ", "").strip()) |
| - output_file_name = util.generate_random_filename_for_test() |
| - final_path = output_generator.GenerateHTMLOutput(trace_results, |
| - output_file_name) |
| - with open(output_file_name, 'r') as f: |
| - html_output = f.read() |
| - for i in range(1, len(trace_results)): |
| - trace_data = (html_output.split( |
| - '<script class="trace-data" type="application/text">')[i].split( |
| - '</script>'))[0].replace(" ", "").strip() |
| + trace_data_builder = trace_data_module.TraceDataBuilder() |
| - # Ensure the trace data written in HTML is located within the |
| - # correct place in the HTML document and that the data is not |
| - # malformed. |
| - self.assertTrue(trace_data in trace_results_expected) |
| - os.remove(final_path) |
| - os.remove(update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE) |
| + with open(BATTOR_DATA) as fp: |
| + battor_data = fp.read() |
| + trace_results.append( |
| + trace_result.TraceResult('powerTraceAsString', battor_data)) |
| + trace_data_builder.AddTraceFor( |
| + trace_data_module.BATTOR_TRACE_PART, battor_data) |
| + |
| + with open(ATRACE_DATA) as fp: |
| + atrace_data = fp.read() |
| + trace_results.append( |
| + trace_result.TraceResult('systemTraceEvents', atrace_data)) |
| + trace_data_builder.AddTraceFor(trace_data_module.ATRACE_PART, atrace_data) |
| + |
| + |
| + with open(COMBINED_PROFILE_CHROME_DATA) as fp: |
| + chrome_data = fp.read() |
| + trace_results.append( |
| + trace_result.TraceResult('traceEvents', json.loads(chrome_data))) |
| + trace_data_builder.AddTraceFor( |
| + trace_data_module.CHROME_TRACE_PART, json.loads(chrome_data)) |
| + |
| + # Generate controller trace. |
|
charliea (OOO until 10-5)
2017/03/21 19:47:23
nit: I think "Generate controller trace" is implie
rnephew (Reviews Here)
2017/03/23 15:14:15
Done.
|
| + trace_results.append( |
| + trace_result.TraceResult('systraceController', str({}))) |
| + trace_data_builder.AddTraceFor(trace_data_module.TELEMETRY_PART, {}) |
| + |
| + try: |
| + data_builder_out = util.generate_random_filename_for_test() |
| + output_generator_out = util.generate_random_filename_for_test() |
| + output_generator.GenerateHTMLOutput(trace_results, output_generator_out) |
| + trace_data_builder.AsData().Serialize(data_builder_out, 'Systrace') |
| + |
| + output_generator_md5sum = hashlib.md5( |
| + open(output_generator_out, 'rb').read()).hexdigest() |
| + data_builder_md5sum = hashlib.md5( |
| + open(data_builder_out, 'rb').read()).hexdigest() |
| + |
| + self.assertEqual(output_generator_md5sum, data_builder_md5sum) |
| + finally: |
| + def del_if_exist(path): |
| + try: |
| + os.remove(path) |
| + except IOError: |
| + pass |
| + del_if_exist(output_generator_out) |
| + del_if_exist(data_builder_out) |