Repository: allura
Updated Branches:
refs/heads/master 1d6f87b4f -> 7d21b9bd7
Add script to report on stats.log files from TimerMiddleware
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/19fdeb0a
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/19fdeb0a
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/19fdeb0a
Branch: refs/heads/master
Commit: 19fdeb0a75bc672dfe388b1cef1074dc9babb1b3
Parents: 79d3e27
Author: Dave Brondsema <dbrondsema@slashdotmedia.com>
Authored: Tue Aug 25 19:54:54 2015 +0000
Committer: Dave Brondsema <dbrondsema@slashdotmedia.com>
Committed: Tue Aug 25 19:54:54 2015 +0000
----------------------------------------------------------------------
scripts/perf/parse_timings.py | 54 ++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/19fdeb0a/scripts/perf/parse_timings.py
----------------------------------------------------------------------
diff --git a/scripts/perf/parse_timings.py b/scripts/perf/parse_timings.py
new file mode 100644
index 0000000..3d111f7
--- /dev/null
+++ b/scripts/perf/parse_timings.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import json
+from datetime import datetime
+import argparse
+import sys
+
+
+parser = argparse.ArgumentParser(description='Parse TimerMiddleware json lines (e.g. stats.log),
filter them, output tab-delimited')
+parser.add_argument('-f', '--filter-category', type=str, nargs='+', metavar='CAT')
+parser.add_argument('-t', '--timings', type=str, nargs='+', metavar='TIMING')
+parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), nargs='?', default=sys.stdin,
+ help='Filename, or use stdin by default')
+args = parser.parse_args()
+
+timings = []
+for line in args.input_file:
+ data = json.loads(line)
+ try:
+ typ = data['message']['request_category']
+ except KeyError:
+ #print 'No category', data['message']['url']
+ pass
+ if typ not in args.filter_category:
+ continue
+
+ time = datetime.strptime(data['time'], '%Y-%m-%d %H:%M:%S,%f')
+ output = [time]
+ for timing in args.timings:
+ output.append(data['message']['timings'].get(timing, 0))
+ timings.append(output)
+
+timings.sort() # in case of multiple input files
+
+print '\t'.join(['Time'] + args.timings)
+for t in timings:
+ print '\t'.join(map(str, t))
|