"""Throughput test."""
import time, sys
from twisted.internet import protocol
from twisted.python import log
TIMES = 10000
S = "0123456789" * 1
toSend = len(S) * TIMES
log.startLogging(sys.stdout)
class Sender(protocol.Protocol):
def connectionMade(self):
start()
self.numSent = 0
self.received = 0
self.transport.registerProducer(self, 0)
def stopProducing(self):
pass
def pauseProducing(self):
pass
def resumeProducing(self):
self.numSent += 1
self.transport.write(S)
if self.numSent == TIMES:
self.transport.unregisterProducer()
self.transport.loseConnection()
def connectionLost(self, reason):
shutdown(self.numSent == TIMES)
started = None
def start():
global started
started = time.time()
def shutdown(success):
if not success:
print "didn't succeed"
else:
passed = time.time() - started
print "Throughput (send): %s kbytes/sec" % ((toSend / passed) / 1024)
from twisted.internet import reactor
reactor.stop()
def main():
if sys.argv[3] == "1":
from twisted.internet import iocpreactor
iocpreactor.install()
f = protocol.ClientFactory()
f.protocol = Sender
from twisted.internet import reactor
for i in range(1):
reactor.connectTCP(sys.argv[1], int(sys.argv[2]), f)
reactor.run()
if __name__ == '__main__':
main()
syntax highlighted by Code2HTML, v. 0.9.1