cocaine-framework-ruby 0.11.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,60 @@
1
+ require 'eventmachine'
2
+
3
+ class StubServer
4
+ module Server
5
+ def callback(&block)
6
+ @callback = block
7
+ end
8
+
9
+ def on=(on)
10
+ @on = on
11
+ end
12
+
13
+ def receive_data(data)
14
+ @callback.call data if @callback
15
+ if @on && @on.has_key?(data)
16
+ @on[data].call self
17
+ end
18
+ send_data @response
19
+ close_connection_after_writing
20
+ end
21
+
22
+ def response=(response)
23
+ @response = response
24
+ end
25
+ end
26
+
27
+ def initialize(options = {})
28
+ options = {:response => options} if options.kind_of?(String)
29
+ options = {:host => '127.0.0.1', :port => 9053}.merge(options)
30
+
31
+ host = options[:host]
32
+ port = options[:port]
33
+ @sig = EventMachine::start_server(host, port, Server) do |server|
34
+ if @on_connect
35
+ @on_connect.call
36
+ end
37
+ @server = server
38
+ server.callback &@callback
39
+ server.on = @on
40
+ server.response = options[:response]
41
+ end
42
+ end
43
+
44
+ def on_connect(&block)
45
+ @on_connect ||= block
46
+ end
47
+
48
+ def on_receive(&block)
49
+ @callback ||= block
50
+ end
51
+
52
+ def on(msg, &block)
53
+ @on ||= {}
54
+ @on[msg] = block
55
+ end
56
+
57
+ def stop
58
+ EventMachine.stop_server @sig
59
+ end
60
+ end
@@ -0,0 +1,37 @@
1
+ require 'rspec'
2
+
3
+ require_relative '../lib/cocaine/server/worker'
4
+
5
+ require 'stub_server'
6
+
7
+ describe Cocaine::Worker do
8
+ it 'should be' do
9
+ Cocaine::Worker.new
10
+ end
11
+ end
12
+
13
+ describe Cocaine::Worker, '#protocol' do
14
+ it 'should connect to the endpoint specified' do
15
+ EM.run do
16
+ stub = StubServer.new host: '/tmp/cocaine.sock', port: nil
17
+ stub.on_connect {
18
+ stub.stop
19
+ EM.stop
20
+ }
21
+ worker = Cocaine::Worker.new endpoint: '/tmp/cocaine.sock'
22
+ worker.run
23
+ end
24
+ end
25
+
26
+ it 'should send handshake + heartbeat after connecting to the socket' do
27
+ EM.run do
28
+ stub = StubServer.new host: '/tmp/cocaine.sock', port: nil
29
+ stub.on ([0, 0, ['uuid']].to_msgpack + [1, 0, []].to_msgpack) {
30
+ stub.stop
31
+ EM.stop
32
+ }
33
+ worker = Cocaine::Worker.new uuid: 'uuid', endpoint: '/tmp/cocaine.sock'
34
+ worker.run
35
+ end
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocaine-framework-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.11.2
5
+ platform: ruby
6
+ authors:
7
+ - Evgeny Safronov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: eventmachine
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: em-synchrony
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ description: |-
56
+ Cocaine Framework is a framework for simplifying development both server-side
57
+ and client-side applications. It's pretty nice, I promise.
58
+ email:
59
+ - division494@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - LICENSE
66
+ - README.md
67
+ - cocaine.gemspec
68
+ - examples/echo/echo.rb
69
+ - examples/echo/manifest.json
70
+ - lib/cocaine.rb
71
+ - lib/cocaine/asio/channel.rb
72
+ - lib/cocaine/asio/channel/combiner.rb
73
+ - lib/cocaine/asio/channel/manager.rb
74
+ - lib/cocaine/asio/connection.rb
75
+ - lib/cocaine/client/dispatcher.rb
76
+ - lib/cocaine/client/error.rb
77
+ - lib/cocaine/client/service.rb
78
+ - lib/cocaine/decoder.rb
79
+ - lib/cocaine/dispatcher.rb
80
+ - lib/cocaine/error.rb
81
+ - lib/cocaine/future.rb
82
+ - lib/cocaine/namespace.rb
83
+ - lib/cocaine/protocol.rb
84
+ - lib/cocaine/server/dispatcher.rb
85
+ - lib/cocaine/server/health.rb
86
+ - lib/cocaine/server/http.rb
87
+ - lib/cocaine/server/request.rb
88
+ - lib/cocaine/server/response.rb
89
+ - lib/cocaine/server/sandbox.rb
90
+ - lib/cocaine/server/worker.rb
91
+ - lib/cocaine/synchrony/channel.rb
92
+ - lib/cocaine/synchrony/service.rb
93
+ - lib/cocaine/testing/mock_server.rb
94
+ - lib/version.rb
95
+ - spec/channel_spec.rb
96
+ - spec/connection_spec.rb
97
+ - spec/health_spec.rb
98
+ - spec/service_spec.rb
99
+ - spec/stub_server.rb
100
+ - spec/worker_spec.rb
101
+ homepage: https://github.com/cocaine/cocaine-framework-ruby
102
+ licenses:
103
+ - Ruby
104
+ - LGPLv3
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.0.14
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Ruby/Cocaine library
126
+ test_files: []