protobuf 2.8.0.beta8-java → 2.8.0.beta9-java
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 +4 -2
- data/lib/protobuf/lifecycle.rb +34 -0
- data/lib/protobuf/rpc/servers/zmq/server.rb +3 -1
- data/lib/protobuf/rpc/servers/zmq_runner.rb +3 -2
- data/lib/protobuf/version.rb +1 -1
- data/spec/lib/protobuf/cli_spec.rb +17 -3
- data/spec/lib/protobuf/lifecycle_spec.rb +70 -0
- metadata +4 -2
data/lib/protobuf/cli.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'protobuf/version'
|
3
|
+
require 'protobuf/lifecycle'
|
3
4
|
require 'protobuf/logger'
|
4
5
|
require 'protobuf/rpc/servers/evented_runner'
|
5
6
|
require 'protobuf/rpc/servers/socket_runner'
|
@@ -87,7 +88,7 @@ module Protobuf
|
|
87
88
|
def configure_logger
|
88
89
|
debug_say('Configuring logger')
|
89
90
|
::Protobuf::Logger.configure({ :file => options.log || STDOUT,
|
90
|
-
|
91
|
+
:level => options.debug? ? ::Logger::DEBUG : options.level })
|
91
92
|
|
92
93
|
# Debug output the server options to the log file.
|
93
94
|
::Protobuf::Logger.debug { 'Debugging options:' }
|
@@ -242,9 +243,10 @@ module Protobuf
|
|
242
243
|
::Protobuf::Logger.info {
|
243
244
|
"pid #{::Process.pid} -- #{@runner_mode} RPC Server listening at #{options.host}:#{options.port}"
|
244
245
|
}
|
246
|
+
|
247
|
+
::Protobuf::Lifecycle.trigger( "after_server_bind" )
|
245
248
|
end
|
246
249
|
end
|
247
250
|
end
|
248
251
|
end
|
249
252
|
end
|
250
|
-
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Protobuf
|
2
|
+
class Lifecycle
|
3
|
+
|
4
|
+
def self.register( event_name, &blk )
|
5
|
+
raise "Lifecycle register must have a block" unless block_given?
|
6
|
+
event_name = normalized_event_name( event_name )
|
7
|
+
|
8
|
+
lifecycle_events[ event_name ] ||= []
|
9
|
+
lifecycle_events[ event_name ] << blk
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.trigger( event_name )
|
13
|
+
event_name = normalized_event_name( event_name )
|
14
|
+
|
15
|
+
if lifecycle_events.has_key?( event_name )
|
16
|
+
lifecycle_events[ event_name ].each do |block|
|
17
|
+
block.call
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.normalized_event_name( event_name )
|
23
|
+
return "#{event_name}".downcase
|
24
|
+
end
|
25
|
+
|
26
|
+
class << self
|
27
|
+
attr_accessor :lifecycle_events
|
28
|
+
|
29
|
+
alias_method :on, :register
|
30
|
+
end
|
31
|
+
|
32
|
+
@lifecycle_events ||= {}
|
33
|
+
end
|
34
|
+
end
|
@@ -167,8 +167,10 @@ module Protobuf
|
|
167
167
|
|
168
168
|
start_broker unless brokerless?
|
169
169
|
start_missing_workers
|
170
|
+
|
171
|
+
yield if block_given? # runs on startup
|
170
172
|
wait_for_shutdown_signal
|
171
|
-
broadcast_flatline if broadcast_beacons?
|
173
|
+
broadcast_flatline if broadcast_beacons?
|
172
174
|
Thread.pass until reap_dead_workers.empty?
|
173
175
|
@broker.join unless brokerless?
|
174
176
|
ensure
|
data/lib/protobuf/version.rb
CHANGED
@@ -7,9 +7,23 @@ describe ::Protobuf::CLI do
|
|
7
7
|
File.expand_path('../../../support/test_app_file.rb', __FILE__)
|
8
8
|
end
|
9
9
|
|
10
|
-
let(:sock_runner) {
|
11
|
-
|
12
|
-
|
10
|
+
let(:sock_runner) {
|
11
|
+
runner = double("SocketRunner", :register_signals => nil)
|
12
|
+
runner.stub(:run) { ::Protobuf::Lifecycle.trigger( "after_server_bind" ) }
|
13
|
+
runner
|
14
|
+
}
|
15
|
+
|
16
|
+
let(:zmq_runner) {
|
17
|
+
runner = double "ZmqRunner", register_signals: nil
|
18
|
+
runner.stub(:run) { ::Protobuf::Lifecycle.trigger( "after_server_bind" ) }
|
19
|
+
runner
|
20
|
+
}
|
21
|
+
|
22
|
+
let(:evented_runner) {
|
23
|
+
runner = double "EventedRunner", register_signals: nil
|
24
|
+
runner.stub(:run) { ::Protobuf::Lifecycle.trigger( "after_server_bind" ) }
|
25
|
+
runner
|
26
|
+
}
|
13
27
|
|
14
28
|
before(:each) do
|
15
29
|
::Protobuf::Rpc::SocketRunner.stub(:new) { sock_runner }
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'protobuf/lifecycle'
|
3
|
+
|
4
|
+
describe ::Protobuf::Lifecycle do
|
5
|
+
subject { described_class }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
described_class.lifecycle_events = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "registers a string as the event_name" do
|
12
|
+
expect {
|
13
|
+
subject.register("something") do
|
14
|
+
true
|
15
|
+
end
|
16
|
+
}.to change { subject.lifecycle_events.size }.by(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "registers a symbol as the event_name" do
|
20
|
+
expect {
|
21
|
+
subject.register("something") do
|
22
|
+
true
|
23
|
+
end
|
24
|
+
}.to change { subject.lifecycle_events.size }.by(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "only registers blocks for event callbacks" do
|
28
|
+
expect {
|
29
|
+
subject.register("something")
|
30
|
+
}.to raise_error( /block/ )
|
31
|
+
end
|
32
|
+
|
33
|
+
it "calls the registered block when triggered" do
|
34
|
+
this = nil
|
35
|
+
subject.register("this") do
|
36
|
+
this = "not nil"
|
37
|
+
end
|
38
|
+
|
39
|
+
subject.trigger("this")
|
40
|
+
this.should_not be_nil
|
41
|
+
this.should eq("not nil")
|
42
|
+
end
|
43
|
+
|
44
|
+
it "calls multiple registered blocks when triggered" do
|
45
|
+
this = nil
|
46
|
+
that = nil
|
47
|
+
|
48
|
+
subject.register("this") do
|
49
|
+
this = "not nil"
|
50
|
+
end
|
51
|
+
|
52
|
+
subject.register("this") do
|
53
|
+
that = "not nil"
|
54
|
+
end
|
55
|
+
|
56
|
+
subject.trigger("this")
|
57
|
+
this.should_not be_nil
|
58
|
+
this.should eq("not nil")
|
59
|
+
that.should_not be_nil
|
60
|
+
that.should eq("not nil")
|
61
|
+
end
|
62
|
+
|
63
|
+
context "normalized event names" do
|
64
|
+
specify { subject.normalized_event_name(:derp).should eq("derp") }
|
65
|
+
specify { subject.normalized_event_name(:Derp).should eq("derp") }
|
66
|
+
specify { subject.normalized_event_name("DERP").should eq("derp") }
|
67
|
+
specify { subject.normalized_event_name("derp").should eq("derp") }
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 2.8.0.
|
5
|
+
version: 2.8.0.beta9
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- BJ Neilsen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-07-
|
13
|
+
date: 2013-07-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -391,6 +391,7 @@ files:
|
|
391
391
|
- lib/protobuf/field/uint32_field.rb
|
392
392
|
- lib/protobuf/field/uint64_field.rb
|
393
393
|
- lib/protobuf/field/varint_field.rb
|
394
|
+
- lib/protobuf/lifecycle.rb
|
394
395
|
- lib/protobuf/logger.rb
|
395
396
|
- lib/protobuf/message.rb
|
396
397
|
- lib/protobuf/message/decoder.rb
|
@@ -441,6 +442,7 @@ files:
|
|
441
442
|
- spec/lib/protobuf/enum_spec.rb
|
442
443
|
- spec/lib/protobuf/enum_value_spec.rb
|
443
444
|
- spec/lib/protobuf/field/int32_field_spec.rb
|
445
|
+
- spec/lib/protobuf/lifecycle_spec.rb
|
444
446
|
- spec/lib/protobuf/logger_spec.rb
|
445
447
|
- spec/lib/protobuf/message_spec.rb
|
446
448
|
- spec/lib/protobuf/rpc/client_spec.rb
|