ZeroMQ アプリケーションのテスト用に設計されたエージェント フレームワーク
エージェント タイプは、テスト対象の基礎となる ZMQ ソケット タイプに対応します。
プロジェクト内で、次のように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
メソッドは、1 つ以上の部分からなる 1 つのメッセージを受け取ります
my_pub_agent . publish "single part message"
my_pub_agent . publish [ "part 1" , "part 2" ]
publish
メソッドは、1 つまたは複数の部分からなる単一のメッセージを受け取ります。エージェントは、応答が受信され、メッセージ部分の配列として返されるまでブロックします。
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
Proc の出力で応答します。このプロシージャの戻り値は、複数の部分からなるメッセージの形式である場合があります。
キュウリにはある程度のサポートがあります。使用例については機能を参照してください。
メッセージがキャプチャされたら、何らかの方法でそれを解析して検査することができます。メッセージのシリアル化手法は、テスト対象のシステムに固有です。一般的なシリアル化方法には、JSON やプロトコル バッファーなどがあります。 json_spec と protobuf_spec は、完全なテストを行うために、agent_zmq と簡単に組み合わせることができるテスト ライブラリの 2 つの例です。
仕様と機能をチェックして、agent_zmq を使用できるすべての方法を確認してください。
gem install agent_zmq
または、Gemfile に以下を追加します。
gem 'agent_zmq'
そしてシェルからbundle install
実行します。
投稿ガイドラインをご覧ください。
寄稿者:
Agent_zmq は、Connamara Systems, llc によって維持され、資金提供されています。
Connamara Systems の名前とロゴは Connamara Systems, llc の商標です。
Agent_zmq の著作権は、2016 Connamara Systems, llc にあります。
このソフトウェアは、GPL および商用ライセンスに基づいて利用できます。 GPL ライセンスで指定されている条件については、LICENSE ファイルを参照してください。商用ライセンスは、GPL と比較してより柔軟なライセンス条件を提供し、サポート サービスが含まれています。 Connamara 商用ライセンス、それによって何が可能になるか、およびそれを使用して開発を開始する方法の詳細については、お問い合わせください。