diff options
author | Arnaud Simon <arnaudsimon@apache.org> | 2007-11-27 16:34:54 +0000 |
---|---|---|
committer | Arnaud Simon <arnaudsimon@apache.org> | 2007-11-27 16:34:54 +0000 |
commit | 820ac1d28bcc789db139a51bc8886c1f418977cc (patch) | |
tree | 9e5187b56c881736a6194dbda371284214bf42be | |
parent | 034003ec5864e6a1e1084f54ac99c9006aba508b (diff) | |
download | qpid-python-820ac1d28bcc789db139a51bc8886c1f418977cc.tar.gz |
new file
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@598684 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-x | python/perftest | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/python/perftest b/python/perftest new file mode 100755 index 0000000000..2e9148ce50 --- /dev/null +++ b/python/perftest @@ -0,0 +1,95 @@ +#!/usr/bin/env python + +def publisher(n): + import qpid + import sys + from qpid.client import Client + from qpid.content import Content + if len(sys.argv) >= 3: + n = int(sys.argv[2]) + client = Client("127.0.0.1", 5672) + client.start({"LOGIN": "guest", "PASSWORD": "guest"}) + channel = client.channel(1) + channel.session_open() + message = Content("message") + message["routing_key"] = "message_queue" + print "producing ", n, " messages" + for i in range(n): + channel.message_transfer(destination="amq.direct", content=message) + + print "producing final message" + message = Content("That's done") + message["routing_key"] = "message_queue" + channel.message_transfer(destination="amq.direct", content=message) + + print "consuming sync message" + consumer = "consumer" + queue = client.queue(consumer) + channel.message_subscribe(queue="sync_queue", destination=consumer) + channel.message_flow(consumer, 0, 0xFFFFFFFF) + channel.message_flow(consumer, 1, 0xFFFFFFFF) + queue.get(block = True) + print "done" + channel.session_close() + +def consumer(): + import sys + import qpid + from qpid.client import Client + from qpid.content import Content + client = Client("127.0.0.1", 5672) + client.start({"LOGIN": "guest", "PASSWORD": "guest"}) + channel = client.channel(1) + channel.session_open() + consumer = "consumer" + queue = client.queue(consumer) + channel.message_subscribe(queue="message_queue", destination=consumer) + channel.message_flow(consumer, 0, 0xFFFFFFFF) + channel.message_flow(consumer, 1, 0xFFFFFFFF) + final = "That's done" + content = "" + message = None + print "getting messages" + while content != final: + message = queue.get(block = True) + content = message.content.body + message.complete(cumulative=True) + + print "consumed all messages" + message = Content("message") + message["routing_key"] = "sync_queue" + channel.message_transfer(destination="amq.direct", content=message) + print "done" + channel.session_close() + +if __name__=='__main__': + import sys + import qpid + from timeit import Timer + from qpid.client import Client + from qpid.content import Content + client = Client("127.0.0.1", 5672) + client.start({"LOGIN": "guest", "PASSWORD": "guest"}) + channel = client.channel(1) + channel.session_open() + channel.queue_declare(queue="message_queue") + channel.queue_bind(exchange="amq.direct", queue="message_queue", routing_key="message_queue") + channel.queue_declare(queue="sync_queue") + channel.queue_bind(exchange="amq.direct", queue="sync_queue", routing_key="sync_queue") + channel.session_close() + + numMess = 100 + if len(sys.argv) >= 3: + numMess = int(sys.argv[2]) + if len(sys.argv) == 1: + print "error: please specify prod or cons" + elif sys.argv[1] == 'prod': + tprod = Timer("publisher(100)", "from __main__ import publisher") + tp = tprod.timeit(1) + print "produced and consumed" , numMess + 2 ,"messages in: ", tp + elif sys.argv[1] == 'cons': + tcons = Timer("consumer()", "from __main__ import consumer") + tc = tcons.timeit(1) + print "consumed " , numMess ," in: ", tc + else: + print "please specify prod or cons" |