and-son 0.3.1 → 0.4.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/and-son.gemspec CHANGED
@@ -17,8 +17,8 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_dependency("sanford-protocol", ["~>0.5"])
20
+ gem.add_dependency("sanford-protocol", ["~>0.6"])
21
21
 
22
- gem.add_development_dependency("assert", ["~>2.0"])
22
+ gem.add_development_dependency("assert", ["~>2.3"])
23
23
  gem.add_development_dependency("assert-mocha", ["~>1.0"])
24
24
  end
@@ -43,10 +43,10 @@ module AndSon
43
43
 
44
44
  DEFAULT_TIMEOUT = 60 #seconds
45
45
 
46
- attr_reader :host, :port, :version, :responses
46
+ attr_reader :host, :port, :responses
47
47
 
48
- def initialize(host, port, version)
49
- @host, @port, @version = host, port, version
48
+ def initialize(host, port)
49
+ @host, @port = host, port
50
50
  @responses = AndSon::StoredResponses.new
51
51
  end
52
52
 
@@ -58,7 +58,6 @@ module AndSon
58
58
  CallRunner.new({
59
59
  :host => host,
60
60
  :port => port,
61
- :version => version,
62
61
  :timeout_value => (ENV['ANDSON_TIMEOUT'] || DEFAULT_TIMEOUT).to_f,
63
62
  :params_value => {},
64
63
  :logger_value => NullLogger.new,
@@ -68,8 +67,7 @@ module AndSon
68
67
  end
69
68
 
70
69
  class CallRunner < OpenStruct
71
- # { :host, :port, :version, :timeout_value, :params_value, :logger_value,
72
- # :responses }
70
+ # { :host, :port, :timeout_value, :params_value, :logger_value, :responses }
73
71
  include CallRunnerMethods
74
72
 
75
73
  # chain runner methods by returning itself
@@ -90,7 +88,6 @@ module AndSon
90
88
  'time' => RoundedTime.new(benchmark.real),
91
89
  'status' => client_response.protocol_response.code,
92
90
  'host' => "#{self.host}:#{self.port}",
93
- 'version' => self.version,
94
91
  'service' => name,
95
92
  'params' => params
96
93
  })
@@ -106,7 +103,7 @@ module AndSon
106
103
  def call!(name, params)
107
104
  call_params = self.params_value.merge(params)
108
105
  AndSon::Connection.new(host, port).open do |connection|
109
- connection.write(Sanford::Protocol::Request.new(version, name, call_params).to_hash)
106
+ connection.write(Sanford::Protocol::Request.new(name, call_params).to_hash)
110
107
  connection.close_write
111
108
  if !connection.peek(timeout_value).empty?
112
109
  AndSon::Response.parse(connection.read(timeout_value))
@@ -132,7 +129,7 @@ module AndSon
132
129
 
133
130
  module SummaryLine
134
131
  def self.new(line_attrs)
135
- attr_keys = %w{time status host version service params}
132
+ attr_keys = %w{time status host service params}
136
133
  attr_keys.map{ |k| "#{k}=#{line_attrs[k].inspect}" }.join(' ')
137
134
  end
138
135
  end
@@ -1,3 +1,3 @@
1
1
  module AndSon
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -11,8 +11,8 @@ class FakeServer
11
11
  @slow = !!options[:slow]
12
12
  end
13
13
 
14
- def add_handler(version, name, &block)
15
- @handlers["#{version}-#{name}"] = block
14
+ def add_handler(name, &block)
15
+ @handlers[name] = block
16
16
  end
17
17
 
18
18
  def run
@@ -44,7 +44,7 @@ class FakeServer
44
44
  end
45
45
 
46
46
  def route(request)
47
- handler = @handlers["#{request.version}-#{request.name}"]
47
+ handler = @handlers[request.name]
48
48
  returned = handler.call(request.params)
49
49
  end
50
50
 
@@ -13,13 +13,13 @@ class MakingRequestsTests < Assert::Context
13
13
  class SuccessTests < MakingRequestsTests
14
14
  desc "returns a successful response"
15
15
  setup do
16
- @fake_server.add_handler('v1', 'echo'){|params| [ 200, params['message'] ] }
16
+ @fake_server.add_handler('echo'){|params| [ 200, params['message'] ] }
17
17
  end
18
18
 
19
19
  should "get a 200 response with the parameter echoed back" do
20
20
  self.run_fake_server(@fake_server) do
21
21
 
22
- client = AndSon.new('localhost', 12000, 'v1')
22
+ client = AndSon.new('localhost', 12000)
23
23
  client.call('echo', :message => 'test') do |response|
24
24
  assert_equal 200, response.status.code
25
25
  assert_equal nil, response.status.message
@@ -41,7 +41,7 @@ class MakingRequestsTests < Assert::Context
41
41
  end
42
42
 
43
43
  should "return the registered response" do
44
- client = AndSon.new('localhost', 12000, 'v1')
44
+ client = AndSon.new('localhost', 12000)
45
45
  client.responses.add('echo', 'message' => 'test'){ 'test' }
46
46
 
47
47
  client.call('echo', 'message' => 'test') do |response|
