| 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..58e11ac8c27bafdb47fa4a486b82e40c389d1e8a 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,51 @@ 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()
|
| - 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))
|
| +
|
| + 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)
|
|
|