hire freelancers, build software with codesnap.com
     search jobs

Register in seconds   Forgot password?  

Software Project Lightweight proxy server for simulating network conditions
posted by doughty  
interest 1268 views / 4 bids so far
description I need a lightweight proxy server suitable for simulating network failures and other common problems which interfere with the successful operation of REST-style client-server APIs. Under normal use, the proxy server will behave identically to Apache's mod_proxy, in that it should accept HTTP requests and forward them along to a specified remote service, then collect the response, rewriting the content and headers as necessary, and return them to the client. However, the proxy server will also listen on a configurable control port and expose a web-based configuration interface which allows the behavior to be altered. The servers being proxied will be capable of supporting over 350 requests per second; with this proxy in place clients shouldn't see more than a 1% impact on the overall performance unless the behavior is being altered as described below:

1. Spontaneous close. A configurable percentage of the connections should close spontaneously before all the response bytes have been written.
2. Reject connections. A configurable percentage of the connections should be refused.
3. Slow response. A configurable percentage of the requests should be responded to slowly. This means that there will be a lag between response bytes although all of the data in the response will be eventually sent.
4. Specified HTTP response code.

These should be combinable; it should be possible to specify that a percentage of the responses are normal, another percentage are responded to properly but take 30 seconds to return all the data, another percentage should be dropped spontaneously, another percentage should return HTTP response code 404, etc. In addition, it should be possible to have the system randomly select upon a set of response alternatives, which should provide more "real-world" testing. You have the ability to define the syntax for specifying these parameters. The parameters must be editable through the control port/GUI and should also be able to be initialized from the command line or via a properties file (your choice).

The UI should have the ability to display statistics in the following areas:
A. Number of connections refused
B. Number of requested connections not accepted
C. Total number of requests
D. Total number of 200 responses
E. Total number of non-200 response
F. Transfer rate for 200 responses

I prefer a Java servlet suitable for deployment under Tomcat or Jetty but would accept code written in any language so long as the performance characteristics outlined above are satisfied.

Additional requirements:
1. The proxy server must support Keep-Alives for HTTP connections and must properly return (and rewrite, if needed) the Content-Length header if it is returned from the proxied service.
2. The proxy server must rewrite (as does mod_proxy) URLs in the response data and headers which refer back to the underlying service. show/hide addendum
tags java
click a tag to find similar jobs
due Fri, 15 Aug (3 yrs ago)
budget $100
message to doughty about this job





© 2008 codesnap | post a job | find pros | new jobs | email alerts | developers | buyers | about | feedback


freelance software jobs: java jobs | php jobs | python jobs | ruby jobs | android jobs | .net jobs | iphone jobs | mobile software jobs | flash jobs | web software jobs | vb6 jobs | c programming jobs | photoshop jobs | groovy jobs | mysql jobs | perl jobs | sql jobs | c++ jobs | grails jobs | django jobs | drupal jobs | palm software jobs | blackberry software jobs | django jobs
hire part-fime, contract programmers, developers, designers: java programmer | php programmer | .net programmer | c# programmer | c++ programmer | flash programmer | iphone programmer | photoshop designer | python developer | ruby developer | groovy developer | grails developer | http developer | javascript developer | android developer | palm developer | blackberry developer | django developer | web site developer