@@ -55,7 +55,7 @@ class MakingRequestsTests < Assert::Context
55
55
 
56
56
  class AuthorizeTests < MakingRequestsTests
57
57
  setup do
58
- @fake_server.add_handler('v1', 'authorize_it') do |params|
58
+ @fake_server.add_handler('authorize_it') do |params|
59
59
  if params['api_key'] == 12345
60
60
  [ 200, params['data'] ]
61
61
  else
@@ -67,7 +67,7 @@ class MakingRequestsTests < Assert::Context
67
67
  should "get a 200 response when api_key is passed with the correct value" do
68
68
  self.run_fake_server(@fake_server) do
69
69
 
70
- client = AndSon.new('localhost', 12000, 'v1').params({ 'api_key' => 12345 })
70
+ client = AndSon.new('localhost', 12000).params({ 'api_key' => 12345 })
71
71
  client.call('authorize_it', { 'data' => 'holla' }) do |response|
72
72
  assert_equal 200, response.status.code
73
73
  assert_equal nil, response.status.message
@@ -80,7 +80,7 @@ class MakingRequestsTests < Assert::Context
80
80
  should "get a 401 response when api_key isn't passed" do
81
81
  self.run_fake_server(@fake_server) do
82
82
 
83
- client = AndSon.new('localhost', 12000, 'v1')
83
+ client = AndSon.new('localhost', 12000)
84
84
  client.call('authorize_it', { 'data' => 'holla' }) do |response|
85
85
  assert_equal 401, response.status.code
86
86
  assert_equal nil, response.status.message
@@ -95,14 +95,14 @@ class MakingRequestsTests < Assert::Context
95
95
  class Failure400Tests < MakingRequestsTests
96
96
  desc "when a request fails with a 400"
97
97
  setup do
98
- @fake_server.add_handler('v1', '400'){|params| [ 400, false ] }
98
+ @fake_server.add_handler('400'){|params| [ 400, false ] }
99
99
  end
100
100
 
101
101
  should "raise a bad request error" do
102
102
  self.run_fake_server(@fake_server) do
103
103
 
104
104
  assert_raises(AndSon::BadRequestError) do
105
- client = AndSon.new('localhost', 12000, 'v1')
105
+ client = AndSon.new('localhost', 12000)
106
106
  client.call('400')
107
107
  end
108
108
 
@@ -114,14 +114,14 @@ class MakingRequestsTests < Assert::Context
114
114
  class Failure404Tests < MakingRequestsTests
115
115
  desc "when a request fails with a 404"
116
116
  setup do
117
- @fake_server.add_handler('v1', '404'){|params| [ 404, false ] }
117
+ @fake_server.add_handler('404'){|params| [ 404, false ] }
118
118
  end
119
119
 
120
120
  should "raise a not found error" do
121
121
  self.run_fake_server(@fake_server) do
122
122
 
123
123
  assert_raises(AndSon::NotFoundError) do
124
- client = AndSon.new('localhost', 12000, 'v1')
124
+ client = AndSon.new('localhost', 12000)
125
125
  client.call('404')
126
126
  end
127
127
 
@@ -133,14 +133,14 @@ class MakingRequestsTests < Assert::Context
133
133
  class Failure4xxTests < MakingRequestsTests
134
134
  desc "when a request fails with a 4xx"
135
135
  setup do
136
- @fake_server.add_handler('v1', '4xx'){|params| [ 402, false ] }
136
+ @fake_server.add_handler('4xx'){|params| [ 402, false ] }
137
137
  end
138
138
 
139
139
  should "raise a client error" do
140
140
  self.run_fake_server(@fake_server) do
141
141
 
142
142
  assert_raises(AndSon::ClientError) do
143
- client = AndSon.new('localhost', 12000, 'v1')
143
+ client = AndSon.new('localhost', 12000)
144
144
  client.call('4xx')
145
145
  end
146
146
 
@@ -152,14 +152,14 @@ class MakingRequestsTests < Assert::Context
152
152
  class Failure5xxTests < MakingRequestsTests
153
153
  desc "when a request fails with a 5xx"
154
154
  setup do
155
- @fake_server.add_handler('v1', '5xx'){|params| [ 500, false ] }
155
+ @fake_server.add_handler('5xx'){|params| [ 500, false ] }
156
156
  end
157
157
 
158
158
  should "raise a server error" do
159
159
  self.run_fake_server(@fake_server) do
160
160
 
161
161
  assert_raises(AndSon::ServerError) do
162
- client = AndSon.new('localhost', 12000, 'v1')
162
+ client = AndSon.new('localhost', 12000)
163
163
  client.call('5xx')
164
164
  end
165
165
 
@@ -171,7 +171,7 @@ class MakingRequestsTests < Assert::Context
171
171
  class TimeoutErrorTests < MakingRequestsTests
172
172
  desc "when a request takes to long to respond"
173
173
  setup do
174
- @fake_server.add_handler('v1', 'forever') do |params|
174
+ @fake_server.add_handler('forever') do |params|
175
175
  sleep 0.2
176
176
  [ 200, true ]
177
177
  end
