riak-client 1.0.0.beta → 1.0.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.
Files changed (69) hide show
  1. data/.gitignore +7 -4
  2. data/Gemfile +12 -17
  3. data/Guardfile +1 -1
  4. data/LICENSE +16 -0
  5. data/README.markdown +178 -0
  6. data/RELEASE_NOTES.md +99 -0
  7. data/Rakefile +25 -1
  8. data/erl_src/riak_kv_test014_backend.beam +0 -0
  9. data/erl_src/riak_kv_test014_backend.erl +189 -0
  10. data/erl_src/riak_kv_test_backend.beam +0 -0
  11. data/erl_src/riak_kv_test_backend.erl +37 -19
  12. data/lib/riak/client.rb +322 -272
  13. data/lib/riak/client/beefcake_protobuffs_backend.rb +6 -10
  14. data/lib/riak/client/decaying.rb +28 -0
  15. data/lib/riak/client/excon_backend.rb +27 -11
  16. data/lib/riak/client/http_backend.rb +71 -2
  17. data/lib/riak/client/http_backend/configuration.rb +17 -3
  18. data/lib/riak/client/http_backend/transport_methods.rb +3 -3
  19. data/lib/riak/client/net_http_backend.rb +18 -14
  20. data/lib/riak/client/node.rb +111 -0
  21. data/lib/riak/client/pool.rb +180 -0
  22. data/lib/riak/client/protobuffs_backend.rb +15 -5
  23. data/lib/riak/client/search.rb +9 -3
  24. data/lib/riak/link.rb +5 -7
  25. data/lib/riak/locale/en.yml +1 -0
  26. data/lib/riak/node/configuration.rb +1 -0
  27. data/lib/riak/node/defaults.rb +19 -6
  28. data/lib/riak/node/generation.rb +9 -2
  29. data/lib/riak/node/log.rb +2 -2
  30. data/lib/riak/node/version.rb +22 -16
  31. data/lib/riak/robject.rb +19 -3
  32. data/lib/riak/serializers.rb +1 -1
  33. data/lib/riak/test_server.rb +10 -2
  34. data/lib/riak/version.rb +1 -1
  35. data/riak-client.gemspec +3 -3
  36. data/spec/failover/failover.rb +59 -0
  37. data/spec/integration/riak/http_backends_spec.rb +2 -2
  38. data/spec/integration/riak/node_spec.rb +16 -24
  39. data/spec/integration/riak/protobuffs_backends_spec.rb +1 -1
  40. data/spec/integration/riak/test_server_spec.rb +4 -3
  41. data/spec/integration/riak/threading_spec.rb +193 -0
  42. data/spec/riak/beefcake_protobuffs_backend/object_methods_spec.rb +23 -0
  43. data/spec/riak/beefcake_protobuffs_backend_spec.rb +4 -2
  44. data/spec/riak/bucket_spec.rb +2 -1
  45. data/spec/riak/client_spec.rb +80 -181
  46. data/spec/riak/excon_backend_spec.rb +3 -2
  47. data/spec/riak/http_backend/configuration_spec.rb +37 -5
  48. data/spec/riak/http_backend/object_methods_spec.rb +1 -1
  49. data/spec/riak/http_backend/transport_methods_spec.rb +2 -2
  50. data/spec/riak/http_backend_spec.rb +53 -3
  51. data/spec/riak/map_reduce_spec.rb +1 -1
  52. data/spec/riak/net_http_backend_spec.rb +1 -2
  53. data/spec/riak/node_spec.rb +173 -0
  54. data/spec/riak/pool_spec.rb +306 -0
  55. data/spec/riak/robject_spec.rb +8 -4
  56. data/spec/riak/search_spec.rb +66 -15
  57. data/spec/riak/serializers_spec.rb +12 -1
  58. data/spec/spec_helper.rb +9 -1
  59. data/spec/support/http_backend_implementation_examples.rb +6 -2
  60. data/spec/support/sometimes.rb +46 -0
  61. data/spec/support/test_server.rb +50 -19
  62. data/spec/support/unified_backend_examples.rb +11 -10
  63. data/spec/support/version_filter.rb +14 -0
  64. metadata +40 -29
  65. data/lib/active_support/cache/riak_store.rb +0 -2
  66. data/lib/riak/cache_store.rb +0 -84
  67. data/lib/riak/client/pump.rb +0 -30
  68. data/lib/riak/util/fiber1.8.rb +0 -48
  69. data/spec/integration/riak/cache_store_spec.rb +0 -129
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ require 'riak/client/beefcake/object_methods'
3
+ require 'riak/client/beefcake/messages'
4
+
5
+ describe Riak::Client::BeefcakeProtobuffsBackend::ObjectMethods do
6
+ before :each do
7
+ @client = Riak::Client.new
8
+ @backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client, @client.node)
9
+ @bucket = Riak::Bucket.new(@client, "bucket")
10
+ @object = Riak::RObject.new(@bucket, "bar")
11
+ end
12
+
13
+ describe "loading object data from the response" do
14
+ it "should load the key" do
15
+ content = stub(:value => '', :vtag => nil, :content_type => nil, :links => nil, :usermeta => nil, :last_mod => nil, :indexes => nil, :charset => nil)
16
+ pbuf = stub(:vclock => nil, :content => [content], :value => nil, :key => 'akey')
17
+ o = @backend.load_object(pbuf, @object)
18
+ o.should == @object
19
+ o.key.should == pbuf.key
20
+ end
21
+ end
22
+
23
+ end
@@ -4,7 +4,8 @@ require 'riak/client/beefcake/messages'
4
4
  describe Riak::Client::BeefcakeProtobuffsBackend do
