zss 0.0.2 → 0.0.3
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.
- checksums.yaml +5 -13
- data/.travis.yml +5 -5
- data/Gemfile.lock +12 -4
- data/README.md +10 -1
- data/lib/zss/client.rb +12 -10
- data/lib/zss/configuration.rb +4 -1
- data/lib/zss/error.rb +23 -2
- data/lib/zss/errors.json +59 -0
- data/lib/zss/message.rb +4 -0
- data/lib/zss/message/smi.rb +43 -0
- data/lib/zss/router.rb +42 -0
- data/lib/zss/runner.rb +37 -0
- data/lib/zss/service.rb +147 -0
- data/lib/zss/socket.rb +12 -9
- data/lib/zss/version.rb +1 -1
- data/spec/integration/client_spec.rb +3 -2
- data/spec/integration/service_spec.rb +48 -0
- data/spec/integration/socket_spec.rb +3 -2
- data/spec/spec_broker_helper.rb +55 -7
- data/spec/spec_helper.rb +9 -0
- data/spec/unit/client_spec.rb +1 -1
- data/spec/unit/error_spec.rb +25 -12
- data/spec/unit/message_spec.rb +14 -0
- data/spec/unit/router_spec.rb +97 -0
- data/spec/unit/service_spec.rb +314 -0
- data/spec/unit/socket_spec.rb +40 -30
- data/zss.gemspec +2 -0
- metadata +69 -30
data/spec/unit/socket_spec.rb
CHANGED
@@ -4,11 +4,11 @@ require 'ffi-rzmq'
|
|
4
4
|
|
5
5
|
describe ZSS::Socket do
|
6
6
|
|
7
|
-
let(:
|
7
|
+
let(:socket_address) { "ipc://socket_spec" }
|
8
8
|
|
9
9
|
let :config do
|
10
10
|
Hashie::Mash.new(
|
11
|
-
socket_address:
|
11
|
+
socket_address: socket_address,
|
12
12
|
identity: 'socket-identity',
|
13
13
|
timeout: 300
|
14
14
|
)
|
@@ -18,51 +18,43 @@ describe ZSS::Socket do
|
|
18
18
|
|
19
19
|
let(:message) { ZSS::Message.new(address: address, payload: "PING") }
|
20
20
|
|
21
|
+
let(:context) { double('ZMQ::Context').as_null_object }
|
22
|
+
|
23
|
+
let(:socket) { double('ZMQ::Socket').as_null_object }
|
24
|
+
|
21
25
|
before(:each) do
|
22
26
|
allow(SecureRandom).to receive(:uuid) { "uuid" }
|
23
27
|
end
|
24
28
|
|
25
|
-
|
29
|
+
subject { ZSS::Socket.new(config) }
|
26
30
|
|
27
|
-
|
31
|
+
describe("#call") do
|
28
32
|
|
29
33
|
context('open ZMQ Socket') do
|
30
34
|
|
31
|
-
|
32
|
-
context = double('ZMQ::Context').as_null_object
|
35
|
+
before :each do
|
33
36
|
allow(ZMQ::Context).to receive(:create) { context }
|
34
|
-
allow(context).to receive(:socket) {
|
37
|
+
allow(context).to receive(:socket) { socket }
|
38
|
+
allow(socket).to receive(:send_string) { -1 }
|
39
|
+
end
|
40
|
+
|
41
|
+
it('with dealer type') do
|
35
42
|
expect(context).to receive(:socket).with(ZMQ::DEALER)
|
36
43
|
expect { subject.call(message) }.to raise_exception(ZSS::Socket::Error)
|
37
44
|
end
|
38
45
|
|
39
46
|
it('with identity set') do
|
40
|
-
context = double('ZMQ::Context').as_null_object
|
41
|
-
socket = double('ZMQ::Socket').as_null_object
|
42
|
-
allow(ZMQ::Context).to receive(:create) { context }
|
43
|
-
allow(context).to receive(:socket) { socket }
|
44
|
-
allow(socket).to receive(:send_string) { -1 }
|
45
47
|
expect(socket).to receive(:identity=).with("socket-identity#uuid")
|
46
48
|
expect { subject.call(message) }.to raise_exception(ZSS::Socket::Error)
|
47
49
|
end
|
48
50
|
|
49
51
|
it('with linger set to 0') do
|
50
|
-
context = double('ZMQ::Context').as_null_object
|
51
|
-
socket = double('ZMQ::Socket').as_null_object
|
52
|
-
allow(ZMQ::Context).to receive(:create) { context }
|
53
|
-
allow(context).to receive(:socket) { socket }
|
54
|
-
allow(socket).to receive(:send_string) { -1 }
|
55
52
|
expect(socket).to receive(:setsockopt).with(ZMQ::LINGER, 0)
|
56
53
|
expect { subject.call(message) }.to raise_exception(ZSS::Socket::Error)
|
57
54
|
end
|
58
55
|
|
59
|
-
it('
|
60
|
-
|
61
|
-
socket = double('ZMQ::Socket').as_null_object
|
62
|
-
allow(ZMQ::Context).to receive(:create) { context }
|
63
|
-
allow(context).to receive(:socket) { socket }
|
64
|
-
allow(socket).to receive(:send_string) { -1 }
|
65
|
-
expect(socket).to receive(:bind).with(broker_frontend)
|
56
|
+
it('connect to socket address') do
|
57
|
+
expect(socket).to receive(:connect).with(socket_address)
|
66
58
|
expect { subject.call(message) }.to raise_exception(ZSS::Socket::Error)
|
67
59
|
end
|
68
60
|
|
@@ -91,15 +83,12 @@ describe ZSS::Socket do
|
|
91
83
|
end
|
92
84
|
|
93
85
|
it('raises Socket::Error on invalid socket') do
|
94
|
-
context = double('ZMQ::Context').as_null_object
|
95
86
|
allow(ZMQ::Context).to receive(:create) { context }
|
96
87
|
allow(context).to receive(:socket) { nil }
|
97
88
|
expect { subject.call(message) }.to raise_exception(ZSS::Socket::Error)
|
98
89
|
end
|
99
90
|
|
100
91
|
it('raises Socket::Error on invalid send send_string') do
|
101
|
-
context = double('ZMQ::Context').as_null_object
|
102
|
-
socket = double('ZMQ::Socket').as_null_object
|
103
92
|
allow(ZMQ::Context).to receive(:create) { context }
|
104
93
|
allow(context).to receive(:socket) { socket }
|
105
94
|
allow(socket).to receive(:send_string) { -1 }
|
@@ -111,7 +100,6 @@ describe ZSS::Socket do
|
|
111
100
|
context('clean up resources') do
|
112
101
|
|
113
102
|
it('terminates context') do
|
114
|
-
context = double('ZMQ::Context').as_null_object
|
115
103
|
allow(ZMQ::Context).to receive(:create) { context }
|
116
104
|
allow(context).to receive(:socket) { nil }
|
117
105
|
expect(context).to receive(:terminate)
|
@@ -119,8 +107,6 @@ describe ZSS::Socket do
|
|
119
107
|
end
|
120
108
|
|
121
109
|
it('closes socket') do
|
122
|
-
context = double('ZMQ::Context').as_null_object
|
123
|
-
socket = double('ZMQ::Socket').as_null_object
|
124
110
|
allow(ZMQ::Context).to receive(:create) { context }
|
125
111
|
allow(context).to receive(:socket) { socket }
|
126
112
|
allow(socket).to receive(:send_string) { -1 }
|
@@ -130,6 +116,30 @@ describe ZSS::Socket do
|
|
130
116
|
|
131
117
|
end
|
132
118
|
|
119
|
+
describe('on success') do
|
120
|
+
|
121
|
+
before :each do
|
122
|
+
allow(ZMQ::Context).to receive(:create) { context }
|
123
|
+
allow(context).to receive(:socket) { socket }
|
124
|
+
end
|
125
|
+
|
126
|
+
it('returns a result') do
|
127
|
+
frames = []
|
128
|
+
allow(socket).to receive(:send_string) do |frame|
|
129
|
+
frames << frame
|
130
|
+
0 # return success result code
|
131
|
+
end
|
132
|
+
allow(socket).to receive(:recv_strings) do |buffer|
|
133
|
+
frames.each { |f| buffer << f }
|
134
|
+
0 # return success result code
|
135
|
+
end
|
136
|
+
|
137
|
+
result = subject.call(message)
|
138
|
+
expect(result.payload).to eq(message.payload)
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
|
133
143
|
end
|
134
144
|
|
135
145
|
end
|
data/zss.gemspec
CHANGED
metadata
CHANGED
@@ -1,167 +1,195 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Januário
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: codeclimate-test-reporter
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bump
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: msgpack
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: ffi-rzmq
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: activesupport
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: hashie
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: daemons
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: em-zeromq
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
165
193
|
- !ruby/object:Gem::Version
|
166
194
|
version: '0'
|
167
195
|
description: ZeroMQ SOA Suite
|
@@ -171,10 +199,10 @@ executables: []
|
|
171
199
|
extensions: []
|
172
200
|
extra_rdoc_files: []
|
173
201
|
files:
|
174
|
-
- .gitignore
|
175
|
-
- .rspec
|
176
|
-
- .rvmrc.example
|
177
|
-
- .travis.yml
|
202
|
+
- ".gitignore"
|
203
|
+
- ".rspec"
|
204
|
+
- ".rvmrc.example"
|
205
|
+
- ".travis.yml"
|
178
206
|
- Gemfile
|
179
207
|
- Gemfile.lock
|
180
208
|
- LICENSE
|
@@ -185,12 +213,18 @@ files:
|
|
185
213
|
- lib/zss/configuration.rb
|
186
214
|
- lib/zss/environment.rb
|
187
215
|
- lib/zss/error.rb
|
216
|
+
- lib/zss/errors.json
|
188
217
|
- lib/zss/message.rb
|
189
218
|
- lib/zss/message/message_address.rb
|
190
219
|
- lib/zss/message/message_type.rb
|
220
|
+
- lib/zss/message/smi.rb
|
221
|
+
- lib/zss/router.rb
|
222
|
+
- lib/zss/runner.rb
|
223
|
+
- lib/zss/service.rb
|
191
224
|
- lib/zss/socket.rb
|
192
225
|
- lib/zss/version.rb
|
193
226
|
- spec/integration/client_spec.rb
|
227
|
+
- spec/integration/service_spec.rb
|
194
228
|
- spec/integration/socket_spec.rb
|
195
229
|
- spec/spec_broker_helper.rb
|
196
230
|
- spec/spec_helper.rb
|
@@ -199,6 +233,8 @@ files:
|
|
199
233
|
- spec/unit/error_spec.rb
|
200
234
|
- spec/unit/message_address_spec.rb
|
201
235
|
- spec/unit/message_spec.rb
|
236
|
+
- spec/unit/router_spec.rb
|
237
|
+
- spec/unit/service_spec.rb
|
202
238
|
- spec/unit/socket_spec.rb
|
203
239
|
- zss.gemspec
|
204
240
|
homepage: https://github.com/pjanuario/zmq-service-suite-ruby
|
@@ -211,12 +247,12 @@ require_paths:
|
|
211
247
|
- lib
|
212
248
|
required_ruby_version: !ruby/object:Gem::Requirement
|
213
249
|
requirements:
|
214
|
-
- -
|
250
|
+
- - ">="
|
215
251
|
- !ruby/object:Gem::Version
|
216
252
|
version: '0'
|
217
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
254
|
requirements:
|
219
|
-
- -
|
255
|
+
- - ">="
|
220
256
|
- !ruby/object:Gem::Version
|
221
257
|
version: '0'
|
222
258
|
requirements: []
|
@@ -227,6 +263,7 @@ specification_version: 4
|
|
227
263
|
summary: ZeroMQ SOA Suite
|
228
264
|
test_files:
|
229
265
|
- spec/integration/client_spec.rb
|
266
|
+
- spec/integration/service_spec.rb
|
230
267
|
- spec/integration/socket_spec.rb
|
231
268
|
- spec/spec_broker_helper.rb
|
232
269
|
- spec/spec_helper.rb
|
@@ -235,4 +272,6 @@ test_files:
|
|
235
272
|
- spec/unit/error_spec.rb
|
236
273
|
- spec/unit/message_address_spec.rb
|
237
274
|
- spec/unit/message_spec.rb
|
275
|
+
- spec/unit/router_spec.rb
|
276
|
+
- spec/unit/service_spec.rb
|
238
277
|
- spec/unit/socket_spec.rb
|