1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
"""
Benchmark for Twisted Spread.
"""
from twisted.spread.pb import PBServerFactory, PBClientFactory, Root
from benchlib import Client, driver
class BenchRoot(Root):
def remote_discard(self, argument):
pass
class Client(Client):
_structure = [
'hello' * 100,
{'foo': 'bar',
'baz': 100,
u'these are bytes': (1, 2, 3)}]
def __init__(self, reactor, port):
super(Client, self).__init__(reactor)
self._port = port
def run(self, *args, **kwargs):
def connected(reference):
self._reference = reference
return super(Client, self).run(*args, **kwargs)
client = PBClientFactory()
d = client.getRootObject()
d.addCallback(connected)
self._reactor.connectTCP('127.0.0.1', self._port, client)
return d
def _request(self):
d = self._reference.callRemote('discard', self._structure)
d.addCallback(self._continue)
d.addErrback(self._stop)
def main(reactor, duration):
concurrency = 15
server = PBServerFactory(BenchRoot())
port = reactor.listenTCP(0, server)
client = Client(reactor, port.getHost().port)
d = client.run(concurrency, duration)
return d
if __name__ == '__main__':
import sys
import pb
driver(pb.main, sys.argv)
|