專為測試 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 商業許可證、其功能以及如何開始使用它進行開發的更多資訊。