Guest User

Untitled

a guest
Jul 25th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. import sys
  4. import pika
  5. import hashlib
  6.  
  7. from scipy.stats import chisquare
  8.  
  9. def get_queue_name(i):
  10. return str(i)
  11.  
  12. def load_queues():
  13. for i in range(num_trials):
  14. channel.basic_publish(exchange = exchange_name, routing_key = hashlib.sha256(str(i).encode('utf-8')).hexdigest(), body = str(i))
  15.  
  16. def analyze_queues():
  17. num_messages = []
  18. for i in range(num_queues):
  19. redeclare_result = channel.queue_declare(queue = get_queue_name(i), passive = True)
  20. num_messages.append(int(redeclare_result.method.message_count))
  21. print('Message count by queue:')
  22. print(num_messages)
  23.  
  24. print('Chi-Squared test result:')
  25. print(chisquare(num_messages))
  26.  
  27. def reset_queues():
  28. for i in range(num_queues):
  29. channel.queue_delete(queue = get_queue_name(i))
  30. channel.exchange_delete(exchange = exchange_name)
  31.  
  32.  
  33. username = sys.argv[1]
  34. password = sys.argv[2]
  35. hostname = sys.argv[3]
  36. port = sys.argv[4]
  37. vhost = sys.argv[5]
  38. mode = sys.argv[6]
  39.  
  40. credentials = pika.PlainCredentials(username, password)
  41. connection = pika.BlockingConnection(pika.ConnectionParameters(hostname, int(port), vhost, credentials))
  42. channel = connection.channel()
  43.  
  44. exchange_name = 'test_consistent_hash'
  45. num_queues = 10
  46. num_trials = 10000
  47. channel.exchange_declare(exchange = exchange_name, exchange_type = 'x-consistent-hash')
  48.  
  49. for i in range(num_queues):
  50. channel.queue_declare(queue = get_queue_name(i))
  51. channel.queue_bind(exchange = exchange_name, queue = get_queue_name(i), routing_key='1')
  52.  
  53. if mode == 'load':
  54. load_queues()
  55. elif mode == 'analyze':
  56. analyze_queues()
  57. elif mode == 'reset':
  58. reset_queues()
Add Comment
Please, Sign In to add comment