import pycurl
import StringIO
import threading
import time

URL     = "http://10.0.0.102"
HEADERS = ['Connection: Keep-Alive']  
THREADS = 20
REPS    = 10

requests = ["%s/%s"%(URL, x.strip().split('/')[-1]) \
                for x in open("file_list.txt",'r').readlines()]

class Requester (threading.Thread):
    def __init__ (self):
        threading.Thread.__init__(self)
        self.c = pycurl.Curl()
        self.c.setopt (pycurl.HTTPHEADER, HEADERS)

    def run (self):
        for rep in range(REPS):
            for url in requests:
                b = StringIO.StringIO()

                self.c.setopt(pycurl.WRITEFUNCTION, b.write)
                self.c.setopt(pycurl.URL, url)
                self.c.perform()
                # resp = b.getvalue()

def main():
    nreqs  = THREADS * REPS * len(requests)
    print "Requests:  %d" % (nreqs)
    
    threads = []
    for n in range(THREADS):
        t = Requester()
        threads.append (t)

    begin = time.time()
    for t in threads:
        t.start()

    for t in threads:
        t.join()
    end = time.time()

    elapse = end - begin
    print "Time:      %f" % (elapse)
    print "Reqs/sec:  %d" % (nreqs/elapse)


if __name__ == '__main__':
    main()

