resqued 0.9.0 → 0.10.0

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.
@@ -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!