1cef7893435aa41160dd1255c43cb8498279738ccChris Craik#!/usr/bin/env python
2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2016 The Chromium Authors. All rights reserved.
3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be
4cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file.
5cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport logging
6cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport os
7cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport sys
8cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport tempfile
9cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport unittest
10cef7893435aa41160dd1255c43cb8498279738ccChris Craik
11cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom log import *
12cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom parsed_trace_events import *
13cef7893435aa41160dd1255c43cb8498279738ccChris Craik
14cef7893435aa41160dd1255c43cb8498279738ccChris Craik
15cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass LogIOTest(unittest.TestCase):
16cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def test_enable_with_file(self):
17cef7893435aa41160dd1255c43cb8498279738ccChris Craik    file = tempfile.NamedTemporaryFile()
18cef7893435aa41160dd1255c43cb8498279738ccChris Craik    trace_enable(open(file.name, 'w+'))
19cef7893435aa41160dd1255c43cb8498279738ccChris Craik    trace_disable()
20cef7893435aa41160dd1255c43cb8498279738ccChris Craik    e = ParsedTraceEvents(trace_filename = file.name)
21cef7893435aa41160dd1255c43cb8498279738ccChris Craik    file.close()
22cef7893435aa41160dd1255c43cb8498279738ccChris Craik    self.assertTrue(len(e) > 0)
23cef7893435aa41160dd1255c43cb8498279738ccChris Craik
24cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def test_enable_with_filename(self):
25cef7893435aa41160dd1255c43cb8498279738ccChris Craik    file = tempfile.NamedTemporaryFile()
26cef7893435aa41160dd1255c43cb8498279738ccChris Craik    trace_enable(file.name)
27cef7893435aa41160dd1255c43cb8498279738ccChris Craik    trace_disable()
28cef7893435aa41160dd1255c43cb8498279738ccChris Craik    e = ParsedTraceEvents(trace_filename = file.name)
29cef7893435aa41160dd1255c43cb8498279738ccChris Craik    file.close()
30cef7893435aa41160dd1255c43cb8498279738ccChris Craik    self.assertTrue(len(e) > 0)
31cef7893435aa41160dd1255c43cb8498279738ccChris Craik
32cef7893435aa41160dd1255c43cb8498279738ccChris Craik  def test_enable_with_implicit_filename(self):
33cef7893435aa41160dd1255c43cb8498279738ccChris Craik    expected_filename = "%s.json" % sys.argv[0]
34cef7893435aa41160dd1255c43cb8498279738ccChris Craik    def do_work():
35cef7893435aa41160dd1255c43cb8498279738ccChris Craik      file = tempfile.NamedTemporaryFile()
36cef7893435aa41160dd1255c43cb8498279738ccChris Craik      trace_enable()
37cef7893435aa41160dd1255c43cb8498279738ccChris Craik      trace_disable()
38cef7893435aa41160dd1255c43cb8498279738ccChris Craik      e = ParsedTraceEvents(trace_filename = expected_filename)
39cef7893435aa41160dd1255c43cb8498279738ccChris Craik      file.close()
40cef7893435aa41160dd1255c43cb8498279738ccChris Craik      self.assertTrue(len(e) > 0)
41cef7893435aa41160dd1255c43cb8498279738ccChris Craik    try:
42cef7893435aa41160dd1255c43cb8498279738ccChris Craik      do_work()
43cef7893435aa41160dd1255c43cb8498279738ccChris Craik    finally:
44cef7893435aa41160dd1255c43cb8498279738ccChris Craik      if os.path.exists(expected_filename):
45cef7893435aa41160dd1255c43cb8498279738ccChris Craik        os.unlink(expected_filename)
46cef7893435aa41160dd1255c43cb8498279738ccChris Craik
47cef7893435aa41160dd1255c43cb8498279738ccChris Craikif __name__ == '__main__':
48cef7893435aa41160dd1255c43cb8498279738ccChris Craik  logging.getLogger().setLevel(logging.DEBUG)
49cef7893435aa41160dd1255c43cb8498279738ccChris Craik  unittest.main(verbosity=2)
50cef7893435aa41160dd1255c43cb8498279738ccChris Craik
51