daemon_objects 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|