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,93 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "sub procs" do
4
- it "include lambda" do
5
- conf = <<-E
6
- proc = lambda do |proxy|
7
- proxy.working_dir "/tmp"
8
- end
9
-
10
- Eye.application("bla") do
11
- include proc
12
- end
13
- E
14
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:working_dir=>"/tmp", :name => "bla"}}
15
- end
16
-
17
- it "include lambda with arg" do
18
- conf = <<-E
19
- proc = lambda do |proxy, arg|
20
- proxy.working_dir arg
21
- end
22
-
23
- Eye.application("bla") do
24
- include proc, "1"
25
- end
26
- E
27
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name=>"bla", :working_dir=>"1"}}
28
- end
29
-
30
- it "include proc" do
31
- conf = <<-E
32
- proc = Proc.new do
33
- working_dir "/tmp"
34
- end
35
-
36
- Eye.application("bla") do
37
- include proc
38
- end
39
- E
40
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:working_dir=>"/tmp", :name => "bla"}}
41
- end
42
-
43
- it "include proc with arg" do
44
- conf = <<-E
45
- proc = Proc.new do |proxy, arg|
46
- proxy.working_dir arg
47
- end
48
-
49
- Eye.application("bla") do
50
- include proc, "1"
51
- end
52
- E
53
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name=>"bla", :working_dir=>"1"}}
54
- end
55
-
56
- it "include method" do
57
- conf = <<-E
58
- def add_process(proxy)
59
- working_dir "/tmp"
60
- end
61
-
62
- Eye.application("bla") do
63
- include method(:add_process)
64
- end
65
- E
66
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:working_dir=>"/tmp", :name => "bla"}}
67
- end
68
-
69
- it "include method with arg" do
70
- conf = <<-E
71
- def add_process(proxy, arg)
72
- working_dir arg
73
- end
74
-
75
- Eye.application("bla") do
76
- include method(:add_process), "1"
77
- end
78
- E
79
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name=>"bla", :working_dir=>"1"}}
80
- end
81
-
82
- it "include part of code" do
83
- Eye::Dsl.parse_apps(nil, fixture("dsl/include_test.eye")).should == {
84
- "test" => {:name=>"test", :environment=>{"a"=>"b"},
85
- :groups=>{"__default__"=>{:name=>"__default__", :environment=>{"a"=>"b"}, :application=>"test",
86
- :processes=>{"bla"=>{:name=>"bla", :environment=>{"a"=>"b"}, :application=>"test", :group=>"__default__", :pid_file=>"10"}}}}}}
87
- end
88
-
89
- it "include part of code 2 times" do
90
- Eye::Dsl.parse_apps(nil, fixture("dsl/include_test2.eye")).should == {"test2" => {:name=>"test2", :groups=>{"ha"=>{:name=>"ha", :application=>"test2", :environment=>{"a"=>"b"}, :processes=>{"bla"=>{:name=>"bla", :application=>"test2", :environment=>{"a"=>"b"}, :group=>"ha", :pid_file=>"10"}}}}}}
91
- end
92
-
93
- end
@@ -1,128 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "with_server feature" do
4
-
5
- it "should load matched by string process" do
6
- stub(Eye::System).host{ "server1" }
7
-
8
- conf = <<-E
9
- Eye.application("bla") do
10
- with_server "server1" do
11
- process("1"){ pid_file "1.pid" }
12
- end
13
-
14
- with_server "server2" do
15
- process("2"){ pid_file "2.pid" }
16
- end
17
- end
18
- E
19
-
20
- Eye::Dsl.parse_apps(conf).should == {"bla"=>{:name => "bla", :groups=>{"__default__"=>{:name => "__default__", :application => "bla", :processes=>{"1"=>{:pid_file=>"1.pid", :application=>"bla", :group=>"__default__", :name=>"1"}}}}}}
21
- end
22
-
23
- it "should another host conditions" do
24
- stub(Eye::System).host{ "server1" }
25
-
26
- conf = <<-E
27
- Eye.application("bla") do
28
- with_server %w{server1 server2} do
29
- process("1"){ pid_file "1.pid" }
30
-
31
- if Eye::SystemResources == 'server2'
32
- process("2"){ pid_file "2.pid" }
33
- end
34
- end
35
- end
36
- E
37
-
38
- Eye::Dsl.parse_apps(conf).should == {"bla"=>{:name => "bla", :groups=>{"__default__"=>{:name => "__default__", :application => "bla", :processes=>{"1"=>{:pid_file=>"1.pid", :application=>"bla", :group=>"__default__", :name=>"1"}}}}}}
39
- end
40
-
41
- it "should behaves like scoped" do
42
- stub(Eye::System).host{ "server1" }
43
-
44
- conf = <<-E
45
- Eye.application("bla") do
46
- env "A" => "B"
47
- with_server /server1/ do
48
- env "A" => "C"
49
- group(:a){}
50
- end
51
-
52
- group(:b){}
53
- end
54
- E
55
-
56
- Eye::Dsl.parse_apps(conf).should == {
57
- "bla" => {:name=>"bla", :environment=>{"A"=>"B"},
58
- :groups=>{
59
- "a"=>{:name=>"a", :environment=>{"A"=>"C"}, :application=>"bla", :processes=>{}},
60
- "b"=>{:name=>"b", :environment=>{"A"=>"B"}, :application=>"bla", :processes=>{}}}}}
61
- end
62
-
63
- describe "matches" do
64
- subject{ Eye::Dsl::Opts.new }
65
-
66
- it "match string" do
67
- stub(Eye::System).host{ "server1" }
68
- subject.with_server("server1").should == true
69
- subject.with_server("server2").should == false
70
- subject.with_server('').should == true
71
- subject.with_server(nil).should == true
72
- end
73
-
74
- it "match array" do
75
- stub(Eye::System).host{ "server1" }
76
- subject.with_server(%w{ server1 server2}).should == true
77
- subject.with_server(%w{ server2 server3}).should == false
78
- end
79
-
80
- it "match regexp" do
81
- stub(Eye::System).host{ "server1" }
82
- subject.with_server(%r{server}).should == true
83
- subject.with_server(%r{myserver}).should == false
84
- end
85
- end
86
-
87
- describe "helpers" do
88
- it "hostname on with server" do
89
- conf = <<-E
90
- Eye.application("bla"){
91
- with_server('muga_server') do
92
- working_dir "/tmp"
93
- end
94
- }
95
- E
96
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name => "bla"}}
97
- end
98
-
99
- it "with_server work" do
100
- Eye::System.host = 'mega_server'
101
-
102
- conf = <<-E
103
- Eye.application("bla"){
104
- with_server('mega_server') do
105
- group :blo do
106
- working_dir "/tmp"
107
- end
108
- end
109
- }
110
- E
111
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name=>"bla", :groups=>{"blo"=>{:name=>"blo", :application=>"bla", :working_dir=>"/tmp", :processes=>{}}}}}
112
- end
113
-
114
- it "hostname work" do
115
- Eye::System.host = 'supa_server'
116
-
117
- conf = <<-E
118
- Eye.application("bla"){
119
- working_dir "/tmp"
120
- env "HOST" => hostname
121
- }
122
- E
123
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name => "bla", :working_dir=>"/tmp", :environment=>{"HOST"=>"supa_server"}}}
124
- end
125
-
126
- end
127
-
128
- end
@@ -1,57 +0,0 @@
1
- require 'bundler/setup'
2
- require 'eventmachine'
3
-
4
- def answer(data)
5
- case data
6
- when 'ping' then "pong\n"
7
- when 'bad' then "what\n"
8
- when 'timeout' then sleep 5; "ok\n"
9
- when 'exception' then raise 'haha'
10
- when 'quit' then EM.stop
11
- when 'big' then 'a' * 10_000_000
12
- end
13
- end
14
-
15
- class Echo < EM::Connection
16
- def post_init
17
- puts "-- someone connected to the echo server!"
18
- end
19
-
20
- def receive_data data
21
- puts "receive #{data.inspect}"
22
- send_data(answer(data))
23
- end
24
-
25
- def unbind
26
- puts "-- someone disconnected from the echo server!"
27
- end
28
- end
29
-
30
- class EchoObj < EM::Connection
31
- include EM::P::ObjectProtocol
32
-
33
- def post_init
34
- puts "-- someone connected to the echo server!"
35
- end
36
-
37
- def receive_object obj # {:command => 'ping'}
38
- puts "receive #{obj.inspect}"
39
- send_object(answer(obj[:command]).chop)
40
- end
41
-
42
- def unbind
43
- puts "-- someone disconnected from the echo server!"
44
- end
45
- end
46
-
47
- trap "TERM" do
48
- EM.stop
49
- `rm /tmp/em_test_sock_spec` rescue nil
50
- end
51
-
52
- EM.run do
53
- EM.start_server '127.0.0.1', 33231, Echo
54
- EM.start_server '127.0.0.1', 33232, EchoObj
55
- EM.start_server "/tmp/em_test_sock_spec", nil, Echo
56
- puts 'started'
57
- end
@@ -1,20 +0,0 @@
1
- require 'bundler/setup'
2
- require 'forking'
3
-
4
- root = File.expand_path(File.dirname(__FILE__))
5
-
6
- f = Forking.new(:name => 'forking', :working_dir => root,
7
- :log_file => "#{root}/forking.log",
8
- :pid_file => "#{root}/forking.pid", :sync_log => true)
9
-
10
- 3.times do |i|
11
- f.spawn(:log_file => "#{root}/child#{i}.log", :sync_log => true) do
12
- $0 = "forking child"
13
- loop do
14
- p "#{Time.now} - #{Time.now.to_f} - #{i} - tick"
15
- sleep 0.1
16
- end
17
- end
18
- end
19
-
20
- f.run!
@@ -1,154 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'optparse'
3
-
4
- # This hash will hold all of the options
5
- # parsed from the command-line by
6
- # OptionParser.
7
- options = {}
8
-
9
- optparse = OptionParser.new do|opts|
10
- # This displays the help screen, all programs are
11
- # assumed to have this option.
12
- opts.on( '-h', '--help', 'Display this screen' ) do
13
- puts opts
14
- exit
15
- end
16
-
17
- opts.on( '-p', '--pid FILE', 'pid_file' ) do |a|
18
- options[:pid_file] = a
19
- end
20
-
21
- opts.on( '-l', '--log FILE', 'log_file' ) do |a|
22
- options[:log_file] = a
23
- end
24
-
25
- opts.on( '-L', '--lock FILE', 'lock_file' ) do |a|
26
- options[:lock_file] = a
27
- end
28
-
29
- opts.on( '-d', '--daemonize', 'Daemonize' ) do
30
- options[:daemonize] = true
31
- end
32
-
33
- opts.on( '-s', '--daemonize_delay DELAY', 'Daemonized time' ) do |d|
34
- options[:daemonize_delay] = d
35
- end
36
-
37
- opts.on( '-r', '--raise', 'Raised execution' ) do
38
- options[:raise] = true
39
- end
40
-
41
- opts.on( '-w', '--watch_file FILE', 'Exit on touched file' ) do |w|
42
- options[:watch_file] = w
43
- end
44
-
45
- opts.on( '-W', '--watch_file_delay DELAY', 'Exit on touched file, after delay' ) do |w|
46
- options[:watch_file_delay] = w
47
- end
48
-
49
- opts.on( '-T', '--no_terminate', 'catch terminate signal and not die' ) do
50
- options[:no_terminate] = true
51
- end
52
-
53
- end
54
-
55
- optparse.parse!
56
-
57
- module Sample
58
- def puts(mes = "")
59
- tm = Time.now
60
- STDOUT.puts "#{tm.to_s} (#{tm.to_f}) - #{mes}"
61
- STDOUT.flush
62
- end
63
-
64
- def daemonize(pid_file, log_file, daemonize_delay = 0)
65
- puts "daemonize start #{pid_file}, #{log_file}, #{daemonize_delay}"
66
-
67
- if daemonize_delay && daemonize_delay.to_f > 0
68
- puts "daemonize delay start #{daemonize_delay}"
69
- sleep daemonize_delay.to_f
70
- puts "daemonize delay end"
71
- end
72
-
73
- daemon
74
- STDOUT.reopen(log_file, "a")
75
- STDERR.reopen(log_file, "a")
76
- File.open(pid_file, 'w'){|f| f.write $$.to_s}
77
-
78
- puts "daemonized"
79
- end
80
-
81
- def daemon
82
- exit if fork # Parent exits, child continues.
83
- Process.setsid # Become session leader.
84
- exit if fork # Zap session leader. See [1].
85
-
86
- STDIN.reopen "/dev/null" # Free file descriptors and
87
- STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
88
- STDERR.reopen '/dev/null', 'a'
89
- return 0
90
- end
91
- end
92
-
93
- extend Sample
94
-
95
- if options[:daemonize]
96
- daemonize(options[:pid_file], options[:log_file], options[:daemonize_delay])
97
- end
98
-
99
- puts "Started #{ARGV.inspect}, #{options.inspect}, #{ENV["ENV1"]}"
100
-
101
- if options[:lock_file]
102
- if File.exists?(options[:lock_file])
103
- puts "Lock file exists, exiting"
104
- exit 1
105
- else
106
- File.open(options[:lock_file], 'w'){|f| f.write $$ }
107
- end
108
- end
109
-
110
- if options[:raise]
111
- puts "Raised"
112
- File.unlink(options[:lock_file]) if options[:lock_file]
113
- exit 1
114
- end
115
-
116
- trap("USR1") do
117
- puts "USR1 signal!"
118
- end
119
-
120
- trap("USR2") do
121
- puts "USR2 start memory leak"
122
- $ar = []
123
- 300_000.times{|i| $ar << "memory leak #{i}" * 10}
124
- end
125
-
126
- if options[:no_terminate]
127
- trap("TERM") do
128
- puts "TERM signal! and we not die O_o"
129
- end
130
- end
131
-
132
- loop do
133
- sleep 0.1
134
- puts "tick"
135
-
136
- if options[:watch_file]
137
- if File.exists?(options[:watch_file])
138
- puts "watch file finded"
139
- File.unlink(options[:watch_file])
140
-
141
- if options[:watch_file_delay]
142
- puts "watch_file delay start"
143
- sleep options[:watch_file_delay].to_f
144
- puts "watch_file delay end"
145
- end
146
-
147
- break
148
- end
149
- end
150
- end
151
-
152
- puts "exit"
153
- File.unlink(options[:lock_file]) if options[:lock_file]
154
- exit 0