专为测试 ZeroMQ 应用程序而设计的代理框架
代理类型对应于测试中的底层 ZMQ Socket 类型
在您的项目内部,在config/zmq_agents.rb
中声明您的代理,如下所示:
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 }
您可能希望在测试之间重置代理状态,而无需停止和启动。这可以通过AgentZMQ.reset
来完成
通过配置文件中给定的名称获取代理
my_agent = AgentZMQ . agents_hash [ :my_sub_agent ]
该代理提供消息缓存
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
reset
时,子代理缓存被清除
publish
方法采用包含一个或多个部分的单个消息
my_pub_agent . publish "single part message"
my_pub_agent . publish [ "part 1" , "part 2" ]
publish
方法采用包含一个或多个部分的单个消息。代理会阻塞,直到收到响应并作为消息部分数组返回
response = my_req_agent . publish "single part message"
response = my_pub_agent . publish [ "part 1" , "part 2" ]
与ZMQ_SUB代理一样,ZMQ_REP提供消息缓存
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
当收到请求时,代理将回复reply
过程的输出。该过程的返回值可以是多部分消息的形式。
对黄瓜有一些支持。请参阅功能以了解示例用法。
捕获消息后,您可能需要以某种方式解析和检查它。消息序列化技术特定于被测试的系统。一些常见的序列化方法包括 JSON 和 Protocol Buffers。 json_spec 和 protobuf_spec 是测试库的两个示例,可以轻松与 agent_zmq 配对以进行完整测试。
查看规格和功能,了解使用 agent_zmq 的所有方式。
gem install agent_zmq
或者将以下内容添加到 Gemfile 中:
gem 'agent_zmq'
并从 shell 运行bundle install
。
请参阅贡献指南。
贡献者:
agent_zmq 由 Connamara Systems, llc 维护和资助。
Connamara Systems 的名称和徽标是 Connamara Systems, llc 的商标。
agent_zmq 版权所有 © 2016 Connamara Systems, llc。
该软件可根据 GPL 和商业许可证使用。请参阅 LICENSE 文件以了解 GPL 许可证指定的条款。与 GPL 相比,商业许可证提供更灵活的许可条款,并包括支持服务。请联系我们,了解有关 Connamara 商业许可证、其功能以及如何开始使用它进行开发的更多信息。