5
5
  before :each do
6
6
  @client = Riak::Client.new
7
- @backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client)
7
+ @node = @client.nodes.first
8
+ @backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client, @node)
8
9
  @backend.instance_variable_set(:@server_config, {})
9
10
  end
10
11
 
@@ -42,7 +43,8 @@ end
42
43
  describe Riak::Client::BeefcakeProtobuffsBackend, '#mapred' do
43
44
  before(:each) do
44
45
  @client = Riak::Client.new
45
- @backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client)
46
+ @node = @client.nodes.first
47
+ @backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client, @node)
46
48
  @backend.instance_variable_set(:@server_config, {})
47
49
  end
48
50
 
@@ -4,7 +4,8 @@ describe Riak::Bucket do
4
4
  before :each do
5
5
  @client = Riak::Client.new
6
6
  @backend = mock("Backend")
7
- @client.stub!(:backend).and_return(@backend)
7
+ @client.stub!(:backend).and_yield(@backend)
8
+ @client.stub!(:http).and_yield(@backend)
8
9
  @bucket = Riak::Bucket.new(@client, "foo")
9
10
  end
10
11
 
@@ -2,11 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe Riak::Client do
4
4
  describe "when initializing" do
5
- it "should default to the local interface on port 8098 (8087 for protobuffs)" do
5
+ it "should default a single local node" do
6
6
  client = Riak::Client.new
7
- client.host.should == "127.0.0.1"
8
- client.http_port.should == 8098
9
- client.pb_port.should == 8087
7
+ client.nodes.should == [Riak::Client::Node.new(client)]
10
8
  end
11
9
 
12
10
  it "should accept a protocol" do
@@ -16,17 +14,20 @@ describe Riak::Client do
16
14
 
17
15
  it "should accept a host" do
18
16
  client = Riak::Client.new :host => "riak.basho.com"
19
- client.host.should == "riak.basho.com"
17
+ client.nodes.size.should == 1
18
+ client.nodes.first.host.should == "riak.basho.com"
20
19
  end
21
20
 
22
21
  it "should accept an HTTP port" do
23
22
  client = Riak::Client.new :http_port => 9000
24
- client.http_port.should == 9000
23
+ client.nodes.size.should == 1
24
+ client.nodes.first.http_port.should == 9000
25
25
  end
26
26
 
27
27
  it "should accept a Protobuffs port" do
28
28
  client = Riak::Client.new :pb_port => 9000
29
- client.pb_port.should == 9000
29
+ client.nodes.size.should == 1
30
+ client.nodes.first.pb_port.should == 9000
30
31
  end
31
32
 
32
33
  it "should warn on setting :port" do
@@ -38,7 +39,8 @@ describe Riak::Client do
38
39
 
