arborist 0.1.0 → 0.2.0.pre20170519125456
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 -5
- data/ChangeLog +46 -2
- data/Manifest.txt +4 -4
- data/Rakefile +6 -4
- data/TODO.md +16 -0
- data/lib/arborist.rb +12 -51
- data/lib/arborist/client.rb +23 -46
- data/lib/arborist/command/client.rb +1 -0
- data/lib/arborist/command/watch.rb +4 -5
- data/lib/arborist/event_api.rb +35 -0
- data/lib/arborist/exceptions.rb +2 -2
- data/lib/arborist/manager.rb +432 -212
- data/lib/arborist/mixins.rb +9 -9
- data/lib/arborist/monitor_runner.rb +174 -137
- data/lib/arborist/node.rb +11 -4
- data/lib/arborist/observer/summarize.rb +1 -1
- data/lib/arborist/observer_runner.rb +163 -126
- data/lib/arborist/tree_api.rb +113 -0
- data/spec/arborist/client_spec.rb +63 -64
- data/spec/arborist/event_api_spec.rb +23 -0
- data/spec/arborist/manager_spec.rb +842 -66
- data/spec/arborist/monitor_runner_spec.rb +45 -85
- data/spec/arborist/observer_runner_spec.rb +86 -23
- data/spec/arborist/tree_api_spec.rb +30 -0
- data/spec/arborist_spec.rb +0 -5
- data/spec/spec_helper.rb +0 -13
- metadata +47 -45
- checksums.yaml.gz.sig +0 -3
- data.tar.gz.sig +0 -0
- data/lib/arborist/manager/event_publisher.rb +0 -126
- data/lib/arborist/manager/tree_api.rb +0 -302
- data/spec/arborist/manager/event_publisher_spec.rb +0 -65
- data/spec/arborist/manager/tree_api_spec.rb +0 -791
- metadata.gz.sig +0 -0
@@ -7,15 +7,10 @@ require 'arborist/monitor_runner'
|
|
7
7
|
|
8
8
|
describe Arborist::MonitorRunner do
|
9
9
|
|
10
|
-
let( :zmq_loop ) { instance_double(ZMQ::Loop) }
|
11
10
|
let( :req_socket ) { instance_double(ZMQ::Socket::Req) }
|
12
|
-
let( :pollitem ) { instance_double(ZMQ::Pollitem) }
|
13
11
|
|
14
|
-
let( :
|
15
|
-
|
16
|
-
obj.reactor = zmq_loop
|
17
|
-
obj
|
18
|
-
end
|
12
|
+
let( :reactor ) { instance_double(CZTop::Reactor) }
|
13
|
+
let( :runner ) { described_class.new }
|
19
14
|
|
20
15
|
let( :monitor_class ) { Class.new(Arborist::Monitor) }
|
21
16
|
|
@@ -24,6 +19,26 @@ describe Arborist::MonitorRunner do
|
|
24
19
|
let( :mon3 ) { monitor_class.new("testing monitor3", :testing) }
|
25
20
|
let( :monitors ) {[ mon1, mon2, mon3 ]}
|
26
21
|
|
22
|
+
let( :node_tree ) {{
|
23
|
+
'router' => {
|
24
|
+
'addresses' => ['10.2.1.2', '1.2.3.4']
|
25
|
+
},
|
26
|
+
'server' => {
|
27
|
+
'addresses' => ['10.2.1.118']
|
28
|
+
}
|
29
|
+
}}
|
30
|
+
let( :ping_monitor_data ) {{
|
31
|
+
'router' => {'ping' => { 'rtt' => 22 }},
|
32
|
+
'server' => {'ping' => { 'rtt' => 8 }},
|
33
|
+
}}
|
34
|
+
|
35
|
+
|
36
|
+
before( :each ) do
|
37
|
+
allow( CZTop::Reactor ).to receive( :new ).and_return( reactor )
|
38
|
+
allow( reactor ).to receive( :register )
|
39
|
+
allow( reactor ).to receive( :unregister )
|
40
|
+
end
|
41
|
+
|
27
42
|
|
28
43
|
it "can load monitors from an enumerator that yields Arborist::Monitors" do
|
29
44
|
runner.load_monitors([ mon1, mon2, mon3 ])
|
@@ -33,27 +48,11 @@ describe Arborist::MonitorRunner do
|
|
33
48
|
|
34
49
|
describe "a runner with loaded monitors" do
|
35
50
|
|
36
|
-
before( :each ) do
|
37
|
-
allow( zmq_loop ).to receive( :register ).with( an_instance_of(ZMQ::Pollitem) )
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
51
|
it "registers its monitors to run on an interval and starts the ZMQ loop when run" do
|
42
52
|
runner.monitors.replace([ mon1 ])
|
43
53
|
|
44
|
-
|
45
|
-
expect(
|
46
|
-
expect( i_delay ).to eq( mon1.interval )
|
47
|
-
expect( i_repeat ).to eq( 0 )
|
48
|
-
|
49
|
-
expect( runner.handler ).to receive( :run_monitor ).with( mon1 )
|
50
|
-
|
51
|
-
i_block.call
|
52
|
-
interval_timer
|
53
|
-
end
|
54
|
-
|
55
|
-
expect( zmq_loop ).to receive( :register_timer ).with( interval_timer )
|
56
|
-
expect( zmq_loop ).to receive( :start )
|
54
|
+
expect( reactor ).to receive( :add_periodic_timer ).with( mon1.interval )
|
55
|
+
expect( reactor ).to receive( :start_polling )
|
57
56
|
|
58
57
|
runner.run
|
59
58
|
end
|
@@ -62,87 +61,46 @@ describe Arborist::MonitorRunner do
|
|
62
61
|
it "delays registration of its interval timer if a monitor has a splay" do
|
63
62
|
runner.monitors.replace([ mon2 ])
|
64
63
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
timer = instance_double( ZMQ::Timer )
|
70
|
-
expect( ZMQ::Timer ).to receive( :new ) do |delay, repeat, &block|
|
71
|
-
expect( delay ).to be >= 0
|
72
|
-
expect( delay ).to be <= mon2.splay
|
73
|
-
expect( repeat ).to eq( 1 )
|
74
|
-
|
75
|
-
block.call
|
76
|
-
timer
|
77
|
-
end
|
78
|
-
|
79
|
-
expect( zmq_loop ).to receive( :register_timer ).with( interval_timer )
|
80
|
-
expect( zmq_loop ).to receive( :register_timer ).with( timer )
|
81
|
-
expect( zmq_loop ).to receive( :start )
|
64
|
+
expect( reactor ).to receive( :add_oneshot_timer ).
|
65
|
+
with( a_value_between(0, mon2.splay) ).and_yield
|
66
|
+
expect( reactor ).to receive( :add_periodic_timer ).with( mon2.interval )
|
67
|
+
expect( reactor ).to receive( :start_polling )
|
82
68
|
|
83
69
|
runner.run
|
84
70
|
end
|
85
71
|
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
describe Arborist::MonitorRunner::Handler do
|
90
|
-
|
91
|
-
let( :tree_api_handler ) { Arborist::Manager::TreeAPI.new(:pollable, :manager) }
|
92
|
-
|
93
|
-
let( :handler ) { described_class.new( zmq_loop ) }
|
94
|
-
|
95
|
-
let( :node_tree ) {{
|
96
|
-
'router' => {
|
97
|
-
'addresses' => ['10.2.1.2', '1.2.3.4']
|
98
|
-
},
|
99
|
-
'server' => {
|
100
|
-
'addresses' => ['10.2.1.118']
|
101
|
-
}
|
102
|
-
}}
|
103
|
-
let( :ping_monitor_data ) {{
|
104
|
-
'router' => {'ping' => { 'rtt' => 22 }},
|
105
|
-
'server' => {'ping' => { 'rtt' => 8 }},
|
106
|
-
}}
|
107
|
-
|
108
72
|
|
109
73
|
it "can run a monitor using async ZMQ IO" do
|
110
|
-
expect( zmq_loop ).to receive( :register ).with( handler.pollitem )
|
111
74
|
|
112
75
|
# Queue up the monitor requests and register the socket as wanting to write
|
113
76
|
mon1.exec do |nodes|
|
114
77
|
ping_monitor_data
|
115
78
|
end
|
116
|
-
expect {
|
117
|
-
handler.run_monitor( mon1 )
|
118
|
-
}.to change { handler.registered? }.from( false ).to( true )
|
119
79
|
|
120
80
|
# Fetch
|
121
|
-
request =
|
81
|
+
request = runner.client.make_fetch_request(
|
122
82
|
mon1.positive_criteria,
|
123
83
|
include_down: false,
|
124
84
|
properties: mon1.node_properties
|
125
85
|
)
|
126
|
-
response =
|
86
|
+
response = Arborist::TreeAPI.successful_response( node_tree )
|
127
87
|
|
128
|
-
expect(
|
129
|
-
expect(
|
88
|
+
expect( runner.client.tree_api ).to receive( :send ).with( request )
|
89
|
+
expect( runner.client.tree_api ).to receive( :recv ).and_return( response )
|
130
90
|
|
131
|
-
|
132
|
-
handler.on_writable
|
133
|
-
}.to_not change { handler.registered? }
|
91
|
+
runner.reactor.poll_once
|
134
92
|
|
135
93
|
# Update
|
136
|
-
request =
|
137
|
-
response =
|
138
|
-
expect(
|
139
|
-
expect(
|
94
|
+
request = runner.client.make_update_request( ping_monitor_data )
|
95
|
+
response = Arborist::TreeAPI.successful_response( nil )
|
96
|
+
expect( runner.client.tree_api ).to receive( :send ).with( request )
|
97
|
+
expect( runner.client.tree_api ).to receive( :recv ).and_return( response )
|
140
98
|
|
141
99
|
# Unregister
|
142
|
-
expect( zmq_loop ).to receive( :remove ).with(
|
100
|
+
expect( zmq_loop ).to receive( :remove ).with( runner.pollitem )
|
143
101
|
expect {
|
144
|
-
|
145
|
-
}.to change {
|
102
|
+
runner.on_writable
|
103
|
+
}.to change { runner.registered? }.from( true ).to( false )
|
146
104
|
|
147
105
|
end
|
148
106
|
|
@@ -159,23 +117,25 @@ describe Arborist::MonitorRunner do
|
|
159
117
|
nodes = { 'test1' => {}, 'test2' => {} }
|
160
118
|
monitor_results = { 'test1' => {ping: {rtt: 1}}, 'test2' => {ping: {rtt: 8}} }
|
161
119
|
|
162
|
-
expect(
|
120
|
+
expect( runner ).to receive( :fetch ).
|
163
121
|
with( {type: 'host'}, false, [:addresses], {} ).
|
164
122
|
and_yield( nodes )
|
165
123
|
|
166
124
|
expect( monitor ).to receive( :run ).with( nodes ).
|
167
125
|
and_return( monitor_results )
|
168
126
|
|
169
|
-
expect(
|
127
|
+
expect( runner ).to receive( :update ).
|
170
128
|
with({
|
171
129
|
"test1"=>{:ping=>{:rtt=>1}, "_monitor_key"=>:test},
|
172
130
|
"test2"=>{:ping=>{:rtt=>8}, "_monitor_key"=>:test}
|
173
131
|
})
|
174
132
|
|
175
|
-
|
133
|
+
runner.run_monitor( monitor )
|
176
134
|
end
|
177
135
|
|
178
136
|
end
|
179
137
|
|
138
|
+
|
139
|
+
|
180
140
|
end
|
181
141
|
|
@@ -2,57 +2,120 @@
|
|
2
2
|
|
3
3
|
require_relative '../spec_helper'
|
4
4
|
|
5
|
+
require 'rspec/wait'
|
6
|
+
require 'cztop'
|
7
|
+
require 'cztop/reactor'
|
8
|
+
|
5
9
|
require 'arborist/observer_runner'
|
6
10
|
|
7
11
|
|
8
12
|
describe Arborist::ObserverRunner do
|
9
13
|
|
14
|
+
before( :each ) do
|
15
|
+
$emails = []
|
16
|
+
$texts = []
|
17
|
+
end
|
10
18
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
let( :pollitem ) { instance_double(ZMQ::Pollitem) }
|
15
|
-
|
16
|
-
let( :runner ) do
|
17
|
-
obj = described_class.new
|
18
|
-
obj.reactor = zmq_loop
|
19
|
-
obj
|
19
|
+
after( :each ) do
|
20
|
+
$emails.clear
|
21
|
+
$texts.clear
|
20
22
|
end
|
21
23
|
|
22
|
-
let( :observer_class ) { Class.new(Arborist::Observer) }
|
23
24
|
|
24
|
-
let( :observer1 )
|
25
|
-
|
26
|
-
|
25
|
+
let( :observer1 ) do
|
26
|
+
Arborist::Observer "Email on ack/disabled/enabled" do
|
27
|
+
subscribe to: 'node.acked'
|
28
|
+
subscribe to: 'node.disabled'
|
29
|
+
subscribe to: 'node.enabled'
|
30
|
+
|
31
|
+
action do |event|
|
32
|
+
$emails << event
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
let( :observer2 ) do
|
38
|
+
Arborist::Observer "SMS on nodes down" do
|
39
|
+
subscribe to: 'node.down'
|
40
|
+
action do |event|
|
41
|
+
$texts << event
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
let( :observer3 ) do
|
46
|
+
Arborist::Observer 'Email on disk full' do
|
47
|
+
subscribe to: 'node.down',
|
48
|
+
where: { type: 'resource', category: 'disk' }
|
49
|
+
action do |event|
|
50
|
+
$emails << event
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
27
55
|
let( :observers ) {[ observer1, observer2, observer3 ]}
|
28
56
|
|
29
57
|
|
30
58
|
it "can load observers from an enumerator that yields Arborist::Observers" do
|
59
|
+
runner = described_class.new
|
31
60
|
runner.load_observers([ observer1, observer2, observer3 ])
|
32
61
|
expect( runner.observers ).to include( observer1, observer2, observer3 )
|
33
62
|
end
|
34
63
|
|
35
64
|
|
36
|
-
describe "a runner with loaded observers" do
|
65
|
+
describe "a runner with loaded observers", :testing_manager do
|
37
66
|
|
38
67
|
before( :each ) do
|
39
|
-
|
68
|
+
@manager_thread = Thread.new do
|
69
|
+
@manager = make_testing_manager()
|
70
|
+
Thread.current.abort_on_exception = true
|
71
|
+
@manager.run
|
72
|
+
Loggability[ Arborist ].info "Stopped the test manager"
|
73
|
+
end
|
74
|
+
|
75
|
+
count = 0
|
76
|
+
until (@manager && @manager.running?) || count > 30
|
77
|
+
sleep 0.1
|
78
|
+
count += 1
|
79
|
+
end
|
80
|
+
raise "Manager didn't start up" unless @manager.running?
|
40
81
|
end
|
41
82
|
|
83
|
+
after( :each ) do
|
84
|
+
@manager.simulate_signal( :TERM )
|
85
|
+
@manager_thread.join
|
86
|
+
|
87
|
+
count = 0
|
88
|
+
while @manager.running? || count > 30
|
89
|
+
sleep 0.1
|
90
|
+
Loggability[ Arborist ].info "Manager still running"
|
91
|
+
count += 1
|
92
|
+
end
|
93
|
+
raise "Manager didn't stop" if @manager.running?
|
94
|
+
end
|
42
95
|
|
43
|
-
xit "subscribes to events for each of its observers and starts the ZMQ loop when run" do
|
44
|
-
expect( Arborist.zmq_context ).to receive( :socket ).
|
45
|
-
with( :REQ ).and_return( req_socket )
|
46
|
-
expect( Arborist.zmq_context ).to receive( :socket ).
|
47
|
-
with( :SUB ).and_return( sub_socket )
|
48
96
|
|
49
|
-
|
97
|
+
let( :runner ) do
|
98
|
+
runner = described_class.new
|
99
|
+
runner.load_observers( observers )
|
100
|
+
runner
|
50
101
|
end
|
51
102
|
|
52
|
-
end
|
53
103
|
|
104
|
+
it "subscribes for each of its observers and listens for events when run" do
|
105
|
+
thr = Thread.new { runner.run }
|
106
|
+
wait( 3 ).for { runner }.to be_running
|
107
|
+
|
108
|
+
expect( @manager.subscriptions.length ).to eq( runner.subscriptions.length )
|
54
109
|
|
55
|
-
|
110
|
+
runner.simulate_signal( :TERM )
|
111
|
+
thr.join( 2 )
|
112
|
+
thr.kill
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
it "runs the observers when subscribed events are sent"
|
117
|
+
|
118
|
+
end
|
56
119
|
|
57
120
|
end
|
58
121
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env rspec -cfd
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
require 'arborist/tree_api'
|
6
|
+
|
7
|
+
describe Arborist::TreeAPI, :testing_manager do
|
8
|
+
|
9
|
+
it "can encode a valid Tree API header and body into a message"
|
10
|
+
it "raises an exception if the header to encode isn't a Hash"
|
11
|
+
|
12
|
+
it "can build a valid Tree API request message"
|
13
|
+
|
14
|
+
|
15
|
+
it "can build a valid success response message"
|
16
|
+
it "can build a valid error response message"
|
17
|
+
|
18
|
+
|
19
|
+
it "can decode a header and payload from a valid request message"
|
20
|
+
|
21
|
+
describe "raises an exception when decoding a request message" do
|
22
|
+
|
23
|
+
it "from a different protocol version"
|
24
|
+
it "that doesn't contain a valid MessagePack payload'"
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
|
data/spec/arborist_spec.rb
CHANGED
@@ -164,10 +164,5 @@ describe Arborist do
|
|
164
164
|
expect( described_class.observer_runner_for(loader) ).to be_a( Arborist::ObserverRunner )
|
165
165
|
end
|
166
166
|
|
167
|
-
|
168
|
-
it "has a ZMQ context" do
|
169
|
-
expect( described_class.zmq_context ).to be_a( ZMQ::Context )
|
170
|
-
end
|
171
|
-
|
172
167
|
end
|
173
168
|
|
data/spec/spec_helper.rb
CHANGED
@@ -73,19 +73,6 @@ module Arborist::TestHelpers
|
|
73
73
|
end
|
74
74
|
|
75
75
|
|
76
|
-
def pack_message( verb, *data )
|
77
|
-
body = data.pop
|
78
|
-
header = data.pop || {}
|
79
|
-
header.merge!( action: verb, version: 1 )
|
80
|
-
|
81
|
-
return MessagePack.pack([ header, body ])
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
def unpack_message( msg )
|
86
|
-
return MessagePack.unpack( msg )
|
87
|
-
end
|
88
|
-
|
89
76
|
|
90
77
|
#
|
91
78
|
# Fixture Functions
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arborist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0.pre20170519125456
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -9,34 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQsFADA+MQwwCgYDVQQDDANnZWQx
|
15
|
-
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
16
|
-
HhcNMTYwODIwMTgxNzQyWhcNMTcwODIwMTgxNzQyWjA+MQwwCgYDVQQDDANnZWQx
|
17
|
-
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
18
|
-
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
|
19
|
-
83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
|
20
|
-
ENcvWVZS4iUzi4dsYJGY6yEOsXh2CcF46+QevV8iE+UmbkU75V7Dy1JCaUOyizEt
|
21
|
-
TH5UHsOtUU7k9TYARt/TgYZKuaoAMZZd5qyVqhF1vV+7/Qzmp89NGflXf2xYP26a
|
22
|
-
4MAX2qqKX/FKXqmFO+AGsbwYTEds1mksBF3fGsFgsQWxftG8GfZQ9+Cyu2+l1eOw
|
23
|
-
cZ+lPcg834G9DrqW2zhqUoLr1MTly4pqxYGb7XoDhoR7dd1kFE2a067+DzWC/ADt
|
24
|
-
+QkcqWUm5oh1fN0eqr7NsZlVJDulFgdiiYPQiIN7UNsii4Wc9aZqBoGcYfBeQNPZ
|
25
|
-
soo/6za/bWajOKUmDhpqvaiRv9EDpVLzuj53uDoukMMwxCMfgb04+ckQ0t2G7wqc
|
26
|
-
/D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
|
27
|
-
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
|
28
|
-
MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
|
29
|
-
YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBCwUAA4IBgQAPJzKiT0zBU7kpqe0aS2qb
|
30
|
-
FI0PJ4y5I8buU4IZGUD5NEt/N7pZNfOyBxkrZkXhS44Fp+xwBH5ebLbq/WY78Bqd
|
31
|
-
db0z6ZgW4LMYMpWFfbXsRbd9TU2f52L8oMAhxOvF7Of5qJMVWuFQ8FPagk2iHrdH
|
32
|
-
inYLQagqAF6goWTXgAJCdPd6SNeeSNqA6vlY7CV1Jh5kfNJJ6xu/CVij1GzCLu/5
|
33
|
-
DMOr26DBv+qLJRRC/2h34uX71q5QgeOyxvMg+7V3u/Q06DXyQ2VgeeqiwDFFpEH0
|
34
|
-
PFkdPO6ZqbTRcLfNH7mFgCBJjsfSjJrn0sPBlYyOXgCoByfZnZyrIMH/UY+lgQqS
|
35
|
-
6Von1VDsfQm0eJh5zYZD64ZF86phSR7mUX3mXItwH04HrZwkWpvgd871DZVR3i1n
|
36
|
-
w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
|
37
|
-
p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
|
38
|
-
-----END CERTIFICATE-----
|
39
|
-
date: 2017-01-02 00:00:00.000000000 Z
|
12
|
+
- certs/ged.pem
|
13
|
+
date: 2017-05-19 00:00:00.000000000 Z
|
40
14
|
dependencies:
|
41
15
|
- !ruby/object:Gem::Dependency
|
42
16
|
name: schedulability
|
@@ -114,28 +88,42 @@ dependencies:
|
|
114
88
|
requirements:
|
115
89
|
- - "~>"
|
116
90
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0
|
91
|
+
version: '1.0'
|
118
92
|
type: :runtime
|
119
93
|
prerelease: false
|
120
94
|
version_requirements: !ruby/object:Gem::Requirement
|
121
95
|
requirements:
|
122
96
|
- - "~>"
|
123
97
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0
|
98
|
+
version: '1.0'
|
125
99
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
100
|
+
name: cztop
|
127
101
|
requirement: !ruby/object:Gem::Requirement
|
128
102
|
requirements:
|
129
103
|
- - "~>"
|
130
104
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
105
|
+
version: '0.11'
|
132
106
|
type: :runtime
|
133
107
|
prerelease: false
|
134
108
|
version_requirements: !ruby/object:Gem::Requirement
|
135
109
|
requirements:
|
136
110
|
- - "~>"
|
137
111
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
112
|
+
version: '0.11'
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: cztop-reactor
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.3'
|
120
|
+
type: :runtime
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0.3'
|
139
127
|
- !ruby/object:Gem::Dependency
|
140
128
|
name: gli
|
141
129
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +172,14 @@ dependencies:
|
|
184
172
|
requirements:
|
185
173
|
- - "~>"
|
186
174
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0.
|
175
|
+
version: '0.9'
|
188
176
|
type: :development
|
189
177
|
prerelease: false
|
190
178
|
version_requirements: !ruby/object:Gem::Requirement
|
191
179
|
requirements:
|
192
180
|
- - "~>"
|
193
181
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0.
|
182
|
+
version: '0.9'
|
195
183
|
- !ruby/object:Gem::Dependency
|
196
184
|
name: hoe-highline
|
197
185
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +208,20 @@ dependencies:
|
|
220
208
|
- - "~>"
|
221
209
|
- !ruby/object:Gem::Version
|
222
210
|
version: '3.2'
|
211
|
+
- !ruby/object:Gem::Dependency
|
212
|
+
name: rspec-wait
|
213
|
+
requirement: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - "~>"
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0.0'
|
218
|
+
type: :development
|
219
|
+
prerelease: false
|
220
|
+
version_requirements: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - "~>"
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0.0'
|
223
225
|
- !ruby/object:Gem::Dependency
|
224
226
|
name: simplecov
|
225
227
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,14 +270,14 @@ dependencies:
|
|
268
270
|
requirements:
|
269
271
|
- - "~>"
|
270
272
|
- !ruby/object:Gem::Version
|
271
|
-
version: '3.
|
273
|
+
version: '3.16'
|
272
274
|
type: :development
|
273
275
|
prerelease: false
|
274
276
|
version_requirements: !ruby/object:Gem::Requirement
|
275
277
|
requirements:
|
276
278
|
- - "~>"
|
277
279
|
- !ruby/object:Gem::Version
|
278
|
-
version: '3.
|
280
|
+
version: '3.16'
|
279
281
|
description: |-
|
280
282
|
Arborist is a monitoring toolkit that follows the UNIX philosophy
|
281
283
|
of small parts and loose coupling for stability, reliability, and
|
@@ -333,12 +335,11 @@ files:
|
|
333
335
|
- lib/arborist/event/node_unknown.rb
|
334
336
|
- lib/arborist/event/node_up.rb
|
335
337
|
- lib/arborist/event/node_update.rb
|
338
|
+
- lib/arborist/event_api.rb
|
336
339
|
- lib/arborist/exceptions.rb
|
337
340
|
- lib/arborist/loader.rb
|
338
341
|
- lib/arborist/loader/file.rb
|
339
342
|
- lib/arborist/manager.rb
|
340
|
-
- lib/arborist/manager/event_publisher.rb
|
341
|
-
- lib/arborist/manager/tree_api.rb
|
342
343
|
- lib/arborist/mixins.rb
|
343
344
|
- lib/arborist/monitor.rb
|
344
345
|
- lib/arborist/monitor/socket.rb
|
@@ -354,15 +355,15 @@ files:
|
|
354
355
|
- lib/arborist/observer/summarize.rb
|
355
356
|
- lib/arborist/observer_runner.rb
|
356
357
|
- lib/arborist/subscription.rb
|
358
|
+
- lib/arborist/tree_api.rb
|
357
359
|
- spec/arborist/client_spec.rb
|
358
360
|
- spec/arborist/dependency_spec.rb
|
359
361
|
- spec/arborist/event/node_delta_spec.rb
|
360
362
|
- spec/arborist/event/node_down_spec.rb
|
361
363
|
- spec/arborist/event/node_spec.rb
|
362
364
|
- spec/arborist/event/node_update_spec.rb
|
365
|
+
- spec/arborist/event_api_spec.rb
|
363
366
|
- spec/arborist/event_spec.rb
|
364
|
-
- spec/arborist/manager/event_publisher_spec.rb
|
365
|
-
- spec/arborist/manager/tree_api_spec.rb
|
366
367
|
- spec/arborist/manager_spec.rb
|
367
368
|
- spec/arborist/mixins_spec.rb
|
368
369
|
- spec/arborist/monitor/socket_spec.rb
|
@@ -379,6 +380,7 @@ files:
|
|
379
380
|
- spec/arborist/observer_runner_spec.rb
|
380
381
|
- spec/arborist/observer_spec.rb
|
381
382
|
- spec/arborist/subscription_spec.rb
|
383
|
+
- spec/arborist/tree_api_spec.rb
|
382
384
|
- spec/arborist_spec.rb
|
383
385
|
- spec/data/monitors/pings.rb
|
384
386
|
- spec/data/monitors/port_checks.rb
|
@@ -408,12 +410,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
408
410
|
version: 2.3.1
|
409
411
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
410
412
|
requirements:
|
411
|
-
- - "
|
413
|
+
- - ">"
|
412
414
|
- !ruby/object:Gem::Version
|
413
|
-
version:
|
415
|
+
version: 1.3.1
|
414
416
|
requirements: []
|
415
417
|
rubyforge_project:
|
416
|
-
rubygems_version: 2.6.
|
418
|
+
rubygems_version: 2.6.12
|
417
419
|
signing_key:
|
418
420
|
specification_version: 4
|
419
421
|
summary: Arborist is a monitoring toolkit that follows the UNIX philosophy of small
|