Module: Tochtli::Test::Controller
Defined Under Namespace
Modules: ControllerClassSupport
Classes: RoutingNotFound
Instance Method Summary
collapse
append_features, included
included
Methods included from Helpers
#assert_published, #expect_published
Instance Method Details
#after_teardown ⇒ Object
37
38
39
40
|
# File 'lib/tochtli/test/controller.rb', line 37
def after_teardown
self.class.controller_class.stop
super
end
|
#before_setup ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/tochtli/test/controller.rb', line 28
def before_setup
super
@cache = Object.const_defined?(:ActiveSupport) ? ActiveSupport::Cache::MemoryStore.new : Tochtli::Test::MemoryCache.new
@logger = Tochtli.logger
self.class.controller_class.setup(@connection, @cache, @logger)
@dispatcher = self.class.controller_class.dispatcher
@message_index = 0
end
|
#publish(message) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/tochtli/test/controller.rb', line 42
def publish(message)
@message_index += 1
delivery_info = TestDeliveryInfo.new(message.routing_key)
properties = TestMessageProperties.new("test.reply", @message_index)
payload = message.to_json
@message, @reply = nil
unless @dispatcher.process_message(delivery_info, properties, payload, {})
if (reply = @connection.publications.first) && reply[:message].is_a?(Tochtli::ErrorMessage)
raise "Process error: #{reply[:message].message}"
else
raise RoutingNotFound, "Message #{message.class.name} not processed by #{self.class.controller_class} - #{message.inspect}."
end
end
reply = @connection.publications.first
if reply && reply[:routing_key] == "test.reply" && reply[:correlation_id] == @message_index
@connection.publications.shift
@reply = reply[:message]
end
end
|