39
40
  it "should accept basic_auth" do
40
41
  client = Riak::Client.new :basic_auth => "user:pass"
41
- client.basic_auth.should eq("user:pass")
42
+ client.nodes.size.should == 1
43
+ client.nodes.first.basic_auth.should eq("user:pass")
42
44
  end
43
45
 
44
46
  it "should accept a client ID" do
@@ -52,34 +54,22 @@ describe Riak::Client do
52
54
 
53
55
  it "should accept a path prefix" do
54
56
  client = Riak::Client.new(:prefix => "/jiak/")
55
- client.prefix.should == "/jiak/"
56
- end
57
-
58
- it "should default the prefix to /riak/ if not specified" do
59
- Riak::Client.new.prefix.should == "/riak/"
57
+ client.nodes.first.http_paths[:prefix].should == "/jiak/"
60
58
  end
61
59
 
62
60
  it "should accept a mapreduce path" do
63
61
  client = Riak::Client.new(:mapred => "/mr")
64
- client.http_paths[:mapred].should == "/mr"
65
- end
66
-
67
- it "should default the mapreduce path to /mapred if not specified" do
68
- Riak::Client.new.http_paths[:mapred].should == "/mapred"
62
+ client.nodes.first.http_paths[:mapred].should == "/mr"
69
63
  end
70
64
 
71
65
  it "should accept a luwak path" do
72
66
  client = Riak::Client.new(:luwak => "/beans")
73
- client.http_paths[:luwak].should == "/beans"
74
- end
75
-
76
- it "should default the luwak path to /luwak if not specified" do
77
- Riak::Client.new.http_paths[:luwak].should == "/luwak"
67
+ client.nodes.first.http_paths[:luwak].should == "/beans"
78
68
  end
79
69
 
80
70
  it "should accept a solr path" do
81
71
  client = Riak::Client.new(:solr => "/solar")
82
- client.http_paths[:solr].should == "/solar"
72
+ client.nodes.first.http_paths[:solr].should == "/solar"
83
73
  end
84
74
  end
85
75
 
@@ -104,86 +94,18 @@ describe Riak::Client do
104
94
  lambda { @client.protocol = 'invalid-protocol' }.should(
105
95
  raise_error(ArgumentError, /^'invalid-protocol' is not a valid protocol/))
106
96
  end
107
-
108
- it "should reset the unified backend when changing the protocol" do
109
- old = @client.backend
110
- @client.protocol = "pbc"
111
- old.should_not eq(@client.backend)
112
- end
113
- end
114
-
115
- describe "setting the host" do
116
- it "should allow setting the host" do
117
- @client.should respond_to(:host=)
118
- @client.host = "riak.basho.com"
119
- @client.host.should == "riak.basho.com"
120
- end
121
-
122
- it "should require the host to be an IP or hostname" do
123
- [238472384972, ""].each do |invalid|
124
- lambda { @client.host = invalid }.should raise_error(ArgumentError)
125
- end
126
- ["127.0.0.1", "10.0.100.5", "localhost", "otherhost.local", "riak.basho.com"].each do |valid|
127
- lambda { @client.host = valid }.should_not raise_error
128
- end
129
- end
130
- end
131
-
132
- [:http, :pb].each do |protocol|
133
- describe "setting the #{protocol} port" do
134
- it "should allow setting the #{protocol} port" do
135
- @client.should respond_to("#{protocol}_port=")
136
- @client.send("#{protocol}_port=", 9000)
137
- @client.send("#{protocol}_port").should == 9000
138
- end
139
-
140
- it "should require the port to be a valid number" do
141
- [-1,65536,"foo"].each do |invalid|
142
- lambda { @client.send("#{protocol}_port=",invalid) }.should raise_error(ArgumentError)
143
- end
144
- [0,1,65535,8098].each do |valid|
145
- lambda { @client.send("#{protocol}_port=", valid) }.should_not raise_error
146
- end
147
- end
148
- end
149
- end
150
-
151
- describe "setting the port" do
152
- before do
153
- @client.stub!(:warn).and_return(true)
154
- end
155
- it "should raise a deprecation warning" do
156
- @client.should_receive(:warn).and_return(true)
157
- @client.port = 9000
158
- end
159
-
160
- it "should set the port for the selected protocol" do
161
- @client.protocol = "pbc"
162
- @client.port = 9000
163
- @client.pb_port.should == 9000
164
- end
165
97
  end
