eye 0.1.11 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +2 -2
  3. data/README.md +41 -18
  4. data/bin/eye +4 -3
  5. data/examples/processes/em.rb +2 -1
  6. data/examples/processes/thin.ru +12 -0
  7. data/examples/sidekiq.eye +19 -0
  8. data/examples/test.eye +25 -16
  9. data/eye.gemspec +5 -3
  10. data/lib/eye.rb +2 -1
  11. data/lib/eye/checker/validation.rb +1 -1
  12. data/lib/eye/child_process.rb +27 -5
  13. data/lib/eye/controller/load.rb +13 -11
  14. data/lib/eye/controller/send_command.rb +32 -7
  15. data/lib/eye/controller/status.rb +4 -3
  16. data/lib/eye/dsl/config_opts.rb +38 -1
  17. data/lib/eye/dsl/opts.rb +12 -5
  18. data/lib/eye/dsl/pure_opts.rb +2 -2
  19. data/lib/eye/dsl/validate.rb +5 -0
  20. data/lib/eye/group.rb +1 -1
  21. data/lib/eye/group/chain.rb +2 -0
  22. data/lib/eye/notify.rb +86 -0
  23. data/lib/eye/notify/jabber.rb +30 -0
  24. data/lib/eye/notify/mail.rb +44 -0
  25. data/lib/eye/process.rb +5 -1
  26. data/lib/eye/process/child.rb +7 -8
  27. data/lib/eye/process/commands.rb +21 -18
  28. data/lib/eye/process/notify.rb +22 -7
  29. data/lib/eye/process/system.rb +18 -5
  30. data/lib/eye/process/validate.rb +23 -0
  31. data/lib/eye/system.rb +4 -1
  32. data/lib/eye/utils.rb +9 -0
  33. data/spec/checker_spec.rb +0 -1
  34. data/spec/client_server_spec.rb +0 -1
  35. data/spec/controller/controller_spec.rb +1 -1
  36. data/spec/controller/intergration_spec.rb +15 -0
  37. data/spec/controller/load_spec.rb +49 -4
  38. data/spec/dsl/chain_spec.rb +20 -14
  39. data/spec/dsl/checks_spec.rb +17 -0
  40. data/spec/dsl/notify_spec.rb +105 -0
  41. data/spec/dsl/process_spec.rb +50 -0
  42. data/spec/mock_spec.rb +0 -1
  43. data/spec/notify/jabber_spec.rb +25 -0
  44. data/spec/notify/mail_spec.rb +26 -0
  45. data/spec/notify_spec.rb +90 -0
  46. data/spec/process/config_spec.rb +0 -1
  47. data/spec/process/notify_spec.rb +27 -0
  48. data/spec/process/states_history_spec.rb +0 -1
  49. data/spec/process/stop_spec.rb +6 -0
  50. data/spec/process/system_spec.rb +34 -21
  51. data/spec/process/update_config_spec.rb +0 -1
  52. data/spec/spec_helper.rb +9 -2
  53. data/spec/support/spec_support.rb +0 -1
  54. data/spec/system_resources_spec.rb +0 -1
  55. data/spec/system_spec.rb +3 -6
  56. data/spec/utils/alive_array_spec.rb +0 -1
  57. data/spec/utils/celluloid_chain_spec.rb +0 -1
  58. data/spec/utils/tail_spec.rb +0 -1
  59. metadata +71 -7
@@ -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
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/spec_helper'
3
2
 
4
3
  class Aaa
@@ -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
@@ -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
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  describe "Eye::Process::Config" do
@@ -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
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  describe "Eye::Process::StatesHistory" do
@@ -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
@@ -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
- it "with_timeout" do
73
- res = @process.with_timeout(0.5) do
74
- sleep 0.3
75
- 11
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
- res.should == 11
84
+ context "#wait_for_condition" do
85
+ subject{ Eye::Process.new(C.p1) }
79
86
 
80
- res = @process.with_timeout(0.5) do
81
- sleep 0.7
82
- 11
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
- # here mailbox should anwser without blocks
95
- @process.name.should == cfg[:name]
96
- (Time.now - tm1).should < 2 # seconds
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
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  describe "#update_config" do
@@ -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
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  module C
3
2
  extend self
4
3
 
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/spec_helper'
3
2
 
4
3
  describe "Eye::SystemResources" do
@@ -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
- tm = Time.now
83
- Eye::System.execute("sleep 1")
84
- tm2 = Time.now
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
 
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  class AliveArrayActor
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  class TestActor
@@ -1,4 +1,3 @@
1
- # -*- encoding : utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/../spec_helper'
3
2
 
4
3
  describe "Eye::Utils::Tail" do
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.1.11
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-02-22 00:00:00.000000000 Z
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
- description: Process monitoring tool. With Bluepill like config syntax. Requires MRI
223
- Ruby >= 1.9.2. Uses Celluloid and Celluloid::IO.
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.24
500
+ rubygems_version: 1.8.25
442
501
  signing_key:
443
502
  specification_version: 3
444
- summary: Process monitoring tool. With Bluepill like config syntax. Requires MRI Ruby
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