sanford 0.1.0 → 0.2.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/bench/report.txt +34 -4
- data/bench/runner.rb +122 -1
- data/bench/services.rb +5 -2
- data/lib/sanford/error_handler.rb +60 -0
- data/lib/sanford/exceptions.rb +11 -10
- data/lib/sanford/host.rb +79 -101
- data/lib/sanford/host_data.rb +55 -0
- data/lib/sanford/logger.rb +23 -0
- data/lib/sanford/manager.rb +13 -22
- data/lib/sanford/rake.rb +1 -0
- data/lib/sanford/runner.rb +50 -0
- data/lib/sanford/server.rb +31 -15
- data/lib/sanford/service_handler.rb +34 -43
- data/lib/sanford/test_runner.rb +47 -0
- data/lib/sanford/version.rb +1 -1
- data/lib/sanford/worker.rb +124 -0
- data/lib/sanford.rb +49 -6
- data/sanford.gemspec +1 -1
- data/test/helper.rb +1 -0
- data/test/support/fake_connection.rb +18 -0
- data/test/support/helpers.rb +6 -10
- data/test/support/service_handlers.rb +56 -68
- data/test/support/services.rb +55 -10
- data/test/system/managing_test.rb +18 -18
- data/test/system/request_handling_test.rb +10 -100
- data/test/unit/config_test.rb +1 -43
- data/test/unit/error_handler_test.rb +133 -0
- data/test/unit/host_configuration_test.rb +41 -0
- data/test/unit/host_data_test.rb +65 -0
- data/test/unit/host_test.rb +20 -112
- data/test/unit/{host/version_group_test.rb → host_version_group_test.rb} +0 -0
- data/test/unit/hosts_test.rb +56 -0
- data/test/unit/manager_test.rb +3 -3
- data/test/unit/runner_test.rb +26 -0
- data/test/unit/server_test.rb +10 -2
- data/test/unit/service_handler_test.rb +126 -115
- data/test/unit/worker_test.rb +195 -0
- metadata +28 -16
- data/lib/sanford/config.rb +0 -33
- data/lib/sanford/connection.rb +0 -70
- data/lib/sanford/exception_handler.rb +0 -43
- data/test/unit/connection_test.rb +0 -23
- data/test/unit/exception_handler_test.rb +0 -69
@@ -1,170 +1,181 @@
|
|
1
1
|
require 'assert'
|
2
2
|
|
3
|
+
require 'sanford/test_runner'
|
4
|
+
|
3
5
|
module Sanford::ServiceHandler
|
4
6
|
|
5
7
|
class BaseTest < Assert::Context
|
8
|
+
include Sanford::TestRunner::Helpers
|
9
|
+
|
6
10
|
desc "Sanford::ServiceHandler"
|
7
11
|
setup do
|
8
|
-
@handler =
|
12
|
+
@handler = test_runner(TestServiceHandler).handler
|
9
13
|
end
|
10
14
|
subject{ @handler }
|
11
15
|
|
12
|
-
should have_instance_methods :
|
16
|
+
should have_instance_methods :init, :init!, :run, :run!
|
13
17
|
|
14
18
|
should "raise a NotImplementedError if run! is not overwritten" do
|
15
19
|
assert_raises(NotImplementedError){ subject.run! }
|
16
20
|
end
|
17
|
-
|
18
|
-
assert_equal subject.request.params, subject.params
|
19
|
-
end
|
21
|
+
|
20
22
|
end
|
21
23
|
|
22
24
|
class WithMethodFlagsTest < BaseTest
|
23
25
|
setup do
|
24
|
-
@handler =
|
26
|
+
@handler = test_runner(FlagServiceHandler).handler
|
25
27
|
end
|
26
28
|
|
27
|
-
should "
|
28
|
-
subject.
|
29
|
-
|
29
|
+
should "have called `init!` and it's callbacks" do
|
30
|
+
assert_equal true, subject.before_init_called
|
30
31
|
assert_equal true, subject.init_bang_called
|
32
|
+
assert_equal true, subject.after_init_called
|
31
33
|
end
|
32
|
-
should "run the `init` and `run!` method when `run` is called" do
|
33
|
-
subject.run
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
should "not have called `run!` or it's callbacks when initialized" do
|
36
|
+
assert_nil subject.before_run_called
|
37
|
+
assert_nil subject.run_bang_called
|
38
|
+
assert_nil subject.after_run_called
|
37
39
|
end
|
38
|
-
|
40
|
+
|
41
|
+
should "call `run!` and it's callbacks when it's `run`" do
|
39
42
|
subject.run
|
40
43
|
|
41
44
|
assert_equal true, subject.before_run_called
|
45
|
+
assert_equal true, subject.run_bang_called
|
42
46
|
assert_equal true, subject.after_run_called
|
43
47
|
end
|
48
|
+
|
44
49
|
end
|
45
50
|
|
46
|
-
class
|
47
|
-
desc "
|
48
|
-
setup do
|
49
|
-
handler = ManualThrowServiceHandler.new
|
50
|
-
@returned = handler.run
|
51
|
-
end
|
51
|
+
class HaltTest < BaseTest
|
52
|
+
desc "halt"
|
52
53
|
|
53
|
-
should "
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
should "return a response with the status code and the passed data" do
|
55
|
+
runner = test_runner(HaltServiceHandler, {
|
56
|
+
'code' => 648,
|
57
|
+
'data' => true
|
58
|
+
})
|
59
|
+
runner.run
|
57
60
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
@halt_with = { :code => :success, :message => "Just a test" }
|
62
|
-
handler = HaltWithServiceHandler.new(@halt_with)
|
63
|
-
@response_status, @data = handler.run
|
61
|
+
assert_equal 648, runner.response.code
|
62
|
+
assert_equal true, runner.response.data
|
63
|
+
assert_nil runner.response.status.message
|
64
64
|
end
|
65
65
|
|
66
|
-
should "return a response with the status
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
66
|
+
should "return a response with the status code for the named status and the passed message" do
|
67
|
+
runner = test_runner(HaltServiceHandler, {
|
68
|
+
'code' => 'ok',
|
69
|
+
'message' => 'test message'
|
70
|
+
})
|
71
|
+
runner.run
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
@halt_with = { :code => 648, :data => true }
|
77
|
-
handler = HaltWithServiceHandler.new(@halt_with)
|
78
|
-
@response_status, @data = handler.run
|
73
|
+
assert_equal 200, runner.response.code
|
74
|
+
assert_equal 'test message', runner.response.status.message
|
75
|
+
assert_nil runner.response.data
|
79
76
|
end
|
80
77
|
|
81
|
-
should "return a response status and data when passed a number and a data option" do
|
82
|
-
assert_equal @halt_with[:code], @response_status.first
|
83
|
-
assert_equal @halt_with[:message], @response_status.last
|
84
|
-
assert_equal @halt_with[:data], @data
|
85
|
-
end
|
86
78
|
end
|
87
79
|
|
88
|
-
class
|
89
|
-
desc "
|
90
|
-
|
91
|
-
|
92
|
-
|
80
|
+
class HaltingTest < BaseTest
|
81
|
+
desc "halting at different points"
|
82
|
+
|
83
|
+
should "not call `init!, `after_init`, `run!` or run's callbacks when `before_init` halts" do
|
84
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
85
|
+
'when' => 'before_init'
|
93
86
|
})
|
94
|
-
|
87
|
+
response = runner.response
|
88
|
+
|
89
|
+
assert_equal true, response.data[:before_init_called]
|
90
|
+
assert_equal nil, response.data[:init_bang_called]
|
91
|
+
assert_equal nil, response.data[:after_init_called]
|
92
|
+
assert_equal nil, response.data[:before_run_called]
|
93
|
+
assert_equal nil, response.data[:run_bang_called]
|
94
|
+
assert_equal nil, response.data[:after_run_called]
|
95
|
+
|
96
|
+
assert_equal 'before_init halting', response.status.message
|
95
97
|
end
|
96
98
|
|
97
|
-
should "
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
99
|
+
should "not call `after_init`, `run!` or it's callbacks when `init!` halts" do
|
100
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
101
|
+
'when' => 'init!'
|
102
|
+
})
|
103
|
+
response = runner.response
|
104
|
+
|
105
|
+
assert_equal true, response.data[:before_init_called]
|
106
|
+
assert_equal true, response.data[:init_bang_called]
|
107
|
+
assert_equal nil, response.data[:after_init_called]
|
108
|
+
assert_equal nil, response.data[:before_run_called]
|
109
|
+
assert_equal nil, response.data[:run_bang_called]
|
110
|
+
assert_equal nil, response.data[:after_run_called]
|
111
|
+
|
112
|
+
assert_equal 'init! halting', response.status.message
|
103
113
|
end
|
104
114
|
|
105
|
-
should "
|
106
|
-
|
107
|
-
|
108
|
-
|
115
|
+
should "not call `run!` or it's callbacks when `after_init` halts" do
|
116
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
117
|
+
'when' => 'after_init'
|
118
|
+
})
|
119
|
+
response = runner.response
|
120
|
+
|
121
|
+
assert_equal true, response.data[:before_init_called]
|
122
|
+
assert_equal true, response.data[:init_bang_called]
|
123
|
+
assert_equal true, response.data[:after_init_called]
|
124
|
+
assert_equal nil, response.data[:before_run_called]
|
125
|
+
assert_equal nil, response.data[:run_bang_called]
|
126
|
+
assert_equal nil, response.data[:after_run_called]
|
127
|
+
|
128
|
+
assert_equal 'after_init halting', response.status.message
|
109
129
|
end
|
110
|
-
end
|
111
130
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
131
|
+
should "not call `run!` or `after_run` when `before_run` halts" do
|
132
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
133
|
+
'when' => 'before_run'
|
134
|
+
})
|
135
|
+
response = runner.run
|
136
|
+
|
137
|
+
assert_equal true, response.data[:before_init_called]
|
138
|
+
assert_equal true, response.data[:init_bang_called]
|
139
|
+
assert_equal true, response.data[:after_init_called]
|
140
|
+
assert_equal true, response.data[:before_run_called]
|
141
|
+
assert_equal nil, response.data[:run_bang_called]
|
142
|
+
assert_equal nil, response.data[:after_run_called]
|
143
|
+
|
144
|
+
assert_equal 'before_run halting', runner.response.status.message
|
116
145
|
end
|
117
146
|
|
118
|
-
|
147
|
+
should "not call `after_run` when `run!` halts" do
|
148
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
149
|
+
'when' => 'run!'
|
150
|
+
})
|
151
|
+
response = runner.run
|
152
|
+
|
153
|
+
assert_equal true, response.data[:before_init_called]
|
154
|
+
assert_equal true, response.data[:init_bang_called]
|
155
|
+
assert_equal true, response.data[:after_init_called]
|
156
|
+
assert_equal true, response.data[:before_run_called]
|
157
|
+
assert_equal true, response.data[:run_bang_called]
|
158
|
+
assert_equal nil, response.data[:after_run_called]
|
119
159
|
|
120
|
-
|
121
|
-
desc "and 'before_run' halts"
|
122
|
-
setup do
|
123
|
-
@handler = ConfigurableServiceHandler.new({
|
124
|
-
:before_run => proc{ halt 601, :message => "before_run halted" },
|
125
|
-
:after_run => @after_run
|
126
|
-
})
|
127
|
-
@response_status, @data = @handler.run
|
128
|
-
end
|
129
|
-
|
130
|
-
should "only call 'before_run' and 'after_run'" do
|
131
|
-
assert_equal true, subject.before_run_called
|
132
|
-
assert_equal false, subject.init_called
|
133
|
-
assert_equal false, subject.init_bang_called
|
134
|
-
assert_equal false, subject.run_bang_called
|
135
|
-
assert_equal true, subject.after_run_called
|
136
|
-
end
|
137
|
-
|
138
|
-
should "return the 'after_run' response" do
|
139
|
-
assert_equal 801, @response_status.first
|
140
|
-
assert_equal "after_run halted", @response_status.last
|
141
|
-
assert_equal nil, @data
|
142
|
-
end
|
160
|
+
assert_equal 'run! halting', runner.response.status.message
|
143
161
|
end
|
144
162
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
assert_equal true, subject.run_bang_called
|
160
|
-
assert_equal true, subject.after_run_called
|
161
|
-
end
|
162
|
-
|
163
|
-
should "return the 'after_run' response" do
|
164
|
-
assert_equal 801, @response_status.first
|
165
|
-
assert_equal "after_run halted", @response_status.last
|
166
|
-
assert_equal nil, @data
|
167
|
-
end
|
163
|
+
should "call `init`, `run` and their callbacks when `after_run` halts" do
|
164
|
+
runner = test_runner(HaltingBehaviorServiceHandler, {
|
165
|
+
'when' => 'after_run'
|
166
|
+
})
|
167
|
+
response = runner.run
|
168
|
+
|
169
|
+
assert_equal true, response.data[:before_init_called]
|
170
|
+
assert_equal true, response.data[:init_bang_called]
|
171
|
+
assert_equal true, response.data[:after_init_called]
|
172
|
+
assert_equal true, response.data[:before_run_called]
|
173
|
+
assert_equal true, response.data[:run_bang_called]
|
174
|
+
assert_equal true, response.data[:after_run_called]
|
175
|
+
|
176
|
+
assert_equal 'after_run halting', runner.response.status.message
|
168
177
|
end
|
169
178
|
|
179
|
+
end
|
180
|
+
|
170
181
|
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
require 'sanford-protocol/test/helpers'
|
4
|
+
|
5
|
+
class Sanford::Worker
|
6
|
+
|
7
|
+
# turn off the protocol's debugging (in case it's on) and turn on Sanford's
|
8
|
+
# debugging
|
9
|
+
class SetupContextToRaiseExceptions < Assert::Context
|
10
|
+
setup do
|
11
|
+
@env_sanford_protocol_debug = ENV['SANFORD_PROTOCOL_DEBUG']
|
12
|
+
@env_sanford_debug = ENV['SANFORD_DEBUG']
|
13
|
+
ENV.delete('SANFORD_PROTOCOL_DEBUG')
|
14
|
+
ENV['SANFORD_DEBUG'] = '1'
|
15
|
+
end
|
16
|
+
teardown do
|
17
|
+
ENV['SANFORD_DEBUG'] = @env_sanford_debug
|
18
|
+
ENV['SANFORD_PROTOCOL_DEBUG'] = @env_sanford_protocol_debug
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class BaseTest < SetupContextToRaiseExceptions
|
23
|
+
include Sanford::Protocol::Test::Helpers
|
24
|
+
|
25
|
+
desc "Sanford::Worker"
|
26
|
+
setup do
|
27
|
+
@host_data = Sanford::HostData.new(TestHost)
|
28
|
+
@connection = FakeConnection.with_request('version', 'service', {})
|
29
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
30
|
+
end
|
31
|
+
subject{ @worker }
|
32
|
+
|
33
|
+
should have_instance_methods :logger, :run
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
class EchoTest < BaseTest
|
38
|
+
desc "running a request for the echo server"
|
39
|
+
setup do
|
40
|
+
@connection = FakeConnection.with_request('v1', 'echo', { :message => 'test' })
|
41
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
42
|
+
end
|
43
|
+
|
44
|
+
should "return a successful response and echo the params sent to it" do
|
45
|
+
assert_nothing_raised{ @worker.run }
|
46
|
+
response = @connection.response
|
47
|
+
|
48
|
+
assert_equal 200, response.status.code
|
49
|
+
assert_equal nil, response.status.message
|
50
|
+
assert_equal 'test', response.data
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
class MissingServiceVersionTest < BaseTest
|
56
|
+
desc "running a request with no service version"
|
57
|
+
setup do
|
58
|
+
request_hash = Sanford::Protocol::Request.new('v1', 'what', {}).to_hash
|
59
|
+
request_hash.delete('version')
|
60
|
+
@connection = FakeConnection.new(request_hash)
|
61
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
62
|
+
end
|
63
|
+
|
64
|
+
should "return a bad request response" do
|
65
|
+
assert_raises(Sanford::Protocol::BadRequestError) do
|
66
|
+
@worker.run
|
67
|
+
end
|
68
|
+
response = @connection.response
|
69
|
+
|
70
|
+
assert_equal 400, response.status.code
|
71
|
+
assert_match "request", response.status.message
|
72
|
+
assert_match "version", response.status.message
|
73
|
+
assert_equal nil, response.data
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
class MissingServiceNameTest < BaseTest
|
79
|
+
desc "running a request with no service name"
|
80
|
+
setup do
|
81
|
+
request_hash = Sanford::Protocol::Request.new('v1', 'what', {}).to_hash
|
82
|
+
request_hash.delete('name')
|
83
|
+
@connection = FakeConnection.new(request_hash)
|
84
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
85
|
+
end
|
86
|
+
|
87
|
+
should "return a bad request response" do
|
88
|
+
assert_raises(Sanford::Protocol::BadRequestError) do
|
89
|
+
@worker.run
|
90
|
+
end
|
91
|
+
response = @connection.response
|
92
|
+
|
93
|
+
assert_equal 400, response.status.code
|
94
|
+
assert_match "request", response.status.message
|
95
|
+
assert_match "name", response.status.message
|
96
|
+
assert_equal nil, response.data
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
class NotFoundServiceTest < BaseTest
|
102
|
+
desc "running a request with no matching service name"
|
103
|
+
setup do
|
104
|
+
@connection = FakeConnection.with_request('v1', 'what', {})
|
105
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
106
|
+
end
|
107
|
+
|
108
|
+
should "return a bad request response" do
|
109
|
+
assert_raises(Sanford::NotFoundError) do
|
110
|
+
@worker.run
|
111
|
+
end
|
112
|
+
response = @connection.response
|
113
|
+
|
114
|
+
assert_equal 404, response.status.code
|
115
|
+
assert_equal nil, response.status.message
|
116
|
+
assert_equal nil, response.data
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
class ErrorServiceTest < BaseTest
|
122
|
+
desc "running a request that errors on the server"
|
123
|
+
setup do
|
124
|
+
@connection = FakeConnection.with_request('v1', 'bad', {})
|
125
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
126
|
+
end
|
127
|
+
|
128
|
+
should "return a bad request response" do
|
129
|
+
assert_raises(RuntimeError) do
|
130
|
+
@worker.run
|
131
|
+
end
|
132
|
+
response = @connection.response
|
133
|
+
|
134
|
+
assert_equal 500, response.status.code
|
135
|
+
assert_match "error", response.status.message
|
136
|
+
assert_equal nil, response.data
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
class HaltTest < BaseTest
|
142
|
+
desc "running a request that halts"
|
143
|
+
setup do
|
144
|
+
@connection = FakeConnection.with_request('v1', 'halt_it', {})
|
145
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
146
|
+
end
|
147
|
+
|
148
|
+
should "return the response that was halted" do
|
149
|
+
assert_nothing_raised{ @worker.run }
|
150
|
+
response = @connection.response
|
151
|
+
|
152
|
+
assert_equal 728, response.status.code
|
153
|
+
assert_equal "I do what I want", response.status.message
|
154
|
+
assert_equal [ 1, true, 'yes' ], response.data
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
|
159
|
+
class AuthorizeRequestTest < BaseTest
|
160
|
+
desc "running a request that halts in a callback"
|
161
|
+
setup do
|
162
|
+
@connection = FakeConnection.with_request('v1', 'authorized', {})
|
163
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
164
|
+
end
|
165
|
+
|
166
|
+
should "return the response that was halted" do
|
167
|
+
assert_nothing_raised{ @worker.run }
|
168
|
+
response = @connection.response
|
169
|
+
|
170
|
+
assert_equal 401, response.status.code
|
171
|
+
assert_equal "Not authorized", response.status.message
|
172
|
+
assert_equal nil, response.data
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
class WithCustomErrorHandlerTest < BaseTest
|
178
|
+
desc "running a request that triggers our custom error handler"
|
179
|
+
setup do
|
180
|
+
@connection = FakeConnection.with_request('v1', 'custom_error', {})
|
181
|
+
@worker = Sanford::Worker.new(@host_data, @connection)
|
182
|
+
end
|
183
|
+
|
184
|
+
should "return the response that was halted" do
|
185
|
+
assert_raises(::MyCustomError){ @worker.run }
|
186
|
+
response = @connection.response
|
187
|
+
|
188
|
+
assert_equal 987, response.status.code
|
189
|
+
assert_equal "custom error!", response.status.message
|
190
|
+
assert_equal nil, response.data
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
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: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.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:
|
19
|
+
date: 2013-01-24 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
@@ -55,12 +55,11 @@ dependencies:
|
|
55
55
|
requirements:
|
56
56
|
- - ~>
|
57
57
|
- !ruby/object:Gem::Version
|
58
|
-
hash:
|
58
|
+
hash: 15
|
59
59
|
segments:
|
60
60
|
- 1
|
61
61
|
- 0
|
62
|
-
|
63
|
-
version: 1.0.0
|
62
|
+
version: "1.0"
|
64
63
|
requirement: *id003
|
65
64
|
name: ns-options
|
66
65
|
type: :runtime
|
@@ -131,19 +130,23 @@ files:
|
|
131
130
|
- bench/services.rb
|
132
131
|
- bench/tasks.rb
|
133
132
|
- lib/sanford.rb
|
134
|
-
- lib/sanford/
|
135
|
-
- lib/sanford/connection.rb
|
136
|
-
- lib/sanford/exception_handler.rb
|
133
|
+
- lib/sanford/error_handler.rb
|
137
134
|
- lib/sanford/exceptions.rb
|
138
135
|
- lib/sanford/host.rb
|
136
|
+
- lib/sanford/host_data.rb
|
137
|
+
- lib/sanford/logger.rb
|
139
138
|
- lib/sanford/manager.rb
|
140
139
|
- lib/sanford/rake.rb
|
140
|
+
- lib/sanford/runner.rb
|
141
141
|
- lib/sanford/server.rb
|
142
142
|
- lib/sanford/service_handler.rb
|
143
|
+
- lib/sanford/test_runner.rb
|
143
144
|
- lib/sanford/version.rb
|
145
|
+
- lib/sanford/worker.rb
|
144
146
|
- log/.gitkeep
|
145
147
|
- sanford.gemspec
|
146
148
|
- test/helper.rb
|
149
|
+
- test/support/fake_connection.rb
|
147
150
|
- test/support/helpers.rb
|
148
151
|
- test/support/service_handlers.rb
|
149
152
|
- test/support/services.rb
|
@@ -151,13 +154,17 @@ files:
|
|
151
154
|
- test/system/managing_test.rb
|
152
155
|
- test/system/request_handling_test.rb
|
153
156
|
- test/unit/config_test.rb
|
154
|
-
- test/unit/
|
155
|
-
- test/unit/
|
156
|
-
- test/unit/
|
157
|
+
- test/unit/error_handler_test.rb
|
158
|
+
- test/unit/host_configuration_test.rb
|
159
|
+
- test/unit/host_data_test.rb
|
157
160
|
- test/unit/host_test.rb
|
161
|
+
- test/unit/host_version_group_test.rb
|
162
|
+
- test/unit/hosts_test.rb
|
158
163
|
- test/unit/manager_test.rb
|
164
|
+
- test/unit/runner_test.rb
|
159
165
|
- test/unit/server_test.rb
|
160
166
|
- test/unit/service_handler_test.rb
|
167
|
+
- test/unit/worker_test.rb
|
161
168
|
homepage: https://github.com/redding/sanford
|
162
169
|
licenses: []
|
163
170
|
|
@@ -193,6 +200,7 @@ specification_version: 3
|
|
193
200
|
summary: Simple hosts for Sanford services.
|
194
201
|
test_files:
|
195
202
|
- test/helper.rb
|
203
|
+
- test/support/fake_connection.rb
|
196
204
|
- test/support/helpers.rb
|
197
205
|
- test/support/service_handlers.rb
|
198
206
|
- test/support/services.rb
|
@@ -200,10 +208,14 @@ test_files:
|
|
200
208
|
- test/system/managing_test.rb
|
201
209
|
- test/system/request_handling_test.rb
|
202
210
|
- test/unit/config_test.rb
|
203
|
-
- test/unit/
|
204
|
-
- test/unit/
|
205
|
-
- test/unit/
|
211
|
+
- test/unit/error_handler_test.rb
|
212
|
+
- test/unit/host_configuration_test.rb
|
213
|
+
- test/unit/host_data_test.rb
|
206
214
|
- test/unit/host_test.rb
|
215
|
+
- test/unit/host_version_group_test.rb
|
216
|
+
- test/unit/hosts_test.rb
|
207
217
|
- test/unit/manager_test.rb
|
218
|
+
- test/unit/runner_test.rb
|
208
219
|
- test/unit/server_test.rb
|
209
220
|
- test/unit/service_handler_test.rb
|
221
|
+
- test/unit/worker_test.rb
|
data/lib/sanford/config.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'ns-options'
|
2
|
-
require 'pathname'
|
3
|
-
require 'set'
|
4
|
-
|
5
|
-
ENV['SANFORD_SERVICES_CONFIG'] ||= 'config/services'
|
6
|
-
|
7
|
-
module Sanford
|
8
|
-
|
9
|
-
module Config
|
10
|
-
include NsOptions::Proxy
|
11
|
-
|
12
|
-
option :hosts, Set, :default => []
|
13
|
-
option :services_config, Pathname, :default => ENV['SANFORD_SERVICES_CONFIG']
|
14
|
-
|
15
|
-
# We want class names to take precedence over a configured name, so that if
|
16
|
-
# a user specifies a specific class, they always get it
|
17
|
-
def self.find_host(name)
|
18
|
-
self.find_host_by_class_name(name) || self.find_host_by_name(name)
|
19
|
-
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
def self.find_host_by_class_name(class_name)
|
24
|
-
self.hosts.detect{|host_class| host_class.to_s == class_name.to_s }
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.find_host_by_name(name)
|
28
|
-
self.hosts.detect{|host_class| host_class.name == name.to_s }
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|