auto import from //depot/cupcake/@135843
diff --git a/tools/axl/chewperf.py b/tools/axl/chewperf.py
new file mode 100755
index 0000000..582bdb5
--- /dev/null
+++ b/tools/axl/chewperf.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+
+"""
+ chewperf.py: Chew an http perf log
+ bucketize
+
+"""
+
+import sys, time
+
+def resets():
+ f = open(sys.argv[1]).read()
+ rawLines = f.split('\n')
+
+ times = []
+ for x in range(len(rawLines)):
+ line = rawLines[x].split()
+ try:
+ if line[-1] == "SIGNAL_STRENGTH":
+ ts = int(rawLines[x - 1].split()[-1])
+ times.append(ts)
+ except:
+ pass
+
+ return times
+
+def augment():
+ f = open(sys.argv[1]).read()
+ rawLines = f.split('\r\n')
+
+ out = []
+ t0 = None
+ last = 0
+ for line in rawLines:
+ if "Pulled" in line:
+ chewed = [int(line.split()[5]), int(line.split()[7])]
+ if not t0: t0 = chewed[1]
+ tm = chewed[1] - t0
+ out.append("%s %d" % (line, (tm - last)))
+ last = tm
+ else:
+ out.append(line)
+ print "\n".join(out)
+
+def chew():
+ f = open(sys.argv[1]).read()
+ rawLines = f.split('\n')
+ lines = [x for x in rawLines if "Pulled" in x]
+
+ sidx = lines[0].split().index("Pulled")
+ print "sidx", sidx
+ chewed = [[int(x.split()[sidx + 2]), int(x.split()[sidx + 4])] for x in lines]
+
+ t0 = chewed[0][1]
+ tLast = chewed[-1][1]
+ chewed = [[x[1] - t0, x[0]] for x in chewed]
+
+ totalTime = tLast - t0
+ bytes = sum(x[1] for x in chewed)
+ print "total time", totalTime, "bytes", bytes, "rate", bytes * 1000 / totalTime
+
+ buckets = {}
+ for x in chewed:
+ bucket = x[0] / 1000
+ bytes = x[1]
+ if bucket in buckets:
+ buckets[bucket] += bytes
+ else:
+ buckets[bucket] = bytes
+
+ top = max(buckets.keys())
+ for x in range(top):
+ if x not in buckets.keys():
+ buckets[x] = 0
+
+ # smooth
+ window = [0 for x in range(5)]
+
+ for x in range(len(buckets.items())):
+ window[x % len(window)] = buckets.items()[x][1]
+ print "%s\t%s" % (buckets.items()[x][0], sum(window) / len(window))
+
+def main():
+ chew()
+
+if __name__ == '__main__':
+ main()