summaryrefslogtreecommitdiff
path: root/systrace/catapult/systrace/systrace/output_generator_unittest.py
diff options
context:
space:
mode:
Diffstat (limited to 'systrace/catapult/systrace/systrace/output_generator_unittest.py')
-rw-r--r--systrace/catapult/systrace/systrace/output_generator_unittest.py106
1 files changed, 59 insertions, 47 deletions
diff --git a/systrace/catapult/systrace/systrace/output_generator_unittest.py b/systrace/catapult/systrace/systrace/output_generator_unittest.py
index 2347316..58e11ac 100644
--- a/systrace/catapult/systrace/systrace/output_generator_unittest.py
+++ b/systrace/catapult/systrace/systrace/output_generator_unittest.py
@@ -9,17 +9,17 @@ import json
import os
import unittest
-from py_utils import tempfile_ext
from systrace import decorators
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')
-ATRACE_PROCESS_DUMP_DATA = os.path.join(TEST_DIR, 'atrace_procfs_dump')
+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')
@@ -52,14 +52,18 @@ class OutputGeneratorTest(unittest.TestCase):
update_systrace_trace_viewer.SYSTRACE_TRACE_VIEWER_HTML_FILE))
with open(ATRACE_DATA) as f:
atrace_data = f.read().replace(" ", "").strip()
- trace_results = [trace_result.TraceResult('systemTraceEvents', atrace_data)]
- with tempfile_ext.TemporaryFileName() as output_file_name:
- output_generator.GenerateHTMLOutput(trace_results, output_file_name)
+ trace_results = [trace_result.TraceResult('systemTraceEvents',
+ atrace_data)]
+ 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:
+ output_generator.GenerateHTMLOutput(trace_results, f.name)
html_output = f.read()
- trace_data = (html_output.split(
- '<script class="trace-data" type="application/text">')[1].split(
- '</script>'))[0].replace(" ", "").strip()
+ trace_data = (html_output.split(
+ '<script class="trace-data" type="application/text">')[1].split(
+ '</script>'))[0].replace(" ", "").strip()
+ os.remove(final_path)
# Ensure the trace data written in HTML is located within the
# correct place in the HTML document and that the data is not
@@ -70,42 +74,50 @@ class OutputGeneratorTest(unittest.TestCase):
@decorators.HostOnlyTest
def testHtmlOutputGenerationFormatsMultipleTraces(self):
trace_results = []
- with trace_data_module.TraceDataBuilder() as trace_data_builder:
- 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,
- allow_unstructured=True)
-
- with open(ATRACE_PROCESS_DUMP_DATA) as fp:
- atrace_process_dump_data = fp.read()
- trace_results.append(trace_result.TraceResult(
- 'atraceProcessDump', atrace_process_dump_data))
- trace_data_builder.AddTraceFor(trace_data_module.ATRACE_PROCESS_DUMP_PART,
- atrace_process_dump_data,
- allow_unstructured=True)
-
- with open(COMBINED_PROFILE_CHROME_DATA) as fp:
- chrome_data = json.load(fp)
- trace_results.append(
- trace_result.TraceResult('traceEvents', chrome_data))
- trace_data_builder.AddTraceFor(
- trace_data_module.CHROME_TRACE_PART, chrome_data)
-
- trace_results.append(
- trace_result.TraceResult('systraceController', str({})))
- trace_data_builder.AddTraceFor(trace_data_module.TELEMETRY_PART, {})
-
- with tempfile_ext.NamedTemporaryDirectory() as temp_dir:
- data_builder_out = os.path.join(temp_dir, 'data_builder.html')
- output_generator_out = os.path.join(temp_dir, 'output_generator.html')
- output_generator.GenerateHTMLOutput(trace_results, output_generator_out)
- trace_data_builder.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)
+ trace_data_builder = trace_data_module.TraceDataBuilder()
+
+ 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)