Framework d'agent conçu pour tester les applications ZeroMQ
Les types d'agent correspondent au type de socket ZMQ sous-jacent testé
Dans votre projet, déclarez vos agents dans config/zmq_agents.rb
comme ceci :
require 'agent_zmq'
AgentZMQ . define_ZMQ_SUB :my_sub_agent do | a |
a . socket_opts << { ZMQ :: SUBSCRIBE => 'com.connamara.BODPosition' }
a . end_point_type = :bind
a . end_point = 'tcp://*:5556'
end
AgentZMQ . define_ZMQ_PUB :my_pub_agent do | a |
a . end_point_type = :connect
a . end_points = [ 'tcp://127.0.0.1:5558' , 'tcp://127.0.0.1:5559' ]
end
AgentZMQ . define_ZMQ_REQ :my_req_agent do | a |
a . end_point_type = :connect
a . end_point = 'tcp://127.0.0.1:5552'
end
AgentZMQ . define_ZMQ_REP :my_rep_agent do | a |
a . reply = Proc . new { | msg | "ok" }
a . end_point_type = :bind
a . end_point = 'tcp://*:5552'
end
require 'agent_zmq'
AgentZMQ . start
at_exit { AgentZMQ . stop }
Vous souhaiterez peut-être réinitialiser les états de l'agent entre les tests sans arrêter ni démarrer. Cela peut être fait avec AgentZMQ.reset
Récupérez l'agent par le nom donné dans le fichier de configuration
my_agent = AgentZMQ . agents_hash [ :my_sub_agent ]
Cet agent fournit un cache de messages
all_messages_received = my_sub_agent . messages_received
# returns and removes the last message received from the cache
last_message_received = my_sub_agent . pop
Lors de reset
, le cache du sous-agent est vidé
La méthode publish
prend un seul message composé d'une ou plusieurs parties
my_pub_agent . publish "single part message"
my_pub_agent . publish [ "part 1" , "part 2" ]
La méthode publish
prend un seul message composé d'une ou plusieurs parties. L'agent bloque jusqu'à ce qu'une réponse soit reçue et renvoyée sous la forme d'un tableau de parties de message
response = my_req_agent . publish "single part message"
response = my_pub_agent . publish [ "part 1" , "part 2" ]
Comme l'agent ZMQ_SUB, ZMQ_REP fournit un cache de messages
all_messages_received = my_rep_agent . messages_received
# returns and removes the last message received from the cache
last_message_received = my_rep_agent . pop
Lors de la réception des demandes, l'agent répondra avec le résultat de la reply
Proc. La valeur de retour de cette procédure peut prendre la forme d'un message en plusieurs parties.
Il existe un certain soutien pour le concombre. Voir les fonctionnalités par exemple d'utilisation.
Une fois qu'un message est capturé, vous souhaiterez peut-être l'analyser et l'inspecter d'une manière ou d'une autre. La technique de sérialisation des messages est spécifique au système testé. Certaines méthodes de sérialisation courantes incluent JSON et les tampons de protocole. json_spec et protobuf_spec sont deux exemples de bibliothèques de tests qui peuvent être facilement associées à agent_zmq pour des tests complets.
Consultez les spécifications et les fonctionnalités pour voir toutes les façons dont vous pouvez utiliser agent_zmq.
gem install agent_zmq
ou ajoutez ce qui suit à Gemfile :
gem 'agent_zmq'
et exécutez bundle install
à partir de votre shell.
Veuillez consulter les directives de contribution.
Contributeurs :
agent_zmq est maintenu et financé par Connamara Systems, llc.
Les noms et logos de Connamara Systems sont des marques commerciales de Connamara Systems, llc.
agent_zmq est protégé par le droit d'auteur © 2016 Connamara Systems, llc.
Ce logiciel est disponible sous licence GPL et commerciale. Veuillez consulter le fichier LICENSE pour connaître les termes spécifiés par la licence GPL. La licence commerciale offre des conditions de licence plus flexibles par rapport à la GPL et comprend des services de support. Contactez-nous pour plus d'informations sur la licence commerciale Connamara, ce qu'elle permet et comment vous pouvez commencer à développer avec elle.