protobuf 3.7.2.pre1 → 3.7.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.
- checksums.yaml +4 -4
- data/lib/protobuf.rb +0 -11
- data/lib/protobuf/rpc/connectors/base.rb +1 -0
- data/lib/protobuf/rpc/env.rb +1 -0
- data/lib/protobuf/rpc/error.rb +1 -1
- data/lib/protobuf/rpc/middleware/response_encoder.rb +2 -2
- data/lib/protobuf/rpc/server.rb +2 -2
- data/lib/protobuf/rpc/stat.rb +8 -6
- data/lib/protobuf/version.rb +1 -1
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +25 -0
- data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +17 -4
- data/spec/lib/protobuf/rpc/stat_spec.rb +14 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79198f130aec8d18aae9ef3a3170e16bd67f4ff3
|
4
|
+
data.tar.gz: 3c13e8622eea8728f59a9279b37140438ae65d71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7931e2b2a6943bd7f0c1e9f2ad5de360e8f127b37a413074a74ae571e70a0ac0331c6a9292918b6ee5836bee3c686a5cc751813a2c851b2824dc244012577d2f
|
7
|
+
data.tar.gz: 23a58d4a0b01ea80ad10c4c6857834606341f0f4d8d6df3b3ca3f34a920ba393fe55b5b33feb1e3d05ac53bfb1ef742d254ee79e00613bbee3df2daab4afe824
|
data/lib/protobuf.rb
CHANGED
@@ -37,13 +37,6 @@ module Protobuf
|
|
37
37
|
#
|
38
38
|
# The name or address of the host to use during client RPC calls.
|
39
39
|
attr_writer :client_host
|
40
|
-
|
41
|
-
# Server Host
|
42
|
-
#
|
43
|
-
# Default: first ipv4 address of the system
|
44
|
-
#
|
45
|
-
# The name or address of the host to use during client RPC calls.
|
46
|
-
attr_writer :server_host
|
47
40
|
end
|
48
41
|
|
49
42
|
def self.client_host
|
@@ -88,10 +81,6 @@ module Protobuf
|
|
88
81
|
def self.ignore_unknown_fields=(value)
|
89
82
|
@ignore_unknown_fields = !!value
|
90
83
|
end
|
91
|
-
|
92
|
-
def self.server_host
|
93
|
-
@server_host ||= Socket.gethostname
|
94
|
-
end
|
95
84
|
end
|
96
85
|
|
97
86
|
unless ENV.key?('PB_NO_NETWORKING')
|
@@ -104,6 +104,7 @@ module Protobuf
|
|
104
104
|
# Parse out the raw response
|
105
105
|
@stats.response_size = @response_data.size unless @response_data.nil?
|
106
106
|
response_wrapper = ::Protobuf::Socketrpc::Response.decode(@response_data)
|
107
|
+
@stats.server = response_wrapper.server if response_wrapper.field?(:server)
|
107
108
|
|
108
109
|
# Determine success or failure based on parsed data
|
109
110
|
if response_wrapper.field?(:error_reason)
|
data/lib/protobuf/rpc/env.rb
CHANGED
data/lib/protobuf/rpc/error.rb
CHANGED
@@ -18,7 +18,7 @@ module Protobuf
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def to_response
|
21
|
-
::Protobuf::Socketrpc::Response.new(:error => message, :error_reason => error_type
|
21
|
+
::Protobuf::Socketrpc::Response.new(:error => message, :error_reason => error_type)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -72,9 +72,9 @@ module Protobuf
|
|
72
72
|
#
|
73
73
|
def wrapped_response
|
74
74
|
if response.is_a?(::Protobuf::Rpc::PbError)
|
75
|
-
::Protobuf::Socketrpc::Response.new(:error => response.message, :error_reason => response.error_type, :server =>
|
75
|
+
::Protobuf::Socketrpc::Response.new(:error => response.message, :error_reason => response.error_type, :server => env.server)
|
76
76
|
else
|
77
|
-
::Protobuf::Socketrpc::Response.new(:response_proto => response.encode, :server =>
|
77
|
+
::Protobuf::Socketrpc::Response.new(:response_proto => response.encode, :server => env.server)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
data/lib/protobuf/rpc/server.rb
CHANGED
@@ -20,10 +20,10 @@ module Protobuf
|
|
20
20
|
|
21
21
|
# Invoke the service method dictated by the proto wrapper request object
|
22
22
|
#
|
23
|
-
def handle_request(request_data)
|
23
|
+
def handle_request(request_data, env_data = {})
|
24
24
|
# Create an env object that holds different parts of the environment and
|
25
25
|
# is available to all of the middlewares
|
26
|
-
env = Env.new('encoded_request' => request_data, 'log_signature' => log_signature)
|
26
|
+
env = Env.new(env_data.merge('encoded_request' => request_data, 'log_signature' => log_signature))
|
27
27
|
|
28
28
|
# Invoke the middleware stack, the last of which is the service dispatcher
|
29
29
|
env = Rpc.middleware.call(env)
|
data/lib/protobuf/rpc/stat.rb
CHANGED
@@ -6,7 +6,8 @@ module Protobuf
|
|
6
6
|
module Rpc
|
7
7
|
class Stat
|
8
8
|
attr_accessor :mode, :start_time, :end_time, :request_size, :dispatcher
|
9
|
-
attr_accessor :response_size, :client, :
|
9
|
+
attr_accessor :response_size, :client, :service, :method_name
|
10
|
+
attr_reader :server
|
10
11
|
|
11
12
|
MODES = [:SERVER, :CLIENT].freeze
|
12
13
|
|
@@ -32,11 +33,12 @@ module Protobuf
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def server=(peer)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
case peer
|
37
|
+
when Array
|
38
|
+
@server = "#{peer[1]}:#{peer[0]}"
|
39
|
+
when String
|
40
|
+
@server = peer
|
41
|
+
end
|
40
42
|
end
|
41
43
|
|
42
44
|
def service
|
data/lib/protobuf/version.rb
CHANGED
@@ -20,6 +20,31 @@ RSpec.describe Protobuf::Rpc::Connectors::Base do
|
|
20
20
|
specify { expect(subject.respond_to?(:verify_callbacks)).to be true }
|
21
21
|
end
|
22
22
|
|
23
|
+
describe "#parse_response" do
|
24
|
+
let(:options) { { :response_type => Test::Resource, :port => 55589, :host => '127.3.4.5' } }
|
25
|
+
it "updates stats#server from the response" do
|
26
|
+
allow(subject).to receive(:close_connection)
|
27
|
+
subject.instance_variable_set(:@response_data, ::Protobuf::Socketrpc::Response.new(:server => "serverless").encode)
|
28
|
+
subject.initialize_stats
|
29
|
+
subject.parse_response
|
30
|
+
expect(subject.stats.server).to eq("serverless")
|
31
|
+
end
|
32
|
+
it "does not override stats#server when response.server is missing" do
|
33
|
+
allow(subject).to receive(:close_connection)
|
34
|
+
subject.instance_variable_set(:@response_data, ::Protobuf::Socketrpc::Response.new.encode)
|
35
|
+
subject.initialize_stats
|
36
|
+
subject.parse_response
|
37
|
+
expect(subject.stats.server).to eq("127.3.4.5:55589")
|
38
|
+
end
|
39
|
+
it "does not override stats#server when response.server is nil" do
|
40
|
+
allow(subject).to receive(:close_connection)
|
41
|
+
subject.instance_variable_set(:@response_data, ::Protobuf::Socketrpc::Response.new(:server => nil).encode)
|
42
|
+
subject.initialize_stats
|
43
|
+
subject.parse_response
|
44
|
+
expect(subject.stats.server).to eq("127.3.4.5:55589")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
23
48
|
describe "#any_callbacks?" do
|
24
49
|
[:@complete_cb, :@success_cb, :@failure_cb].each do |cb|
|
25
50
|
it "returns true if #{cb} is provided" do
|
@@ -10,13 +10,10 @@ RSpec.describe Protobuf::Rpc::Middleware::ResponseEncoder do
|
|
10
10
|
end
|
11
11
|
let(:encoded_response) { response_wrapper.encode }
|
12
12
|
let(:response) { Test::Resource.new(:name => 'required') }
|
13
|
-
let(:response_wrapper) { ::Protobuf::Socketrpc::Response.new(:response_proto => response
|
14
|
-
let(:server_host) { 'beepboopbop' }
|
13
|
+
let(:response_wrapper) { ::Protobuf::Socketrpc::Response.new(:response_proto => response) }
|
15
14
|
|
16
15
|
subject { described_class.new(app) }
|
17
16
|
|
18
|
-
before { ::Protobuf.server_host = server_host }
|
19
|
-
|
20
17
|
describe "#call" do
|
21
18
|
it "encodes the response" do
|
22
19
|
stack_env = subject.call(env)
|
@@ -74,5 +71,21 @@ RSpec.describe Protobuf::Rpc::Middleware::ResponseEncoder do
|
|
74
71
|
expect { subject.call(env) }.to raise_exception(Protobuf::Rpc::PbError)
|
75
72
|
end
|
76
73
|
end
|
74
|
+
|
75
|
+
context "when server exists in the env" do
|
76
|
+
let(:env) do
|
77
|
+
Protobuf::Rpc::Env.new(
|
78
|
+
'response_type' => Test::Resource,
|
79
|
+
'log_signature' => 'log_signature',
|
80
|
+
'server' => 'itsaserver',
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "adds the servers to the response" do
|
85
|
+
expected_response = ::Protobuf::Socketrpc::Response.new(:response_proto => response, :server => 'itsaserver').encode
|
86
|
+
subject.call(env)
|
87
|
+
expect(env.encoded_response).to eq(expected_response)
|
88
|
+
end
|
89
|
+
end
|
77
90
|
end
|
78
91
|
end
|
@@ -8,6 +8,20 @@ RSpec.describe ::Protobuf::Rpc::Stat do
|
|
8
8
|
BarService = ::Struct.new(:method_name) unless defined?(BarService)
|
9
9
|
end
|
10
10
|
|
11
|
+
describe '#server=' do
|
12
|
+
it 'understands Array' do
|
13
|
+
stat = ::Protobuf::Rpc::Stat.new
|
14
|
+
stat.server = [3333, "127.0.0.1"]
|
15
|
+
expect(stat.server).to eq("127.0.0.1:3333")
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'understands String' do
|
19
|
+
stat = ::Protobuf::Rpc::Stat.new
|
20
|
+
stat.server = "thatserverthough"
|
21
|
+
expect(stat.server).to eq("thatserverthough")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
11
25
|
describe 'server mode' do
|
12
26
|
it 'describes a server response to a client' do
|
13
27
|
::Timecop.freeze(10.minutes.ago) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.7.2
|
4
|
+
version: 3.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BJ Neilsen
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-05-
|
14
|
+
date: 2017-05-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -458,12 +458,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
458
458
|
version: '0'
|
459
459
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
460
460
|
requirements:
|
461
|
-
- - "
|
461
|
+
- - ">="
|
462
462
|
- !ruby/object:Gem::Version
|
463
|
-
version:
|
463
|
+
version: '0'
|
464
464
|
requirements: []
|
465
465
|
rubyforge_project:
|
466
|
-
rubygems_version: 2.
|
466
|
+
rubygems_version: 2.6.11
|
467
467
|
signing_key:
|
468
468
|
specification_version: 4
|
469
469
|
summary: Google Protocol Buffers serialization and RPC implementation for Ruby.
|