166
98
 
167
99
  describe "setting http auth" do
168
100
  it "should allow setting basic_auth" do
169
101
  @client.should respond_to(:basic_auth=)
170
102
  @client.basic_auth = "user:pass"
171
- @client.basic_auth.should eq("user:pass")
172
- end
173
-
174
- it "should require that basic auth splits into two even parts" do
175
- lambda { @client.basic_auth ="user" }.should raise_error(ArgumentError, "basic auth must be set using 'user:pass'")
103
+ @client.nodes.each do |node|
104
+ node.basic_auth.should eq("user:pass")
105
+ end
176
106
  end
177
107
  end
178
108
 
179
- it "should allow setting the prefix" do
180
- @client.http_paths.should be_kind_of(Hash)
181
- @client.http_paths.include?(:prefix).should == true
182
- @client.should respond_to(:prefix=)
183
- @client.prefix = "/another-prefix"
184
- @client.prefix.should == "/another-prefix"
185
- end
186
-
187
109
  describe "setting the client id" do
188
110
  it "should accept a string unmodified" do
189
111
  @client.client_id = "foo"
@@ -207,16 +129,25 @@ describe Riak::Client do
207
129
 
208
130
  it "should choose the selected backend" do
209
131
  @client.http_backend = :NetHTTP
210
- @client.http.should be_instance_of(Riak::Client::NetHTTPBackend)
132
+ @client.http do |h|
133
+ h.should be_instance_of(Riak::Client::NetHTTPBackend)
134
+ end
211
135
 
212
136
  @client = Riak::Client.new
213
137
  @client.http_backend = :Excon
214
- @client.http.should be_instance_of(Riak::Client::ExconBackend)
138
+ @client.http do |h|
139
+ h.should be_instance_of(Riak::Client::ExconBackend)
140
+ end
141
+ end
142
+
143
+ it "should clear the existing HTTP connections when changed" do
144
+ @client.http_pool.should_receive(:clear)
145
+ @client.http_backend = :Excon
215
146
  end
216
147
 
217
148
  it "should raise an error when the chosen backend is not valid" do
218
149
  Riak::Client::NetHTTPBackend.should_receive(:configured?).and_return(false)
219
- lambda { @client.http }.should raise_error
150
+ lambda { @client.http { |x| } }.should raise_error
220
151
  end
221
152
  end
222
153
 
@@ -227,12 +158,19 @@ describe Riak::Client do
227
158
 
228
159
  it "should choose the selected backend" do
229
160
  @client.protobuffs_backend = :Beefcake
230
- @client.protobuffs.should be_instance_of(Riak::Client::BeefcakeProtobuffsBackend)
161
+ @client.protobuffs do |p|
162
+ p.should be_instance_of(Riak::Client::BeefcakeProtobuffsBackend)
163
+ end
164
+ end
165
+
166
+ it "should teardown the existing Protobuffs connections when changed" do
167
+ @client.protobuffs_pool.should_receive(:clear)
168
+ @client.protobuffs_backend = :Beefcake
231
169
  end
232
170
 
233
171
  it "should raise an error when the chosen backend is not valid" do
234
172
  Riak::Client::BeefcakeProtobuffsBackend.should_receive(:configured?).and_return(false)
235
- lambda { @client.protobuffs }.should raise_error
173
+ lambda { @client.protobuffs { |x| } }.should raise_error
236
174
  end
237
175
  end
238
176
 
@@ -244,13 +182,17 @@ describe Riak::Client do
244
182
  it "should use HTTP when the protocol is http or https" do
245
183
  %w[http https].each do |p|
246
184
  @client.protocol = p
247
- @client.backend.should be_kind_of(Riak::Client::HTTPBackend)
185
+ @client.backend do |b|
186
+ b.should be_kind_of(Riak::Client::HTTPBackend)
187
+ end
248
188
  end
249
189
  end
250
190
 
251
191
  it "should use Protobuffs when the protocol is pbc" do
252
192
  @client.protocol = "pbc"
