eye 0.2.4 → 0.3

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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -3
  3. data/bin/eye +7 -0
  4. data/bin/loader_eye +7 -5
  5. data/examples/notify.eye +1 -1
  6. data/eye.gemspec +4 -4
  7. data/lib/eye.rb +1 -3
  8. data/lib/eye/controller.rb +4 -0
  9. data/lib/eye/controller/status.rb +1 -1
  10. data/lib/eye/dsl.rb +1 -1
  11. data/lib/eye/dsl/main.rb +0 -13
  12. data/lib/eye/dsl/opts.rb +4 -2
  13. data/lib/eye/loader.rb +2 -3
  14. data/lib/eye/notify.rb +3 -3
  15. data/lib/eye/process/monitor.rb +5 -3
  16. data/lib/eye/process/notify.rb +5 -5
  17. data/lib/eye/process/scheduler.rb +4 -4
  18. data/lib/eye/process/system.rb +3 -10
  19. data/lib/eye/process/trigger.rb +1 -1
  20. data/lib/eye/process/watchers.rb +1 -1
  21. data/lib/eye/server.rb +9 -8
  22. data/lib/eye/system.rb +2 -7
  23. data/lib/eye/system_resources.rb +3 -3
  24. data/lib/eye/utils/celluloid_chain.rb +2 -2
  25. metadata +7 -241
  26. data/lib/eye/io/unix_server.rb +0 -44
  27. data/lib/eye/io/unix_socket.rb +0 -39
  28. data/spec/checker/cpu_spec.rb +0 -58
  29. data/spec/checker/file_ctime_spec.rb +0 -34
  30. data/spec/checker/file_size_spec.rb +0 -107
  31. data/spec/checker/http_spec.rb +0 -114
  32. data/spec/checker/memory_spec.rb +0 -64
  33. data/spec/checker/socket_spec.rb +0 -116
  34. data/spec/checker_spec.rb +0 -187
  35. data/spec/child_process/child_process_spec.rb +0 -46
  36. data/spec/client_server_spec.rb +0 -33
  37. data/spec/controller/commands_spec.rb +0 -92
  38. data/spec/controller/controller_spec.rb +0 -157
  39. data/spec/controller/find_objects_spec.rb +0 -176
  40. data/spec/controller/group_spec.rb +0 -110
  41. data/spec/controller/intergration_spec.rb +0 -366
  42. data/spec/controller/load_spec.rb +0 -371
  43. data/spec/controller/races_spec.rb +0 -70
  44. data/spec/controller/stop_on_delete_spec.rb +0 -157
  45. data/spec/dsl/chain_spec.rb +0 -146
  46. data/spec/dsl/checks_spec.rb +0 -219
  47. data/spec/dsl/config_spec.rb +0 -44
  48. data/spec/dsl/dsl_spec.rb +0 -73
  49. data/spec/dsl/getter_spec.rb +0 -223
  50. data/spec/dsl/integration_spec.rb +0 -376
  51. data/spec/dsl/load_spec.rb +0 -52
  52. data/spec/dsl/notify_spec.rb +0 -114
  53. data/spec/dsl/process_spec.rb +0 -380
  54. data/spec/dsl/sub_procs_spec.rb +0 -93
  55. data/spec/dsl/with_server_spec.rb +0 -128
  56. data/spec/example/em.rb +0 -57
  57. data/spec/example/forking.rb +0 -20
  58. data/spec/example/sample.rb +0 -154
  59. data/spec/fixtures/dsl/0.rb +0 -8
  60. data/spec/fixtures/dsl/0a.rb +0 -8
  61. data/spec/fixtures/dsl/0c.rb +0 -8
  62. data/spec/fixtures/dsl/1.rb +0 -5
  63. data/spec/fixtures/dsl/bad.eye +0 -6
  64. data/spec/fixtures/dsl/configs/1.eye +0 -3
  65. data/spec/fixtures/dsl/configs/2.eye +0 -1
  66. data/spec/fixtures/dsl/configs/3.eye +0 -1
  67. data/spec/fixtures/dsl/configs/4.eye +0 -3
  68. data/spec/fixtures/dsl/empty.eye +0 -20
  69. data/spec/fixtures/dsl/include_test.eye +0 -5
  70. data/spec/fixtures/dsl/include_test/1.rb +0 -6
  71. data/spec/fixtures/dsl/include_test/ha.rb +0 -4
  72. data/spec/fixtures/dsl/include_test2.eye +0 -5
  73. data/spec/fixtures/dsl/integration.eye +0 -30
  74. data/spec/fixtures/dsl/integration2.eye +0 -32
  75. data/spec/fixtures/dsl/integration_locks.eye +0 -30
  76. data/spec/fixtures/dsl/integration_sor.eye +0 -32
  77. data/spec/fixtures/dsl/integration_sor2.eye +0 -27
  78. data/spec/fixtures/dsl/integration_sor3.eye +0 -32
  79. data/spec/fixtures/dsl/load.eye +0 -25
  80. data/spec/fixtures/dsl/load2.eye +0 -7
  81. data/spec/fixtures/dsl/load2_dup2.eye +0 -13
  82. data/spec/fixtures/dsl/load2_dup_pid.eye +0 -7
  83. data/spec/fixtures/dsl/load3.eye +0 -10
  84. data/spec/fixtures/dsl/load4.eye +0 -7
  85. data/spec/fixtures/dsl/load5.eye +0 -8
  86. data/spec/fixtures/dsl/load6.eye +0 -17
  87. data/spec/fixtures/dsl/load_dubls.eye +0 -36
  88. data/spec/fixtures/dsl/load_dup_ex_names.eye +0 -15
  89. data/spec/fixtures/dsl/load_error.eye +0 -5
  90. data/spec/fixtures/dsl/load_error_folder/load3.eye +0 -10
  91. data/spec/fixtures/dsl/load_error_folder/load4.eye +0 -7
  92. data/spec/fixtures/dsl/load_folder/load3.eye +0 -10
  93. data/spec/fixtures/dsl/load_folder/load4.eye +0 -7
  94. data/spec/fixtures/dsl/load_int.eye +0 -8
  95. data/spec/fixtures/dsl/load_int2.eye +0 -13
  96. data/spec/fixtures/dsl/load_logger.eye +0 -26
  97. data/spec/fixtures/dsl/load_logger2.eye +0 -3
  98. data/spec/fixtures/dsl/long_load.eye +0 -5
  99. data/spec/fixtures/dsl/subfolder1/proc1.rb +0 -3
  100. data/spec/fixtures/dsl/subfolder2.eye +0 -9
  101. data/spec/fixtures/dsl/subfolder2/common.rb +0 -1
  102. data/spec/fixtures/dsl/subfolder2/proc2.rb +0 -3
  103. data/spec/fixtures/dsl/subfolder2/sub/proc3.rb +0 -6
  104. data/spec/fixtures/dsl/subfolder3.eye +0 -8
  105. data/spec/fixtures/dsl/subfolder3/common.rb +0 -1
  106. data/spec/fixtures/dsl/subfolder3/proc4.rb +0 -3
  107. data/spec/fixtures/dsl/subfolder3/sub/proc5.rb +0 -6
  108. data/spec/fixtures/dsl/subfolder4.eye +0 -6
  109. data/spec/fixtures/dsl/subfolder4/a.rb +0 -2
  110. data/spec/fixtures/dsl/subfolder4/b.rb +0 -1
  111. data/spec/fixtures/dsl/subfolder4/c.rb +0 -1
  112. data/spec/mock_spec.rb +0 -31
  113. data/spec/notify/jabber_spec.rb +0 -25
  114. data/spec/notify/mail_spec.rb +0 -26
  115. data/spec/notify_spec.rb +0 -90
  116. data/spec/process/checks/child_checks_spec.rb +0 -79
  117. data/spec/process/checks/cpu_spec.rb +0 -114
  118. data/spec/process/checks/ctime_spec.rb +0 -43
  119. data/spec/process/checks/fsize_spec.rb +0 -22
  120. data/spec/process/checks/http_spec.rb +0 -52
  121. data/spec/process/checks/intergration_spec.rb +0 -32
  122. data/spec/process/checks/memory_spec.rb +0 -127
  123. data/spec/process/child_process_spec.rb +0 -125
  124. data/spec/process/config_spec.rb +0 -74
  125. data/spec/process/controller_spec.rb +0 -173
  126. data/spec/process/monitoring_spec.rb +0 -180
  127. data/spec/process/notify_spec.rb +0 -27
  128. data/spec/process/restart_spec.rb +0 -186
  129. data/spec/process/scheduler_spec.rb +0 -178
  130. data/spec/process/start_spec.rb +0 -261
  131. data/spec/process/states_history_spec.rb +0 -123
  132. data/spec/process/stop_spec.rb +0 -156
  133. data/spec/process/system_spec.rb +0 -136
  134. data/spec/process/triggers/flapping_spec.rb +0 -242
  135. data/spec/process/update_config_spec.rb +0 -62
  136. data/spec/spec_helper.rb +0 -128
  137. data/spec/support/rr_celluloid.rb +0 -15
  138. data/spec/support/spec_support.rb +0 -163
  139. data/spec/system_resources_spec.rb +0 -56
  140. data/spec/system_spec.rb +0 -174
  141. data/spec/utils/alive_array_spec.rb +0 -49
  142. data/spec/utils/celluloid_chain_spec.rb +0 -89
  143. data/spec/utils/tail_spec.rb +0 -20
