Estrutura de agente projetada para testar aplicativos ZeroMQ
Os tipos de agente correspondem ao tipo de soquete ZMQ subjacente em teste
Dentro do seu projeto, declare seus agentes dentro de config/zmq_agents.rb
assim:
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 }
Talvez você queira redefinir os estados do agente entre os testes sem parar e iniciar. Isso pode ser feito com AgentZMQ.reset
Pegue o agente pelo nome fornecido no arquivo de configuração
my_agent = AgentZMQ . agents_hash [ :my_sub_agent ]
Este agente fornece um cache de mensagens
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
Na reset
, o cache do subagente é limpo
O método publish
recebe uma única mensagem de uma ou mais partes
my_pub_agent . publish "single part message"
my_pub_agent . publish [ "part 1" , "part 2" ]
O método publish
recebe uma única mensagem de uma ou mais partes. O agente bloqueia até que uma resposta seja recebida e retornada como uma matriz de partes da mensagem
response = my_req_agent . publish "single part message"
response = my_pub_agent . publish [ "part 1" , "part 2" ]
Assim como o agente ZMQ_SUB, ZMQ_REP fornece um cache de mensagens
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
Ao receber solicitações, o agente responderá com a saída do Proc reply
. O valor de retorno deste proc pode estar na forma de uma mensagem com várias partes.
Existe algum suporte para o pepino. Veja recursos por exemplo de uso.
Depois que uma mensagem é capturada, você pode querer analisá-la e inspecioná-la de alguma forma. A técnica de serialização de mensagens é específica do sistema que está sendo testado. Alguns métodos de serialização comuns incluem JSON e buffers de protocolo. json_spec e protobuf_spec são dois exemplos de bibliotecas de teste que podem ser facilmente combinadas com agent_zmq para testes completos.
Confira as especificações e recursos para ver todas as maneiras de usar o agent_zmq.
gem install agent_zmq
ou adicione o seguinte ao Gemfile:
gem 'agent_zmq'
e execute bundle install
no seu shell.
Por favor, consulte as diretrizes de contribuição.
Contribuintes:
agent_zmq é mantido e financiado pela Connamara Systems, llc.
Os nomes e logotipos da Connamara Systems são marcas registradas da Connamara Systems, llc.
agent_zmq é protegido por direitos autorais © 2016 Connamara Systems, llc.
Este software está disponível sob a GPL e uma licença comercial. Consulte o arquivo LICENSE para os termos especificados pela licença GPL. A licença comercial oferece termos de licenciamento mais flexíveis em comparação com a GPL e inclui serviços de suporte. Entre em contato conosco para obter mais informações sobre a licença comercial do Connamara, o que ela permite e como você pode começar a desenvolver com ela.