253
- @client.backend.should be_kind_of(Riak::Client::ProtobuffsBackend)
193
+ @client.backend do |b|
194
+ b.should be_kind_of(Riak::Client::ProtobuffsBackend)
195
+ end
254
196
  end
255
197
  end
256
198
 
@@ -258,7 +200,7 @@ describe Riak::Client do
258
200
  before :each do
259
201
  @client = Riak::Client.new
260
202
  @backend = mock("Backend")
261
- @client.stub!(:backend).and_return(@backend)
203
+ @client.stub!(:backend).and_yield(@backend)
262
204
  end
263
205
 
264
206
  it "should return a bucket object" do
@@ -282,7 +224,7 @@ describe Riak::Client do
282
224
  before do
283
225
  @client = Riak::Client.new
284
226
  @backend = mock("Backend")
285
- @client.stub!(:backend).and_return(@backend)
227
+ @client.stub!(:backend).and_yield(@backend)
286
228
  end
287
229
 
288
230
  after { Riak.disable_list_keys_warnings = true }
@@ -309,83 +251,46 @@ describe Riak::Client do
309
251
  before :each do
310
252
  @client = Riak::Client.new
311
253
  @http = mock(Riak::Client::HTTPBackend)
312
- @client.stub!(:http).and_return(@http)
254
+ @http.stub!(:node).and_return(@client.node)
255
+ @client.stub!(:http).and_yield(@http)
313
256
  end
314
257
 
315
- it "should store the file in Luwak and return the key/filename when no filename is given" do
316
- @http.should_receive(:post).with(201, "/luwak", anything, {"Content-Type" => "text/plain"}).and_return(:code => 201, :headers => {"location" => ["/luwak/123456789"]})
258
+ it "should store the file via the HTTP interface" do
259
+ @http.should_receive(:store_file).with("text/plain", "Hello, world").and_return("123456789")
317
260
  @client.store_file("text/plain", "Hello, world").should == "123456789"
318
261
  end
319
-
320
- it "should store the file in Luwak and return the key/filename when the filename is given" do
321
- @http.should_receive(:put).with(204, "/luwak", "greeting.txt", anything, {"Content-Type" => "text/plain"}).and_return(:code => 204, :headers => {})
322
- @client.store_file("greeting.txt", "text/plain", "Hello, world").should == "greeting.txt"
323
- end
324
262
  end
325
263
 
326
264
  describe "retrieving a file" do
327
265
  before :each do
328
266
  @client = Riak::Client.new
329
267
  @http = mock(Riak::Client::HTTPBackend)
330
- @client.stub!(:http).and_return(@http)
331
- @http.should_receive(:get).with(200, "/luwak", "greeting.txt").and_yield("Hello,").and_yield(" world!").and_return({:code => 200, :headers => {"content-type" => ["text/plain"]}})
268
+ @http.stub!(:node).and_return(@client.node)
269
+ @client.stub!(:http).and_yield(@http)
332
270
  end
333
271
 
334
- it "should stream the data to a temporary file" do
335
- file = @client.get_file("greeting.txt")
336
- file.open {|f| f.read.should == "Hello, world!" }
337
- end
338
-
339
- it "should stream the data through the given block, returning nil" do
340
- string = ""
341
- result = @client.get_file("greeting.txt"){|chunk| string << chunk }
342
- result.should be_nil
343
- string.should == "Hello, world!"
344
- end
345
-
346
- it "should expose the original key and content-type on the temporary file" do
347
- file = @client.get_file("greeting.txt")
348
- file.content_type.should == "text/plain"
349
- file.original_filename.should == "greeting.txt"
272
+ it "should fetch via HTTP" do
273
+ @http.should_receive(:get_file).with("greeting.txt")
274
+ @client.get_file("greeting.txt")
350
275
  end
351
276
  end
352
277
 
353
278
  it "should delete a file" do
354
279
  @client = Riak::Client.new
355
280
  @http = mock(Riak::Client::HTTPBackend)
356
- @client.stub!(:http).and_return(@http)
357
- @http.should_receive(:delete).with([204,404], "/luwak", "greeting.txt")
281
+ @http.stub!(:node).and_return(@client.nodes.first)
282
+ @client.stub!(:http).and_yield(@http)
283
+ @http.should_receive(:delete_file).with("greeting.txt")
358
284
  @client.delete_file("greeting.txt")
