servolux 0.9.3 → 0.9.4
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.
- data/History.txt +6 -0
- data/Rakefile +0 -2
- data/lib/servolux/daemon.rb +12 -4
- data/spec/daemon_spec.rb +5 -15
- data/spec/server_spec.rb +10 -0
- data/version.txt +1 -1
- metadata +9 -9
data/History.txt
CHANGED
data/Rakefile
CHANGED
data/lib/servolux/daemon.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
1
3
|
# == Synopsis
|
2
4
|
# The Daemon takes care of the work of creating and managing daemon
|
3
5
|
# processes from Ruby.
|
@@ -220,21 +222,26 @@ class Servolux::Daemon
|
|
220
222
|
@logfile_reader.look_for = val
|
221
223
|
end
|
222
224
|
|
223
|
-
# Start the daemon process.
|
225
|
+
# Start the daemon process. Passing in +false+ to this method will prevent
|
226
|
+
# the parent from exiting after the daemon process starts.
|
224
227
|
#
|
225
228
|
# @return [Daemon] self
|
226
229
|
#
|
227
|
-
def startup
|
230
|
+
def startup( do_exit = true )
|
228
231
|
raise Error, "Fork is not supported in this Ruby environment." unless ::Servolux.fork?
|
229
232
|
return if alive?
|
230
233
|
|
231
234
|
logger.debug "About to fork ..."
|
232
235
|
@piper = ::Servolux::Piper.daemon(nochdir, noclose)
|
233
236
|
|
237
|
+
# Make sure we have an idea of the state of the log file BEFORE the child
|
238
|
+
# gets a chance to write to it.
|
239
|
+
@logfile_reader.updated? if @logfile_reader
|
240
|
+
|
234
241
|
@piper.parent {
|
235
242
|
@piper.timeout = 0.1
|
236
243
|
wait_for_startup
|
237
|
-
exit!(0)
|
244
|
+
exit!(0) if do_exit
|
238
245
|
}
|
239
246
|
|
240
247
|
@piper.child { run_startup_command }
|
@@ -426,7 +433,8 @@ class Servolux::Daemon
|
|
426
433
|
end
|
427
434
|
|
428
435
|
def stat
|
429
|
-
File.stat(@filename) if @filename
|
436
|
+
s = File.stat(@filename) if @filename && test(?f, @filename)
|
437
|
+
s || OpenStruct.new(:mtime => Time.at(0), :size => 0)
|
430
438
|
end
|
431
439
|
|
432
440
|
def updated?
|
data/spec/daemon_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe Servolux::Daemon do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
after(:each) do
|
28
|
-
@daemon.shutdown if defined? @daemon
|
28
|
+
@daemon.shutdown if defined? @daemon && @daemon
|
29
29
|
FileUtils.rm_f [log_fn, pid_fn]
|
30
30
|
end
|
31
31
|
|
@@ -34,13 +34,8 @@ describe Servolux::Daemon do
|
|
34
34
|
server.extend TestServer
|
35
35
|
@daemon = Servolux::Daemon.new(:server => server, :log_file => log_fn, :timeout => 8)
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
piper.parent {
|
40
|
-
Process.wait piper.pid
|
41
|
-
$?.exitstatus.should == 0
|
42
|
-
@daemon.should be_alive
|
43
|
-
}
|
37
|
+
@daemon.startup false
|
38
|
+
@daemon.should be_alive
|
44
39
|
end
|
45
40
|
|
46
41
|
it 'waits for a particular line to appear in the log file' do
|
@@ -48,13 +43,8 @@ describe Servolux::Daemon do
|
|
48
43
|
server.extend TestServer
|
49
44
|
@daemon = Servolux::Daemon.new(:server => server, :log_file => log_fn, :look_for => 'executing run loop [2]', :timeout => 8)
|
50
45
|
|
51
|
-
|
52
|
-
|
53
|
-
piper.parent {
|
54
|
-
Process.wait piper.pid
|
55
|
-
$?.exitstatus.should == 0
|
56
|
-
@daemon.should be_alive
|
57
|
-
}
|
46
|
+
@daemon.startup false
|
47
|
+
@daemon.should be_alive
|
58
48
|
end
|
59
49
|
|
60
50
|
it 'raises an error if the startup timeout is exceeded' do
|
data/spec/server_spec.rb
CHANGED
@@ -34,20 +34,30 @@ describe Servolux::Server do
|
|
34
34
|
it 'generates a PID file with mode rw-r----- by default' do
|
35
35
|
t = Thread.new {@server.startup}
|
36
36
|
Thread.pass until @server.running? and t.status == 'sleep'
|
37
|
+
test(?e, @server.pid_file).should be_true
|
37
38
|
|
38
39
|
@log_output.readline.chomp.should == %q(DEBUG Servolux : Server "Test Server" creating pid file "test_server.pid")
|
39
40
|
@log_output.readline.chomp.should == %q(DEBUG Servolux : Starting)
|
40
41
|
(File.stat(@server.pid_file).mode & 0777).should == 0640
|
42
|
+
|
43
|
+
@server.shutdown
|
44
|
+
Thread.pass until t.status == false
|
45
|
+
test(?e, @server.pid_file).should be_false
|
41
46
|
end
|
42
47
|
|
43
48
|
it 'generates PID file with the specified permissions' do
|
44
49
|
@server.pid_file_mode = 0400
|
45
50
|
t = Thread.new {@server.startup}
|
46
51
|
Thread.pass until @server.running? and t.status == 'sleep'
|
52
|
+
test(?e, @server.pid_file).should be_true
|
47
53
|
|
48
54
|
@log_output.readline.chomp.should == %q(DEBUG Servolux : Server "Test Server" creating pid file "test_server.pid")
|
49
55
|
@log_output.readline.chomp.should == %q(DEBUG Servolux : Starting)
|
50
56
|
(File.stat(@server.pid_file).mode & 0777).should == 0400
|
57
|
+
|
58
|
+
@server.shutdown
|
59
|
+
Thread.pass until t.status == false
|
60
|
+
test(?e, @server.pid_file).should be_false
|
51
61
|
end
|
52
62
|
|
53
63
|
it 'shuts down gracefully when signaled' do
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.4
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
version: 0.9.
|
8
|
+
- 4
|
9
|
+
version: 0.9.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tim Pease
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-18 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -54,9 +54,9 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
segments:
|
56
56
|
- 1
|
57
|
-
-
|
58
|
-
-
|
59
|
-
version: 1.
|
57
|
+
- 4
|
58
|
+
- 1
|
59
|
+
version: 1.4.1
|
60
60
|
type: :development
|
61
61
|
version_requirements: *id003
|
62
62
|
- !ruby/object:Gem::Dependency
|
@@ -83,8 +83,8 @@ dependencies:
|
|
83
83
|
segments:
|
84
84
|
- 3
|
85
85
|
- 4
|
86
|
-
-
|
87
|
-
version: 3.4.
|
86
|
+
- 1
|
87
|
+
version: 3.4.1
|
88
88
|
type: :development
|
89
89
|
version_requirements: *id005
|
90
90
|
description: |-
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: "0"
|
151
151
|
requirements: []
|
152
152
|
|
153
|
-
rubyforge_project:
|
153
|
+
rubyforge_project: servolux
|
154
154
|
rubygems_version: 1.3.6
|
155
155
|
signing_key:
|
156
156
|
specification_version: 3
|