Class: CocaineRuntimeMock

Inherits:
Object show all
Defined in:
lib/cocaine/testing/mock_server.rb

Defined Under Namespace

Modules: Server

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CocaineRuntimeMock

Returns a new instance of CocaineRuntimeMock.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/cocaine/testing/mock_server.rb', line 73

def initialize(options = {})
  options = {:host => 'localhost', :port => 10053}.merge(options)

  @host = options[:host]
  @port = options[:port]

  @services = {}
  @responses = {}
  @hooks = {}

  @servers = []

  register 'locator', 0, endpoint: [@host, @port], version: 1, api: {}
end

Instance Method Details

#on(name, request, response) ⇒ Object



101
102
103
104
# File 'lib/cocaine/testing/mock_server.rb', line 101

def on(name, request, response)
  @responses[name] ||= {}
  @responses[name][request] = response
end

#register(name, session, options = {}) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/cocaine/testing/mock_server.rb', line 88

def register(name, session, options={})
  raise "service '#{name}' already registered" if @services.has_key? name

  $log.debug "registering '#{name}' service"

  options = {endpoint: ['localhost', 0], version: 1, api: {}}.merge options
  @services[name] = options

  on 'locator',
     [0, session, [name]],
     [[options[:endpoint], options[:version], options[:api]]]
end

#runObject



110
111
112
113
114
115
116
# File 'lib/cocaine/testing/mock_server.rb', line 110

def run
  @services.each do |name, options|
    $log.debug "starting '#{name}' service at #{options[:endpoint]}"
    sig = EM::start_server *options[:endpoint], Server, name, @responses[name], @hooks[name], options
    @servers.push sig
  end
end

#stopObject



118
119
120
121
122
# File 'lib/cocaine/testing/mock_server.rb', line 118

def stop
  @servers.each do |sig|
    EM.stop_server sig
  end
end

#when(name) ⇒ Object



106
107
108
# File 'lib/cocaine/testing/mock_server.rb', line 106

def when(name)
  @hooks[name] ||= Hook.new
end