sanford 0.1.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/.gitignore +19 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +164 -0
- data/Rakefile +8 -0
- data/bench/client.rb +30 -0
- data/bench/report.txt +10 -0
- data/bench/runner.rb +102 -0
- data/bench/services.rb +23 -0
- data/bench/tasks.rb +18 -0
- data/lib/sanford/config.rb +33 -0
- data/lib/sanford/connection.rb +70 -0
- data/lib/sanford/exception_handler.rb +43 -0
- data/lib/sanford/exceptions.rb +37 -0
- data/lib/sanford/host.rb +162 -0
- data/lib/sanford/manager.rb +58 -0
- data/lib/sanford/rake.rb +45 -0
- data/lib/sanford/server.rb +39 -0
- data/lib/sanford/service_handler.rb +93 -0
- data/lib/sanford/version.rb +3 -0
- data/lib/sanford.rb +32 -0
- data/log/.gitkeep +0 -0
- data/sanford.gemspec +27 -0
- data/test/helper.rb +20 -0
- data/test/support/helpers.rb +72 -0
- data/test/support/service_handlers.rb +115 -0
- data/test/support/services.rb +72 -0
- data/test/support/simple_client.rb +55 -0
- data/test/system/managing_test.rb +105 -0
- data/test/system/request_handling_test.rb +202 -0
- data/test/unit/config_test.rb +54 -0
- data/test/unit/connection_test.rb +23 -0
- data/test/unit/exception_handler_test.rb +69 -0
- data/test/unit/host/version_group_test.rb +39 -0
- data/test/unit/host_test.rb +142 -0
- data/test/unit/manager_test.rb +21 -0
- data/test/unit/server_test.rb +22 -0
- data/test/unit/service_handler_test.rb +170 -0
- metadata +209 -0
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
module Sanford::Host
|
4
|
+
|
5
|
+
class BaseTest < Assert::Context
|
6
|
+
desc "Sanford::Host"
|
7
|
+
setup do
|
8
|
+
Test::Environment.store_and_clear_hosts
|
9
|
+
@host_class = Class.new do
|
10
|
+
include Sanford::Host
|
11
|
+
name 'anonymous_host'
|
12
|
+
ip 'anonymous.local'
|
13
|
+
end
|
14
|
+
@host = @host_class.new({ :port => 12345 })
|
15
|
+
end
|
16
|
+
teardown do
|
17
|
+
Test::Environment.restore_hosts
|
18
|
+
end
|
19
|
+
subject{ @host }
|
20
|
+
|
21
|
+
should have_instance_methods :name, :config, :run
|
22
|
+
|
23
|
+
should "set name to it's class #name" do
|
24
|
+
assert_equal subject.class.name, subject.name
|
25
|
+
end
|
26
|
+
|
27
|
+
should "proxy missing methods to it's config" do
|
28
|
+
assert_equal subject.config.port, subject.port
|
29
|
+
assert subject.respond_to?(:pid_dir)
|
30
|
+
end
|
31
|
+
|
32
|
+
should "default it's configuration from the class and overwrite with values passed to new" do
|
33
|
+
assert_equal 'anonymous.local', subject.config.ip
|
34
|
+
assert_equal 12345, subject.config.port
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class ConfigTest < BaseTest
|
39
|
+
desc "config"
|
40
|
+
setup do
|
41
|
+
@config = @host.config
|
42
|
+
end
|
43
|
+
subject{ @config }
|
44
|
+
|
45
|
+
should have_instance_methods :name, :ip, :port, :pid_dir, :logger
|
46
|
+
end
|
47
|
+
|
48
|
+
class ClassMethodsTest < BaseTest
|
49
|
+
desc "class methods"
|
50
|
+
subject{ @host_class }
|
51
|
+
|
52
|
+
should have_instance_methods :config, :version
|
53
|
+
should have_instance_methods :name, :ip, :port, :pid_dir, :logger
|
54
|
+
|
55
|
+
should "have registered the class with sanford's known hosts" do
|
56
|
+
assert_includes subject, Sanford.config.hosts
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class InvalidTest < BaseTest
|
61
|
+
desc "invalid configuration"
|
62
|
+
setup do
|
63
|
+
@host_class = Class.new do
|
64
|
+
include Sanford::Host
|
65
|
+
name 'invalid_host'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
should "raise a custom exception" do
|
70
|
+
assert_raises(Sanford::InvalidHostError) do
|
71
|
+
@host_class.new
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class VersionTest < BaseTest
|
77
|
+
desc "version class method"
|
78
|
+
setup do
|
79
|
+
@host_class.version('v1'){ }
|
80
|
+
end
|
81
|
+
|
82
|
+
should "have added a version hash to the versioned_services config" do
|
83
|
+
assert_equal({}, @host_class.config.versioned_services["v1"])
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
class RunTest < BaseTest
|
88
|
+
desc "run method"
|
89
|
+
setup do
|
90
|
+
@host_class.version('v1') do
|
91
|
+
service 'test', 'DummyHost::Multiply'
|
92
|
+
end
|
93
|
+
@host = @host_class.new({ :port => 12000 })
|
94
|
+
@request = Sanford::Protocol::Request.new('v1', 'test', { 'number' => 2 })
|
95
|
+
@returned = @host.run(@request)
|
96
|
+
end
|
97
|
+
subject{ @returned }
|
98
|
+
|
99
|
+
should "have returned the data of calling the `init` and `run` method of the handler" do
|
100
|
+
expected_status_code = 200
|
101
|
+
expected_data = 2 * @request.params['number']
|
102
|
+
|
103
|
+
assert_equal expected_status_code, subject.first
|
104
|
+
assert_equal expected_data, subject.last
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
class RunNotFoundTest < BaseTest
|
109
|
+
desc "run method with a service and no matching service handler"
|
110
|
+
setup do
|
111
|
+
@host_class.version('v1') do
|
112
|
+
service 'test', 'DummyHost::Echo'
|
113
|
+
end
|
114
|
+
@host = @host_class.new({ :port => 12000 })
|
115
|
+
@request = Sanford::Protocol::Request.new('v4', 'what', {})
|
116
|
+
end
|
117
|
+
|
118
|
+
should "raise a Sanford::NotFound exception" do
|
119
|
+
assert_raises(Sanford::NotFoundError) do
|
120
|
+
@host.run(@request)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
class RunNoHandlerClassTest < BaseTest
|
126
|
+
desc "run method with a service handler that doesn't exist"
|
127
|
+
setup do
|
128
|
+
@host_class.version('v1') do
|
129
|
+
service 'test', 'DoesntExist::AtAll'
|
130
|
+
end
|
131
|
+
@host = @host_class.new({ :port => 12000 })
|
132
|
+
@request = Sanford::Protocol::Request.new('v1', 'test', {})
|
133
|
+
end
|
134
|
+
|
135
|
+
should "raise a Sanford::NoHandlerClass exception" do
|
136
|
+
assert_raises(Sanford::NoHandlerClassError) do
|
137
|
+
@host.run(@request)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
class Sanford::Manager
|
5
|
+
|
6
|
+
class BaseTest < Assert::Context
|
7
|
+
desc "Sanford::Manager"
|
8
|
+
setup do
|
9
|
+
@dummy_host = DummyHost
|
10
|
+
@manager = Sanford::Manager.new(@dummy_host)
|
11
|
+
end
|
12
|
+
subject{ @manager }
|
13
|
+
|
14
|
+
should have_instance_methods :host, :process_name, :call
|
15
|
+
should have_class_methods :call
|
16
|
+
end
|
17
|
+
|
18
|
+
# Sanford::Manager#call methods are tested in the test/system/managing_test.rb
|
19
|
+
# they require mocking the Daemons gem
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
class Sanford::Server
|
4
|
+
|
5
|
+
class BaseTest < Assert::Context
|
6
|
+
desc "Sanford::Server"
|
7
|
+
setup do
|
8
|
+
@service_host = DummyHost.new
|
9
|
+
@server = Sanford::Server.new(@service_host)
|
10
|
+
end
|
11
|
+
subject{ @server }
|
12
|
+
|
13
|
+
should "include DatTCP::Server" do
|
14
|
+
assert_includes DatTCP::Server, subject.class.included_modules
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Sanford::Server#serve is tested in test/system/request_handling_test.rb,
|
19
|
+
# it requires multiple parts of Sanford and basically tests a large portion of
|
20
|
+
# the entire system
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
module Sanford::ServiceHandler
|
4
|
+
|
5
|
+
class BaseTest < Assert::Context
|
6
|
+
desc "Sanford::ServiceHandler"
|
7
|
+
setup do
|
8
|
+
@handler = StaticServiceHandler.new
|
9
|
+
end
|
10
|
+
subject{ @handler }
|
11
|
+
|
12
|
+
should have_instance_methods :logger, :request, :init, :init!, :run, :run!, :halt, :params
|
13
|
+
|
14
|
+
should "raise a NotImplementedError if run! is not overwritten" do
|
15
|
+
assert_raises(NotImplementedError){ subject.run! }
|
16
|
+
end
|
17
|
+
should "return the request's params with #params" do
|
18
|
+
assert_equal subject.request.params, subject.params
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class WithMethodFlagsTest < BaseTest
|
23
|
+
setup do
|
24
|
+
@handler = FlaggedServiceHandler.new
|
25
|
+
end
|
26
|
+
|
27
|
+
should "should call the `init!` method when `init` is called" do
|
28
|
+
subject.init
|
29
|
+
|
30
|
+
assert_equal true, subject.init_bang_called
|
31
|
+
end
|
32
|
+
should "run the `init` and `run!` method when `run` is called" do
|
33
|
+
subject.run
|
34
|
+
|
35
|
+
assert_equal true, subject.init_called
|
36
|
+
assert_equal true, subject.run_bang_called
|
37
|
+
end
|
38
|
+
should "run it's callbacks when `run` is called" do
|
39
|
+
subject.run
|
40
|
+
|
41
|
+
assert_equal true, subject.before_run_called
|
42
|
+
assert_equal true, subject.after_run_called
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class ManualWithThrowTest < BaseTest
|
47
|
+
desc "run that manuallly throws `:halt`"
|
48
|
+
setup do
|
49
|
+
handler = ManualThrowServiceHandler.new
|
50
|
+
@returned = handler.run
|
51
|
+
end
|
52
|
+
|
53
|
+
should "catch `:halt` and return what was thrown" do
|
54
|
+
assert_equal 'halted!', @returned
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class HaltWithAStatusNameAndMessageTest < BaseTest
|
59
|
+
desc "halt with a status name and a message"
|
60
|
+
setup do
|
61
|
+
@halt_with = { :code => :success, :message => "Just a test" }
|
62
|
+
handler = HaltWithServiceHandler.new(@halt_with)
|
63
|
+
@response_status, @data = handler.run
|
64
|
+
end
|
65
|
+
|
66
|
+
should "return a response with the status passed to halt and a nil data" do
|
67
|
+
assert_equal @halt_with[:code], @response_status.first
|
68
|
+
assert_equal @halt_with[:message], @response_status.last
|
69
|
+
assert_equal @halt_with[:data], @data
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class HaltWithAStatusCodeAndDataTest < BaseTest
|
74
|
+
desc "halt with a status code and data"
|
75
|
+
setup do
|
76
|
+
@halt_with = { :code => 648, :data => true }
|
77
|
+
handler = HaltWithServiceHandler.new(@halt_with)
|
78
|
+
@response_status, @data = handler.run
|
79
|
+
end
|
80
|
+
|
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
|
+
end
|
87
|
+
|
88
|
+
class BeforeRunHaltsTest < BaseTest
|
89
|
+
desc "if 'before_run' halts"
|
90
|
+
setup do
|
91
|
+
@handler = ConfigurableServiceHandler.new({
|
92
|
+
:before_run => proc{ halt 601, :message => "before_run halted" }
|
93
|
+
})
|
94
|
+
@response_status, @data = @handler.run
|
95
|
+
end
|
96
|
+
|
97
|
+
should "only call 'before_run' and 'after_run'" do
|
98
|
+
assert_equal true, subject.before_run_called
|
99
|
+
assert_equal false, subject.init_called
|
100
|
+
assert_equal false, subject.init_bang_called
|
101
|
+
assert_equal false, subject.run_bang_called
|
102
|
+
assert_equal true, subject.after_run_called
|
103
|
+
end
|
104
|
+
|
105
|
+
should "return the 'before_run' response" do
|
106
|
+
assert_equal 601, @response_status.first
|
107
|
+
assert_equal "before_run halted", @response_status.last
|
108
|
+
assert_equal nil, @data
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
class AfterRunHaltsTest < BaseTest
|
113
|
+
desc "if 'after_run' halts"
|
114
|
+
setup do
|
115
|
+
@after_run = proc{ halt 801, :message => "after_run halted" }
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
class AndBeforeRunHaltsTest < AfterRunHaltsTest
|
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
|
143
|
+
end
|
144
|
+
|
145
|
+
class AndRunBangHaltsTest < AfterRunHaltsTest
|
146
|
+
desc "and 'run!' halts"
|
147
|
+
setup do
|
148
|
+
@handler = ConfigurableServiceHandler.new({
|
149
|
+
:run! => proc{ halt 601, :message => "run! halted" },
|
150
|
+
:after_run => @after_run
|
151
|
+
})
|
152
|
+
@response_status, @data = @handler.run
|
153
|
+
end
|
154
|
+
|
155
|
+
should "call 'init!', 'run!' and the callbacks" do
|
156
|
+
assert_equal true, subject.before_run_called
|
157
|
+
assert_equal true, subject.init_called
|
158
|
+
assert_equal true, subject.init_bang_called
|
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
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
metadata
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sanford
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Collin Redding
|
14
|
+
- Kelly Redding
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2012-12-04 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 13
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 1
|
32
|
+
version: "1.1"
|
33
|
+
requirement: *id001
|
34
|
+
name: daemons
|
35
|
+
type: :runtime
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 9
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 1
|
47
|
+
version: "0.1"
|
48
|
+
requirement: *id002
|
49
|
+
name: dat-tcp
|
50
|
+
type: :runtime
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 23
|
59
|
+
segments:
|
60
|
+
- 1
|
61
|
+
- 0
|
62
|
+
- 0
|
63
|
+
version: 1.0.0
|
64
|
+
requirement: *id003
|
65
|
+
name: ns-options
|
66
|
+
type: :runtime
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ~>
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 1
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 5
|
78
|
+
version: "0.5"
|
79
|
+
requirement: *id004
|
80
|
+
name: sanford-protocol
|
81
|
+
type: :runtime
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 15
|
90
|
+
segments:
|
91
|
+
- 1
|
92
|
+
- 0
|
93
|
+
version: "1.0"
|
94
|
+
requirement: *id005
|
95
|
+
name: assert
|
96
|
+
type: :development
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 15
|
105
|
+
segments:
|
106
|
+
- 1
|
107
|
+
- 0
|
108
|
+
version: "1.0"
|
109
|
+
requirement: *id006
|
110
|
+
name: assert-mocha
|
111
|
+
type: :development
|
112
|
+
description: Simple hosts for Sanford services.
|
113
|
+
email:
|
114
|
+
- collin.redding@me.com
|
115
|
+
- kelly@kellyredding.com
|
116
|
+
executables: []
|
117
|
+
|
118
|
+
extensions: []
|
119
|
+
|
120
|
+
extra_rdoc_files: []
|
121
|
+
|
122
|
+
files:
|
123
|
+
- .gitignore
|
124
|
+
- Gemfile
|
125
|
+
- LICENSE.txt
|
126
|
+
- README.md
|
127
|
+
- Rakefile
|
128
|
+
- bench/client.rb
|
129
|
+
- bench/report.txt
|
130
|
+
- bench/runner.rb
|
131
|
+
- bench/services.rb
|
132
|
+
- bench/tasks.rb
|
133
|
+
- lib/sanford.rb
|
134
|
+
- lib/sanford/config.rb
|
135
|
+
- lib/sanford/connection.rb
|
136
|
+
- lib/sanford/exception_handler.rb
|
137
|
+
- lib/sanford/exceptions.rb
|
138
|
+
- lib/sanford/host.rb
|
139
|
+
- lib/sanford/manager.rb
|
140
|
+
- lib/sanford/rake.rb
|
141
|
+
- lib/sanford/server.rb
|
142
|
+
- lib/sanford/service_handler.rb
|
143
|
+
- lib/sanford/version.rb
|
144
|
+
- log/.gitkeep
|
145
|
+
- sanford.gemspec
|
146
|
+
- test/helper.rb
|
147
|
+
- test/support/helpers.rb
|
148
|
+
- test/support/service_handlers.rb
|
149
|
+
- test/support/services.rb
|
150
|
+
- test/support/simple_client.rb
|
151
|
+
- test/system/managing_test.rb
|
152
|
+
- test/system/request_handling_test.rb
|
153
|
+
- test/unit/config_test.rb
|
154
|
+
- test/unit/connection_test.rb
|
155
|
+
- test/unit/exception_handler_test.rb
|
156
|
+
- test/unit/host/version_group_test.rb
|
157
|
+
- test/unit/host_test.rb
|
158
|
+
- test/unit/manager_test.rb
|
159
|
+
- test/unit/server_test.rb
|
160
|
+
- test/unit/service_handler_test.rb
|
161
|
+
homepage: https://github.com/redding/sanford
|
162
|
+
licenses: []
|
163
|
+
|
164
|
+
post_install_message:
|
165
|
+
rdoc_options: []
|
166
|
+
|
167
|
+
require_paths:
|
168
|
+
- lib
|
169
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
hash: 3
|
175
|
+
segments:
|
176
|
+
- 0
|
177
|
+
version: "0"
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ">="
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
hash: 3
|
184
|
+
segments:
|
185
|
+
- 0
|
186
|
+
version: "0"
|
187
|
+
requirements: []
|
188
|
+
|
189
|
+
rubyforge_project:
|
190
|
+
rubygems_version: 1.8.15
|
191
|
+
signing_key:
|
192
|
+
specification_version: 3
|
193
|
+
summary: Simple hosts for Sanford services.
|
194
|
+
test_files:
|
195
|
+
- test/helper.rb
|
196
|
+
- test/support/helpers.rb
|
197
|
+
- test/support/service_handlers.rb
|
198
|
+
- test/support/services.rb
|
199
|
+
- test/support/simple_client.rb
|
200
|
+
- test/system/managing_test.rb
|
201
|
+
- test/system/request_handling_test.rb
|
202
|
+
- test/unit/config_test.rb
|
203
|
+
- test/unit/connection_test.rb
|
204
|
+
- test/unit/exception_handler_test.rb
|
205
|
+
- test/unit/host/version_group_test.rb
|
206
|
+
- test/unit/host_test.rb
|
207
|
+
- test/unit/manager_test.rb
|
208
|
+
- test/unit/server_test.rb
|
209
|
+
- test/unit/service_handler_test.rb
|