cocaine-framework-ruby 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []