| Index: tools/stats-viewer.py
|
| diff --git a/tools/stats-viewer.py b/tools/stats-viewer.py
|
| index 14b214768f3f384f020112beacdd7e0bbcb00d68..05cb76288282492ce31da264c9026f32f76acffe 100755
|
| --- a/tools/stats-viewer.py
|
| +++ b/tools/stats-viewer.py
|
| @@ -34,8 +34,8 @@ The stats viewer reads counters from a binary file and displays them
|
| in a window, re-reading and re-displaying with regular intervals.
|
| """
|
|
|
| -
|
| import mmap
|
| +import optparse
|
| import os
|
| import re
|
| import struct
|
| @@ -60,13 +60,15 @@ CHROME_COUNTERS_FILE_MAGIC_NUMBER = 0x13131313
|
| class StatsViewer(object):
|
| """The main class that keeps the data used by the stats viewer."""
|
|
|
| - def __init__(self, data_name):
|
| + def __init__(self, data_name, name_filter):
|
| """Creates a new instance.
|
|
|
| Args:
|
| data_name: the name of the file containing the counters.
|
| + name_filter: The regexp filter to apply to counter names.
|
| """
|
| self.data_name = data_name
|
| + self.name_filter = name_filter
|
|
|
| # The handle created by mmap.mmap to the counters file. We need
|
| # this to clean it up on exit.
|
| @@ -224,17 +226,19 @@ class StatsViewer(object):
|
| sorted_groups.sort()
|
| for counter_name in sorted_groups:
|
| counter_objs = groups[counter_name]
|
| - name = Tkinter.Label(self.root, width=50, anchor=Tkinter.W,
|
| - text=counter_name)
|
| - name.grid(row=index, column=0, padx=1, pady=1)
|
| + if self.name_filter.match(counter_name):
|
| + name = Tkinter.Label(self.root, width=50, anchor=Tkinter.W,
|
| + text=counter_name)
|
| + name.grid(row=index, column=0, padx=1, pady=1)
|
| count = len(counter_objs)
|
| for i in xrange(count):
|
| counter = counter_objs[i]
|
| name = counter.Name()
|
| var = Tkinter.StringVar()
|
| - value = Tkinter.Label(self.root, width=15, anchor=Tkinter.W,
|
| - textvariable=var)
|
| - value.grid(row=index, column=(1 + i), padx=1, pady=1)
|
| + if self.name_filter.match(name):
|
| + value = Tkinter.Label(self.root, width=15, anchor=Tkinter.W,
|
| + textvariable=var)
|
| + value.grid(row=index, column=(1 + i), padx=1, pady=1)
|
|
|
| # If we know how to interpret the prefix of this counter then
|
| # add an appropriate formatting to the variable
|
| @@ -440,17 +444,25 @@ class ChromeCounterCollection(object):
|
| self.counter_values_offset + i * self.max_threads * 4)
|
|
|
|
|
| -def Main(data_file):
|
| +def Main(data_file, name_filter):
|
| """Run the stats counter.
|
|
|
| Args:
|
| data_file: The counters file to monitor.
|
| + name_filter: The regexp filter to apply to counter names.
|
| """
|
| - StatsViewer(data_file).Run()
|
| + StatsViewer(data_file, name_filter).Run()
|
|
|
|
|
| if __name__ == "__main__":
|
| - if len(sys.argv) != 2:
|
| - print "Usage: stats-viewer.py <stats data>|<test_shell pid>"
|
| + parser = optparse.OptionParser("usage: %prog [--filter=re] "
|
| + "<stats data>|<test_shell pid>")
|
| + parser.add_option("--filter",
|
| + default=".*",
|
| + help=("regexp filter for counter names "
|
| + "[default: %default]"))
|
| + (options, args) = parser.parse_args()
|
| + if len(args) != 1:
|
| + parser.print_help()
|
| sys.exit(1)
|
| - Main(sys.argv[1])
|
| + Main(args[0], re.compile(options.filter))
|
|
|