eye 0.1.11 → 0.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.
- data/.rspec +1 -0
- data/Gemfile +2 -2
- data/README.md +41 -18
- data/bin/eye +4 -3
- data/examples/processes/em.rb +2 -1
- data/examples/processes/thin.ru +12 -0
- data/examples/sidekiq.eye +19 -0
- data/examples/test.eye +25 -16
- data/eye.gemspec +5 -3
- data/lib/eye.rb +2 -1
- data/lib/eye/checker/validation.rb +1 -1
- data/lib/eye/child_process.rb +27 -5
- data/lib/eye/controller/load.rb +13 -11
- data/lib/eye/controller/send_command.rb +32 -7
- data/lib/eye/controller/status.rb +4 -3
- data/lib/eye/dsl/config_opts.rb +38 -1
- data/lib/eye/dsl/opts.rb +12 -5
- data/lib/eye/dsl/pure_opts.rb +2 -2
- data/lib/eye/dsl/validate.rb +5 -0
- data/lib/eye/group.rb +1 -1
- data/lib/eye/group/chain.rb +2 -0
- data/lib/eye/notify.rb +86 -0
- data/lib/eye/notify/jabber.rb +30 -0
- data/lib/eye/notify/mail.rb +44 -0
- data/lib/eye/process.rb +5 -1
- data/lib/eye/process/child.rb +7 -8
- data/lib/eye/process/commands.rb +21 -18
- data/lib/eye/process/notify.rb +22 -7
- data/lib/eye/process/system.rb +18 -5
- data/lib/eye/process/validate.rb +23 -0
- data/lib/eye/system.rb +4 -1
- data/lib/eye/utils.rb +9 -0
- data/spec/checker_spec.rb +0 -1
- data/spec/client_server_spec.rb +0 -1
- data/spec/controller/controller_spec.rb +1 -1
- data/spec/controller/intergration_spec.rb +15 -0
- data/spec/controller/load_spec.rb +49 -4
- data/spec/dsl/chain_spec.rb +20 -14
- data/spec/dsl/checks_spec.rb +17 -0
- data/spec/dsl/notify_spec.rb +105 -0
- data/spec/dsl/process_spec.rb +50 -0
- data/spec/mock_spec.rb +0 -1
- data/spec/notify/jabber_spec.rb +25 -0
- data/spec/notify/mail_spec.rb +26 -0
- data/spec/notify_spec.rb +90 -0
- data/spec/process/config_spec.rb +0 -1
- data/spec/process/notify_spec.rb +27 -0
- data/spec/process/states_history_spec.rb +0 -1
- data/spec/process/stop_spec.rb +6 -0
- data/spec/process/system_spec.rb +34 -21
- data/spec/process/update_config_spec.rb +0 -1
- data/spec/spec_helper.rb +9 -2
- data/spec/support/spec_support.rb +0 -1
- data/spec/system_resources_spec.rb +0 -1
- data/spec/system_spec.rb +3 -6
- data/spec/utils/alive_array_spec.rb +0 -1
- data/spec/utils/celluloid_chain_spec.rb +0 -1
- data/spec/utils/tail_spec.rb +0 -1
- metadata +71 -7
data/spec/dsl/process_spec.rb
CHANGED
|
@@ -327,4 +327,54 @@ describe "Eye::Dsl" do
|
|
|
327
327
|
|
|
328
328
|
end
|
|
329
329
|
|
|
330
|
+
describe "process validations" do
|
|
331
|
+
it "validate daemonize command" do
|
|
332
|
+
conf = <<-E
|
|
333
|
+
Eye.application("bla") do
|
|
334
|
+
process("1") do
|
|
335
|
+
pid_file "1.pid"
|
|
336
|
+
daemonize true
|
|
337
|
+
start_command "sh -c 'echo some; ruby 1.rb'"
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
E
|
|
341
|
+
expect{Eye::Dsl.parse_apps(conf)}.to raise_error(Eye::Process::Validate::Error)
|
|
342
|
+
|
|
343
|
+
conf = <<-E
|
|
344
|
+
Eye.application("bla") do
|
|
345
|
+
process("1") do
|
|
346
|
+
pid_file "1.pid"
|
|
347
|
+
daemonize true
|
|
348
|
+
start_command "echo some && ruby 1.rb"
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
E
|
|
352
|
+
expect{Eye::Dsl.parse_apps(conf)}.to raise_error(Eye::Process::Validate::Error)
|
|
353
|
+
|
|
354
|
+
conf = <<-E
|
|
355
|
+
Eye.application("bla") do
|
|
356
|
+
process("1") do
|
|
357
|
+
pid_file "1.pid"
|
|
358
|
+
daemonize true
|
|
359
|
+
start_command "ruby 1.rb"
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
E
|
|
363
|
+
expect{Eye::Dsl.parse_apps(conf)}.not_to raise_error(Eye::Process::Validate::Error)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
it "not validate non-daemonize command" do
|
|
367
|
+
conf = <<-E
|
|
368
|
+
Eye.application("bla") do
|
|
369
|
+
process("1") do
|
|
370
|
+
pid_file "1.pid"
|
|
371
|
+
start_command "sh -c 'echo some && ruby 1.rb'"
|
|
372
|
+
end
|
|
373
|
+
end
|
|
374
|
+
E
|
|
375
|
+
expect{Eye::Dsl.parse_apps(conf)}.not_to raise_error(Eye::Process::Validate::Error)
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
end
|
|
379
|
+
|
|
330
380
|
end
|
data/spec/mock_spec.rb
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Eye::Notify::Jabber" do
|
|
4
|
+
before :each do
|
|
5
|
+
@message = {:message=>"something", :name=>"blocking process",
|
|
6
|
+
:full_name=>"main:default:blocking process", :pid=>123,
|
|
7
|
+
:host=>'host1', :level=>:crit, :at => Time.now}
|
|
8
|
+
@h = {:host=>"mx.some.host.ru", :type=>:mail, :port=>25, :contact=>"vasya@mail.ru", :password => "123"}
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should send jabber" do
|
|
12
|
+
require 'xmpp4r'
|
|
13
|
+
|
|
14
|
+
@m = Eye::Notify::Jabber.new(@h, @message)
|
|
15
|
+
|
|
16
|
+
ob = ""
|
|
17
|
+
mock(Jabber::Client).new(anything){ ob }
|
|
18
|
+
mock(ob).connect('mx.some.host.ru', 25)
|
|
19
|
+
mock(ob).auth('123')
|
|
20
|
+
mock(ob).send(is_a(Jabber::Message))
|
|
21
|
+
mock(ob).close
|
|
22
|
+
|
|
23
|
+
@m.execute
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Eye::Notify::Mail" do
|
|
4
|
+
before :each do
|
|
5
|
+
@message = {:message=>"something", :name=>"blocking process",
|
|
6
|
+
:full_name=>"main:default:blocking process", :pid=>123,
|
|
7
|
+
:host=>'host1', :level=>:crit, :at => Time.now}
|
|
8
|
+
@h = {:host=>"mx.some.host.ru", :type=>:mail, :port=>25, :domain=>"some.host", :contact=>"vasya@mail.ru"}
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should send mail" do
|
|
12
|
+
@m = Eye::Notify::Mail.new(@h, @message)
|
|
13
|
+
|
|
14
|
+
ob = ""
|
|
15
|
+
mock(Net::SMTP).start('mx.some.host.ru', 25, 'some.host', nil, nil, nil){ ob }
|
|
16
|
+
|
|
17
|
+
@m.execute
|
|
18
|
+
|
|
19
|
+
@m.message_subject.should == "[host1] [main:default:blocking process] something"
|
|
20
|
+
@m.contact.should == "vasya@mail.ru"
|
|
21
|
+
|
|
22
|
+
m = @m.message.split("\n")
|
|
23
|
+
m.should include("To: <vasya@mail.ru>")
|
|
24
|
+
m.should include("Subject: [host1] [main:default:blocking process] something")
|
|
25
|
+
end
|
|
26
|
+
end
|
data/spec/notify_spec.rb
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
class Not1 < Eye::Notify
|
|
4
|
+
param :port, Fixnum
|
|
5
|
+
|
|
6
|
+
def execute
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "Eye::Notify" do
|
|
11
|
+
before :each do
|
|
12
|
+
@message = {:message=>"something", :name=>"blocking process",
|
|
13
|
+
:full_name=>"main:default:blocking process", :pid=>123,
|
|
14
|
+
:host=>'host1', :level=>:crit, :at => Time.now}
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context "create notify class" do
|
|
19
|
+
before :each do
|
|
20
|
+
@config = {
|
|
21
|
+
:mail=>{:host=>"mx.some.host.ru", :type => :mail, :port => 25, :domain => "some.host"},
|
|
22
|
+
:contacts=>{
|
|
23
|
+
"vasya"=>{:name=>"vasya", :type=>:mail, :contact=>"vasya@mail.ru", :opts=>{}},
|
|
24
|
+
"petya"=>{:name=>"petya", :type=>:mail, :contact=>"petya@mail.ru", :opts=>{:port=>1111}},
|
|
25
|
+
'idiots'=>[{:name=>"idiot1", :type=>:mail, :contact=>"idiot1@mail.ru", :opts=>{}}, {:name=>"idiot2", :type=>:mail, :contact=>"idiot2@mail.ru", :opts=>{:port=>1111}}],
|
|
26
|
+
"idiot1"=>{:name=>"idiot1", :type=>:mail, :contact=>"idiot1@mail.ru", :opts=>{}},
|
|
27
|
+
"idiot2"=>{:name=>"idiot2", :type=>:mail, :contact=>"idiot2@mail.ru", :opts=>{:port=>1111}},
|
|
28
|
+
"idiot3"=>{:name=>"idiot3", :type=>:jabber, :contact=>"idiot3@mail.ru", :opts=>{:host => "jabber.some.host", :port=>1111, :user => "some_user"}}}}
|
|
29
|
+
|
|
30
|
+
stub(Eye::Control).current_config{ {:config => @config} }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should create right class" do
|
|
34
|
+
h = {:host=>"mx.some.host.ru", :type=>:mail, :port=>25, :domain=>"some.host", :contact=>"vasya@mail.ru"}
|
|
35
|
+
mock(Eye::Notify::Mail).new(h, @message)
|
|
36
|
+
Eye::Notify.notify('vasya', @message)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should create right class with additional options" do
|
|
40
|
+
h = {:host=>"mx.some.host.ru", :type=>:mail, :port=>1111, :domain=>"some.host", :contact=>"petya@mail.ru"}
|
|
41
|
+
mock(Eye::Notify::Mail).new(h, @message)
|
|
42
|
+
Eye::Notify.notify('petya', @message)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should create right class with group of contacts" do
|
|
46
|
+
h1 = {:host=>"mx.some.host.ru", :type=>:mail, :port=>25, :domain=>"some.host", :contact=>"idiot1@mail.ru"}
|
|
47
|
+
h2 = {:host=>"mx.some.host.ru", :type=>:mail, :port=>1111, :domain=>"some.host", :contact=>"idiot2@mail.ru"}
|
|
48
|
+
mock(Eye::Notify::Mail).new(h1, @message)
|
|
49
|
+
mock(Eye::Notify::Mail).new(h2, @message)
|
|
50
|
+
Eye::Notify.notify('idiots', @message)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "without contact should do nothing" do
|
|
54
|
+
dont_allow(Eye::Notify::Mail).new
|
|
55
|
+
Eye::Notify.notify('noperson', @message)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should also notify to jabber" do
|
|
59
|
+
h = {:host=>"jabber.some.host", :port=>1111, :user=>"some_user", :contact=>"idiot3@mail.ru"}
|
|
60
|
+
mock(Eye::Notify::Jabber).new(h, @message)
|
|
61
|
+
Eye::Notify.notify('idiot3', @message)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "initialize" do
|
|
66
|
+
before :each do
|
|
67
|
+
@h = {:host=>"mx.some.host.ru", :type=>:mail, :port=>25, :domain=>"some.host", :contact=>"vasya@mail.ru"}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "create and intall async task" do
|
|
71
|
+
n = Eye::Notify::Not1.new(@h, @message)
|
|
72
|
+
|
|
73
|
+
$wo = nil
|
|
74
|
+
mock(n).execute do
|
|
75
|
+
$wo = n.wrapped_object
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
n.async_notify
|
|
79
|
+
sleep 0.5
|
|
80
|
+
n.alive?.should == false
|
|
81
|
+
|
|
82
|
+
$wo.contact.should == 'vasya@mail.ru'
|
|
83
|
+
$wo.port.should == 25
|
|
84
|
+
|
|
85
|
+
$wo.message_subject.should == '[host1] [main:default:blocking process] something'
|
|
86
|
+
$wo.message_body.should start_with('[host1] [main:default:blocking process] something at')
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
data/spec/process/config_spec.rb
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Eye::Process::Notify" do
|
|
4
|
+
before :each do
|
|
5
|
+
stub(Eye::System).host{ 'host1' }
|
|
6
|
+
@process = process(C.p1.merge(:notify => {'vasya' => :warn,
|
|
7
|
+
'petya' => :crit, 'somebody' => :crit}))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should send to notifies warn message" do
|
|
11
|
+
m = {:message=>"something", :name=>"blocking process", :full_name=>"main:default:blocking process", :pid=>nil, :host=>"host1", :level=>:warn}
|
|
12
|
+
mock(Eye::Notify).notify('vasya', hash_including(m))
|
|
13
|
+
@process.notify(:warn, 'something')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should send to notifies crit message" do
|
|
17
|
+
m = {:message=>"something", :name=>"blocking process",
|
|
18
|
+
:full_name=>"main:default:blocking process", :pid=>nil,
|
|
19
|
+
:host=>'host1', :level=>:crit}
|
|
20
|
+
|
|
21
|
+
mock(Eye::Notify).notify('vasya', hash_including(m))
|
|
22
|
+
mock(Eye::Notify).notify('petya', hash_including(m))
|
|
23
|
+
mock(Eye::Notify).notify('somebody', hash_including(m))
|
|
24
|
+
@process.notify(:crit, 'something')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
data/spec/process/stop_spec.rb
CHANGED
|
@@ -112,6 +112,12 @@ describe "Process Stop" do
|
|
|
112
112
|
|
|
113
113
|
@process.stop_process!
|
|
114
114
|
sleep 1.5
|
|
115
|
+
|
|
116
|
+
# not blocking actor
|
|
117
|
+
should_spend(0) do
|
|
118
|
+
@process.name.should == 'blocking process'
|
|
119
|
+
end
|
|
120
|
+
|
|
115
121
|
Eye::System.pid_alive?(@pid).should == true
|
|
116
122
|
sleep 1.5
|
|
117
123
|
Eye::System.pid_alive?(@pid).should == true
|
data/spec/process/system_spec.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
3
2
|
|
|
4
3
|
describe "Eye::Process::System" do
|
|
@@ -69,32 +68,46 @@ describe "Eye::Process::System" do
|
|
|
69
68
|
(Time.now - @process.pid_file_ctime).should < 0.1.second
|
|
70
69
|
end
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
sleep
|
|
75
|
-
|
|
71
|
+
[C.p1, C.p2].each do |cfg|
|
|
72
|
+
it "blocking execute should not block process actor mailbox #{cfg[:name]}" do
|
|
73
|
+
@process = Eye::Process.new(cfg.merge(:start_command => "sleep 5", :start_timeout => 10.seconds))
|
|
74
|
+
should_spend(1) do
|
|
75
|
+
@process.start!
|
|
76
|
+
sleep 1
|
|
77
|
+
|
|
78
|
+
# here mailbox should anwser without blocks
|
|
79
|
+
@process.name.should == cfg[:name]
|
|
80
|
+
end
|
|
76
81
|
end
|
|
82
|
+
end
|
|
77
83
|
|
|
78
|
-
|
|
84
|
+
context "#wait_for_condition" do
|
|
85
|
+
subject{ Eye::Process.new(C.p1) }
|
|
79
86
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
87
|
+
it "success" do
|
|
88
|
+
should_spend(0) do
|
|
89
|
+
subject.wait_for_condition(1){ 15 }.should == 15
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "success with sleep" do
|
|
94
|
+
should_spend(0.3) do
|
|
95
|
+
subject.wait_for_condition(1){ sleep 0.3; :a }.should == :a
|
|
96
|
+
end
|
|
83
97
|
end
|
|
84
|
-
res.should == :timeout
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
[C.p1, C.p2].each do |cfg|
|
|
88
|
-
it "blocking execute should not block process actor mailbox #{cfg[:name]}" do
|
|
89
|
-
@process = Eye::Process.new(cfg.merge(:start_command => "sleep 5", :start_timeout => 10.seconds))
|
|
90
|
-
tm1 = Time.now
|
|
91
|
-
@process.start!
|
|
92
|
-
sleep 1
|
|
93
98
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
99
|
+
it "fail by timeout" do
|
|
100
|
+
should_spend(1) do
|
|
101
|
+
subject.wait_for_condition(1){ sleep 4; true }.should == false
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "fail with bad result" do
|
|
106
|
+
should_spend(1) do
|
|
107
|
+
subject.wait_for_condition(1){ nil }.should == false
|
|
108
|
+
end
|
|
97
109
|
end
|
|
98
110
|
end
|
|
99
111
|
|
|
112
|
+
|
|
100
113
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require 'rubygems'
|
|
3
2
|
require "bundler/setup"
|
|
4
3
|
require 'celluloid'
|
|
@@ -38,6 +37,8 @@ $logger = Eye::Logger.new("spec")
|
|
|
38
37
|
Celluloid.logger = $logger
|
|
39
38
|
STDERR.reopen($logger_path)
|
|
40
39
|
|
|
40
|
+
$logger.info "specs started in process #{$$}"
|
|
41
|
+
|
|
41
42
|
RSpec.configure do |config|
|
|
42
43
|
config.mock_with :rr
|
|
43
44
|
|
|
@@ -117,4 +118,10 @@ def join(*args)
|
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
result
|
|
120
|
-
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def should_spend(timeout = 0, delta = 0.05, &block)
|
|
124
|
+
tm1 = Time.now
|
|
125
|
+
yield
|
|
126
|
+
(Time.now - tm1).should be_within(delta).of(timeout)
|
|
127
|
+
end
|
data/spec/system_spec.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
|
2
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
|
3
2
|
|
|
4
3
|
describe "Eye::System" do
|
|
@@ -79,11 +78,9 @@ describe "Eye::System" do
|
|
|
79
78
|
|
|
80
79
|
describe "execute" do
|
|
81
80
|
it "sleep and exit" do
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
(tm2 - tm).should > 1.second
|
|
81
|
+
should_spend(1, 0.2) do
|
|
82
|
+
Eye::System.execute("sleep 1")
|
|
83
|
+
end
|
|
87
84
|
end
|
|
88
85
|
end
|
|
89
86
|
|
data/spec/utils/tail_spec.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: eye
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: '0.2'
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: celluloid
|
|
@@ -219,8 +219,56 @@ dependencies:
|
|
|
219
219
|
- - ! '>='
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
221
|
version: '0'
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
- !ruby/object:Gem::Dependency
|
|
223
|
+
name: sinatra
|
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
|
225
|
+
none: false
|
|
226
|
+
requirements:
|
|
227
|
+
- - ! '>='
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0'
|
|
230
|
+
type: :development
|
|
231
|
+
prerelease: false
|
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
+
none: false
|
|
234
|
+
requirements:
|
|
235
|
+
- - ! '>='
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '0'
|
|
238
|
+
- !ruby/object:Gem::Dependency
|
|
239
|
+
name: thin
|
|
240
|
+
requirement: !ruby/object:Gem::Requirement
|
|
241
|
+
none: false
|
|
242
|
+
requirements:
|
|
243
|
+
- - ! '>='
|
|
244
|
+
- !ruby/object:Gem::Version
|
|
245
|
+
version: '0'
|
|
246
|
+
type: :development
|
|
247
|
+
prerelease: false
|
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
249
|
+
none: false
|
|
250
|
+
requirements:
|
|
251
|
+
- - ! '>='
|
|
252
|
+
- !ruby/object:Gem::Version
|
|
253
|
+
version: '0'
|
|
254
|
+
- !ruby/object:Gem::Dependency
|
|
255
|
+
name: xmpp4r
|
|
256
|
+
requirement: !ruby/object:Gem::Requirement
|
|
257
|
+
none: false
|
|
258
|
+
requirements:
|
|
259
|
+
- - ! '>='
|
|
260
|
+
- !ruby/object:Gem::Version
|
|
261
|
+
version: '0'
|
|
262
|
+
type: :development
|
|
263
|
+
prerelease: false
|
|
264
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
265
|
+
none: false
|
|
266
|
+
requirements:
|
|
267
|
+
- - ! '>='
|
|
268
|
+
- !ruby/object:Gem::Version
|
|
269
|
+
version: '0'
|
|
270
|
+
description: Process monitoring tool. Alternative for God and Bluepill. With Bluepill
|
|
271
|
+
like config syntax. Requires MRI Ruby >= 1.9.2. Uses Celluloid and Celluloid::IO.
|
|
224
272
|
email: kostya27@gmail.com
|
|
225
273
|
executables:
|
|
226
274
|
- eye
|
|
@@ -239,7 +287,9 @@ files:
|
|
|
239
287
|
- examples/processes/em.rb
|
|
240
288
|
- examples/processes/forking.rb
|
|
241
289
|
- examples/processes/sample.rb
|
|
290
|
+
- examples/processes/thin.ru
|
|
242
291
|
- examples/rbenv.eye
|
|
292
|
+
- examples/sidekiq.eye
|
|
243
293
|
- examples/test.eye
|
|
244
294
|
- examples/unicorn.eye
|
|
245
295
|
- eye.gemspec
|
|
@@ -280,6 +330,9 @@ files:
|
|
|
280
330
|
- lib/eye/io/unix_socket.rb
|
|
281
331
|
- lib/eye/loader.rb
|
|
282
332
|
- lib/eye/logger.rb
|
|
333
|
+
- lib/eye/notify.rb
|
|
334
|
+
- lib/eye/notify/jabber.rb
|
|
335
|
+
- lib/eye/notify/mail.rb
|
|
283
336
|
- lib/eye/process.rb
|
|
284
337
|
- lib/eye/process/child.rb
|
|
285
338
|
- lib/eye/process/commands.rb
|
|
@@ -293,6 +346,7 @@ files:
|
|
|
293
346
|
- lib/eye/process/states_history.rb
|
|
294
347
|
- lib/eye/process/system.rb
|
|
295
348
|
- lib/eye/process/trigger.rb
|
|
349
|
+
- lib/eye/process/validate.rb
|
|
296
350
|
- lib/eye/process/watchers.rb
|
|
297
351
|
- lib/eye/server.rb
|
|
298
352
|
- lib/eye/settings.rb
|
|
@@ -329,6 +383,7 @@ files:
|
|
|
329
383
|
- spec/dsl/getter_spec.rb
|
|
330
384
|
- spec/dsl/integration_spec.rb
|
|
331
385
|
- spec/dsl/load_spec.rb
|
|
386
|
+
- spec/dsl/notify_spec.rb
|
|
332
387
|
- spec/dsl/process_spec.rb
|
|
333
388
|
- spec/dsl/sub_procs_spec.rb
|
|
334
389
|
- spec/dsl/with_server_spec.rb
|
|
@@ -389,6 +444,9 @@ files:
|
|
|
389
444
|
- spec/fixtures/dsl/subfolder4/b.rb
|
|
390
445
|
- spec/fixtures/dsl/subfolder4/c.rb
|
|
391
446
|
- spec/mock_spec.rb
|
|
447
|
+
- spec/notify/jabber_spec.rb
|
|
448
|
+
- spec/notify/mail_spec.rb
|
|
449
|
+
- spec/notify_spec.rb
|
|
392
450
|
- spec/process/checks/child_checks_spec.rb
|
|
393
451
|
- spec/process/checks/cpu_spec.rb
|
|
394
452
|
- spec/process/checks/ctime_spec.rb
|
|
@@ -400,6 +458,7 @@ files:
|
|
|
400
458
|
- spec/process/config_spec.rb
|
|
401
459
|
- spec/process/controller_spec.rb
|
|
402
460
|
- spec/process/monitoring_spec.rb
|
|
461
|
+
- spec/process/notify_spec.rb
|
|
403
462
|
- spec/process/restart_spec.rb
|
|
404
463
|
- spec/process/scheduler_spec.rb
|
|
405
464
|
- spec/process/start_spec.rb
|
|
@@ -438,11 +497,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
438
497
|
version: 1.3.6
|
|
439
498
|
requirements: []
|
|
440
499
|
rubyforge_project:
|
|
441
|
-
rubygems_version: 1.8.
|
|
500
|
+
rubygems_version: 1.8.25
|
|
442
501
|
signing_key:
|
|
443
502
|
specification_version: 3
|
|
444
|
-
summary: Process monitoring tool.
|
|
445
|
-
>= 1.9.2. Uses Celluloid and Celluloid::IO.
|
|
503
|
+
summary: Process monitoring tool. Alternative for God and Bluepill. With Bluepill
|
|
504
|
+
like config syntax. Requires MRI Ruby >= 1.9.2. Uses Celluloid and Celluloid::IO.
|
|
446
505
|
test_files:
|
|
447
506
|
- spec/checker/cpu_spec.rb
|
|
448
507
|
- spec/checker/file_ctime_spec.rb
|
|
@@ -468,6 +527,7 @@ test_files:
|
|
|
468
527
|
- spec/dsl/getter_spec.rb
|
|
469
528
|
- spec/dsl/integration_spec.rb
|
|
470
529
|
- spec/dsl/load_spec.rb
|
|
530
|
+
- spec/dsl/notify_spec.rb
|
|
471
531
|
- spec/dsl/process_spec.rb
|
|
472
532
|
- spec/dsl/sub_procs_spec.rb
|
|
473
533
|
- spec/dsl/with_server_spec.rb
|
|
@@ -528,6 +588,9 @@ test_files:
|
|
|
528
588
|
- spec/fixtures/dsl/subfolder4/b.rb
|
|
529
589
|
- spec/fixtures/dsl/subfolder4/c.rb
|
|
530
590
|
- spec/mock_spec.rb
|
|
591
|
+
- spec/notify/jabber_spec.rb
|
|
592
|
+
- spec/notify/mail_spec.rb
|
|
593
|
+
- spec/notify_spec.rb
|
|
531
594
|
- spec/process/checks/child_checks_spec.rb
|
|
532
595
|
- spec/process/checks/cpu_spec.rb
|
|
533
596
|
- spec/process/checks/ctime_spec.rb
|
|
@@ -539,6 +602,7 @@ test_files:
|
|
|
539
602
|
- spec/process/config_spec.rb
|
|
540
603
|
- spec/process/controller_spec.rb
|
|
541
604
|
- spec/process/monitoring_spec.rb
|
|
605
|
+
- spec/process/notify_spec.rb
|
|
542
606
|
- spec/process/restart_spec.rb
|
|
543
607
|
- spec/process/scheduler_spec.rb
|
|
544
608
|
- spec/process/start_spec.rb
|