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.
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