daemon_objects 0.2.2 → 0.2.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.
- data/daemon_objects.gemspec +1 -1
- data/lib/daemon_objects/version.rb +1 -1
- data/spec/lib/daemon_objects/base_spec.rb +27 -27
- data/spec/lib/daemon_objects/consumer_base_spec.rb +4 -4
- data/spec/lib/daemon_objects/logging_spec.rb +5 -5
- data/spec/lib/daemon_objects/runner_spec.rb +3 -3
- data/spec/lib/daemon_objects_spec.rb +5 -5
- data/spec/spec_helper.rb +0 -1
- metadata +6 -6
data/daemon_objects.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency "bunny", "~> 1.1.0"
|
24
24
|
spec.add_dependency "rake"
|
25
25
|
|
26
|
-
spec.add_development_dependency "rspec"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.1"
|
27
27
|
spec.add_development_dependency "pry-nav"
|
28
28
|
spec.add_development_dependency "memory_logger", "~> 0.0.3"
|
29
29
|
end
|
@@ -9,9 +9,9 @@ describe DaemonObjects::Base do
|
|
9
9
|
|
10
10
|
describe '#app_directory' do
|
11
11
|
it 'should be Rake.original_directory if Rails is not defined' do
|
12
|
-
Rake.
|
12
|
+
allow(Rake).to receive(:original_dir).and_return("/mydir")
|
13
13
|
MyDaemon = Class.new(DaemonObjects::Base)
|
14
|
-
MyDaemon.app_directory.
|
14
|
+
expect(MyDaemon.app_directory).to eq(Rake.original_dir)
|
15
15
|
end
|
16
16
|
|
17
17
|
context 'Rails' do
|
@@ -29,7 +29,7 @@ describe DaemonObjects::Base do
|
|
29
29
|
|
30
30
|
it 'should be Rails.root is Rails is defined' do
|
31
31
|
MyDaemon = Class.new(DaemonObjects::Base)
|
32
|
-
MyDaemon.app_directory.
|
32
|
+
expect(MyDaemon.app_directory).to eq(Rails.root)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -45,7 +45,7 @@ describe DaemonObjects::Base do
|
|
45
45
|
describe '#extends' do
|
46
46
|
it 'should extend logging' do
|
47
47
|
MyDaemon = Class.new(DaemonObjects::Base)
|
48
|
-
MyDaemon.singleton_class.included_modules.
|
48
|
+
expect(MyDaemon.singleton_class.included_modules).to include(DaemonObjects::Logging)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -58,7 +58,7 @@ describe DaemonObjects::Base do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
MyDaemon.run
|
61
|
-
MyDaemon.logger.logged_output.
|
61
|
+
expect(MyDaemon.logger.logged_output).to match(/Starting consumer/)
|
62
62
|
end
|
63
63
|
|
64
64
|
end
|
@@ -66,7 +66,7 @@ describe DaemonObjects::Base do
|
|
66
66
|
describe '#start' do
|
67
67
|
it 'should call daemon run_proc' do
|
68
68
|
MyDaemon = Class.new(DaemonObjects::Base)
|
69
|
-
Daemons.
|
69
|
+
expect(Daemons).to receive(:run_proc).
|
70
70
|
with(MyDaemon.proc_name,
|
71
71
|
{ :ARGV => ['start', '-f'],
|
72
72
|
:log_dir => "/tmp",
|
@@ -80,7 +80,7 @@ describe DaemonObjects::Base do
|
|
80
80
|
describe '#stop' do
|
81
81
|
it 'should call daemon stop_proc' do
|
82
82
|
MyDaemon = Class.new(DaemonObjects::Base)
|
83
|
-
Daemons.
|
83
|
+
expect(Daemons).to receive(:run_proc).
|
84
84
|
with(MyDaemon.proc_name,
|
85
85
|
{ :ARGV => ['stop', '-f'],
|
86
86
|
:dir => MyDaemon.pid_directory})
|
@@ -92,14 +92,14 @@ describe DaemonObjects::Base do
|
|
92
92
|
it 'should constantize a file with multiple part name' do
|
93
93
|
ThreePartNameConsumer = Class.new
|
94
94
|
ThreePartNameDaemon = Class.new(DaemonObjects::Base)
|
95
|
-
ThreePartNameDaemon.consumer_class.
|
95
|
+
expect(ThreePartNameDaemon.consumer_class).to eq(ThreePartNameConsumer)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
99
|
describe '##proc_name' do
|
100
100
|
it 'should underscore class to get daemon name' do
|
101
101
|
ThreePartNameDaemon = Class.new(DaemonObjects::Base)
|
102
|
-
ThreePartNameDaemon.proc_name.
|
102
|
+
expect(ThreePartNameDaemon.proc_name).to eq("three_part_name_daemon")
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -135,7 +135,7 @@ describe DaemonObjects::Base do
|
|
135
135
|
|
136
136
|
it 'should set environment' do
|
137
137
|
DaemonObjects.environment = "theenv"
|
138
|
-
consumer.environment.
|
138
|
+
expect(consumer.environment).to eq("theenv")
|
139
139
|
end
|
140
140
|
|
141
141
|
it 'should set app directory' do
|
@@ -143,14 +143,14 @@ describe DaemonObjects::Base do
|
|
143
143
|
"thedir"
|
144
144
|
end
|
145
145
|
|
146
|
-
consumer.app_directory.
|
146
|
+
expect(consumer.app_directory).to eq("thedir")
|
147
147
|
end
|
148
148
|
|
149
149
|
it 'should set logger' do
|
150
150
|
logger = MemoryLogger::Logger.new
|
151
|
-
MyDaemon.
|
151
|
+
allow(MyDaemon).to receive(:logger).and_return(logger)
|
152
152
|
|
153
|
-
consumer.logger.
|
153
|
+
expect(consumer.logger).to eq(logger)
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
@@ -177,7 +177,7 @@ describe DaemonObjects::Base do
|
|
177
177
|
end
|
178
178
|
|
179
179
|
bunny = double(Bunny).as_null_object
|
180
|
-
Bunny.
|
180
|
+
expect(Bunny).to receive(:new).with('amqp://localhost:4567').and_return(bunny)
|
181
181
|
MyDaemon.run
|
182
182
|
end
|
183
183
|
|
@@ -185,7 +185,7 @@ describe DaemonObjects::Base do
|
|
185
185
|
MyConsumer = Class.new(DaemonObjects::ConsumerBase)
|
186
186
|
MyDaemon = Class.new(DaemonObjects::Base)
|
187
187
|
|
188
|
-
Bunny.
|
188
|
+
expect(Bunny).not_to receive(:new)
|
189
189
|
MyDaemon.run
|
190
190
|
|
191
191
|
end
|
@@ -199,23 +199,23 @@ describe DaemonObjects::Base do
|
|
199
199
|
end
|
200
200
|
|
201
201
|
bunny = double(Bunny).as_null_object
|
202
|
-
Bunny.
|
202
|
+
allow(Bunny).to receive(:new).and_return(bunny)
|
203
203
|
channel = double(Bunny::Channel)
|
204
|
-
bunny.
|
205
|
-
channel.
|
204
|
+
allow(bunny).to receive(:create_channel).and_return(channel)
|
205
|
+
expect(channel).not_to receive(:prefetch)
|
206
206
|
|
207
207
|
worker = MyWorker.new
|
208
208
|
consumer = MyDaemon.get_consumer
|
209
|
-
MyDaemon.
|
209
|
+
allow(MyDaemon).to receive(:get_consumer).and_return(consumer)
|
210
210
|
|
211
|
-
MyWorker.
|
211
|
+
expect(MyWorker).to receive(:new).
|
212
212
|
with(channel, consumer, {
|
213
213
|
:queue_name => 'queue',
|
214
214
|
:logger => MyDaemon.logger,
|
215
215
|
:arguments => {}
|
216
216
|
}).
|
217
217
|
and_return(worker)
|
218
|
-
worker.
|
218
|
+
expect(worker).to receive(:start)
|
219
219
|
|
220
220
|
MyDaemon.run
|
221
221
|
end
|
@@ -230,24 +230,24 @@ describe DaemonObjects::Base do
|
|
230
230
|
end
|
231
231
|
|
232
232
|
bunny = double(Bunny).as_null_object
|
233
|
-
Bunny.
|
233
|
+
allow(Bunny).to receive(:new).and_return(bunny)
|
234
234
|
channel = double(Bunny::Channel)
|
235
|
-
channel.
|
235
|
+
expect(channel).to receive(:prefetch).with(1)
|
236
236
|
|
237
|
-
bunny.
|
237
|
+
allow(bunny).to receive(:create_channel).and_return(channel)
|
238
238
|
|
239
239
|
worker = MyWorker.new
|
240
240
|
consumer = MyDaemon.get_consumer
|
241
|
-
MyDaemon.
|
241
|
+
allow(MyDaemon).to receive(:get_consumer).and_return(consumer)
|
242
242
|
|
243
|
-
MyWorker.
|
243
|
+
expect(MyWorker).to receive(:new).
|
244
244
|
with(channel, consumer, {
|
245
245
|
:queue_name => 'queue',
|
246
246
|
:logger => MyDaemon.logger,
|
247
247
|
:arguments => {}
|
248
248
|
}).
|
249
249
|
and_return(worker)
|
250
|
-
worker.
|
250
|
+
expect(worker).to receive(:start)
|
251
251
|
|
252
252
|
MyDaemon.run
|
253
253
|
end
|
@@ -19,7 +19,7 @@ describe DaemonObjects::ConsumerBase do
|
|
19
19
|
h = Harness.new(:logger => MemoryLogger::Logger.new)
|
20
20
|
h.handle_message({:x => 1})
|
21
21
|
|
22
|
-
h.payloads_received.
|
22
|
+
expect(h.payloads_received).to eq([{:x => 1}])
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -29,17 +29,17 @@ describe DaemonObjects::ConsumerBase do
|
|
29
29
|
|
30
30
|
it 'should set logger' do
|
31
31
|
h = harness.new(:logger => logger)
|
32
|
-
h.logger.
|
32
|
+
expect(h.logger).to eq(logger)
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'should set app_directory' do
|
36
36
|
h = harness.new(:app_directory => 'app_dir')
|
37
|
-
h.app_directory.
|
37
|
+
expect(h.app_directory).to eq('app_dir')
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should set environment' do
|
41
41
|
h = harness.new(:environment => 'environment')
|
42
|
-
h.environment.
|
42
|
+
expect(h.environment).to eq('environment')
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -15,20 +15,20 @@ describe DaemonObjects::Logging do
|
|
15
15
|
it 'should create a logger at log/log_filename path' do
|
16
16
|
logger = MemoryLogger::Logger.new
|
17
17
|
|
18
|
-
Logger.
|
18
|
+
allow(Logger).to receive(:new).
|
19
19
|
with("#{harness.log_directory}/#{harness.log_filename}").
|
20
20
|
and_return(logger)
|
21
21
|
|
22
22
|
harness.logger.info("starting consumer")
|
23
23
|
|
24
|
-
logger.logged_output.
|
24
|
+
expect(logger.logged_output).to match(/starting consumer/)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe '#create_logger' do
|
29
29
|
it 'should create a logger with timestamp formatting' do
|
30
30
|
logger = harness.logger
|
31
|
-
logger.formatter.class.
|
31
|
+
expect(logger.formatter.class).to eq(::Logger::Formatter)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -44,13 +44,13 @@ describe DaemonObjects::Logging do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'should underscore name for log file' do
|
47
|
-
MyDaemon.log_filename.
|
47
|
+
expect(MyDaemon.log_filename).to eq("my_daemon.log")
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
describe '#log_directory' do
|
52
52
|
it "should use 'log' for default log path" do
|
53
|
-
harness.log_directory.to_s.
|
53
|
+
expect(harness.log_directory.to_s).to eq(File.join(harness.app_directory, "log"))
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -33,13 +33,13 @@ describe DaemonObjects::AmqpSupport do
|
|
33
33
|
|
34
34
|
bunny = double(Bunny).as_null_object
|
35
35
|
# First attempt should raise and retry
|
36
|
-
Bunny.
|
36
|
+
expect(Bunny).to receive(:new).
|
37
37
|
with('amqp://localhost:4567'){
|
38
38
|
raise Bunny::TCPConnectionFailed.new("could not connect", "localhost", 4567)
|
39
39
|
}
|
40
40
|
|
41
41
|
# Second attempt succeeds to exit spec
|
42
|
-
Bunny.
|
42
|
+
expect(Bunny).to receive(:new).
|
43
43
|
with('amqp://localhost:4567').and_return(bunny)
|
44
44
|
MyDaemon.run
|
45
45
|
end
|
@@ -55,7 +55,7 @@ describe DaemonObjects::AmqpSupport do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
Bunny.
|
58
|
+
expect(Bunny).to receive(:new).twice.
|
59
59
|
with('amqp://localhost:4567').and_return(bunny)
|
60
60
|
|
61
61
|
MyDaemon.run
|
@@ -4,14 +4,14 @@ describe DaemonObjects do
|
|
4
4
|
describe '#daemons' do
|
5
5
|
it 'should get daemons from daemon_path' do
|
6
6
|
DaemonObjects.daemon_path = File.join(FIXTURES_PATH, "daemon_path_spec")
|
7
|
-
DaemonObjects.daemons.sort.
|
7
|
+
expect(DaemonObjects.daemons.sort).to eq(["daemon_one", "daemon_two"])
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
describe '#get_daemon_name' do
|
12
12
|
it 'should parse out path and Daemon.rb' do
|
13
13
|
path = File.join(FIXTURES_PATH, "daemon_path_spec/daemon_one_daemon.rb")
|
14
|
-
DaemonObjects.get_daemon_name(path).
|
14
|
+
expect(DaemonObjects.get_daemon_name(path)).to eq("daemon_one")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -35,7 +35,7 @@ describe DaemonObjects do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'should use Rails.env if Rails is defined' do
|
38
|
-
DaemonObjects.environment.
|
38
|
+
expect(DaemonObjects.environment).to eq(Rails.env)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
@@ -48,12 +48,12 @@ describe DaemonObjects do
|
|
48
48
|
ENV["DAEMON_ENV"] = nil
|
49
49
|
end
|
50
50
|
it 'should use environment variable if Rails is not defined' do
|
51
|
-
DaemonObjects.environment.
|
51
|
+
expect(DaemonObjects.environment).to eq(ENV["DAEMON_ENV"])
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should be development if not Rails and no environment set' do
|
56
|
-
DaemonObjects.environment.
|
56
|
+
expect(DaemonObjects.environment).to eq("development")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -13,7 +13,6 @@ Dir[File.join(SPEC_PATH, "support/**/*.rb")].each{|f| require f}
|
|
13
13
|
FIXTURES_PATH = File.join(SPEC_PATH, "fixtures")
|
14
14
|
|
15
15
|
RSpec.configure do |config|
|
16
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
17
16
|
config.run_all_when_everything_filtered = true
|
18
17
|
config.filter_run :focus
|
19
18
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daemon_objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: daemons
|
@@ -80,17 +80,17 @@ dependencies:
|
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
85
|
+
version: '3.1'
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
93
|
+
version: '3.1'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: pry-nav
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|