@@ -1,114 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Process Cpu check" do
4
-
5
- before :each do
6
- @c = C.p1.merge(
7
- :checks => C.check_cpu
8
- )
9
- end
10
-
11
- it "should start periodical watcher" do
12
- start_ok_process(@c)
13
-
14
- @process.watchers.keys.should == [:check_alive, :check_cpu]
15
-
16
- @process.stop
17
-
18
- # after process stop should remove watcher
19
- @process.watchers.keys.should == []
20
- end
21
-
22
- describe "1 times" do
23
- before :each do
24
- @check = {:cpu => {:type => :cpu, :every => 2, :below => 10, :times => 1}}
25
- end
26
-
27
- it "when memory exceed limit process should restart" do
28
- start_ok_process(@c.merge(:checks => @check))
29
-
30
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
31
-
32
- sleep 3
33
-
34
- stub(Eye::SystemResources).cpu(@process.pid){ 20 }
35
- mock(@process).schedule(:restart, anything)
36
-
37
- sleep 1
38
- end
39
-
40
- it "else should not restart" do
41
- start_ok_process(@c.merge(:checks => @check))
42
-
43
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
44
-
45
- sleep 3
46
-
47
- stub(Eye::SystemResources).cpu(@process.pid){ 7 }
48
- dont_allow(@process).schedule(:restart)
49
-
50
- sleep 1
51
- end
52
- end
53
-
54
- describe "3 times" do
55
- before :each do
56
- @check = {:cpu => {:type => :cpu, :every => 2, :below => 10, :times => 3}}
57
- end
58
-
59
- it "when memory exceed limit process should restart" do
60
- start_ok_process(@c.merge(:checks => @check))
61
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
62
-
63
- sleep 3
64
-
65
- stub(Eye::SystemResources).cpu(@process.pid){ 15 }
66
- mock(@process).schedule(:restart, anything)
67
-
68
- sleep 6
69
- end
70
-
71
- it "else should not restart" do
72
- start_ok_process(@c.merge(:checks => @check))
73
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
74
-
75
- sleep 3
76
-
77
- stub(Eye::SystemResources).cpu(@process.pid){ 7 }
78
- dont_allow(@process).schedule(:restart)
79
-
80
- sleep 6
81
- end
82
- end
83
-
84
- describe "3 times" do
85
- before :each do
86
- @check = {:cpu => {:type => :cpu, :every => 2, :below => 10, :times => [3,5]}}
87
- end
88
-
89
- it "when memory exceed limit process should restart" do
90
- start_ok_process(@c.merge(:checks => @check))
91
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
92
-
93
- sleep 5
94
-
95
- stub(Eye::SystemResources).cpu(@process.pid){ 15 }
96
- mock(@process).schedule(:restart, anything)
97
-
98
- sleep 6
99
- end
100
-
101
- it "else should not restart" do
102
- start_ok_process(@c.merge(:checks => @check))
103
- stub(Eye::SystemResources).cpu(@process.pid){ 5 }
104
-
105
- sleep 5
106
-
107
- stub(Eye::SystemResources).cpu(@process.pid){ 7 }
108
- dont_allow(@process).schedule(:restart)
109
-
110
- sleep 6
111
- end
112
- end
113
-
114
- end
@@ -1,43 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Check CTime" do
4
- before :each do
5
- @c = C.p1.merge(
6
- :checks => C.check_ctime(:times => 3)
7
- )
8
- end
9
-
10
- it "should start periodical watcher" do
11
- start_ok_process(@c)
12
-
13
- @process.watchers.keys.should == [:check_alive, :check_ctime]
14
-
15
- @process.stop
16
-
17
- # after process stop should remove watcher
18
- @process.watchers.keys.should == []
19
- end
20
-
21
- it "if ctime changes should_not restart" do
22
- start_ok_process(@c)
23
- @process.watchers.keys.should == [:check_alive, :check_ctime]
24
-
25
- dont_allow(@process).schedule(:restart)
26
-
27
- sleep 6
28
- end
29
-
30
- it "if ctime not changed should restart" do
31
- start_ok_process(@c)
32
-
33
- mock(@process).schedule(:restart, anything)
34
-
35
- sleep 3
36
-
37
- FileUtils.rm(C.p1[:stdout])
38
-
39
- sleep 5
40
- end
41
-
42
- end
43
-
@@ -1,22 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Check FSize" do
4
- before :each do
5
- @c = C.p1.merge(
6
- :checks => C.check_fsize(:times => 3)
7
- )
8
- end
9
-
10
- it "should start periodical watcher" do
11
- start_ok_process(@c)
12
-
13
- @process.watchers.keys.should == [:check_alive, :check_fsize]
14
-
15
- @process.stop
16
-
17
- # after process stop should remove watcher
18
- @process.watchers.keys.should == []
19
- end
20
-
21
- end
22
-
@@ -1,52 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Process Http check" do
4
- before :each do
5
- @c = C.p1.merge(
6
- :checks => C.check_http
7
- )
8
- FakeWeb.register_uri(:get, "http://localhost:3000/bla", :body => "Somebody OK")
9
- end
10
-
11
- after :each do
12
- FakeWeb.clean_registry
13
- end
14
-
15
- it "all ok" do
16
- start_ok_process(@c)
17
-
18
- dont_allow(@process).schedule(:restart)
19
-
20
- # should not happens anything
21
- sleep 6
22
- end
23
-
24
- it "bad body" do
25
- start_ok_process(@c)
26
- sleep 2
27
-
28
- mock(@process).schedule(:restart, anything)
29
- FakeWeb.register_uri(:get, "http://localhost:3000/bla", :body => "Somebody BAD")
30
- sleep 2
31
- end
32
-
33
- it "bad status" do
34
- start_ok_process(@c)
35
- sleep 2
36
-
37
- mock(@process).schedule(:restart, anything)
38
- FakeWeb.register_uri(:get, "http://localhost:3000/bla", :body => "Somebody OK", :status => [500, 'err'])
39
- sleep 2
40
- end
41
-
42
- it "not responded url" do
43
- start_ok_process(@c)
44
- sleep 2
45
-
46
- mock(@process).schedule(:restart, anything)
47
- FakeWeb.clean_registry
48
- FakeWeb.allow_net_connect = false
49
- sleep 2
50
- end
51
-
52
- end
@@ -1,32 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Process Integration checks" do
4
- before :each do
5
- @c = C.p1.merge(
6
- :checks => join(C.check_cpu, C.check_mem, C.check_ctime, C.check_http)
7
- )
8
-
9
- FakeWeb.register_uri(:get, "http://localhost:3000/bla", :body => "Somebody OK")
10
- end
11
-
12
- it "should start periodical watcher" do
13
- start_ok_process(@c)
14
-
15
- @process.watchers.keys.should == [:check_alive, :check_cpu, :check_memory, :check_ctime, :check_http]
16
-
17
- @process.stop
18
-
19
- # after process stop should remove watcher
20
- @process.watchers.keys.should == []
21
- end
22
-
23
- it "intergration" do
24
- start_ok_process(@c)
25
-
26
- dont_allow(@process).schedule(:restart)
27
-
28
- # should not happens anything
29
- sleep 10
30
- end
31
-
32
- end
@@ -1,127 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe "Process Memory check" do
4
-
5
- before :each do
6
- @c = C.p1.merge(
7
- :checks => C.check_mem
8
- )
9
- end
10
-
11
- it "should start periodical watcher" do
12
- start_ok_process(@c)
13
-
14
- @process.watchers.keys.should == [:check_alive, :check_memory]
15
-
16
- @process.stop
17
-
18
- # after process stop should remove watcher
19
- @process.watchers.keys.should == []
20
- end
21
-
22
- describe "1 times" do
23
- before :each do
24
- @check = {:memory => {:every => 2, :below => 40.megabytes, :times => 1, :type => :memory}}
25
- end
26
-
27
- it "when memory exceed limit process should restart" do
28
- start_ok_process(@c.merge(:checks => @check))
29
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
30
-
31
- sleep 3
32
-
33
- stub(Eye::SystemResources).memory(@process.pid){ 50_000 }
34
- mock(@process).notify(:crit, anything)
35
- mock(@process).schedule(:restart, anything)
36
-
37
- sleep 1
38
- end
39
-
40
- it "when memory exceed limit process should stop if fire==stop" do
41
- @check = {:memory => {:every => 2, :below => 40.megabytes, :times => 1, :type => :memory, :fire => :stop}}
42
- start_ok_process(@c.merge(:checks => @check))
43
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
44
-
45
- sleep 3
46
-
47
- stub(Eye::SystemResources).memory(@process.pid){ 50_000 }
48
- mock(@process).notify(:crit, anything)
49
- mock(@process).schedule(:stop, anything)
50
-
51
- sleep 1
52
- end
53
-
54
- it "else should not restart" do
55
- start_ok_process(@c.merge(:checks => @check))
56
-
57
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
58
- sleep 3
59
-
60
- stub(Eye::SystemResources).memory(@process.pid){ 25_000 }
61
- dont_allow(@process).schedule(:restart)
62
-
63
- sleep 1
64
- end
65
- end
66
-
67
- describe "3 times" do
68
- before :each do
69
- @check = {:memory => {:every => 2, :below => 40.megabytes, :times => 3, :type => :memory}}
70
- end
71
-
72
- it "when memory exceed limit process should restart" do
73
- start_ok_process(@c.merge(:checks => @check))
74
-
75
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
76
- sleep 3
77
-
78
- stub(Eye::SystemResources).memory(@process.pid){ 50_000 }
79
- mock(@process).schedule(:restart, anything)
80
-
81
- sleep 6
82
- end
83
-
84
- it "else should not restart" do
85
- start_ok_process(@c.merge(:checks => @check))
86
-
87
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
88
- sleep 3
89
-
90
- stub(Eye::SystemResources).memory(@process.pid){ 25_000 }
91
- dont_allow(@process).schedule(:restart)
92
-
93
- sleep 6
94
- end
95
- end
96
-
97
- describe "3,5 times" do
98
- before :each do
99
- @check = {:memory => {:every => 2, :below => 40.megabytes, :times => [3,5], :type => :memory}}
100
- end
101
-
102
- it "when memory exceed limit process should restart" do
103
- start_ok_process(@c.merge(:checks => @check))
104
-
105
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
106
- sleep 5
107
-
108
- stub(Eye::SystemResources).memory(@process.pid){ 50_000 }
109
- mock(@process).schedule(:restart, anything)
110
-
111
- sleep 6
112
- end
113
-
114
- it "else should not restart" do
115
- start_ok_process(@c.merge(:checks => @check))
116
-
117
- stub(Eye::SystemResources).memory(@process.pid){ 20_000 }
118
- sleep 5
119
-
120
- stub(Eye::SystemResources).memory(@process.pid){ 25_000 }
121
- dont_allow(@process).schedule(:restart)
122
-
123
- sleep 6
124
- end
125
- end
126
-
127
- end
@@ -1,125 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "ChildProcess" do
4
-
5
- describe "starting, monitoring" do
6
- after :each do
7
- @process.stop if @process
8
- end
9
-
10
- it "should monitoring when process has childs and enable option" do
11
- cfg = C.p3.merge(:monitor_children => {})
12
- start_ok_process(cfg)
13
- sleep 5 # ensure that childs finds
14
-
15
- @process.state_name.should == :up
16
- @process.childs.keys.should_not == []
17
- @process.childs.keys.size.should == 3
18
- @process.watchers.keys.should == [:check_alive, :check_childs]
19
- end
20
-
21
- it "should not monitoring when process has childs and disable option" do
22
- start_ok_process(C.p3)
23
- @process.childs.should == {}
24
- @process.watchers.keys.should == [:check_alive]
25
- end
26
-
27
- it "should not monitoring when process has no childs and enable option" do
28
- start_ok_process(C.p1.merge(:monitor_children => {}))
29
- @process.childs.should == {}
30
- @process.watchers.keys.should == [:check_alive, :check_childs]
31
- end
32
-
33
- it "when one of child is die, should update list" do
34
- start_ok_process(C.p3.merge(:monitor_children => {}, :childs_update_period => Eye::SystemResources::PsAxActor::UPDATE_INTERVAL + 1))
35
- @process.watchers.keys.should == [:check_alive, :check_childs]
36
-
37
- sleep 5 # ensure that childs finds
38
-
39
- #p @process.childs
40
- pids = @process.childs.keys.sort
41
-
42
- # one of the child is just die
43
- died_pid = pids.sample
44
- die_process!(died_pid, 9)
45
-
46
- # sleep enought for update list
47
- sleep (Eye::SystemResources::PsAxActor::UPDATE_INTERVAL * 2 + 1).seconds
48
-
49
- new_pids = @process.childs.keys.sort
50
-
51
- pids.should_not == new_pids
52
- (pids - new_pids).should == [died_pid]
53
- (new_pids - pids).size.should == 1
54
- end
55
-
56
- it "all childs is die, should update list" do
57
- start_ok_process(C.p3.merge(:monitor_children => {}, :childs_update_period => Eye::SystemResources::PsAxActor::UPDATE_INTERVAL + 1))
58
- @process.watchers.keys.should == [:check_alive, :check_childs]
59
-
60
- sleep 5 # ensure that childs finds
61
-
62
- #p @process.childs
63
- master_pid = @process.pid
64
- pids = @process.childs.keys.sort
65
-
66
- # one of the child is just die
67
- Eye::System.execute("kill -HUP #{master_pid}")
68
-
69
- # sleep enought for update list
70
- sleep (Eye::SystemResources::PsAxActor::UPDATE_INTERVAL * 2 + 1).seconds
71
-
72
- new_pids = @process.childs.keys.sort
73
-
74
- master_pid.should == @process.pid
75
- new_pids.size.should == 3
76
- (pids - new_pids).should == pids
77
- (new_pids - pids).should == new_pids
78
- end
79
-
80
- it "when process stop, childs cleans" do
81
- start_ok_process(C.p3.merge(:monitor_children => {}, :childs_update_period => Eye::SystemResources::PsAxActor::UPDATE_INTERVAL + 1))
82
- sleep 5 # ensure that childs finds
83
-
84
- pid = @process.pid
85
- @process.watchers.keys.should == [:check_alive, :check_childs]
86
- @process.childs.size.should == 3
87
-
88
- @process.stop
89
- sleep 2
90
- @process.watchers.keys.should == []
91
- @process.childs.size.should == 0
92
-
93
- Eye::System.pid_alive?(pid).should == false
94
- end
95
-
96
- end
97
-
98
- describe "add_or_update_childs" do
99
- before :each do
100
- start_ok_process(C.p1.merge(:monitor_children => {}))
101
- end
102
-
103
- it "add new childs, update && remove" do
104
- stub(Eye::SystemResources).childs(@process.pid){ [3,4,5] }
105
- @process.add_or_update_childs
106
- @process.childs.keys.sort.should == [3,4,5]
107
-
108
- stub(Eye::SystemResources).childs(@process.pid){ [3,5,6] }
109
- @process.add_or_update_childs
110
- @process.childs.keys.sort.should == [3,5,6]
111
-
112
- stub(Eye::SystemResources).childs(@process.pid){ [3,5] }
113
- @process.add_or_update_childs
114
- @process.childs.keys.sort.should == [3,5]
115
-
116
- stub(Eye::SystemResources).childs(@process.pid){ [6,7] }
117
- @process.add_or_update_childs
118
- @process.childs.keys.sort.should == [6,7]
119
-
120
- @process.remove_childs
121
- @process.childs.should == {}
122
- end
123
- end
124
-
125
- end