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,223 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "Eye::Dsl getters" do
4
-
5
- it "should get param from scope with =" do
6
- conf = <<-E
7
- Eye.application("bla") do |app|
8
- app.start_timeout = 10.seconds
9
- app.stop_timeout = app.start_timeout
10
- end
11
- E
12
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:start_timeout=>10, :stop_timeout=>10, :name => "bla"}}
13
- end
14
-
15
- it "should get param from scope without =" do
16
- conf = <<-E
17
- Eye.application("bla") do |app|
18
- app.start_timeout 10.seconds
19
- app.stop_timeout app.start_timeout
20
- end
21
- E
22
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:start_timeout=>10, :stop_timeout=>10, :name => "bla"}}
23
- end
24
-
25
- it "should get param from auto scope" do
26
- conf = <<-E
27
- Eye.application("bla") do
28
- start_timeout 10.seconds
29
- stop_timeout start_timeout
30
- end
31
- E
32
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:start_timeout=>10, :stop_timeout=>10, :name => "bla"}}
33
- end
34
-
35
- it "double =" do
36
- conf = <<-E
37
- Eye.application("bla") do |app|
38
- app.stdout = app.stderr = '1'
39
- end
40
- E
41
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name => "bla", :stdout => '1', :stderr => '1'}}
42
- end
43
-
44
- it "pure_getter" do
45
- conf = <<-E
46
- Eye.application("bla") do |app|
47
- start_timeout 11
48
- app.stop_timeout = app.get_start_timeout
49
- end
50
- E
51
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:start_timeout=>11, :stop_timeout=>11, :name => "bla"}}
52
- end
53
-
54
- it "env throught proxies" do
55
- conf = <<-E
56
- Eye.application("bla") do |app|
57
- env "A" => "1"
58
-
59
- group :blagr do |gr|
60
- env "A" => app.env['A'] + "2"
61
-
62
- process :blap do |p|
63
- pid_file '1'
64
- env "A" => gr.env['A'] + "3"
65
-
66
- start_command "ruby app:\#{app.name} gr:\#{gr.name} p:\#{p.name} \#{app.env} \#{gr.env} \#{p.env} \#{pid_file}"
67
- end
68
- end
69
- end
70
- E
71
- Eye::Dsl.parse_apps(conf).should == {
72
- "bla" => {:name => "bla", :environment=>{"A"=>"1"}, :groups=>{
73
- "blagr"=>{:name => "blagr", :application => "bla", :environment=>{"A"=>"12"}, :processes=>{
74
- "blap"=>{:environment=>{"A"=>"123"}, :group=>"blagr", :application=>"bla", :name=>'blap', :pid_file=>"1",
75
- :start_command=>"ruby app:bla gr:blagr p:blap {\"A\"=>\"1\"} {\"A\"=>\"12\"} {\"A\"=>\"123\"} 1"}}}}}}
76
- end
77
-
78
- it "getter full_name" do
79
- conf = <<-E
80
- Eye.application("bla") do
81
- env "A" => "\#{self.full_name}"
82
-
83
- group :blagr do
84
- env 'B' => "\#{self.full_name}"
85
-
86
- process :blap do
87
- env 'C' => "\#{self.full_name}"
88
-
89
- pid_file '1'
90
- end
91
- end
92
-
93
- process :blap2 do
94
- env 'D' => "\#{self.full_name}"
95
- pid_file "2"
96
- end
97
- end
98
- E
99
- Eye::Dsl.parse_apps(conf).should == {
100
- "bla" => {:name => "bla", :environment=>{"A"=>"bla"}, :groups=>{
101
- "blagr"=>{:name => "blagr", :application => "bla", :environment=>{"A"=>"bla", "B"=>"bla:blagr"}, :processes=>{
102
- "blap"=>{:environment=>{"A"=>"bla", "B"=>"bla:blagr", "C"=>"bla:blagr:blap"}, :pid_file=>"1", :group=>"blagr", :application=>"bla", :name=>'blap'}}},
103
- "__default__"=>{:name => "__default__", :environment=>{"A"=>"bla"}, :application => "bla", :processes=>{
104
- "blap2"=>{:environment=>{"A"=>"bla", "D"=>"bla:blap2"}, :pid_file=>"2", :group=>"__default__", :application=>"bla", :name=>'blap2'}}}}}}
105
- end
106
-
107
- it "getting autodefined opts" do
108
- conf = <<-E
109
- Eye.app :bla do |app|
110
- env 'a' => 'b'
111
-
112
- group :blagr do |gr|
113
- process :blap do |pr|
114
- pid_file "/tmp/\#{pr.name}"
115
-
116
- env 'aa' => app.env['a']
117
- env 'ab' => app.env['b']
118
- env 'ga' => gr.env['a'] # here should be set 'b' from inherited app.env['a']
119
- env 'gb' => gr.env['b']
120
- end
121
- end
122
- end
123
- E
124
-
125
- Eye::Dsl.parse_apps(conf).should == {
126
- "bla" => {:name => "bla", :environment=>{"a"=>"b"}, :groups=>{
127
- "blagr"=>{:name => "blagr", :application => "bla", :environment=>{"a"=>"b"}, :processes=>{
128
- "blap"=>{:environment=>{"a"=>"b", "aa"=>"b", "ga"=>"b", "ab" => nil, "gb" => nil}, :pid_file=>"/tmp/blap", :group=>"blagr", :application=>"bla", :name=>'blap'}}}}}}
129
- end
130
-
131
- it "auto inherited opts" do
132
- conf = <<-E
133
- Eye.app :bla do |app|
134
- working_dir "/tmp"
135
-
136
- group :blagr do |gr|
137
- env 'A' => "\#{app.working_dir}"
138
-
139
- process :blap do |p|
140
- pid_file "\#{p.working_dir}/1.pid"
141
- end
142
- end
143
- end
144
- E
145
-
146
- Eye::Dsl.parse_apps(conf).should == {
147
- "bla" => {:name => "bla", :working_dir=>"/tmp", :groups=>{
148
- "blagr"=>{:name => "blagr", :application => "bla", :working_dir=>"/tmp", :environment=>{"A"=>"/tmp"}, :processes=>{
149
- "blap"=>{:working_dir=>"/tmp", :environment=>{"A"=>"/tmp"}, :pid_file=>"/tmp/1.pid", :group=>"blagr", :application=>"bla", :name=>'blap'}}}}}}
150
- end
151
-
152
- it "parent spec" do
153
- conf = <<-E
154
- Eye.application("bla") do |app|
155
- working_dir "/tmp"
156
- group :blagr do
157
- self.working_dir = "\#{self.parent.working_dir}/1"
158
- end
159
- end
160
- E
161
- Eye::Dsl.parse_apps(conf).should == {"bla" => {:name => "bla", :working_dir=>"/tmp", :groups=>{"blagr"=>{:name => "blagr", :application => "bla", :working_dir=>"/tmp/1", :processes => {}}}}}
162
- end
163
-
164
- describe "back links (application, group)" do
165
- it "process back links" do
166
- conf = <<-E
167
- Eye.application("bla") do |app|
168
- working_dir "/tmp"
169
-
170
- process :p1 do
171
- start_command "ruby -t '\#{self.application.name}.\#{self.group.name}'"
172
- pid_file "p1"
173
- end
174
-
175
- group :blagr do
176
- process :p2 do
177
- start_command "ruby -t '\#{self.app.name}.\#{self.group.name}'"
178
- pid_file "p2"
179
- end
180
-
181
- process :p3 do
182
- start_command "ruby -t '\#{self.group.app.name}.\#{self.group.name}'"
183
- pid_file "p3"
184
- end
185
-
186
- end
187
- end
188
- E
189
- Eye::Dsl.parse_apps(conf).should == {
190
- "bla" => {:name=>"bla", :working_dir=>"/tmp", :groups=>{
191
- "__default__"=>{:name=>"__default__", :working_dir=>"/tmp", :application=>"bla", :processes=>{
192
- "p1"=>{:name=>"p1", :working_dir=>"/tmp", :application=>"bla", :group=>"__default__",
193
- :start_command=>"ruby -t 'bla.__default__'", :pid_file=>"p1"}}},
194
- "blagr"=>{:name=>"blagr", :working_dir=>"/tmp", :application=>"bla", :processes=>{
195
- "p2"=>{:name=>"p2", :working_dir=>"/tmp", :application=>"bla", :group=>"blagr",
196
- :start_command=>"ruby -t 'bla.blagr'", :pid_file=>"p2"},
197
- "p3"=>{:name=>"p3", :working_dir=>"/tmp", :application=>"bla", :group=>"blagr",
198
- :start_command=>"ruby -t 'bla.blagr'", :pid_file=>"p3"}}}}}}
199
- end
200
-
201
- it "group back links" do
202
- conf = <<-E
203
- Eye.application("bla") do |app|
204
- working_dir "/tmp"
205
-
206
- env "a" => "\#{self.name}"
207
-
208
- group :blagr do |gr|
209
- env "b" => "\#{gr.application.name}"
210
- env "c" => "\#{gr.app.name}"
211
- env "d" => "\#{gr.parent.name}"
212
- end
213
- end
214
- E
215
- Eye::Dsl.parse_apps(conf).should == {
216
- "bla" => {:name=>"bla", :working_dir=>"/tmp", :environment=>{"a"=>"bla"}, :groups=>{
217
- "blagr"=>{:name=>"blagr", :working_dir=>"/tmp",
218
- :environment=>{"a"=>"bla", "b"=>"bla", "c"=>"bla", "d"=>"bla"}, :application=>"bla", :processes=>{}}}}}
219
- end
220
-
221
- end
222
-
223
- end
@@ -1,376 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "Eye::Dsl" do
4
- it "intergration spec" do
5
- conf = <<-E
6
- Eye.application("bla") do
7
- environment "ENV1" => "1"
8
- working_dir "/tmp"
9
-
10
- group("mini") do
11
- process("1") do
12
- start_command "echo start"
13
- stop_command "echo end"
14
- pid_file "1.pid"
15
- stdall "1.log"
16
- daemonize true
17
-
18
- monitor_children do
19
- stop_command "kill -9 {{PID}}"
20
- checks :memory, :every => 30.seconds, :below => 200.megabytes
21
- checks :cpu, :every => 30.seconds, :below => 10, :times => [3,5]
22
- end
23
-
24
- checks :memory, :every => 20.seconds, :below => 100.megabytes, :times => [3,5]
25
- triggers :flapping, :times => 3, :within => 30.seconds
26
- end
27
- end
28
-
29
- process("2") do
30
- pid_file "h"
31
- end
32
- end
33
- E
34
-
35
- h = {'bla' =>
36
- { :name => "bla",
37
- :environment=>{"ENV1"=>"1"},
38
- :working_dir=>"/tmp",
39
- :groups=>{
40
- "mini"=>{:name => "mini", :application => "bla",
41
- :environment=>{"ENV1"=>"1"},
42
- :working_dir=>"/tmp",
43
- :processes=>{
44
- "1"=>{
45
- :environment=>{"ENV1"=>"1"},
46
- :working_dir=>"/tmp",
47
- :start_command=>"echo start",
48
- :stop_command=>"echo end",
49
- :pid_file=>"1.pid",
50
- :stderr=>"1.log",
51
- :stdout=>"1.log",
52
- :stdall=>"1.log",
53
- :daemonize=>true,
54
- :monitor_children=>{
55
- :stop_command=>"kill -9 {{PID}}",
56
- :checks=>{:memory=>{:every=>30, :below=>209715200, :type=>:memory},
57
- :cpu=>{:every=>30, :below=>10, :times=>[3, 5], :type=>:cpu}}
58
- },
59
- :checks=>{
60
- :memory=>{:every=>20, :below=>104857600, :times=>[3, 5], :type=>:memory}
61
- },
62
- :triggers=>{
63
- :flapping=>{:times=>3, :within=>30, :type=>:flapping}
64
- },
65
- :application=>"bla",
66
- :group=>"mini",
67
- :name=>"1"}}},
68
- "__default__"=>{:name => "__default__", :application => "bla",
69
- :environment=>{"ENV1"=>"1"},
70
- :working_dir=>"/tmp",
71
- :processes=>{
72
- "2"=>{
73
- :environment=>{"ENV1"=>"1"},
74
- :working_dir=>"/tmp",
75
- :pid_file=>"h",
76
- :application=>"bla",
77
- :group=>"__default__",
78
- :name=>"2"}}}}}
79
- }
80
-
81
- res = Eye::Dsl.parse_apps(conf)
82
- res.should == h
83
- end
84
-
85
- it "merging envs inside one process" do
86
- conf = <<-E
87
- Eye.application "bla" do
88
- environment "RAILS_ENV" => "test"
89
- environment "LANG" => "ru_RU.UTF-8"
90
-
91
- process("1") do
92
- environment "A" => "1"
93
- env "B" => "2"
94
-
95
- pid_file "1"
96
- end
97
- end
98
- E
99
- res = Eye::Dsl.parse_apps(conf)
100
- res["bla"][:environment].should ==
101
- {"RAILS_ENV" => "test", "LANG" => "ru_RU.UTF-8"}
102
-
103
- res["bla"][:groups]["__default__"][:environment].should ==
104
- {"RAILS_ENV" => "test", "LANG" => "ru_RU.UTF-8"}
105
-
106
- res["bla"][:groups]["__default__"][:processes]['1'][:environment].should ==
107
- {"RAILS_ENV" => "test", "LANG" => "ru_RU.UTF-8", "A" => "1", "B" => "2"}
108
- end
109
-
110
- it "should merge environment" do
111
- conf = <<-E
112
- Eye.application("bla") do
113
- environment "HAH" => "1"
114
-
115
- group("moni") do
116
- environment "HAHA" => "2"
117
-
118
- process("1") do
119
- environment "HEHE" => "4"
120
- pid_file "1"
121
- end
122
- end
123
-
124
- process("2") do
125
- environment "HOHO" => "3"
126
- pid_file "2"
127
- end
128
- end
129
- E
130
-
131
- h = {'bla' =>
132
- { :name => "bla",
133
- :environment=>{"HAH"=>"1"},
134
- :groups=>{
135
- "moni"=>{:name => "moni", :application => "bla",
136
- :environment=>{"HAHA"=>"2", "HAH"=>"1"},
137
- :processes=>{
138
- "1"=>{
139
- :environment=>{"HAHA"=>"2", "HAH"=>"1", "HEHE" => "4"},
140
- :pid_file=>"1",
141
- :application=>"bla",
142
- :group=>"moni",
143
- :name=>"1"}}},
144
- "__default__"=>{:name => "__default__", :application => "bla",
145
- :environment=>{"HAH"=>"1"},
146
- :processes=>{
147
- "2"=>{
148
- :environment=>{"HAH"=>"1", "HOHO" => "3"},
149
- :pid_file=>"2",
150
- :application=>"bla",
151
- :group=>"__default__",
152
- :name=>"2"}}}}}
153
- }
154
-
155
- Eye::Dsl.parse_apps(conf).should == h
156
- end
157
-
158
- it "should rewrite options" do
159
- conf = <<-E
160
- Eye.application("bla") do
161
- working_dir "/tmp"
162
-
163
- group("moni") do
164
- working_dir "/nah"
165
-
166
- process("1") do
167
- pid_file "1"
168
- working_dir "/1"
169
- end
170
-
171
- process("2") do
172
- pid_file "2"
173
- end
174
- end
175
-
176
- process("3") do
177
- pid_file "3"
178
- end
179
- end
180
- E
181
-
182
- h = {'bla' =>
183
- { :name => "bla",
184
- :working_dir=>"/tmp",
185
- :groups=>{
186
- "moni"=>{:name => "moni", :application => "bla",
187
- :working_dir=>"/nah",
188
- :processes=>{
189
- "1"=>{
190
- :working_dir=>"/1",
191
- :pid_file=>"1",
192
- :application=>"bla",
193
- :group=>"moni",
194
- :name=>"1"},
195
- "2"=>{
196
- :working_dir=>"/nah",
197
- :pid_file=>"2",
198
- :application=>"bla",
199
- :group=>"moni",
200
- :name=>"2"}}},
201
- "__default__"=>{:name => "__default__", :application => "bla",
202
- :working_dir=>"/tmp",
203
- :processes=>{
204
- "3"=>{
205
- :working_dir=>"/tmp",
206
- :pid_file=>"3",
207
- :application=>"bla",
208
- :group=>"__default__",
209
- :name=>"3"}}}}}
210
- }
211
- Eye::Dsl.parse_apps(conf).should == h
212
- end
213
-
214
- describe "requires" do
215
- before :each do
216
- @h = {'bla' =>
217
- { :name => "bla",
218
- :working_dir=>"/tmp",
219
- :groups=>{
220
- "__default__"=>{
221
- :name => "__default__", :application => "bla",
222
- :working_dir=>"/tmp",
223
- :processes=>{
224
- "11"=>{
225
- :working_dir=>"/tmp",
226
- :pid_file=>"11.pid",
227
- :application=>"bla",
228
- :group=>"__default__",
229
- :name=>"11"},
230
- "12"=>{
231
- :working_dir=>"/tmp",
232
- :pid_file=>"12.pid",
233
- :application=>"bla",
234
- :group=>"__default__",
235
- :name=>"12"}}}}}
236
-
237
- }
238
- end
239
-
240
- it "should require other files by require" do
241
- file = fixture('dsl/0.rb')
242
- conf = File.read(file)
243
- Eye::Dsl.parse_apps(conf, file).should == @h
244
- end
245
-
246
- it "should require other files by require" do
247
- file = fixture('dsl/0a.rb')
248
- conf = File.read(file)
249
- Eye::Dsl.parse_apps(conf, file).should == @h
250
- end
251
-
252
- it "should load by load" do
253
- file = fixture('dsl/0c.rb')
254
- conf = File.read(file)
255
- Eye::Dsl.parse_apps(conf, file).should == @h
256
- end
257
- end
258
-
259
- it "recursive merge cases" do
260
- conf = <<-E
261
- Eye.application("bla") do
262
- working_dir "/tmp"
263
- env 'A' => '1'
264
- group :bla do
265
- env 'C' => '1'
266
- process("1"){ pid_file '1'}
267
-
268
- env 'D' => '1'
269
- process("2"){ pid_file '2'}
270
- end
271
-
272
- working_dir "/tmp2"
273
- env 'B' => '1'
274
- group :bla2 do
275
- # /tmp2
276
- end
277
- end
278
- E
279
-
280
- Eye::Dsl.parse_apps(conf).should == {
281
- "bla" => {:name => "bla", :working_dir=>"/tmp2", :environment=>{"A"=>"1", "B"=>"1"}, :groups=>{
282
- "bla"=>{:name => "bla", :application => "bla", :working_dir=>"/tmp", :environment=>{"A"=>"1", "C"=>"1", "D"=>"1"},
283
- :processes=>{
284
- "1"=>{:working_dir=>"/tmp", :environment=>{"A"=>"1", "C"=>"1"}, :group=>"bla", :application=>"bla", :name=>"1", :pid_file=>"1"},
285
- "2"=>{:working_dir=>"/tmp", :environment=>{"A"=>"1", "C"=>"1", "D"=>"1"}, :group=>"bla", :application=>"bla", :name=>"2", :pid_file=>"2"}}},
286
- "bla2"=>{:name => "bla2", :application => "bla", :working_dir=>"/tmp2", :environment=>{"A"=>"1", "B"=>"1"}, :processes=>{}}}}}
287
- end
288
-
289
- it "join group spec" do
290
- conf = <<-E
291
- Eye.application("bla") do
292
- group :blagr do
293
- process("1"){ pid_file '1'}
294
- end
295
-
296
- group :blagr do
297
- env 'P' => '1'
298
- process("2"){ pid_file '2'}
299
- end
300
- end
301
- E
302
-
303
- Eye::Dsl.parse_apps(conf).should == {
304
- "bla" => {:name => "bla", :groups=>{
305
- "blagr"=>{:name => "blagr", :application => "bla", :processes=>{
306
- "1"=>{:group=>"blagr", :application=>"bla", :name=>"1", :pid_file=>"1"},
307
- "2"=>{:environment=>{"P"=>"1"}, :group=>"blagr", :application=>"bla", :name=>"2", :pid_file=>"2"}},
308
- :environment=>{"P"=>"1"}}}}}
309
- end
310
-
311
-
312
- describe "scoped" do
313
- it "scoped" do
314
- conf = <<-E
315
- Eye.application("bla") do
316
- group :gr do
317
- env "A" => '1', "B" => '2'
318
-
319
- process :a do
320
- pid_file "1.pid"
321
- end
322
-
323
- scoped do
324
- env "A" => '2'
325
-
326
- process :b do
327
- pid_file "2.pid"
328
- end
329
- end
330
-
331
- process :c do
332
- pid_file "3.pid"
333
- end
334
- end
335
- end
336
- E
337
-
338
- Eye::Dsl.parse_apps(conf).should == {
339
- "bla" => {:name=>"bla", :groups=>{
340
- "gr"=>{:name=>"gr", :application=>"bla", :environment=>{"A"=>"1", "B"=>"2"},
341
- :processes=>{
342
- "a"=>{:name=>"a", :application=>"bla", :environment=>{"A"=>"1", "B"=>"2"}, :group=>"gr", :pid_file=>"1.pid"},
343
- "b"=>{:name=>"b", :application=>"bla", :environment=>{"A"=>"2", "B"=>"2"}, :group=>"gr", :pid_file=>"2.pid"},
344
- "c"=>{:name=>"c", :application=>"bla", :environment=>{"A"=>"1", "B"=>"2"}, :group=>"gr", :pid_file=>"3.pid"}}}}}}
345
- end
346
-
347
- it "scoped" do
348
- conf = <<-E
349
- Eye.application("bla") do
350
- start_timeout 10.seconds
351
-
352
- group(:a){}
353
-
354
- scoped do
355
- start_timeout 15.seconds
356
- group(:b){
357
- scoped do
358
-
359
- end
360
- }
361
- end
362
-
363
- group(:c){}
364
- end
365
- E
366
-
367
- Eye::Dsl.parse_apps(conf).should == {
368
- "bla" => {:name=>"bla", :start_timeout=>10, :groups=>{
369
- "a"=>{:name=>"a", :start_timeout=>10, :application=>"bla", :processes=>{}},
370
- "b"=>{:name=>"b", :start_timeout=>15, :application=>"bla", :processes=>{}},
371
- "c"=>{:name=>"c", :start_timeout=>10, :application=>"bla", :processes=>{}}}}}
372
- end
373
-
374
- end
375
-
376
- end