359
285
  end
360
286
 
361
- it "should return true if the file exists" do
362
- @client = Riak::Client.new
363
- @client.http.should_receive(:head).and_return(:code => 200)
364
- @client.file_exists?("foo").should be_true
365
- end
366
-
367
- it "should return false if the file doesn't exist" do
368
- @client = Riak::Client.new
369
- @client.http.should_receive(:head).and_return(:code => 404)
370
- @client.file_exists?("foo").should be_false
371
- end
372
-
373
- it "should escape the filename when storing, retrieving or deleting files" do
287
+ it "should detect if file exists via HTTP" do
374
288
  @client = Riak::Client.new
375
289
  @http = mock(Riak::Client::HTTPBackend)
376
- @client.stub!(:http).and_return(@http)
377
- # Delete escapes keys
378
- @http.should_receive(:delete).with([204,404], "/luwak", "docs%2FA%20Big%20PDF.pdf")
379
- @client.delete_file("docs/A Big PDF.pdf")
380
- # Get escapes keys
381
- @http.should_receive(:get).with(200, "/luwak", "docs%2FA%20Big%20PDF.pdf").and_yield("foo").and_return(:headers => {"content-type" => ["text/plain"]}, :code => 200)
382
- @client.get_file("docs/A Big PDF.pdf")
383
- # Streamed get escapes keys
384
- @http.should_receive(:get).with(200, "/luwak", "docs%2FA%20Big%20PDF.pdf").and_yield("foo").and_return(:headers => {"content-type" => ["text/plain"]}, :code => 200)
385
- @client.get_file("docs/A Big PDF.pdf"){|chunk| chunk}
386
- # Put escapes keys
387
- @http.should_receive(:put).with(204, "/luwak", "docs%2FA%20Big%20PDF.pdf", "foo", {"Content-Type" => "text/plain"})
388
- @client.store_file("docs/A Big PDF.pdf", "text/plain", "foo")
290
+ @http.stub!(:node).and_return(@client.nodes.first)
291
+ @client.stub!(:http).and_yield(@http)
292
+ @http.should_receive(:file_exists?).and_return(true)
293
+ @client.file_exists?("foo").should be_true
389
294
  end
390
295
  end
391
296
 
@@ -399,12 +304,12 @@ describe Riak::Client do
399
304
  end
400
305
 
401
306
  it "should not have ssl options by default" do
402
- @client.ssl_options.should be_nil
307
+ @client.nodes.first.ssl_options.should be_nil
403
308
  end
404
309
 
405
310
  it "should have a blank hash for ssl options if the protocol is set to https" do
406
311
  @client.protocol = 'https'
407
- @client.ssl_options.should be_a(Hash)
312
+ @client.nodes.first.ssl_options.should be_a(Hash)
408
313
  end
409
314
 
410
315
  # The api should have an ssl= method for setting up all of the ssl
@@ -416,18 +321,18 @@ describe Riak::Client do
416
321
  @client.should_not respond_to(:ssl)
417
322
  end
418
323
 
419
- it "should now allow writing ssl options via ssl_options=" do
324
+ it "should not allow writing ssl options via ssl_options=" do
420
325
  @client.should_not respond_to(:ssl_options=)
421
326
  end
422
327
 
423
328
  it "should allow setting ssl to true" do
424
329
  @client.ssl = true
425
- @client.ssl_options[:verify_mode].should eq('none')
330
+ @client.nodes.first.ssl_options[:verify_mode].should eq('none')
426
331
  end
427
332
 
428
333
  it "should allow setting ssl options as a hash" do
429
334
  @client.ssl = {:verify_mode => "peer"}
430
- @client.ssl_options[:verify_mode].should eq('peer')
335
+ @client.nodes.first.ssl_options[:verify_mode].should eq('peer')
431
336
  end
432
337
 
433
338
  it "should set the protocol to https when setting ssl to true" do
@@ -443,9 +348,9 @@ describe Riak::Client do
443
348
 
444
349
  it "should should clear ssl options when setting ssl to false" do
445
350
  @client.ssl = true
