protobuf 1.0.1 → 1.1.0.beta0
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.
- data/.gitignore +3 -0
- data/.yardopts +5 -0
- data/Gemfile.lock +25 -10
- data/bin/rpc_server +38 -33
- data/lib/protobuf.rb +22 -3
- data/lib/protobuf/common/logger.rb +6 -8
- data/lib/protobuf/compiler/visitors.rb +8 -9
- data/lib/protobuf/descriptor/descriptor_builder.rb +6 -6
- data/lib/protobuf/ext/eventmachine.rb +2 -4
- data/lib/protobuf/message/message.rb +1 -3
- data/lib/protobuf/rpc/buffer.rb +6 -6
- data/lib/protobuf/rpc/client.rb +59 -21
- data/lib/protobuf/rpc/connector.rb +10 -9
- data/lib/protobuf/rpc/connectors/base.rb +23 -8
- data/lib/protobuf/rpc/connectors/common.rb +155 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +23 -192
- data/lib/protobuf/rpc/connectors/eventmachine.rb +36 -44
- data/lib/protobuf/rpc/connectors/socket.rb +58 -1
- data/lib/protobuf/rpc/error.rb +6 -14
- data/lib/protobuf/rpc/server.rb +72 -99
- data/lib/protobuf/rpc/servers/evented_runner.rb +32 -0
- data/lib/protobuf/rpc/servers/evented_server.rb +29 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +17 -0
- data/lib/protobuf/rpc/servers/socket_server.rb +145 -0
- data/lib/protobuf/rpc/service.rb +50 -51
- data/lib/protobuf/rpc/stat.rb +2 -2
- data/lib/protobuf/version.rb +1 -1
- data/protobuf.gemspec +9 -4
- data/spec/helper/all.rb +1 -7
- data/spec/helper/server.rb +45 -5
- data/spec/helper/silent_constants.rb +40 -0
- data/spec/proto/test_service.rb +0 -1
- data/spec/proto/test_service_impl.rb +4 -3
- data/spec/spec_helper.rb +19 -6
- data/spec/unit/enum_spec.rb +4 -4
- data/spec/unit/rpc/client_spec.rb +32 -42
- data/spec/unit/rpc/connector_spec.rb +11 -16
- data/spec/unit/rpc/connectors/base_spec.rb +14 -3
- data/spec/unit/rpc/connectors/common_spec.rb +132 -0
- data/spec/unit/rpc/connectors/{eventmachine/client_spec.rb → eventmachine_client_spec.rb} +0 -0
- data/spec/unit/rpc/connectors/socket_spec.rb +49 -0
- data/spec/unit/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/unit/rpc/servers/socket_server_spec.rb +57 -0
- metadata +86 -16
- data/spec/unit/rpc/server_spec.rb +0 -27
File without changes
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples "a Protobuf Connector" do
|
4
|
+
subject{ described_class.new({}) }
|
5
|
+
|
6
|
+
context "API" do
|
7
|
+
# Check the API
|
8
|
+
specify{ subject.respond_to?(:send_request, true).should be_true }
|
9
|
+
specify{ subject.respond_to?(:post_init, true).should be_true }
|
10
|
+
specify{ subject.respond_to?(:close_connection, true).should be_true }
|
11
|
+
specify{ subject.respond_to?(:error?, true).should be_true }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Protobuf::Rpc::Connectors::Socket do
|
16
|
+
subject{ described_class.new({}) }
|
17
|
+
|
18
|
+
it_behaves_like "a Protobuf Connector"
|
19
|
+
|
20
|
+
specify{ described_class.include?(Protobuf::Rpc::Connectors::Common).should be_true }
|
21
|
+
|
22
|
+
context "#read_response" do
|
23
|
+
let(:data){ "New data" }
|
24
|
+
|
25
|
+
it "fills the buffer with data from the socket" do
|
26
|
+
socket = StringIO.new("#{data.bytesize}-#{data}")
|
27
|
+
subject.instance_variable_set(:@buffer, Protobuf::Rpc::Buffer.new(:read))
|
28
|
+
subject.instance_variable_set(:@socket, socket)
|
29
|
+
subject.should_receive(:parse_response).and_return(true)
|
30
|
+
|
31
|
+
subject.__send__(:read_response)
|
32
|
+
subject.instance_variable_get(:@buffer).flushed?.should be_true
|
33
|
+
subject.instance_variable_get(:@buffer).data.should eq(data)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "#check_async" do
|
38
|
+
it "raises an error when trying to execute asynchronously" do
|
39
|
+
conn = described_class.new(:async => true)
|
40
|
+
expect{ conn.__send__(:check_async) }.to raise_error
|
41
|
+
end
|
42
|
+
|
43
|
+
it "allows execution when synchronous" do
|
44
|
+
conn = described_class.new(:async => false)
|
45
|
+
expect{ conn.__send__(:check_async) }.to_not raise_error
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'spec/proto/test_service_impl'
|
3
|
+
require 'protobuf/rpc/servers/evented_runner'
|
4
|
+
|
5
|
+
describe Protobuf::Rpc::EventedServer do
|
6
|
+
|
7
|
+
it "provides a Runner class" do
|
8
|
+
runner_class = described_class.to_s.gsub(/Server/, "Runner")
|
9
|
+
expect { Protobuf::Util.constantize(runner_class) }.to_not raise_error
|
10
|
+
end
|
11
|
+
|
12
|
+
it "Runner provides a stop method" do
|
13
|
+
runner_class = described_class.to_s.gsub(/Server/, "Runner")
|
14
|
+
runner_class = Protobuf::Util.constantize(runner_class)
|
15
|
+
runner_class.respond_to?(:stop).should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'spec/proto/test_service_impl'
|
3
|
+
require 'protobuf/rpc/servers/socket_runner'
|
4
|
+
|
5
|
+
describe Protobuf::Rpc::SocketServer do
|
6
|
+
before(:all) do
|
7
|
+
server = OpenStruct.new(:server => "127.0.0.1", :port => 9399, :backlog => 100, :threshold => 100)
|
8
|
+
@server_thread = Thread.new(server) { |s| Protobuf::Rpc::SocketRunner.run(s) }
|
9
|
+
Thread.pass until Protobuf::Rpc::SocketServer.running?
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:all) do
|
13
|
+
Protobuf::Rpc::SocketRunner.stop
|
14
|
+
Thread.kill(@server_thread)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "Runner provides a stop method" do
|
18
|
+
runner_class = described_class.to_s.gsub(/Server/, "Runner")
|
19
|
+
runner_class = Protobuf::Util.constantize(runner_class)
|
20
|
+
runner_class.respond_to?(:stop).should be_true
|
21
|
+
end
|
22
|
+
|
23
|
+
it "provides a stop method" do
|
24
|
+
described_class.respond_to?(:stop).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "provides a Runner class" do
|
28
|
+
runner_class = described_class.to_s.gsub(/Server/, "Runner")
|
29
|
+
expect { Protobuf::Util.constantize(runner_class) }.to_not raise_error
|
30
|
+
end
|
31
|
+
|
32
|
+
it "signals the Server is running" do
|
33
|
+
described_class.running?.should be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
context "Eventmachine client" do
|
37
|
+
|
38
|
+
it "calls the service in the client request" do
|
39
|
+
with_constants "Protobuf::ConnectorType" => "Evented" do
|
40
|
+
client = Spec::Proto::TestService.client(:async => false, :port => 9399, :host => "127.0.0.1")
|
41
|
+
|
42
|
+
client.find(:name => "Test Name", :active => true) do |c|
|
43
|
+
c.on_success do |succ|
|
44
|
+
succ.name.should eq("Test Name")
|
45
|
+
succ.status.should eq(Spec::Proto::StatusType::ENABLED)
|
46
|
+
end
|
47
|
+
|
48
|
+
c.on_failure do |err|
|
49
|
+
raise err.inspect
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0.beta0
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- BJ Neilsen
|
@@ -14,7 +14,7 @@ date: 2011-12-07 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: eventmachine
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152761640 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,32 @@ dependencies:
|
|
22
22
|
version: 0.12.10
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152761640
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: eventually
|
28
|
+
requirement: &2152761120 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2152761120
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: json_pure
|
39
|
+
requirement: &2152760580 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.6.4
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2152760580
|
26
48
|
- !ruby/object:Gem::Dependency
|
27
49
|
name: rake
|
28
|
-
requirement: &
|
50
|
+
requirement: &2152759880 !ruby/object:Gem::Requirement
|
29
51
|
none: false
|
30
52
|
requirements:
|
31
53
|
- - ~>
|
@@ -33,18 +55,51 @@ dependencies:
|
|
33
55
|
version: 0.8.7
|
34
56
|
type: :development
|
35
57
|
prerelease: false
|
36
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152759880
|
37
59
|
- !ruby/object:Gem::Dependency
|
38
60
|
name: rspec
|
39
|
-
requirement: &
|
61
|
+
requirement: &2152759400 !ruby/object:Gem::Requirement
|
40
62
|
none: false
|
41
63
|
requirements:
|
42
64
|
- - ~>
|
43
65
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.
|
66
|
+
version: 2.8.0
|
45
67
|
type: :development
|
46
68
|
prerelease: false
|
47
|
-
version_requirements: *
|
69
|
+
version_requirements: *2152759400
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: yard
|
72
|
+
requirement: &2152758820 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.7.4
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *2152758820
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: redcarpet
|
83
|
+
requirement: &2152758240 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.17.2
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *2152758240
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: simplecov
|
94
|
+
requirement: &2152757720 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.5.4
|
100
|
+
type: :development
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *2152757720
|
48
103
|
description: ! 'Ruby implementation for Protocol Buffers. Works with other protobuf
|
49
104
|
rpc implementations (e.g. Java, Python, C++).
|
50
105
|
|
@@ -56,7 +111,7 @@ description: ! 'Ruby implementation for Protocol Buffers. Works with other proto
|
|
56
111
|
went unsuccessful.'
|
57
112
|
email:
|
58
113
|
- bj.neilsen@gmail.com
|
59
|
-
- brandonsdewitt@gmail.com
|
114
|
+
- brandonsdewitt+protobuf@gmail.com
|
60
115
|
executables:
|
61
116
|
- rpc_server
|
62
117
|
- rprotoc
|
@@ -64,6 +119,7 @@ extensions: []
|
|
64
119
|
extra_rdoc_files: []
|
65
120
|
files:
|
66
121
|
- .gitignore
|
122
|
+
- .yardopts
|
67
123
|
- Gemfile
|
68
124
|
- Gemfile.lock
|
69
125
|
- README.md
|
@@ -105,6 +161,7 @@ files:
|
|
105
161
|
- lib/protobuf/rpc/client.rb
|
106
162
|
- lib/protobuf/rpc/connector.rb
|
107
163
|
- lib/protobuf/rpc/connectors/base.rb
|
164
|
+
- lib/protobuf/rpc/connectors/common.rb
|
108
165
|
- lib/protobuf/rpc/connectors/em_client.rb
|
109
166
|
- lib/protobuf/rpc/connectors/eventmachine.rb
|
110
167
|
- lib/protobuf/rpc/connectors/socket.rb
|
@@ -113,6 +170,10 @@ files:
|
|
113
170
|
- lib/protobuf/rpc/error/server_error.rb
|
114
171
|
- lib/protobuf/rpc/rpc.pb.rb
|
115
172
|
- lib/protobuf/rpc/server.rb
|
173
|
+
- lib/protobuf/rpc/servers/evented_runner.rb
|
174
|
+
- lib/protobuf/rpc/servers/evented_server.rb
|
175
|
+
- lib/protobuf/rpc/servers/socket_runner.rb
|
176
|
+
- lib/protobuf/rpc/servers/socket_server.rb
|
116
177
|
- lib/protobuf/rpc/service.rb
|
117
178
|
- lib/protobuf/rpc/stat.rb
|
118
179
|
- lib/protobuf/version.rb
|
@@ -122,6 +183,7 @@ files:
|
|
122
183
|
- spec/functional/embedded_service_spec.rb
|
123
184
|
- spec/helper/all.rb
|
124
185
|
- spec/helper/server.rb
|
186
|
+
- spec/helper/silent_constants.rb
|
125
187
|
- spec/helper/tolerance_matcher.rb
|
126
188
|
- spec/proto/test.pb.rb
|
127
189
|
- spec/proto/test.proto
|
@@ -134,9 +196,12 @@ files:
|
|
134
196
|
- spec/unit/rpc/client_spec.rb
|
135
197
|
- spec/unit/rpc/connector_spec.rb
|
136
198
|
- spec/unit/rpc/connectors/base_spec.rb
|
137
|
-
- spec/unit/rpc/connectors/
|
199
|
+
- spec/unit/rpc/connectors/common_spec.rb
|
200
|
+
- spec/unit/rpc/connectors/eventmachine_client_spec.rb
|
138
201
|
- spec/unit/rpc/connectors/eventmachine_spec.rb
|
139
|
-
- spec/unit/rpc/
|
202
|
+
- spec/unit/rpc/connectors/socket_spec.rb
|
203
|
+
- spec/unit/rpc/servers/evented_server_spec.rb
|
204
|
+
- spec/unit/rpc/servers/socket_server_spec.rb
|
140
205
|
- spec/unit/rpc/service_spec.rb
|
141
206
|
- test/check_unbuild.rb
|
142
207
|
- test/data/data.bin
|
@@ -199,9 +264,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
264
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
265
|
none: false
|
201
266
|
requirements:
|
202
|
-
- - ! '
|
267
|
+
- - ! '>'
|
203
268
|
- !ruby/object:Gem::Version
|
204
|
-
version:
|
269
|
+
version: 1.3.1
|
205
270
|
requirements: []
|
206
271
|
rubyforge_project:
|
207
272
|
rubygems_version: 1.8.10
|
@@ -213,6 +278,7 @@ test_files:
|
|
213
278
|
- spec/functional/embedded_service_spec.rb
|
214
279
|
- spec/helper/all.rb
|
215
280
|
- spec/helper/server.rb
|
281
|
+
- spec/helper/silent_constants.rb
|
216
282
|
- spec/helper/tolerance_matcher.rb
|
217
283
|
- spec/proto/test.pb.rb
|
218
284
|
- spec/proto/test.proto
|
@@ -225,9 +291,12 @@ test_files:
|
|
225
291
|
- spec/unit/rpc/client_spec.rb
|
226
292
|
- spec/unit/rpc/connector_spec.rb
|
227
293
|
- spec/unit/rpc/connectors/base_spec.rb
|
228
|
-
- spec/unit/rpc/connectors/
|
294
|
+
- spec/unit/rpc/connectors/common_spec.rb
|
295
|
+
- spec/unit/rpc/connectors/eventmachine_client_spec.rb
|
229
296
|
- spec/unit/rpc/connectors/eventmachine_spec.rb
|
230
|
-
- spec/unit/rpc/
|
297
|
+
- spec/unit/rpc/connectors/socket_spec.rb
|
298
|
+
- spec/unit/rpc/servers/evented_server_spec.rb
|
299
|
+
- spec/unit/rpc/servers/socket_server_spec.rb
|
231
300
|
- spec/unit/rpc/service_spec.rb
|
232
301
|
- test/check_unbuild.rb
|
233
302
|
- test/data/data.bin
|
@@ -275,3 +344,4 @@ test_files:
|
|
275
344
|
- test/test_serialize.rb
|
276
345
|
- test/test_standard_message.rb
|
277
346
|
- test/test_types.rb
|
347
|
+
has_rdoc:
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'protobuf/rpc/server'
|
3
|
-
require 'spec/proto/test_service_impl'
|
4
|
-
|
5
|
-
describe Protobuf::Rpc::Server do
|
6
|
-
context 'when sending response objects' do
|
7
|
-
it 'should be able to send a hash object as a response' do
|
8
|
-
server = Protobuf::Rpc::Server.new
|
9
|
-
|
10
|
-
# Setup the right mocks
|
11
|
-
server.instance_variable_set(:@klass, Spec::Proto::TestService)
|
12
|
-
response_wrapper = mock('response')
|
13
|
-
response_wrapper.stub(:response_proto=)
|
14
|
-
server.instance_variable_set(:@response, response_wrapper)
|
15
|
-
Spec::Proto::TestService.stub_chain(:rpcs, :[], :[], :response_type).and_return(Spec::Proto::ResourceFindRequest)
|
16
|
-
|
17
|
-
# Setup expectations
|
18
|
-
hash_response = {:name => 'Test Name', :active => false}
|
19
|
-
expected = Spec::Proto::ResourceFindRequest.new(hash_response)
|
20
|
-
Spec::Proto::ResourceFindRequest.should_receive(:new).with(hash_response).and_return(expected)
|
21
|
-
server.should_not_receive(:handle_error)
|
22
|
-
|
23
|
-
# Call the method
|
24
|
-
server.send(:parse_response_from_service, hash_response)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|