Hi everyone,
you probably heard of Torperf [0], the tool that produces our Tor client performance graphs [1]. Torperf is mostly a bunch of scripts and lengthy HOWTOs, so setting it up and keeping it happy is not exactly trivial. The same applies to extending it, e.g., to make downloads using Selenium/Firefox rather than using its own C SOCKS client.
I'm pondering a rewrite of Torperf in Twisted. The idea is to have a single Twisted application that is trivial to install and that does the following things:
1) set up local Tor clients, configure them, and register for events; 2) run a local web server to download files from or upload files to; 3) periodically run one or more tests which can be: 3.1) an HTTP GET request over Tor to its own web server, 3.2) an HTTP POST request to measure upload speed, 3.3) a GET or POST request to a locally running hidden service, 3.4) a series of fetches of top 50 Alexa domains using Selenium/Firefox; 3.5) a series of requests to track stream/circ allocations for #5830; 4) store request timestamps and Tor controller events to SQLite; 5) provide results via a RESTful API over its web server.
That's a lot, and to make things even more fun, there's a sponsor deadline to have more realistic Torperf measurements by February 28. So, I want to start with 3.4 and minimal versions of 4 and 5. But I want to make sure that the remaining parts can be added later without redesigning everything again.
My questions: - Is Twisted the right framework for this? What are the alternatives? - Is there existing code that I should look at before writing new code? - Does anybody want to help out? :)
Thanks! Karsten