Multi-Mechanize is an open source framework for web performance and load testing. It allows you to run simultaneous python scripts to generate load (synthetic transactions) against a web site or web service.
The default response timer wraps the entire Transaction(), so it will time everything included. For more granular timing, you need to instrument your script code with custom timers.
Multi-Mechanize is pure Python and you have access to all of Python's standard library in your scripts. For example, you can use httplib to write a virtual user agent script and get detailed HTTP profiling times (TTFB, TTLB, etc). http://docs.python.org/library/httplib.html
import httplib import time class Transaction(object): def __init__(self): self.custom_timers = {} def run(self): conn = httplib.HTTPConnection('www.example.com') start = time.time() conn.request('GET', '/') request_time = time.time() resp = conn.getresponse() response_time = time.time() conn.close() transfer_time = time.time() self.custom_timers['request sent'] = request_time - start self.custom_timers['response received'] = response_time - start self.custom_timers['content transferred'] = transfer_time - start assert (resp.status == 200), 'Bad HTTP Response'
To test it out, you can add this to the bottom of the script and run it from the command line:
if __name__ == '__main__': trans = Transaction() trans.run() for timer in ('request sent', 'response received', 'content transferred'): print '%s: %.5f secs' % (timer, trans.custom_timers[timer])
Output:
request sent: 0.14429 secs response received: 0.25995 secs content transferred: 0.26007 secs
* if you are running MS Windows, replace the time.time() calls with time.clock() for better timer accuracy. On all other operating systems, use time.time()
No comments:
Post a Comment