resqued 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,9 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- require 'fileutils'
4
- require 'tmpdir'
3
+ require "fileutils"
4
+ require "tmpdir"
5
5
 
6
- require 'resqued/config'
6
+ require "resqued/config"
7
7
 
8
8
  describe Resqued::Config do
9
9
  context do
@@ -19,8 +19,8 @@ describe Resqued::Config do
19
19
  end
20
20
  let(:config) { Resqued::Config.new([@config_file]) }
21
21
 
22
- it("can require_relative") { config.build_workers ; expect($test_val).to eq(:ok) }
23
- it("does not override require_relative in required files") { config.build_workers ; expect($other_test_val).to eq(:ok) }
22
+ it("can require_relative") { config.build_workers; expect($test_val).to eq(:ok) }
23
+ it("does not override require_relative in required files") { config.build_workers; expect($other_test_val).to eq(:ok) }
24
24
 
25
25
  def make_file(dir, relative_path, content)
26
26
  File.join(dir, relative_path).tap do |path|
@@ -1,34 +1,33 @@
1
- require 'spec_helper'
2
- require 'resqued/sleepy'
3
- require 'thread'
1
+ require "spec_helper"
2
+ require "resqued/sleepy"
4
3
 
5
4
  describe Resqued::Sleepy do
6
5
  include Resqued::Sleepy
7
6
 
8
- it 'sleeps' do
7
+ it "sleeps" do
9
8
  expect { yawn(0.2) }.to run_for(0.2)
10
9
  end
11
10
 
12
- it 'wakes on `awake`' do
13
- Thread.new { sleep 0.1 ; awake }
11
+ it "wakes on `awake`" do
12
+ Thread.new { sleep 0.1; awake }
14
13
  expect { yawn(2.0) }.to run_for(0.1)
15
14
  end
16
15
 
17
- it 'wakes on IO' do
16
+ it "wakes on IO" do
18
17
  rd, wr = IO.pipe
19
- Thread.new { sleep 0.1 ; wr.write('.') }
18
+ Thread.new { sleep 0.1; wr.write(".") }
20
19
  expect { yawn(2.0, rd) }.to run_for(0.1)
21
20
  end
22
21
 
23
- it 'does not sleep if duration is 0' do
22
+ it "does not sleep if duration is 0" do
24
23
  expect { yawn(-0.000001) }.to run_for(0.0)
25
24
  end
26
25
 
27
- it 'does not sleep if duration is negative' do
26
+ it "does not sleep if duration is negative" do
28
27
  expect { yawn(0) }.to run_for(0.0)
29
28
  end
30
29
 
31
- it 'sleeps if io is nil' do
30
+ it "sleeps if io is nil" do
32
31
  expect { yawn(0.5, nil) }.to run_for(0.5)
33
32
  end
34
33
  end
@@ -1,14 +1,14 @@
1
- require 'spec_helper'
2
- require 'resqued/test_case'
1
+ require "spec_helper"
2
+ require "resqued/test_case"
3
3
 
4
4
  describe Resqued::TestCase do
5
5
  let(:test_case) { Object.new.extend(the_module) }
6
6
 
7
- context 'LoadConfig' do
7
+ context "LoadConfig" do
8
8
  let(:the_module) { described_class::LoadConfig }
9
- it { expect { test_case.assert_resqued 'spec/fixtures/test_case_environment.rb', 'spec/fixtures/test_case_clean.rb' }.not_to raise_error }
10
- it { expect { test_case.assert_resqued 'spec/fixtures/test_case_environment.rb', 'spec/fixtures/test_case_before_fork_raises.rb' }.to raise_error }
11
- it { expect { test_case.assert_resqued 'spec/fixtures/test_case_environment.rb', 'spec/fixtures/test_case_after_fork_raises.rb' }.to raise_error }
12
- it { expect { test_case.assert_resqued 'spec/fixtures/test_case_environment.rb', 'spec/fixtures/test_case_no_workers.rb' }.not_to raise_error }
9
+ it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_clean.rb" }.not_to raise_error }
10
+ it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_before_fork_raises.rb" }.to raise_error }
11
+ it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_after_fork_raises.rb" }.to raise_error }
12
+ it { expect { test_case.assert_resqued "spec/fixtures/test_case_environment.rb", "spec/fixtures/test_case_no_workers.rb" }.not_to raise_error }
13
13
  end
14
14
  end
@@ -1 +1 @@
1
- require 'support/custom_matchers'
1
+ require "support/custom_matchers"
@@ -8,7 +8,7 @@ module CustomMatchers
8
8
  class RunFor
9
9
  def initialize(expected_duration)
10
10
  @expected_duration = expected_duration
11
- @epsilon = 0.01
11
+ @epsilon = 0.01
12
12
  end
13
13
 
14
14
  def within(epsilon)
