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

Side by Side Diff: tools/stats-viewer.py

Issue 496010: stats-viewer.py: support passing test_shell pid. (Closed)
Patch Set: Created 11 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2008 the V8 project authors. All rights reserved. 3 # Copyright 2008 the V8 project authors. All rights reserved.
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 19 matching lines...) Expand all
30 30
31 """A cross-platform execution counter viewer. 31 """A cross-platform execution counter viewer.
32 32
33 The stats viewer reads counters from a binary file and displays them 33 The stats viewer reads counters from a binary file and displays them
34 in a window, re-reading and re-displaying with regular intervals. 34 in a window, re-reading and re-displaying with regular intervals.
35 """ 35 """
36 36
37 37
38 import mmap 38 import mmap
39 import os 39 import os
40 import re
40 import struct 41 import struct
41 import sys 42 import sys
42 import time 43 import time
43 import Tkinter 44 import Tkinter
44 45
45 46
46 # The interval, in milliseconds, between ui updates 47 # The interval, in milliseconds, between ui updates
47 UPDATE_INTERVAL_MS = 100 48 UPDATE_INTERVAL_MS = 100
48 49
49 50
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 # OpenWindow blocks until the main window is closed 89 # OpenWindow blocks until the main window is closed
89 self.OpenWindow() 90 self.OpenWindow()
90 finally: 91 finally:
91 self.CleanUp() 92 self.CleanUp()
92 93
93 def MountSharedData(self): 94 def MountSharedData(self):
94 """Mount the binary counters file as a memory-mapped file. If 95 """Mount the binary counters file as a memory-mapped file. If
95 something goes wrong print an informative message and exit the 96 something goes wrong print an informative message and exit the
96 program.""" 97 program."""
97 if not os.path.exists(self.data_name): 98 if not os.path.exists(self.data_name):
98 print "File %s doesn't exist." % self.data_name 99 maps_name = "/proc/%s/maps" % self.data_name
99 sys.exit(1) 100 if not os.path.exists(maps_name):
101 print "\"%s\" is neither a counter file nor a PID." % self.data_name
102 sys.exit(1)
103 maps_file = open(maps_name, "r")
104 try:
105 m = re.search(r"/dev/shm/\S*", maps_file.read())
106 if m is not None and os.path.exists(m.group(0)):
107 self.data_name = m.group(0)
108 else:
109 print "Can't find counter file in maps for PID %s." % self.data_name
110 sys.exit(1)
111 finally:
112 maps_file.close()
100 data_file = open(self.data_name, "r") 113 data_file = open(self.data_name, "r")
101 size = os.fstat(data_file.fileno()).st_size 114 size = os.fstat(data_file.fileno()).st_size
102 fileno = data_file.fileno() 115 fileno = data_file.fileno()
103 self.shared_mmap = mmap.mmap(fileno, size, access=mmap.ACCESS_READ) 116 self.shared_mmap = mmap.mmap(fileno, size, access=mmap.ACCESS_READ)
104 data_access = SharedDataAccess(self.shared_mmap) 117 data_access = SharedDataAccess(self.shared_mmap)
105 if data_access.IntAt(0) == COUNTERS_FILE_MAGIC_NUMBER: 118 if data_access.IntAt(0) == COUNTERS_FILE_MAGIC_NUMBER:
106 return CounterCollection(data_access) 119 return CounterCollection(data_access)
107 elif data_access.IntAt(0) == CHROME_COUNTERS_FILE_MAGIC_NUMBER: 120 elif data_access.IntAt(0) == CHROME_COUNTERS_FILE_MAGIC_NUMBER:
108 return ChromeCounterCollection(data_access) 121 return ChromeCounterCollection(data_access)
109 print "File %s is not stats data." % self.data_name 122 print "File %s is not stats data." % self.data_name
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 """Run the stats counter. 444 """Run the stats counter.
432 445
433 Args: 446 Args:
434 data_file: The counters file to monitor. 447 data_file: The counters file to monitor.
435 """ 448 """
436 StatsViewer(data_file).Run() 449 StatsViewer(data_file).Run()
437 450
438 451
439 if __name__ == "__main__": 452 if __name__ == "__main__":
440 if len(sys.argv) != 2: 453 if len(sys.argv) != 2:
441 print "Usage: stats-viewer.py <stats data>" 454 print "Usage: stats-viewer.py <stats data>|<test_shell pid>"
442 sys.exit(1) 455 sys.exit(1)
443 Main(sys.argv[1]) 456 Main(sys.argv[1])
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698