Агентская среда, предназначенная для тестирования приложений 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
принимает одно сообщение, состоящее из одной или нескольких частей.
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
Proc. Возвращаемое значение этого процесса может быть в форме сообщения, состоящего из нескольких частей.
Есть некоторая поддержка огурца. См. функции, например использование.
Как только сообщение будет перехвачено, вы можете каким-либо образом захотеть его проанализировать и проверить. Метод сериализации сообщений специфичен для тестируемой системы. Некоторые распространенные методы сериализации включают JSON и протокольные буферы. json_spec и protobuf_spec — два примера библиотек тестирования, которые можно легко объединить с Agent_zmq для полноценного тестирования.
Ознакомьтесь со спецификациями и функциями, чтобы увидеть все способы использования Agent_zmq.
gem install agent_zmq
или добавьте в Gemfile следующее:
gem 'agent_zmq'
и запустите bundle install
из вашей оболочки.
Пожалуйста, ознакомьтесь с правилами внесения взносов.
Участники:
Agent_zmq поддерживается и финансируется Connamara Systems, llc.
Названия и логотипы Connamara Systems являются торговыми марками Connamara Systems, llc.
Agent_zmq защищен авторскими правами © Connamara Systems, llc, 2016.
Это программное обеспечение доступно под лицензией GPL и коммерческой лицензией. Условия, указанные в лицензии GPL, см. в файле ЛИЦЕНЗИИ. Коммерческая лицензия предлагает более гибкие условия лицензирования по сравнению с GPL и включает услуги поддержки. Свяжитесь с нами для получения дополнительной информации о коммерческой лицензии Connamara, о том, что она дает, и о том, как вы можете начать разработку с ее помощью.