sanford 0.14.0 → 0.15.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.
- data/lib/sanford/connection_handler.rb +57 -44
- data/lib/sanford/error_handler.rb +44 -20
- data/lib/sanford/process.rb +9 -19
- data/lib/sanford/server.rb +47 -7
- data/lib/sanford/server_data.rb +8 -1
- data/lib/sanford/version.rb +1 -1
- data/sanford.gemspec +2 -2
- data/test/support/app_server.rb +5 -4
- data/test/support/factory.rb +8 -0
- data/test/unit/connection_handler_tests.rb +13 -15
- data/test/unit/error_handler_tests.rb +245 -109
- data/test/unit/process_tests.rb +10 -22
- data/test/unit/server_data_tests.rb +32 -16
- data/test/unit/server_tests.rb +99 -17
- metadata +10 -10
data/test/unit/server_tests.rb
CHANGED
@@ -23,6 +23,8 @@ module Sanford::Server
|
|
23
23
|
should have_imeths :receives_keep_alive
|
24
24
|
should have_imeths :verbose_logging, :logger
|
25
25
|
should have_imeths :init, :error
|
26
|
+
should have_imeths :on_worker_start, :on_worker_shutdown
|
27
|
+
should have_imeths :on_worker_sleep, :on_worker_wakeup
|
26
28
|
should have_imeths :router, :template_source
|
27
29
|
|
28
30
|
should "know its configuration" do
|
@@ -93,6 +95,22 @@ module Sanford::Server
|
|
93
95
|
assert_includes new_error_proc, subject.configuration.error_procs
|
94
96
|
end
|
95
97
|
|
98
|
+
should "allow reading/writing its configuration worker procs" do
|
99
|
+
p = proc{}
|
100
|
+
|
101
|
+
subject.on_worker_start(&p)
|
102
|
+
assert_equal [p], subject.configuration.worker_start_procs
|
103
|
+
|
104
|
+
subject.on_worker_shutdown(&p)
|
105
|
+
assert_equal [p], subject.configuration.worker_shutdown_procs
|
106
|
+
|
107
|
+
subject.on_worker_sleep(&p)
|
108
|
+
assert_equal [p], subject.configuration.worker_sleep_procs
|
109
|
+
|
110
|
+
subject.on_worker_wakeup(&p)
|
111
|
+
assert_equal [p], subject.configuration.worker_wakeup_procs
|
112
|
+
end
|
113
|
+
|
96
114
|
should "allow reading/writing its configuration router" do
|
97
115
|
new_router = Factory.string
|
98
116
|
subject.router(new_router)
|
@@ -124,13 +142,26 @@ module Sanford::Server
|
|
124
142
|
@server_class.name Factory.string
|
125
143
|
@server_class.ip Factory.string
|
126
144
|
@server_class.port Factory.integer
|
127
|
-
|
145
|
+
|
146
|
+
@error_procs = Factory.integer(3).times.map{ proc{} }
|
147
|
+
@error_procs.each{ |p| @server_class.error(&p) }
|
148
|
+
|
149
|
+
@start_procs = Factory.integer(3).times.map{ proc{} }
|
150
|
+
@shutdown_procs = Factory.integer(3).times.map{ proc{} }
|
151
|
+
@sleep_procs = Factory.integer(3).times.map{ proc{} }
|
152
|
+
@wakeup_procs = Factory.integer(3).times.map{ proc{} }
|
153
|
+
@start_procs.each { |p| @server_class.on_worker_start(&p) }
|
154
|
+
@shutdown_procs.each { |p| @server_class.on_worker_shutdown(&p) }
|
155
|
+
@sleep_procs.each { |p| @server_class.on_worker_sleep(&p) }
|
156
|
+
@wakeup_procs.each { |p| @server_class.on_worker_wakeup(&p) }
|
157
|
+
|
128
158
|
@server_class.router do
|
129
159
|
service Factory.string, TestHandler.to_s
|
130
160
|
end
|
131
161
|
|
132
|
-
@dat_tcp_server_spy =
|
162
|
+
@dat_tcp_server_spy = nil
|
133
163
|
Assert.stub(DatTCP::Server, :new) do |&block|
|
164
|
+
@dat_tcp_server_spy = DatTCP::ServerSpy.new
|
134
165
|
@dat_tcp_server_spy.serve_proc = block
|
135
166
|
@dat_tcp_server_spy
|
136
167
|
end
|
@@ -156,22 +187,34 @@ module Sanford::Server
|
|
156
187
|
sd = subject.server_data
|
157
188
|
|
158
189
|
assert_instance_of Sanford::ServerData, sd
|
159
|
-
assert_equal configuration.name,
|
160
|
-
assert_equal configuration.ip,
|
161
|
-
assert_equal configuration.port,
|
162
|
-
assert_equal configuration.verbose_logging,
|
163
|
-
assert_equal configuration.receives_keep_alive,
|
164
|
-
assert_equal configuration.error_procs,
|
165
|
-
assert_equal configuration.
|
190
|
+
assert_equal configuration.name, sd.name
|
191
|
+
assert_equal configuration.ip, sd.ip
|
192
|
+
assert_equal configuration.port, sd.port
|
193
|
+
assert_equal configuration.verbose_logging, sd.verbose_logging
|
194
|
+
assert_equal configuration.receives_keep_alive, sd.receives_keep_alive
|
195
|
+
assert_equal configuration.error_procs, sd.error_procs
|
196
|
+
assert_equal configuration.worker_start_procs, sd.worker_start_procs
|
197
|
+
assert_equal configuration.worker_shutdown_procs, sd.worker_shutdown_procs
|
198
|
+
assert_equal configuration.worker_sleep_procs, sd.worker_sleep_procs
|
199
|
+
assert_equal configuration.worker_wakeup_procs, sd.worker_wakeup_procs
|
200
|
+
assert_equal configuration.routes, sd.routes.values
|
201
|
+
|
166
202
|
assert_instance_of configuration.logger.class, sd.logger
|
167
203
|
end
|
168
204
|
|
169
205
|
should "know its dat tcp server" do
|
170
|
-
|
206
|
+
assert_not_nil @dat_tcp_server_spy
|
171
207
|
assert_not_nil @dat_tcp_server_spy.serve_proc
|
208
|
+
|
209
|
+
assert_equal @start_procs, @dat_tcp_server_spy.worker_start_procs
|
210
|
+
assert_equal @shutdown_procs, @dat_tcp_server_spy.worker_shutdown_procs
|
211
|
+
assert_equal @sleep_procs, @dat_tcp_server_spy.worker_sleep_procs
|
212
|
+
assert_equal @wakeup_procs, @dat_tcp_server_spy.worker_wakeup_procs
|
213
|
+
|
214
|
+
assert_equal @dat_tcp_server_spy, subject.dat_tcp_server
|
172
215
|
end
|
173
216
|
|
174
|
-
should "
|
217
|
+
should "demeter its server data" do
|
175
218
|
assert_equal subject.server_data.name, subject.name
|
176
219
|
assert_equal subject.server_data.ip, subject.configured_ip
|
177
220
|
assert_equal subject.server_data.port, subject.configured_port
|
@@ -195,6 +238,16 @@ module Sanford::Server
|
|
195
238
|
assert_equal subject.server_data.port, @dat_tcp_server_spy.port
|
196
239
|
end
|
197
240
|
|
241
|
+
should "write its ip and port back to its server data" do
|
242
|
+
ip = Factory.string
|
243
|
+
port = Factory.integer
|
244
|
+
assert_not_equal ip, subject.server_data.ip
|
245
|
+
assert_not_equal port, subject.server_data.port
|
246
|
+
subject.listen(ip, port)
|
247
|
+
assert_equal ip, subject.server_data.ip
|
248
|
+
assert_equal port, subject.server_data.port
|
249
|
+
end
|
250
|
+
|
198
251
|
should "pass any args to its dat tcp server using `listen`" do
|
199
252
|
ip, port = Factory.string, Factory.integer
|
200
253
|
subject.listen(ip, port)
|
@@ -386,12 +439,21 @@ module Sanford::Server
|
|
386
439
|
|
387
440
|
desc "Configuration"
|
388
441
|
setup do
|
442
|
+
@orig_ip_env_var = ENV['SANFORD_IP']
|
443
|
+
@orig_port_env_var = ENV['SANFORD_PORT']
|
444
|
+
ENV.delete('SANFORD_IP')
|
445
|
+
ENV.delete('SANFORD_PORT')
|
446
|
+
|
389
447
|
@configuration = Configuration.new.tap do |c|
|
390
448
|
c.name Factory.string
|
391
|
-
c.ip
|
449
|
+
c.ip Factory.string
|
392
450
|
c.port Factory.integer
|
393
451
|
end
|
394
452
|
end
|
453
|
+
teardown do
|
454
|
+
ENV['SANFORD_IP'] = @orig_ip_env_var
|
455
|
+
ENV['SANFORD_PORT'] = @orig_port_env_var
|
456
|
+
end
|
395
457
|
subject{ @configuration }
|
396
458
|
|
397
459
|
should have_options :name, :ip, :port, :pid_file
|
@@ -400,6 +462,8 @@ module Sanford::Server
|
|
400
462
|
should have_options :template_source
|
401
463
|
should have_accessors :init_procs, :error_procs
|
402
464
|
should have_accessors :router
|
465
|
+
should have_readers :worker_start_procs, :worker_shutdown_procs
|
466
|
+
should have_readers :worker_sleep_procs, :worker_wakeup_procs
|
403
467
|
should have_imeths :routes
|
404
468
|
should have_imeths :to_hash
|
405
469
|
should have_imeths :valid?, :validate!
|
@@ -424,10 +488,24 @@ module Sanford::Server
|
|
424
488
|
assert_equal [], config.init_procs
|
425
489
|
assert_equal [], config.error_procs
|
426
490
|
|
491
|
+
assert_equal [], subject.worker_start_procs
|
492
|
+
assert_equal [], subject.worker_shutdown_procs
|
493
|
+
assert_equal [], subject.worker_sleep_procs
|
494
|
+
assert_equal [], subject.worker_wakeup_procs
|
495
|
+
|
427
496
|
assert_instance_of Sanford::Router, config.router
|
428
497
|
assert_empty config.router.routes
|
429
498
|
end
|
430
499
|
|
500
|
+
should "use env vars for its options if they are set" do
|
501
|
+
ENV['SANFORD_IP'] = Factory.string
|
502
|
+
ENV['SANFORD_PORT'] = Factory.integer.to_s
|
503
|
+
|
504
|
+
config = Configuration.new
|
505
|
+
assert_equal ENV['SANFORD_IP'], config.ip
|
506
|
+
assert_equal ENV['SANFORD_PORT'].to_i, config.port
|
507
|
+
end
|
508
|
+
|
431
509
|
should "not be valid by default" do
|
432
510
|
assert_false subject.valid?
|
433
511
|
end
|
@@ -438,12 +516,16 @@ module Sanford::Server
|
|
438
516
|
assert_equal subject.router.routes, subject.routes
|
439
517
|
end
|
440
518
|
|
441
|
-
should "include its
|
519
|
+
should "include its procs and router/routes in its `to_hash`" do
|
442
520
|
config_hash = subject.to_hash
|
443
|
-
assert_equal subject.init_procs,
|
444
|
-
assert_equal subject.error_procs,
|
445
|
-
assert_equal subject.
|
446
|
-
assert_equal subject.
|
521
|
+
assert_equal subject.init_procs, config_hash[:init_procs]
|
522
|
+
assert_equal subject.error_procs, config_hash[:error_procs]
|
523
|
+
assert_equal subject.worker_start_procs, config_hash[:worker_start_procs]
|
524
|
+
assert_equal subject.worker_shutdown_procs, config_hash[:worker_shutdown_procs]
|
525
|
+
assert_equal subject.worker_sleep_procs, config_hash[:worker_sleep_procs]
|
526
|
+
assert_equal subject.worker_wakeup_procs, config_hash[:worker_wakeup_procs]
|
527
|
+
assert_equal subject.router, config_hash[:router]
|
528
|
+
assert_equal subject.routes, config_hash[:routes]
|
447
529
|
end
|
448
530
|
|
449
531
|
should "call its init procs when validated" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanford
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 35
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 15
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.15.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Collin Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2015-
|
19
|
+
date: 2015-09-10 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -24,11 +24,11 @@ dependencies:
|
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
hash:
|
27
|
+
hash: 5
|
28
28
|
segments:
|
29
29
|
- 0
|
30
|
-
-
|
31
|
-
version: "0.
|
30
|
+
- 7
|
31
|
+
version: "0.7"
|
32
32
|
type: :runtime
|
33
33
|
name: dat-tcp
|
34
34
|
version_requirements: *id001
|
@@ -69,11 +69,11 @@ dependencies:
|
|
69
69
|
requirements:
|
70
70
|
- - ~>
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
hash:
|
72
|
+
hash: 29
|
73
73
|
segments:
|
74
74
|
- 2
|
75
|
-
-
|
76
|
-
version: "2.
|
75
|
+
- 15
|
76
|
+
version: "2.15"
|
77
77
|
type: :development
|
78
78
|
name: assert
|
79
79
|
version_requirements: *id004
|