15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2011 The Chromium Authors. All rights reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"""Takes an input JSON, and filters out all system call events that
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)took less than 0.2ms.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This helps trim down the JSON data to only the most interesting / time critical
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)events.
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"""
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import re
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def parseEvents(z):
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  print 'parseEvents(['
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for e in z:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if e.has_key('ms') and e.has_key('done'):
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dur = e['done'] - e['ms']
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if dur < 0.2:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        continue
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Ugly regex to remove the L suffix on large python numbers.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    print '%s,' % re.sub('([0-9])L\\b', '\\1', str(e))
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  print '])'
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def main():
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  execfile(sys.argv[1])
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__':
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  main()
35