# -*- Mode: Python; tab-width: 4 -*-

# benchmark a single channel, pipelined

request = 'GET /index.html HTTP/1.0\r\nConnection: Keep-Alive\r\n\r\n'
last_request = 'GET /index.html HTTP/1.0\r\nConnection: close\r\n\r\n'

import socket
import time

class timer:
	def __init__ (self):
		self.start = time.time()
	def end (self):
		return time.time() - self.start

def bench (host, port=80, n=100):
	s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
	s.connect ((host, port))
	t = timer()
	s.send ((request * n) + last_request)
	while 1:
		d = s.recv(65536)
		if not d:
			break
	total = t.end()
	print 'time: %.2f seconds  (%.2f hits/sec)' % (total, n/total)

if __name__ == '__main__':
	import sys
	import string
	if len(sys.argv) < 3:
		print 'usage: %s <host> <port> <count>' % (sys.argv[0])
	else:
		bench (sys.argv[1], string.atoi (sys.argv[2]), string.atoi (sys.argv[3]))
