Skip to content

Commit 80a5e55

Browse files
committed
Merge pull request resque#695 from panthomakos/pause-hooks
Added missing tests and pause attr_writers.
2 parents 60c81dd + 2c2f1d0 commit 80a5e55

File tree

2 files changed

+53
-13
lines changed

2 files changed

+53
-13
lines changed

lib/resque.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,17 +132,21 @@ def before_pause(&block)
132132
block ? register_hook(:before_pause, block) : hooks(:before_pause)
133133
end
134134

135-
# Set the after_pause proc.
136-
attr_writer :before_pause
135+
# Register a before_pause proc.
136+
def before_pause=(block)
137+
register_hook(:before_pause, block)
138+
end
137139

138140
# The `after_pause` hook will be run in the parent process after the
139141
# worker has paused (via SIGCONT).
140142
def after_pause(&block)
141143
block ? register_hook(:after_pause, block) : hooks(:after_pause)
142144
end
143145

144-
# Set the after_continue proc.
145-
attr_writer :after_pause
146+
# Register an after_pause proc.
147+
def after_pause=(block)
148+
register_hook(:after_pause, block)
149+
end
146150

147151
def to_s
148152
"Resque Client connected to #{redis_id}"

test/resque_hook_test.rb

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def self.perform
2525
assert_equal [], Resque.after_fork
2626
end
2727

28-
it 'it calls before_first_fork once' do
28+
it 'calls before_first_fork once' do
2929
counter = 0
3030

3131
Resque.before_first_fork { counter += 1 }
@@ -36,7 +36,7 @@ def self.perform
3636
assert_equal(1, counter)
3737
end
3838

39-
it 'it calls before_fork before each job' do
39+
it 'calls before_fork before each job' do
4040
counter = 0
4141

4242
Resque.before_fork { counter += 1 }
@@ -47,7 +47,7 @@ def self.perform
4747
assert_equal(2, counter)
4848
end
4949

50-
it 'it calls after_fork after each job' do
50+
it 'calls after_fork after each job' do
5151
counter = 0
5252

5353
Resque.after_fork { counter += 1 }
@@ -58,28 +58,28 @@ def self.perform
5858
assert_equal(2, counter)
5959
end
6060

61-
it 'it calls before_first_fork before forking' do
61+
it 'calls before_first_fork before forking' do
6262
Resque.before_first_fork { assert(!$called) }
6363

6464
Resque::Job.create(:jobs, CallNotifyJob)
6565
@worker.work(0)
6666
end
6767

68-
it 'it calls before_fork before forking' do
68+
it 'calls before_fork before forking' do
6969
Resque.before_fork { assert(!$called) }
7070

7171
Resque::Job.create(:jobs, CallNotifyJob)
7272
@worker.work(0)
7373
end
7474

75-
it 'it calls after_fork after forking' do
75+
it 'calls after_fork after forking' do
7676
Resque.after_fork { assert($called) }
7777

7878
Resque::Job.create(:jobs, CallNotifyJob)
7979
@worker.work(0)
8080
end
8181

82-
it 'it registeres multiple before_first_forks' do
82+
it 'registeres multiple before_first_forks' do
8383
first = false
8484
second = false
8585

@@ -92,7 +92,7 @@ def self.perform
9292
assert(first && second)
9393
end
9494

95-
it 'it registers multiple before_forks' do
95+
it 'registers multiple before_forks' do
9696
first = false
9797
second = false
9898

@@ -105,7 +105,7 @@ def self.perform
105105
assert(first && second)
106106
end
107107

108-
it 'it registers multiple after_forks' do
108+
it 'registers multiple after_forks' do
109109
first = false
110110
second = false
111111

@@ -117,4 +117,40 @@ def self.perform
117117
@worker.work(0)
118118
assert(first && second)
119119
end
120+
121+
it 'registers multiple before_pause hooks' do
122+
first = false
123+
second = false
124+
125+
Resque.before_pause { first = true }
126+
Resque.before_pause { second = true }
127+
128+
@worker.pause_processing
129+
130+
assert(!first && !second)
131+
132+
t = Thread.start { sleep(0.1); Process.kill('CONT', @worker.pid) }
133+
@worker.work(0)
134+
t.join
135+
136+
assert(first && second)
137+
end
138+
139+
it 'registers multiple after_pause hooks' do
140+
first = false
141+
second = false
142+
143+
Resque.after_pause { first = true }
144+
Resque.after_pause { second = true }
145+
146+
@worker.pause_processing
147+
148+
assert(!first && !second)
149+
150+
t = Thread.start { sleep(0.1); Process.kill('CONT', @worker.pid) }
151+
@worker.work(0)
152+
t.join
153+
154+
assert(first && second)
155+
end
120156
end

0 commit comments

Comments
 (0)