add yappi benchmark tool
This commit is contained in:
parent
b1d2da19f9
commit
f37efecd0a
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,51 @@
|
|||
# Profile mitmdump with apachebench and
|
||||
# yappi (https://code.google.com/p/yappi/)
|
||||
#
|
||||
# Requirements:
|
||||
# - Apache Bench "ab" binary
|
||||
# - pip install click yappi
|
||||
|
||||
from libmproxy.main import mitmdump
|
||||
from os import system
|
||||
from threading import Thread
|
||||
import time
|
||||
|
||||
import yappi
|
||||
import click
|
||||
|
||||
class ApacheBenchThread(Thread):
|
||||
def __init__(self, concurrency):
|
||||
self.concurrency = concurrency
|
||||
super(ApacheBenchThread, self).__init__()
|
||||
|
||||
def run(self):
|
||||
time.sleep(2)
|
||||
system("ab -n 1024 -c {} -X 127.0.0.1:8080 http://example.com/".format(self.concurrency))
|
||||
|
||||
@click.command()
|
||||
@click.option('--profiler', default="yappi", type=click.Choice(['yappi']))
|
||||
@click.option('--clock-type', default="cpu", type=click.Choice(['wall', 'cpu']))
|
||||
@click.option('--concurrency', default=1, type=click.INT)
|
||||
def main(profiler, clock_type, concurrency):
|
||||
|
||||
outfile = "callgrind.mitmdump-{}-c{}".format(clock_type, concurrency)
|
||||
a = ApacheBenchThread(concurrency)
|
||||
a.start()
|
||||
|
||||
if profiler == "yappi":
|
||||
yappi.set_clock_type(clock_type)
|
||||
yappi.start(builtins=True)
|
||||
|
||||
print("Start mitmdump...")
|
||||
mitmdump(["-k","-q","-S", "1024example"])
|
||||
print("mitmdump stopped.")
|
||||
|
||||
print("Save profile information...")
|
||||
if profiler == "yappi":
|
||||
yappi.stop()
|
||||
stats = yappi.get_func_stats()
|
||||
stats.save(outfile, type='callgrind')
|
||||
print("Done.")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue