Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Unified Diff: systrace/systrace/output_generator_unittest.py

Issue 2712163002: [Systrace] Fix systrace clock syncing issue with BattOr. (Closed)
Patch Set: rebase and change todo Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698