pReplay

pReplay replays the dependency graph. It starts from the first activity which is loading the root html. Then according to the graph, it it encounters a network activity, it makes a request for the corresponding url, or if it encounters a computation activity, it waits for a specific amount of time (mentioned in the graph). Once a particular activity is finshed it checks whether it should trigger dependent activities based on whether all activities that a dependent activity depends on are finished. pReplay keeps walking through the dependency graph this way until all activities in the dependency graph have been visited.

usage

./pReplay server testfile [http|https|http2|phttpget] [max-connections] [cookie-size]
  • server : DNS name or IP address
  • testfile : relative path to test file in json format
  • protocol :
    • http : http 1.1
    • https : http 1.1 with SSL
    • http2 : http 2
    • phttpget : requests are handled by PHTTPGET. PHTTPGET has to be started seperately
  • max-connections : maximum amount of concurrent connections
  • cookie-size : size of cookie - works with http1 only

phttpget

  • checkout the HTTPOverSCTP repo
  • switch to multistream branch
  • make
  • put the phttpget binary in the pReplay directory
  • run pReplay with phttpget option
https://github.com/NEAT-project/HTTPOverSCTP

BRANCH: multistream

tested with FreeBSD and Linux

thttpd

  • checkout the thttpd repo
  • switch to the multistream branch
  • ./configure + make + make install
  • /usr/local/sbin/thttpd -C /usr/local/www/thttpd_config
https://github.com/nplab/thttpd/

BRANCH: multistream

Sample thttpd_config:

dir=/usr/local/www/data
cgipat=/cgi-bin/*
chroot
logfile=/usr/local/www/logs/thttpd_log
pidfile=/var/run/thttpd.pid
max_age=0

tested with FreeBSD

info

pReplay has been tested with curl-7.47.1