446
- @client.ssl_options.should_not be_nil
351
+ @client.nodes.first.ssl_options.should_not be_nil
447
352
  @client.ssl = false
448
- @client.ssl_options.should be_nil
353
+ @client.nodes.first.ssl_options.should be_nil
449
354
  end
450
355
 
451
356
  it "should set the protocol to https when setting ssl options" do
@@ -455,12 +360,12 @@ describe Riak::Client do
455
360
 
456
361
  it "should allow setting the verify_mode to none" do
457
362
  @client.ssl = {:verify_mode => "none"}
458
- @client.ssl_options[:verify_mode].should eq("none")
363
+ @client.nodes.first.ssl_options[:verify_mode].should eq("none")
459
364
  end
460
365
 
461
366
  it "should allow setting the verify_mode to peer" do
462
367
  @client.ssl = {:verify_mode => "peer"}
463
- @client.ssl_options[:verify_mode].should eq("peer")
368
+ @client.nodes.first.ssl_options[:verify_mode].should eq("peer")
464
369
  end
465
370
 
466
371
  it "should not allow setting the verify_mode to anything else" do
@@ -469,50 +374,44 @@ describe Riak::Client do
469
374
 
470
375
  it "should default verify_mode to none" do
471
376
  @client.ssl = true
472
- @client.ssl_options[:verify_mode].should eq("none")
473
- end
474
-
475
- it "should let the backend know if ssl is enabled" do
476
- @client.should_not be_ssl_enabled
477
- @client.ssl = true
478
- @client.should be_ssl_enabled
377
+ @client.nodes.first.ssl_options[:verify_mode].should eq("none")
479
378
  end
480
379
 
481
380
  it "should allow setting the pem" do
482
381
  @client.ssl = {:pem => 'i-am-a-pem'}
483
- @client.ssl_options[:pem].should eq('i-am-a-pem')
382
+ @client.nodes.first.ssl_options[:pem].should eq('i-am-a-pem')
484
383
  end
485
384
 
486
385
  it "should set them pem from the contents of pem_file" do
487
386
  filepath = File.expand_path(File.join(File.dirname(__FILE__), '../fixtures/test.pem'))
488
387
  @client.ssl = {:pem_file => filepath}
489
- @client.ssl_options[:pem].should eq("i-am-a-pem\n")
388
+ @client.nodes.first.ssl_options[:pem].should eq("i-am-a-pem\n")
490
389
  end
491
390
 
492
391
  it "should allow setting the pem_password" do
493
392
  @client.ssl = {:pem_password => 'pem-pass'}
494
- @client.ssl_options[:pem_password].should eq('pem-pass')
393
+ @client.nodes.first.ssl_options[:pem_password].should eq('pem-pass')
495
394
  end
496
395
 
497
396
  it "should allow setting the ca_file" do
498
397
  @client.ssl = {:ca_file => '/path/to/ca.crt'}
499
- @client.ssl_options[:ca_file].should eq('/path/to/ca.crt')
398
+ @client.nodes.first.ssl_options[:ca_file].should eq('/path/to/ca.crt')
500
399
  end
501
400
 
502
401
  it "should allow setting the ca_path" do
503
402
  @client.ssl = {:ca_path => '/path/to/certs/'}
504
- @client.ssl_options[:ca_path].should eq('/path/to/certs/')
403
+ @client.nodes.first.ssl_options[:ca_path].should eq('/path/to/certs/')
505
404
  end
506
405
 
507
406
  %w[pem ca_file ca_path].each do |option|
508
407
  it "should default the verify_mode to peer when setting the #{option}" do
509
408
  @client.ssl = {option.to_sym => 'test-data'}
510
- @client.ssl_options[:verify_mode].should eq("peer")
409
+ @client.nodes.first.ssl_options[:verify_mode].should eq("peer")
511
410
  end
512
411
 
513
412
  it "should allow setting the verify mode when setting the #{option}" do
514
413
  @client.ssl = {option.to_sym => 'test-data', :verify_mode => "none"}
515
- @client.ssl_options[:verify_mode].should eq("none")
414
+ @client.nodes.first.ssl_options[:verify_mode].should eq("none")
516
415
  end
517
416
  end
518
417
  end