| # Copyright 2014 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. |
| |
| import json |
| import tempfile |
| import unittest |
| |
| from profile_chrome import trace_packager |
| |
| |
| class TracePackagerTest(unittest.TestCase): |
| def testJsonTraceMerging(self): |
| t1 = {'traceEvents': [{'ts': 123, 'ph': 'b'}]} |
| t2 = {'traceEvents': [], 'stackFrames': ['blah']} |
| |
| # Both trace files will be merged to a third file and will get deleted in |
| # the process, so there's no need for NamedTemporaryFile to do the |
| # deletion. |
| with tempfile.NamedTemporaryFile(delete=False) as f1, \ |
| tempfile.NamedTemporaryFile(delete=False) as f2: |
| f1.write(json.dumps(t1)) |
| f2.write(json.dumps(t2)) |
| f1.flush() |
| f2.flush() |
| |
| with tempfile.NamedTemporaryFile() as output: |
| trace_packager.PackageTraces([f1.name, f2.name], |
| output.name, |
| compress=False, |
| write_json=True) |
| with open(output.name) as output: |
| output = json.load(output) |
| self.assertEquals(output['traceEvents'], t1['traceEvents']) |
| self.assertEquals(output['stackFrames'], t2['stackFrames']) |