and-son 0.3.1 → 0.4.0

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