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,44 +0,0 @@
1
- require 'socket'
2
-
3
- module Celluloid
4
- module IO
5
- # UNIXServer with combined blocking and evented support
6
- class UNIXServer
7
- extend Forwardable
8
- def_delegators :@server, :listen, :sysaccept, :close, :closed?
9
-
10
- def self.open(socket_path)
11
- self.new(socket_path)
12
- end
13
-
14
- def initialize(socket_path)
15
- @server = ::UNIXServer.new(socket_path)
16
- end
17
-
18
- def accept
19
- actor = Thread.current[:actor]
20
-
21
- if evented?
22
- Celluloid.current_actor.wait_readable @server
23
- accept_nonblock
24
- else
25
- Celluloid::IO::UNIXSocket.from_ruby_socket @server.accept
26
- end
27
- end
28
-
29
- def accept_nonblock
30
- Celluloid::IO::UNIXSocket.from_ruby_socket @server.accept_nonblock
31
- end
32
-
33
- def to_io
34
- @server
35
- end
36
-
37
- # Are we inside a Celluloid ::IO actor?
38
- def evented?
39
- actor = Thread.current[:actor]
40
- actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
41
- end
42
- end
43
- end
44
- end
@@ -1,39 +0,0 @@
1
- require 'socket'
2
-
3
- module Celluloid
4
- module IO
5
- # UNIXSocket with combined blocking and evented support
6
- class UNIXSocket
7
- include CommonMethods
8
- extend Forwardable
9
-
10
- def_delegators :@socket, :read_nonblock, :write_nonblock, :close, :closed?, :readline, :puts, :addr
11
-
12
- # Convert a Ruby UNIXSocket into a Celluloid::IO::UNIXSocket
13
- def self.from_ruby_socket(ruby_socket)
14
- # Some hax here, but whatever ;)
15
- socket = allocate
16
- socket.instance_variable_set(:@socket, ruby_socket)
17
- socket
18
- end
19
-
20
- # Open a UNIX connection.
21
- def self.open(socket_path, &block)
22
- self.new(socket_path, &block)
23
- end
24
-
25
- # Open a UNIX connection.
26
- def initialize(socket_path, &block)
27
- @socket = if block
28
- ::UNIXSocket.open(socket_path, &block)
29
- else
30
- ::UNIXSocket.new(socket_path)
31
- end
32
- end
33
-
34
- def to_io
35
- @socket
36
- end
37
- end
38
- end
39
- end
@@ -1,58 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- def chcpu(cfg = {})
4
- Eye::Checker.create(123, {:type => :cpu, :every => 5.seconds,
5
- :times => 1}.merge(cfg))
6
- end
7
-
8
- describe "Eye::Checker::Cpu" do
9
-
10
- describe "without below" do
11
- subject{ chcpu }
12
-
13
- it "get_value" do
14
- mock(Eye::SystemResources).cpu(123){ 65 }
15
- subject.get_value.should == 65
16
- end
17
-
18
- it "without below always true" do
19
- stub(subject).get_value{ 15 }
20
- subject.check.should == true
21
-
22
- stub(subject).get_value{ 20 }
23
- subject.check.should == true
24
- end
25
- end
26
-
27
- describe "with below" do
28
- subject{ chcpu(:below => 30) }
29
-
30
- it "good" do
31
- stub(subject).get_value{ 20 }
32
- subject.check.should == true
33
-
34
- stub(subject).get_value{ 25 }
35
- subject.check.should == true
36
- end
37
-
38
- it "good" do
39
- stub(subject).get_value{ 25 }
40
- subject.check.should == true
41
-
42
- stub(subject).get_value{ 35 }
43
- subject.check.should == false
44
- end
45
-
46
- end
47
-
48
- describe "validates" do
49
- it "ok" do
50
- Eye::Checker.validate!({:type => :cpu, :every => 5.seconds, :times => 1, :below => 100})
51
- end
52
-
53
- it "bad param below" do
54
- expect{ Eye::Checker.validate!({:type => :cpu, :every => 5.seconds, :times => 1, :below => {1 => 2}}) }.to raise_error(Eye::Dsl::Validation::Error)
55
- end
56
- end
57
-
58
- end
@@ -1,34 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- def chctime(cfg = {})
4
- Eye::Checker.create(nil, {:type => :ctime, :every => 5.seconds,
5
- :file => $logger_path, :times => 1}.merge(cfg))
6
- end
7
-
8
- describe "Eye::Checker::FileCTime" do
9
-
10
- describe "" do
11
- subject{ chctime }
12
-
13
- it "get_value" do
14
- subject.get_value.should == File.ctime($logger_path)
15
- end
16
-
17
- it "not good if size equal prevous" do
18
- stub(subject).get_value{ Time.parse('00:00:01') }
19
- subject.check.should == true
20
-
21
- stub(subject).get_value{ Time.parse('00:00:01') }
22
- subject.check.should == false
23
- end
24
-
25
- it "good when little different with previous" do
26
- stub(subject).get_value{ Time.parse('00:00:01') }
27
- subject.check.should == true
28
-
29
- stub(subject).get_value{ Time.parse('00:00:02') }
30
- subject.check.should == true
31
- end
32
- end
33
-
34
- end
@@ -1,107 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- def chfsize(cfg = {})
4
- Eye::Checker.create(nil, {:type => :fsize, :every => 5.seconds,
5
- :file => $logger_path, :times => 1}.merge(cfg))
6
- end
7
-
8
- describe "Eye::Checker::FileSize" do
9
-
10
- describe "" do
11
- subject{ chfsize }
12
-
13
- it "get_value" do
14
- subject.get_value.should be_within(10).of(File.size($logger_path))
15
- end
16
-
17
- it "not good if size equal prevous" do
18
- stub(subject).get_value{1001}
19
- subject.check.should == true
20
-
21
- stub(subject).get_value{1001}
22
- subject.check.should == false
23
- end
24
-
25
- it "good when little different with previous" do
26
- stub(subject).get_value{1001}
27
- subject.check.should == true
28
-
29
- stub(subject).get_value{1002}
30
- subject.check.should == true
31
- end
32
- end
33
-
34
- describe "below" do
35
- subject{ chfsize(:below => 10) }
36
-
37
- it "good" do
38
- stub(subject).get_value{1001}
39
- subject.check.should == true
40
-
41
- stub(subject).get_value{1005}
42
- subject.check.should == true
43
- end
44
-
45
- it "bad" do
46
- stub(subject).get_value{1001}
47
- subject.check.should == true
48
-
49
- stub(subject).get_value{1015}
50
- subject.check.should == false
51
- end
52
-
53
- end
54
-
55
- describe "above" do
56
- subject{ chfsize(:above => 10) }
57
-
58
- it "good" do
59
- stub(subject).get_value{1001}
60
- subject.check.should == true
61
-
62
- stub(subject).get_value{1005}
63
- subject.check.should == false
64
- end
65
-
66
- it "bad" do
67
- stub(subject).get_value{1001}
68
- subject.check.should == true
69
-
70
- stub(subject).get_value{1015}
71
- subject.check.should == true
72
- end
73
-
74
- end
75
-
76
-
77
- describe "above and below" do
78
- subject{ chfsize(:above => 10, :below => 30) }
79
-
80
- it "bad" do
81
- stub(subject).get_value{1001}
82
- subject.check.should == true
83
-
84
- stub(subject).get_value{1005}
85
- subject.check.should == false
86
- end
87
-
88
- it "good" do
89
- stub(subject).get_value{1001}
90
- subject.check.should == true
91
-
92
- stub(subject).get_value{1021}
93
- subject.check.should == true
94
- end
95
-
96
- it "bad" do
97
- stub(subject).get_value{1001}
98
- subject.check.should == true
99
-
100
- stub(subject).get_value{1045}
101
- subject.check.should == false
102
- end
103
-
104
- end
105
-
106
-
107
- end
@@ -1,114 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- def chhttp(cfg = {})
4
- Eye::Checker.create(nil, {:type => :http, :every => 5.seconds,
5
- :times => 1, :url => "http://localhost:3000/", :kind => :success,
6
- :pattern => /OK/, :timeout => 2}.merge(cfg))
7
- end
8
-
9
- describe "Eye::Checker::Http" do
10
-
11
- after :each do
12
- FakeWeb.clean_registry
13
- end
14
-
15
- describe "get_value" do
16
- subject{ chhttp }
17
-
18
- it "initialize" do
19
- subject.instance_variable_get(:@kind).should == Net::HTTPSuccess
20
- subject.instance_variable_get(:@pattern).should == /OK/
21
- subject.instance_variable_get(:@open_timeout).should == 3
22
- subject.instance_variable_get(:@read_timeout).should == 2
23
- end
24
-
25
- it "without url" do
26
- chhttp(:url => nil).uri.should == URI.parse('http://127.0.0.1')
27
- end
28
-
29
- it "get_value" do
30
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody OK")
31
- subject.get_value[:result].body.should == "Somebody OK"
32
-
33
- subject.human_value(subject.get_value).should == "200=0Kb"
34
- end
35
-
36
- it "get_value exception" do
37
- a = ""
38
- stub(subject).session{ a }
39
- stub(subject.session).start{ raise Timeout::Error, "timeout" }
40
- mes = RUBY_VERSION < '2.0' ? "Timeout<3.0,2.0>" : "ReadTimeout<2.0>"
41
-
42
- subject.get_value.should == {:exception => mes}
43
- subject.human_value(subject.get_value).should == mes
44
- end
45
-
46
- it "get_value raised" do
47
- a = ""
48
- stub(subject).session{ a }
49
- stub(subject.session).start{ raise "something" }
50
- subject.get_value.should == {:exception => "Error<something>"}
51
-
52
- subject.human_value(subject.get_value).should == "Error<something>"
53
- end
54
-
55
- end
56
-
57
- describe "good?" do
58
- subject{ chhttp }
59
-
60
- it "good" do
61
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody OK")
62
- subject.check.should == true
63
- end
64
-
65
- it "good pattern is string" do
66
- subject = chhttp(:pattern => "OK")
67
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody OK")
68
- subject.check.should == true
69
- end
70
-
71
- it "bad pattern" do
72
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody bad")
73
- subject.check.should == false
74
- end
75
-
76
- it "bad pattern string" do
77
- subject = chhttp(:pattern => "OK")
78
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody bad")
79
- subject.check.should == false
80
- end
81
-
82
- it "not 200" do
83
- FakeWeb.register_uri(:get, "http://localhost:3000/bla", :body => "Somebody OK", :status => [500, 'err'])
84
- subject.check.should == false
85
- end
86
-
87
- it "without patter its ok" do
88
- subject = chhttp(:pattern => nil)
89
- FakeWeb.register_uri(:get, "http://localhost:3000/", :body => "Somebody OK")
90
- subject.check.should == true
91
- end
92
- end
93
-
94
- describe "validates" do
95
- it "ok" do
96
- Eye::Checker.validate!({:type => :http, :every => 5.seconds,
97
- :times => 1, :url => "http://localhost:3000/", :kind => :success,
98
- :pattern => /OK/, :timeout => 2})
99
- end
100
-
101
- it "without param url" do
102
- expect{ Eye::Checker.validate!({:type => :http, :every => 5.seconds,
103
- :times => 1, :kind => :success,
104
- :pattern => /OK/, :timeout => 2}) }.to raise_error(Eye::Dsl::Validation::Error)
105
- end
106
-
107
- it "bad param timeout" do
108
- expect{ Eye::Checker.validate!({:type => :http, :every => 5.seconds,
109
- :times => 1, :kind => :success, :url => "http://localhost:3000/",
110
- :pattern => /OK/, :timeout => :fix}) }.to raise_error(Eye::Dsl::Validation::Error)
111
- end
112
- end
113
-
114
- end
@@ -1,64 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- def chmem(cfg = {})
4
- Eye::Checker.create(123, {:type => :memory, :every => 5.seconds,
5
- :times => 1}.merge(cfg))
6
- end
7
-
8
- describe "Eye::Checker::Memory" do
9
-
10
- describe "without below" do
11
- subject{ chmem }
12
-
13
- it "get_value" do
14
- mock(Eye::SystemResources).memory(123){ 65 }
15
- subject.get_value.should == 66560
16
- end
17
-
18
- it "without below always true" do
19
- stub(subject).get_value{ 315 }
20
- subject.check.should == true
21
-
22
- stub(subject).get_value{ 320 }
23
- subject.check.should == true
24
- end
25
- end
26
-
27
- describe "with below" do
28
- subject{ chmem(:below => 300.megabytes) }
29
-
30
- it "good" do
31
- stub(subject).get_value{ 200.megabytes }
32
- subject.check.should == true
33
-
34
- stub(subject).get_value{ 250.megabytes }
35
- subject.check.should == true
36
- end
37
-
38
- it "good" do
39
- stub(subject).get_value{ 250.megabytes }
40
- subject.check.should == true
41
-
42
- stub(subject).get_value{ 350.megabytes }
43
- subject.check.should == false
44
- end
45
-
46
- end
47
-
48
- describe "validates" do
49
- it "ok" do
50
- Eye::Checker.validate!({:type => :memory, :every => 5.seconds, :times => 1, :below => 10.0.bytes})
51
- end
52
-
53
- it "bad param below" do
54
- expect{ Eye::Checker.validate!({:type => :memory, :every => 5.seconds, :times => 1, :below => {1 => 2}}) }.to raise_error(Eye::Dsl::Validation::Error)
55
- end
56
-
57
- it "unknown params" do
58
- expect{ Eye::Checker.validate!({:hello => true, :type => :memory, :every => 5.seconds, :times => 1, :below => 10.0.bytes})}.to raise_error(Eye::Dsl::Validation::Error)
59
- end
60
-
61
- end
62
-
63
-
64
- end