@@ -181,7 +181,7 @@ class MakingRequestsTests < Assert::Context
181
181
  self.run_fake_server(@fake_server) do
182
182
 
183
183
  assert_raises(Sanford::Protocol::TimeoutError) do
184
- client = AndSon.new('localhost', 12000, 'v1')
184
+ client = AndSon.new('localhost', 12000)
185
185
  client.timeout(0.1).call('forever')
186
186
  end
187
187
 
@@ -11,12 +11,12 @@ class AndSon::Client
11
11
 
12
12
  desc "AndSon::Client"
13
13
  setup do
14
- @host, @port, @version = '0.0.0.0', 8000, "v1"
15
- @client = AndSon::Client.new(@host, @port, @version)
14
+ @host, @port = '0.0.0.0', 8000
15
+ @client = AndSon::Client.new(@host, @port)
16
16
  end
17
17
  subject{ @client }
18
18
 
19
- should have_imeths :host, :port, :version, :responses
19
+ should have_imeths :host, :port, :responses
20
20
  should have_imeths :call_runner, :call, :timeout, :logger, :params
21
21
 
22
22
  should "know its default call runner" do
@@ -24,7 +24,6 @@ class AndSon::Client
24
24
 
25
25
  assert_equal @host, default_runner.host
26
26
  assert_equal @port, default_runner.port
27
- assert_equal @version, default_runner.version
28
27
  assert_equal 60.0, default_runner.timeout_value
29
28
  assert_instance_of AndSon::NullLogger, default_runner.logger_value
30
29
  end
@@ -89,12 +88,11 @@ class AndSon::Client
89
88
  should "write a request to the connection" do
90
89
  @connection.stubs(:open).yields(@fake_connection).returns(@response)
91
90
 
92
- client = AndSon::Client.new('localhost', 12001, 'v1').call('echo', {
91
+ client = AndSon::Client.new('localhost', 12001).call('echo', {
93
92
  :message => 'test'
94
93
  })
95
94
 
96
95
  request_data = @fake_connection.written.first
97
- assert_equal 'v1', request_data['version']
98
96
  assert_equal 'echo', request_data['name']
99
97
  assert_equal({ 'message' => 'test' }, request_data['params'])
100
98
  end
@@ -102,7 +100,7 @@ class AndSon::Client
102
100
  should "close the write stream" do
103
101
  @connection.stubs(:open).yields(@fake_connection).returns(@response)
104
102
 
105
- client = AndSon::Client.new('localhost', 12001, 'v1').call('echo', {
103
+ client = AndSon::Client.new('localhost', 12001).call('echo', {
106
104
  :message => 'test'
107
105
  })
108
106
 
@@ -110,7 +108,7 @@ class AndSon::Client
110
108
  end
111
109
 
112
110
  should "raise an ArgumentError when #call is not passed a Hash for params" do
113
- client = AndSon::Client.new('localhost', 12001, 'v1')
111
+ client = AndSon::Client.new('localhost', 12001)
114
112
  runner = client.timeout(0.1) # in case it actually tries to make the request
115
113
 
116
114
  assert_raises(ArgumentError) do
@@ -120,7 +118,7 @@ class AndSon::Client
120
118
 
121
119
  should "raise a ConnectionClosedError when the server closes the connection" do
122
120
  self.start_closing_server(12001) do
123
- client = AndSon::Client.new('localhost', 12001, 'v1')
121
+ client = AndSon::Client.new('localhost', 12001)
124
122
 
125
123
  assert_raises(AndSon::ConnectionClosedError) do
126
124
  client.call('anything')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: and-son
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Collin Redding
@@ -16,40 +16,39 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-03-14 00:00:00 Z
19
+ date: 2013-10-14 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
22
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
26
25
  - - ~>
27
26
  - !ruby/object:Gem::Version
28
- hash: 1
27
+ hash: 7
29
28
  segments:
30
29
  - 0
31
- - 5
32
- version: "0.5"
30
+ - 6
31
+ version: "0.6"
32
+ type: :runtime
33
33
  requirement: *id001
34
+ prerelease: false
34
35
  name: sanford-protocol
35
- type: :runtime
36
36
  - !ruby/object:Gem::Dependency
37
- prerelease: false
38
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
41
40
  - - ~>
42
41
  - !ruby/object:Gem::Version
43
- hash: 3
42
+ hash: 5
44
43
  segments:
45
44
  - 2
46
- - 0
47
- version: "2.0"
45
+ - 3
46
+ version: "2.3"
47
+ type: :development
48
48
  requirement: *id002
49
+ prerelease: false
49
50
  name: assert
50
- type: :development
51
51
  - !ruby/object:Gem::Dependency
52
- prerelease: false
53
52
  version_requirements: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
55
54
  requirements:
@@ -60,9 +59,10 @@ dependencies:
60
59
  - 1
61
60
  - 0
62
61
  version: "1.0"
62
+ type: :development
63
63
  requirement: *id003
64
+ prerelease: false
64
65
  name: assert-mocha
65
- type: :development
66
66
  description: Simple Sanford client for Ruby.
67
67
  email:
68
68
  - collin.redding@me.com