Author: arnaudsimon
Date: Tue Nov 27 08:34:54 2007
New Revision: 598684

URL: http://svn.apache.org/viewvc?rev=598684&view=rev
Log:
new file

Added:
    incubator/qpid/trunk/qpid/python/perftest   (with props)

Added: incubator/qpid/trunk/qpid/python/perftest
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/perftest?rev=598684&view=auto
==============================================================================
--- incubator/qpid/trunk/qpid/python/perftest (added)
+++ incubator/qpid/trunk/qpid/python/perftest Tue Nov 27 08:34:54 2007
@@ -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"

Propchange: incubator/qpid/trunk/qpid/python/perftest
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to