protobuf 3.2.1 → 3.3.0
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/lib/protobuf/cli.rb +17 -13
- data/lib/protobuf/field/base_field.rb +3 -1
- data/lib/protobuf/field/bytes_field.rb +2 -2
- data/lib/protobuf/lifecycle.rb +1 -1
- data/lib/protobuf/logging.rb +49 -0
- data/lib/protobuf/rpc/client.rb +10 -10
- data/lib/protobuf/rpc/connectors/base.rb +2 -2
- data/lib/protobuf/rpc/connectors/common.rb +12 -12
- data/lib/protobuf/rpc/connectors/socket.rb +6 -6
- data/lib/protobuf/rpc/connectors/zmq.rb +11 -9
- data/lib/protobuf/rpc/middleware/exception_handler.rb +1 -1
- data/lib/protobuf/rpc/middleware/logger.rb +1 -1
- data/lib/protobuf/rpc/middleware/request_decoder.rb +3 -3
- data/lib/protobuf/rpc/middleware/response_encoder.rb +3 -3
- data/lib/protobuf/rpc/server.rb +1 -1
- data/lib/protobuf/rpc/servers/socket/server.rb +7 -7
- data/lib/protobuf/rpc/servers/socket/worker.rb +2 -2
- data/lib/protobuf/rpc/servers/zmq/broker.rb +9 -5
- data/lib/protobuf/rpc/servers/zmq/server.rb +3 -3
- data/lib/protobuf/rpc/servers/zmq/util.rb +1 -1
- data/lib/protobuf/rpc/servers/zmq_runner.rb +4 -4
- data/lib/protobuf/rpc/service.rb +2 -2
- data/lib/protobuf/rpc/service_directory.rb +8 -8
- data/lib/protobuf/rpc/service_dispatcher.rb +2 -2
- data/lib/protobuf/rpc/stat.rb +1 -1
- data/lib/protobuf/version.rb +1 -1
- data/spec/benchmark/tasks.rb +2 -2
- data/spec/lib/protobuf/cli_spec.rb +9 -3
- data/spec/spec_helper.rb +6 -5
- data/spec/support/server.rb +3 -3
- metadata +64 -106
- checksums.yaml +0 -7
- data/lib/protobuf/logger.rb +0 -86
- data/spec/lib/protobuf/logger_spec.rb +0 -136
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 6806ad95dd3051a54c6bcae3940287187fd50239
|
4
|
-
data.tar.gz: 326e902f6a3c9c64cc5a40b60562a04536d4e37d
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 22f3ac751be365b4d3a2efc6e14d2e9706049557558dae209b3c0abd0d9487b4f80c9abce743c6110721a0f1940f94c6635b7869559b8923a275e8ae2f05edaf
|
7
|
-
data.tar.gz: e2b52a93261a2577ab260afefb1ab1eea6263a9a2ad8caac31a3058253c5bf55b042403b70901c8202c276302d6270f04bf1d2d72a212c2512f4728da82588e8
|
data/lib/protobuf/logger.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'logger'
|
2
|
-
|
3
|
-
module Protobuf
|
4
|
-
class Logger < ::Logger
|
5
|
-
|
6
|
-
class << self
|
7
|
-
attr_accessor :file, :level
|
8
|
-
|
9
|
-
# Stub out the log methods for Protobuf::Logger as singleton methods
|
10
|
-
[:debug, :info, :warn, :error, :fatal, :any, :add, :log].each do |m|
|
11
|
-
define_method(m) do |*params, &block|
|
12
|
-
instance && instance.__send__(m, *params, &block)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# One-line file/level configuration
|
18
|
-
def self.configure(options)
|
19
|
-
self.file = options.fetch(:file, false)
|
20
|
-
self.level = options.fetch(:level, false)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Use to reset the instance
|
24
|
-
def self.reset_device!
|
25
|
-
self.file = self.level = @__instance = nil
|
26
|
-
end
|
27
|
-
|
28
|
-
# Singleton instance
|
29
|
-
def self.instance
|
30
|
-
@__instance ||= begin
|
31
|
-
log = nil
|
32
|
-
|
33
|
-
if @file && @level
|
34
|
-
log = new(self.file)
|
35
|
-
log.level = self.level
|
36
|
-
end
|
37
|
-
|
38
|
-
log
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
#
|
43
|
-
# LogMethods module for log method including, e.g.:
|
44
|
-
#
|
45
|
-
# class MyClass
|
46
|
-
# include Protobuf::Logger::LogMethods
|
47
|
-
# ...
|
48
|
-
# end
|
49
|
-
#
|
50
|
-
# Produce a module to allow "include" in other classes to avoid
|
51
|
-
# cluttering the namespace of the including class with the other methods defined above
|
52
|
-
#
|
53
|
-
module LogMethods
|
54
|
-
[:debug, :info, :warn, :error, :fatal, :any, :add, :log].each do |m|
|
55
|
-
define_method("log_#{m}") do |*params, &block|
|
56
|
-
params.map! { |message| sign_message(message) }
|
57
|
-
::Protobuf::Logger.__send__(m, *params, &block)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# When included, also extend the LogMethods module for class access.
|
62
|
-
def self.included(base)
|
63
|
-
base.extend(LogMethods)
|
64
|
-
end
|
65
|
-
|
66
|
-
# We often want to log an exception, so let's make that a core
|
67
|
-
# concern of the logger.
|
68
|
-
#
|
69
|
-
def log_exception(ex)
|
70
|
-
log_error { ex.message }
|
71
|
-
log_error { ex.backtrace[0..5].join("\n") }
|
72
|
-
log_debug { ex.backtrace.join("\n") }
|
73
|
-
end
|
74
|
-
|
75
|
-
def log_signature
|
76
|
-
@_log_signature ||= "[#{self.class == Class ? self.name : self.class.name}]"
|
77
|
-
end
|
78
|
-
|
79
|
-
def sign_message(message)
|
80
|
-
"#{log_signature} #{message}"
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
end
|
@@ -1,136 +0,0 @@
|
|
1
|
-
require 'protobuf/logger'
|
2
|
-
require 'stringio'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
describe Protobuf::Logger do
|
6
|
-
|
7
|
-
subject { Protobuf::Logger }
|
8
|
-
|
9
|
-
before(:each) do
|
10
|
-
Protobuf::Logger.reset_device!
|
11
|
-
Protobuf::Logger.file = '/dev/null'
|
12
|
-
Protobuf::Logger.level = ::Logger::INFO
|
13
|
-
end
|
14
|
-
|
15
|
-
after(:all) do
|
16
|
-
::FileUtils.rm_f('myfile.log')
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '.instance' do
|
20
|
-
|
21
|
-
it 'doesn\'t create a logger if the file was not set' do
|
22
|
-
subject.file = nil
|
23
|
-
expect(subject.instance).to be_nil
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'doesn\'t create a logger if the level was not set' do
|
27
|
-
subject.level = nil
|
28
|
-
expect(subject.instance).to be_nil
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'gets a new instance of the logger when file and level are set' do
|
32
|
-
expect(subject.file).to_not be_nil
|
33
|
-
expect(subject.level).to_not be_nil
|
34
|
-
expect(subject.instance).to_not be_nil
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'keeps the same object from multiple calls to instance' do
|
38
|
-
expect(subject.instance).to equal(subject.instance)
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
describe '.configure' do
|
44
|
-
before(:each) { subject.reset_device! }
|
45
|
-
it 'sets the file and level in one call' do
|
46
|
-
expect(subject.file).to_not be
|
47
|
-
expect(subject.level).to_not be
|
48
|
-
expect(subject.instance).to_not be
|
49
|
-
subject.configure :file => 'myfile.log', :level => ::Logger::WARN
|
50
|
-
expect(subject.file).to eq('myfile.log')
|
51
|
-
expect(subject.level).to eq(::Logger::WARN)
|
52
|
-
expect(subject.instance.level).to eq(::Logger::WARN)
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
describe '.reset_device!' do
|
58
|
-
|
59
|
-
it 'resets the logger instance, file, and level' do
|
60
|
-
expect(subject.instance).to be
|
61
|
-
expect(subject.file).to be
|
62
|
-
expect(subject.level).to be
|
63
|
-
subject.reset_device!
|
64
|
-
expect(subject.instance).to_not be
|
65
|
-
expect(subject.file).to_not be
|
66
|
-
expect(subject.level).to_not be
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
context 'when logging' do
|
72
|
-
|
73
|
-
it 'doesn\'t raise errors when log instance is nil' do
|
74
|
-
subject.reset_device!
|
75
|
-
expect(subject.instance).to be_nil
|
76
|
-
expect {
|
77
|
-
subject.debug 'No errors here'
|
78
|
-
subject.info 'No errors here'
|
79
|
-
subject.warn 'No errors here'
|
80
|
-
subject.error 'No errors here'
|
81
|
-
subject.fatal 'No errors here'
|
82
|
-
subject.add 'No errors here'
|
83
|
-
subject.log 'No errors here'
|
84
|
-
}.to_not raise_error
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'logs correctly when instance is valid' do
|
88
|
-
expect(subject.instance).to_not be_nil
|
89
|
-
expect(subject.instance).to receive(:info).with('Should log great')
|
90
|
-
subject.info 'Should log great'
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
describe Protobuf::Logger::LogMethods do
|
96
|
-
|
97
|
-
context 'when included in another class' do
|
98
|
-
|
99
|
-
before(:all) do
|
100
|
-
class MyTestClass
|
101
|
-
include Protobuf::Logger::LogMethods
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
subject { MyTestClass.new }
|
106
|
-
|
107
|
-
it { is_expected.to respond_to(:log_debug) }
|
108
|
-
it { is_expected.to respond_to(:log_info) }
|
109
|
-
it { is_expected.to respond_to(:log_warn) }
|
110
|
-
it { is_expected.to respond_to(:log_error) }
|
111
|
-
it { is_expected.to respond_to(:log_fatal) }
|
112
|
-
it { is_expected.to respond_to(:log_add) }
|
113
|
-
it { is_expected.to respond_to(:log_log) }
|
114
|
-
|
115
|
-
context '#log_exception' do
|
116
|
-
it 'logs the exception message as an error and backtrace as debug' do
|
117
|
-
expect(subject).to receive(:log_error).twice
|
118
|
-
expect(subject).to receive(:log_debug)
|
119
|
-
subject.log_exception(RuntimeError.new('this is an exception'))
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
specify { expect(subject.log_signature).to eq "[MyTestClass]" }
|
124
|
-
describe '#sign_message' do
|
125
|
-
specify { expect(subject.sign_message("this is a test")).to eq "[MyTestClass] this is a test" }
|
126
|
-
specify { expect(subject.class.sign_message("this is a test")).to eq "[MyTestClass] this is a test" }
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'passes all embedded log calls to Logger instance' do
|
130
|
-
expect(Protobuf::Logger.instance).to receive(:debug).with('[MyTestClass] log this')
|
131
|
-
subject.log_debug('log this')
|
132
|
-
end
|
133
|
-
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|