예제 #1
0
class RabbitMqAgent(ConfigurableCluAgent):
  """
  Rabbitmq agent
  """
  def __init__(self, config, rmqconf):
    ConfigurableCluAgent.__init__(self, config)
    defaults = {"channel":
        {"exchange":"", "type":""},
        "messages":{"routing_key":""}
        }
    self.__defaults__(defaults)
    self.rmqclient = RabbitmqClient(rmqconf)


  def ensure_after_execute(self):
    try:
      ConfigurableCluAgent.ensure_after_execute(self)
    finally:
      self.rmqclient.disconnect()

  def basic_publish_json(self, message):
    real_message = {}
    real_message["id"] = self.id
    real_message["payload"] = message
    self.rmqclient.basic_publish_json(self.config.channel.exchange, self.config.channel.type, self.config.messages.routing_key, real_message)
예제 #2
0
  def test_disconnect_exception(self):
    conn = Mock()
    close = Mock()
    close.side_effect=Exception("In your face")
    connection_valid = Mock()
    connection_valid.return_value = True

    config={"host":"host", "port":5656, "user":"******","password":"******"}
    co = RabbitmqClient(config)
    co._connection=conn
    conn.close=close
    co.is_connection_valid = connection_valid

    with self.assertRaises(RabbitmqClientException):
      co.disconnect()
예제 #3
0
  def test_disconnect(self):
    conn = Mock()
    close = Mock()
    
    connection_valid = Mock()
    connection_valid.return_value = True
    conn.close=close

    config={"host":"host", "port":5656, "user":"******","password":"******"}
    co = RabbitmqClient(config)
    co.is_connection_valid = connection_valid
    co._connection=conn

    co.disconnect()
    close.assert_called_once_with()
    self.assertTrue(co._connection is None)
    self.assertTrue(co._channel is None)