@@ -0,0 +1,84 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+ set -o nounset
5
+
6
+ WORKDIR="$(mktemp)"
7
+ PIDFILE="${WORKDIR}/resqued.pid"
8
+ CONFIG="${WORKDIR}/config.rb"
9
+
10
+ # mktemp makes a file, but we want a dir.
11
+ rm -f "$WORKDIR"
12
+ mkdir "$WORKDIR"
13
+
14
+ set -x
15
+ cd "$(dirname "$0")/.."
16
+
17
+ main() {
18
+ trap cleanup EXIT
19
+
20
+ configure_resqued
21
+ start_resqued
22
+ restart_resqued
23
+ stop_resqued
24
+ }
25
+
26
+ configure_resqued() {
27
+ # Don't configure any workers. That way, we don't need to have redis running.
28
+ touch "${CONFIG}"
29
+ }
30
+
31
+ start_resqued() {
32
+ bin_resqued=bin/resqued
33
+ if [ -x gemfiles/bin/resqued ]; then
34
+ bin_resqued=gemfiles/bin/resqued
35
+ fi
36
+ $bin_resqued --pidfile "${PIDFILE}" "${CONFIG}" &
37
+ sleep 1
38
+ echo expect to find the master process and the first listener
39
+ running # set -e will make the test fail if it's not running
40
+ ps axo pid,args -H | grep [r]esqued-
41
+ ps axo pid,args | grep [r]esqued- | grep -q 'listener #1.*running'
42
+ }
43
+
44
+ restart_resqued() {
45
+ local pid="$(cat "${PIDFILE}")"
46
+ kill -HUP "$pid"
47
+ sleep 1
48
+ echo expect to find the master process and the second listener
49
+ running
50
+ ps axo pid,args -H | grep [r]esqued-
51
+ ps axo pid,args | grep [r]esqued- | grep -qv 'listener #1'
52
+ ps axo pid,args | grep [r]esqued- | grep -q 'listener #2.*running'
53
+ }
54
+
55
+ stop_resqued() {
56
+ local pid="$(cat "${PIDFILE}")"
57
+ kill -TERM "$pid"
58
+ sleep 1
59
+ echo expect everything to be stopped
60
+ if running >&/dev/null; then
61
+ echo "expected resqued to be stopped"
62
+ false
63
+ fi
64
+ ps axo pid,args -H | grep [r]esqued- || true
65
+ test -z "$(ps axo pid,args | grep [r]esqued-)"
66
+ }
67
+
68
+ running() {
69
+ set -e
70
+ test -f "${PIDFILE}"
71
+ local pid="$(cat "${PIDFILE}")"
72
+ kill -0 "$pid"
73
+ ps o pid,args "$pid"
74
+ }
75
+
76
+ cleanup() {
77
+ while running >&/dev/null; do
78
+ kill -TERM "$(cat "${PIDFILE}")"
79
+ sleep 2
80
+ done
81
+ rm -rfv "${WORKDIR}" || rm -rf "${WORKDIR}"
82
+ }
83
+
84
+ main
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resqued
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Burke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2019-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kgio
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mono_logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: resque
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +53,19 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: 1.9.1
41
55
  - !ruby/object:Gem::Dependency
42
- name: mono_logger
56
+ name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.0'
48
- type: :runtime
61
+ version: 0.9.0
62
+ type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.0'
68
+ version: 0.9.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -73,24 +87,23 @@ dependencies:
73
87
  - !ruby/object:Gem::Version
74
88
  version: '2.99'
75
89
  - !ruby/object:Gem::Dependency
76
- name: rake
90
+ name: rubocop
77
91
  requirement: !ruby/object:Gem::Requirement
78
92
  requirements:
79
- - - "~>"
93
+ - - '='
80
94
  - !ruby/object:Gem::Version
81
- version: 0.9.0
95
+ version: 0.78.0
82
96
  type: :development
83
97
  prerelease: false
84
98
  version_requirements: !ruby/object:Gem::Requirement
85
99
  requirements:
86
- - - "~>"
100
+ - - '='
87
101
  - !ruby/object:Gem::Version
88
- version: 0.9.0
102
+ version: 0.78.0
89
103
  description: Daemon of resque workers
90
104
  email: spraints@gmail.com
91
105
  executables:
92
106
  - resqued
93
- - resqued-listener
94
107
  extensions: []
95
108
  extra_rdoc_files: []
96
109
  files:
@@ -101,7 +114,6 @@ files:
101
114
  - docs/processes.md
102
115
  - docs/signals.md
103
116
  - exe/resqued
104
- - exe/resqued-listener
105
117
  - lib/resqued.rb
106
118
  - lib/resqued/backoff.rb
107
119
  - lib/resqued/config.rb
@@ -111,10 +123,14 @@ files:
111
123
  - lib/resqued/config/dsl.rb
112
124
  - lib/resqued/config/worker.rb
113
125
  - lib/resqued/daemon.rb
126
+ - lib/resqued/exec_on_hup.rb
114
127
  - lib/resqued/listener.rb
128
+ - lib/resqued/listener_pool.rb
115
129
  - lib/resqued/listener_proxy.rb
130
+ - lib/resqued/listener_state.rb
116
131
  - lib/resqued/logging.rb
117
132
  - lib/resqued/master.rb
133
+ - lib/resqued/master_state.rb
118
134
  - lib/resqued/pidfile.rb
119
135
  - lib/resqued/procline_version.rb
120
136
  - lib/resqued/runtime_info.rb
@@ -136,6 +152,7 @@ files:
136
152
  - spec/resqued/test_case_spec.rb
137
153
  - spec/spec_helper.rb
138
154
  - spec/support/custom_matchers.rb
155
+ - spec/test_restart.sh
139
156
  homepage: https://github.com/spraints/resqued
140
157
  licenses:
141
158
  - MIT
@@ -174,4 +191,5 @@ test_files:
174
191
  - spec/fixtures/test_case_no_workers.rb
175
192
  - spec/fixtures/test_case_after_fork_raises.rb
176
193
  - spec/fixtures/test_case_clean.rb
194
+ - spec/test_restart.sh
177
195
  - spec/support/custom_matchers.rb
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- puts "resqued-listener is deprecated and will be removed."
4
- puts "Stop and start the master process to remove your dependence on resqued-listener."
5
- require 'resqued/listener'
6
- Resqued::Listener.exec!