riak-client 1.2.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/Gemfile +1 -7
  4. data/README.markdown +66 -0
  5. data/RELEASE_NOTES.md +27 -0
  6. data/lib/riak/bucket.rb +24 -5
  7. data/lib/riak/client.rb +42 -7
  8. data/lib/riak/client/beefcake/message_codes.rb +56 -0
  9. data/lib/riak/client/beefcake/messages.rb +190 -18
  10. data/lib/riak/client/beefcake_protobuffs_backend.rb +143 -10
  11. data/lib/riak/client/feature_detection.rb +26 -1
  12. data/lib/riak/client/http_backend.rb +58 -9
  13. data/lib/riak/client/http_backend/bucket_streamer.rb +15 -0
  14. data/lib/riak/client/http_backend/chunked_json_streamer.rb +42 -0
  15. data/lib/riak/client/http_backend/configuration.rb +17 -1
  16. data/lib/riak/client/http_backend/key_streamer.rb +4 -32
  17. data/lib/riak/client/protobuffs_backend.rb +12 -34
  18. data/lib/riak/counter.rb +101 -0
  19. data/lib/riak/index_collection.rb +71 -0
  20. data/lib/riak/list_buckets.rb +28 -0
  21. data/lib/riak/locale/en.yml +14 -0
  22. data/lib/riak/multiget.rb +123 -0
  23. data/lib/riak/node.rb +2 -0
  24. data/lib/riak/node/configuration.rb +32 -21
  25. data/lib/riak/node/defaults.rb +2 -0
  26. data/lib/riak/node/generation.rb +19 -7
  27. data/lib/riak/node/version.rb +2 -16
  28. data/lib/riak/robject.rb +1 -0
  29. data/lib/riak/secondary_index.rb +67 -0
  30. data/lib/riak/version.rb +1 -1
  31. data/riak-client.gemspec +3 -2
  32. data/spec/integration/riak/counters_spec.rb +51 -0
  33. data/spec/integration/riak/http_backends_spec.rb +24 -14
  34. data/spec/integration/riak/node_spec.rb +6 -28
  35. data/spec/riak/beefcake_protobuffs_backend_spec.rb +84 -0
  36. data/spec/riak/bucket_spec.rb +55 -5
  37. data/spec/riak/client_spec.rb +34 -0
  38. data/spec/riak/counter_spec.rb +122 -0
  39. data/spec/riak/index_collection_spec.rb +50 -0
  40. data/spec/riak/list_buckets_spec.rb +41 -0
  41. data/spec/riak/multiget_spec.rb +76 -0
  42. data/spec/riak/robject_spec.rb +4 -1
  43. data/spec/riak/secondary_index_spec.rb +225 -0
  44. data/spec/spec_helper.rb +1 -0
  45. data/spec/support/sometimes.rb +2 -2
  46. data/spec/support/unified_backend_examples.rb +4 -0
  47. metadata +41 -47
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riak::Multiget do
4
+ before :each do
5
+ @client = Riak::Client.new
6
+ @bucket = Riak::Bucket.new(@client, 'foo')
7
+ @pairs = [[@bucket, 'key1'], [@bucket, 'key2']]
8
+ end
9
+
10
+ describe "initialization" do
11
+ it "should accept a client and an array of bucket/key pairs" do
12
+ lambda { Riak::Multiget.new(@client, @pairs) }.should_not raise_error
13
+ end
14
+ end
15
+
16
+ describe "operation" do
17
+ it "should fetch both keys from the bucket" do
18
+ @bucket.should_receive(:[]).with('key1')
19
+ @bucket.should_receive(:[]).with('key2')
20
+
21
+ @multiget = Riak::Multiget.new(@client, @pairs)
22
+ @multiget.fetch
23
+ @multiget.wait_for_finish
24
+ end
25
+
26
+ it "should asynchronously fetch" do
27
+ # make fetches slow
28
+ @slow_mtx = Mutex.new
29
+ @slow_mtx.lock
30
+
31
+ # set up fetch process to wait on key2
32
+ @bucket.should_receive(:[]) do |key|
33
+ next if key == 'key1'
34
+
35
+ # wait for test process
36
+ @slow_mtx.lock
37
+ end.twice
38
+
39
+ # start fetch process
40
+ @multiget = Riak::Multiget.new(@client, @pairs)
41
+ @multiget.fetch
42
+
43
+ @multiget.finished?.should be_false
44
+
45
+ # allow fetch
46
+ @slow_mtx.unlock
47
+
48
+ @results = @multiget.results
49
+ @multiget.finished?.should be_true
50
+ @results.should be_a Hash
51
+ end
52
+
53
+ it "should not die when objects aren't found" do
54
+ @bucket.should_receive(:[]).with('key1').and_raise(Riak::HTTPFailedRequest.new(:get, 200, 404, {}, "File not found"))
55
+ @bucket.should_receive(:[]).with('key2').and_return(true)
56
+
57
+ @results = Riak::Multiget.get_all @client, @pairs
58
+
59
+ @results[[@bucket, 'key1']].should be_nil
60
+ @results[[@bucket, 'key2']].should be_true
61
+ end
62
+ end
63
+
64
+ describe "results" do
65
+ it "should return a hash of pairs to values" do
66
+ @bucket.should_receive(:[]).with('key1')
67
+ @bucket.should_receive(:[]).with('key2')
68
+
69
+ @multiget = Riak::Multiget.new(@client, @pairs)
70
+ @multiget.fetch
71
+ @results = @multiget.results
72
+
73
+ @results.should be_a Hash
74
+ end
75
+ end
76
+ end
@@ -277,6 +277,10 @@ describe Riak::RObject do
277
277
  lambda { @object.content_type = " "; @object.store }.should raise_error(ArgumentError)
278
278
  end
279
279
 
280
+ it "should raise an error when given an empty string as key" do
281
+ lambda { @object.key = ''; @object.store }.should raise_error(ArgumentError)
282
+ end
283
+
280
284
  it "should pass along quorum parameters and returnbody to the backend" do
281
285
  @backend.should_receive(:store_object).with(@object, :returnbody => false, :w => 3, :dw => 2).and_return(true)
282
286
  @object.store(:returnbody => false, :w => 3, :dw => 2)
@@ -461,4 +465,3 @@ describe Riak::RObject do
461
465
  end
462
466
  end
463
467
  end
464
-
@@ -0,0 +1,225 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riak::SecondaryIndex do
4
+ before(:each) do
5
+ @client = Riak::Client.new
6
+ @bucket = Riak::Bucket.new @client, 'foo'
7
+ end
8
+
9
+ describe "initialization" do
10
+ it "should accept a bucket, index name, and scalar" do
11
+ lambda { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa' }.should_not raise_error
12
+ lambda { Riak::SecondaryIndex.new @bucket, 'asdf', 12345 }.should_not raise_error
13
+ end
14
+
15
+ it "should accept a bucket, index name, and a range" do
16
+ lambda { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa'..'zzzz' }.should_not raise_error
17
+ lambda { Riak::SecondaryIndex.new @bucket, 'asdf', 1..5 }.should_not raise_error
18
+ end
19
+ end
20
+
21
+ describe "operation" do
22
+ before(:each) do
23
+ @backend = mock 'Backend'
24
+ @client.stub!(:backend).and_yield(@backend)
25
+ @args = [@bucket, 'asdf', 'aaaa'..'zzzz', {}]
26
+ @index = Riak::SecondaryIndex.new *@args
27
+
28
+ @backend.should_receive(:get_index).with(*@args).and_return(%w{abcd efgh})
29
+ end
30
+
31
+ it "should return an array of keys" do
32
+ @results = @index.keys
33
+ @results.should be_a Array
34
+ @results.first.should be_a String
35
+ end
36
+ it "should return an array of values" do
37
+ @backend.should_receive(:fetch_object).with(@bucket, 'abcd', {}).and_return('abcd')
38
+ @backend.should_receive(:fetch_object).with(@bucket, 'efgh', {}).and_return('efgh')
39
+
40
+ @results = @index.values
41
+ @results.should be_a Array
42
+ @results.length.should == 2
43
+ end
44
+ end
45
+
46
+ describe "streaming" do
47
+ it "should stream keys into a block" do
48
+ @backend = mock 'Backend'
49
+ @client.stub!(:backend).and_yield(@backend)
50
+ @args = [@bucket, 'asdf', 'aaaa'..'zzzz', {stream: true}]
51
+ @index = Riak::SecondaryIndex.new *@args
52
+
53
+ @backend.should_receive(:get_index).with(*@args).and_yield('abcd').and_yield('efgh')
54
+
55
+ @index.keys {|b| :noop }
56
+ end
57
+ end
58
+
59
+ describe "pagination" do
60
+ it "should support max_results" do
61
+ @max_results = 5
62
+
63
+ @expected_collection = Riak::IndexCollection.new_from_json({
64
+ 'keys' => %w{aaaa bbbb cccc dddd eeee},
65
+ 'continuation' => 'examplecontinuation'
66
+ }.to_json)
67
+
68
+ @backend = mock 'Backend'
69
+ @client.stub!(:backend).and_yield(@backend)
70
+ @backend.
71
+ should_receive(:get_index).
72
+ with(
73
+ @bucket,
74
+ 'asdf',
75
+ ('aaaa'..'zzzz'),
76
+ :max_results => @max_results
77
+ ).
78
+ and_return(@expected_collection)
79
+ @backend.stub(:get_server_version => '1.4.0')
80
+
81
+
82
+ @index = Riak::SecondaryIndex.new(
83
+ @bucket,
84
+ 'asdf',
85
+ 'aaaa'..'zzzz',
86
+ :max_results => @max_results
87
+ )
88
+
89
+ @results = @index.keys
90
+ @results.should be_an Array
91
+ @results.should == @expected_collection
92
+ @results.length.should == @max_results
93
+ end
94
+
95
+ it "should support continuations" do
96
+ @max_results = 5
97
+
98
+ @expected_collection = Riak::IndexCollection.new_from_json({
99
+ 'keys' => %w{ffff gggg hhhh}
100
+ }.to_json)
101
+
102
+ @backend = mock 'Backend'
103
+ @client.stub!(:backend).and_yield(@backend)
104
+ @backend.
105
+ should_receive(:get_index).
106
+ with(
107
+ @bucket,
108
+ 'asdf',
109
+ ('aaaa'..'zzzz'),
110
+ max_results: @max_results,
111
+ continuation: 'examplecontinuation'
112
+ ).
113
+ and_return(@expected_collection)
114
+ @backend.stub(:get_server_version => '1.4.0')
115
+
116
+
117
+ @index = Riak::SecondaryIndex.new(
118
+ @bucket,
119
+ 'asdf',
120
+ 'aaaa'..'zzzz',
121
+ max_results: @max_results,
122
+ continuation: 'examplecontinuation'
123
+ )
124
+
125
+ @results = @index.keys
126
+ @results.should be_an Array
127
+ @results.should == @expected_collection
128
+ end
129
+
130
+ it "should support a next_page method" do
131
+ @max_results = 5
132
+
133
+ @expected_collection = Riak::IndexCollection.new_from_json({
134
+ 'keys' => %w{aaaa bbbb cccc dddd eeee},
135
+ 'continuation' => 'examplecontinuation'
136
+ }.to_json)
137
+
138
+ @backend = mock 'Backend'
139
+ @client.stub!(:backend).and_yield(@backend)
140
+ @backend.
141
+ should_receive(:get_index).
142
+ once.
143
+ with(
144
+ @bucket,
145
+ 'asdf',
146
+ ('aaaa'..'zzzz'),
147
+ :max_results => @max_results
148
+ ).
149
+ and_return(@expected_collection)
150
+ @backend.stub(:get_server_version => '1.4.0')
151
+
152
+
153
+ @index = Riak::SecondaryIndex.new(
154
+ @bucket,
155
+ 'asdf',
156
+ 'aaaa'..'zzzz',
157
+ :max_results => @max_results
158
+ )
159
+
160
+ @results = @index.keys
161
+ @results.should == @expected_collection
162
+
163
+ @second_collection = Riak::IndexCollection.new_from_json({
164
+ 'keys' => %w{ffff gggg hhhh}
165
+ }.to_json)
166
+ @backend.
167
+ should_receive(:get_index).
168
+ once.
169
+ with(
170
+ @bucket,
171
+ 'asdf',
172
+ ('aaaa'..'zzzz'),
173
+ max_results: @max_results,
174
+ continuation: 'examplecontinuation'
175
+ ).
176
+ and_return(@second_collection)
177
+
178
+ @second_page = @index.next_page
179
+ @second_results = @second_page.keys
180
+ @second_results.should == @second_collection
181
+ end
182
+ end
183
+
184
+ describe "return_terms" do
185
+ it "should optionally give the index value" do
186
+ @expected_collection = Riak::IndexCollection.new_from_json({
187
+ 'results' => [
188
+ {'aaaa' => 'aaaa'},
189
+ {'bbbb' => 'bbbb'},
190
+ {'bbbb' => 'bbbb2'}
191
+ ]
192
+ }.to_json)
193
+
194
+
195
+ @backend = mock 'Backend'
196
+ @client.stub!(:backend).and_yield(@backend)
197
+ @backend.
198
+ should_receive(:get_index).
199
+ with(
200
+ @bucket,
201
+ 'asdf',
202
+ ('aaaa'..'zzzz'),
203
+ :return_terms => true
204
+ ).
205
+ and_return(@expected_collection)
206
+ @backend.stub(:get_server_version => '1.4.0')
207
+
208
+
209
+ @index = Riak::SecondaryIndex.new(
210
+ @bucket,
211
+ 'asdf',
212
+ 'aaaa'..'zzzz',
213
+ :return_terms => true
214
+ )
215
+
216
+ @results = @index.keys
217
+ @results.should be_an Array
218
+ @results.should == @expected_collection
219
+ @results.with_terms.should == {
220
+ 'aaaa' => %w{aaaa},
221
+ 'bbbb' => %w{bbbb bbbb2}
222
+ }
223
+ end
224
+ end
225
+ end
@@ -5,6 +5,7 @@ require 'rubygems' # Use the gems path only for the spec suite
5
5
  require 'riak'
6
6
  require 'rspec'
7
7
  require 'fakeweb'
8
+ require 'stringio'
8
9
 
9
10
  # Only the tests should really get away with this.
10
11
  Riak.disable_list_keys_warnings = true
@@ -35,11 +35,11 @@ RSpec.configure do |config|
35
35
  d.filtered_examples.select {|e| e.metadata[:sometimes] && e.metadata[:retried] > 1 }
36
36
  end
37
37
  end.flatten
38
- formatter.message color[retried_examples.empty? ? :green : :yellow, "\n\nRetried examples: #{retried_examples.count}"]
38
+ formatter.message color[retried_examples.empty? ? :success_color : :pending_color, "\n\nRetried examples: #{retried_examples.count}"]
39
39
  unless retried_examples.empty?
40
40
  retried_examples.each do |e|
41
41
  formatter.message " #{e.full_description}"
42
- formatter.message(color[:yellow, " [#{e.metadata[:retried]}/#{e.metadata[:retries]}] "] + RSpec::Core::Metadata::relative_path(e.location))
42
+ formatter.message(color[:pending_color, " [#{e.metadata[:retried]}/#{e.metadata[:retries]}] "] + RSpec::Core::Metadata::relative_path(e.location))
43
43
  end
44
44
  end
45
45
  end
@@ -259,6 +259,10 @@ shared_examples_for "Unified backend API" do
259
259
  it "should find keys for a range query" do
260
260
  @backend.get_index('test', 'index_int', 19..21).should =~ ["19","20", "21"]
261
261
  end
262
+
263
+ it "should return an empty array for a query that does not match any keys" do
264
+ @backend.get_index('test', 'index_int', 10000).should == []
265
+ end
262
266
  end
263
267
 
264
268
  # mapred
metadata CHANGED
@@ -1,20 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riak-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 1.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Sean Cribbs
8
+ - Bryce Kerley
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-15 00:00:00.000000000 Z
12
+ date: 2013-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
18
  - - ~>
20
19
  - !ruby/object:Gem::Version
@@ -22,7 +21,6 @@ dependencies:
22
21
  type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
@@ -30,103 +28,90 @@ dependencies:
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: fakeweb
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ! '>='
32
+ - - '>='
36
33
  - !ruby/object:Gem::Version
37
34
  version: '1.2'
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
- - - ! '>='
39
+ - - '>='
44
40
  - !ruby/object:Gem::Version
45
41
  version: '1.2'
46
42
  - !ruby/object:Gem::Dependency
47
43
  name: rack
48
44
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
- - - ! '>='
46
+ - - '>='
52
47
  - !ruby/object:Gem::Version
53
48
  version: '1.0'
54
49
  type: :development
55
50
  prerelease: false
56
51
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
- - - ! '>='
53
+ - - '>='
60
54
  - !ruby/object:Gem::Version
61
55
  version: '1.0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: excon
64
58
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
59
  requirements:
67
- - - ! '>='
60
+ - - '>='
68
61
  - !ruby/object:Gem::Version
69
62
  version: 0.6.1
70
63
  type: :development
71
64
  prerelease: false
72
65
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
66
  requirements:
75
- - - ! '>='
67
+ - - '>='
76
68
  - !ruby/object:Gem::Version
77
69
  version: 0.6.1
78
70
  - !ruby/object:Gem::Dependency
79
71
  name: rake
80
72
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
73
  requirements:
83
- - - ! '>='
74
+ - - '>='
84
75
  - !ruby/object:Gem::Version
85
76
  version: '0'
86
77
  type: :development
87
78
  prerelease: false
88
79
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
80
  requirements:
91
- - - ! '>='
81
+ - - '>='
92
82
  - !ruby/object:Gem::Version
93
83
  version: '0'
94
84
  - !ruby/object:Gem::Dependency
95
85
  name: i18n
96
86
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
87
  requirements:
99
- - - ! '>='
88
+ - - '>='
100
89
  - !ruby/object:Gem::Version
101
90
  version: 0.4.0
102
91
  type: :runtime
103
92
  prerelease: false
104
93
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
94
  requirements:
107
- - - ! '>='
95
+ - - '>='
108
96
  - !ruby/object:Gem::Version
109
97
  version: 0.4.0
110
98
  - !ruby/object:Gem::Dependency
111
99
  name: builder
112
100
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
101
  requirements:
115
- - - ! '>='
102
+ - - '>='
116
103
  - !ruby/object:Gem::Version
117
104
  version: 2.1.2
118
105
  type: :runtime
119
106
  prerelease: false
120
107
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
108
  requirements:
123
- - - ! '>='
109
+ - - '>='
124
110
  - !ruby/object:Gem::Version
125
111
  version: 2.1.2
126
112
  - !ruby/object:Gem::Dependency
127
113
  name: beefcake
128
114
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
115
  requirements:
131
116
  - - ~>
132
117
  - !ruby/object:Gem::Version
@@ -134,7 +119,6 @@ dependencies:
134
119
  type: :runtime
135
120
  prerelease: false
136
121
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
122
  requirements:
139
123
  - - ~>
140
124
  - !ruby/object:Gem::Version
@@ -142,7 +126,6 @@ dependencies:
142
126
  - !ruby/object:Gem::Dependency
143
127
  name: multi_json
144
128
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
129
  requirements:
147
130
  - - ~>
148
131
  - !ruby/object:Gem::Version
@@ -150,7 +133,6 @@ dependencies:
150
133
  type: :runtime
151
134
  prerelease: false
152
135
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
136
  requirements:
155
137
  - - ~>
156
138
  - !ruby/object:Gem::Version
@@ -158,7 +140,6 @@ dependencies:
158
140
  - !ruby/object:Gem::Dependency
159
141
  name: innertube
160
142
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
143
  requirements:
163
144
  - - ~>
164
145
  - !ruby/object:Gem::Version
@@ -166,7 +147,6 @@ dependencies:
166
147
  type: :runtime
167
148
  prerelease: false
168
149
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
150
  requirements:
171
151
  - - ~>
172
152
  - !ruby/object:Gem::Version
@@ -176,6 +156,7 @@ description: riak-client is a rich client for Riak, the distributed database by
176
156
  bucket configuration, link-walking, secondary indexes and map-reduce.
177
157
  email:
178
158
  - sean@basho.com
159
+ - bryce@basho.com
179
160
  executables: []
180
161
  extensions: []
181
162
  extra_rdoc_files: []
@@ -198,6 +179,7 @@ files:
198
179
  - lib/riak.rb
199
180
  - lib/riak/bucket.rb
200
181
  - lib/riak/client.rb
182
+ - lib/riak/client/beefcake/message_codes.rb
201
183
  - lib/riak/client/beefcake/messages.rb
202
184
  - lib/riak/client/beefcake/object_methods.rb
203
185
  - lib/riak/client/beefcake_protobuffs_backend.rb
@@ -205,6 +187,8 @@ files:
205
187
  - lib/riak/client/excon_backend.rb
206
188
  - lib/riak/client/feature_detection.rb
207
189
  - lib/riak/client/http_backend.rb
190
+ - lib/riak/client/http_backend/bucket_streamer.rb
191
+ - lib/riak/client/http_backend/chunked_json_streamer.rb
208
192
  - lib/riak/client/http_backend/configuration.rb
209
193
  - lib/riak/client/http_backend/key_streamer.rb
210
194
  - lib/riak/client/http_backend/object_methods.rb
@@ -225,11 +209,14 @@ files:
225
209
  - lib/riak/core_ext/stringify_keys.rb
226
210
  - lib/riak/core_ext/symbolize_keys.rb
227
211
  - lib/riak/core_ext/to_param.rb
212
+ - lib/riak/counter.rb
228
213
  - lib/riak/encoding.rb
229
214
  - lib/riak/failed_request.rb
230
215
  - lib/riak/i18n.rb
216
+ - lib/riak/index_collection.rb
231
217
  - lib/riak/json.rb
232
218
  - lib/riak/link.rb
219
+ - lib/riak/list_buckets.rb
233
220
  - lib/riak/locale/en.yml
234
221
  - lib/riak/locale/fr.yml
235
222
  - lib/riak/map_reduce.rb
@@ -237,6 +224,7 @@ files:
237
224
  - lib/riak/map_reduce/phase.rb
238
225
  - lib/riak/map_reduce/results.rb
239
226
  - lib/riak/map_reduce_error.rb
227
+ - lib/riak/multiget.rb
240
228
  - lib/riak/node.rb
241
229
  - lib/riak/node/configuration.rb
242
230
  - lib/riak/node/console.rb
@@ -248,6 +236,7 @@ files:
248
236
  - lib/riak/rcontent.rb
249
237
  - lib/riak/robject.rb
250
238
  - lib/riak/search.rb
239
+ - lib/riak/secondary_index.rb
251
240
  - lib/riak/serializers.rb
252
241
  - lib/riak/stamp.rb
253
242
  - lib/riak/test_server.rb
@@ -273,6 +262,7 @@ files:
273
262
  - spec/fixtures/server.cert.key
274
263
  - spec/fixtures/test.pem
275
264
  - spec/integration/riak/cluster_spec.rb
265
+ - spec/integration/riak/counters_spec.rb
276
266
  - spec/integration/riak/http_backends_spec.rb
277
267
  - spec/integration/riak/node_spec.rb
278
268
  - spec/integration/riak/protobuffs_backends_spec.rb
@@ -283,6 +273,7 @@ files:
283
273
  - spec/riak/bucket_spec.rb
284
274
  - spec/riak/client_spec.rb
285
275
  - spec/riak/core_ext/to_param_spec.rb
276
+ - spec/riak/counter_spec.rb
286
277
  - spec/riak/escape_spec.rb
287
278
  - spec/riak/excon_backend_spec.rb
288
279
  - spec/riak/feature_detection_spec.rb
@@ -291,15 +282,19 @@ files:
291
282
  - spec/riak/http_backend/object_methods_spec.rb
292
283
  - spec/riak/http_backend/transport_methods_spec.rb
293
284
  - spec/riak/http_backend_spec.rb
285
+ - spec/riak/index_collection_spec.rb
294
286
  - spec/riak/link_spec.rb
287
+ - spec/riak/list_buckets_spec.rb
295
288
  - spec/riak/map_reduce/filter_builder_spec.rb
296
289
  - spec/riak/map_reduce/phase_spec.rb
297
290
  - spec/riak/map_reduce_spec.rb
291
+ - spec/riak/multiget_spec.rb
298
292
  - spec/riak/multipart_spec.rb
299
293
  - spec/riak/net_http_backend_spec.rb
300
294
  - spec/riak/node_spec.rb
301
295
  - spec/riak/robject_spec.rb
302
296
  - spec/riak/search_spec.rb
297
+ - spec/riak/secondary_index_spec.rb
303
298
  - spec/riak/serializers_spec.rb
304
299
  - spec/riak/stamp_spec.rb
305
300
  - spec/riak/stream_parser_spec.rb
@@ -319,33 +314,26 @@ files:
319
314
  - spec/support/version_filter.rb
320
315
  homepage: http://github.com/basho/riak-ruby-client
321
316
  licenses: []
317
+ metadata: {}
322
318
  post_install_message:
323
319
  rdoc_options: []
324
320
  require_paths:
325
321
  - lib
326
322
  required_ruby_version: !ruby/object:Gem::Requirement
327
- none: false
328
323
  requirements:
329
- - - ! '>='
324
+ - - '>='
330
325
  - !ruby/object:Gem::Version
331
326
  version: '0'
332
- segments:
333
- - 0
334
- hash: 20034304450029998
335
327
  required_rubygems_version: !ruby/object:Gem::Requirement
336
- none: false
337
328
  requirements:
338
- - - ! '>='
329
+ - - '>='
339
330
  - !ruby/object:Gem::Version
340
331
  version: '0'
341
- segments:
342
- - 0
343
- hash: 20034304450029998
344
332
  requirements: []
345
333
  rubyforge_project:
346
- rubygems_version: 1.8.23
334
+ rubygems_version: 2.0.2
347
335
  signing_key:
348
- specification_version: 3
336
+ specification_version: 4
349
337
  summary: riak-client is a rich client for Riak, the distributed database by Basho.
350
338
  test_files:
351
339
  - spec/failover/failover.rb
@@ -361,6 +349,7 @@ test_files:
361
349
  - spec/fixtures/server.cert.key
362
350
  - spec/fixtures/test.pem
363
351
  - spec/integration/riak/cluster_spec.rb
352
+ - spec/integration/riak/counters_spec.rb
364
353
  - spec/integration/riak/http_backends_spec.rb
365
354
  - spec/integration/riak/node_spec.rb
366
355
  - spec/integration/riak/protobuffs_backends_spec.rb
@@ -371,6 +360,7 @@ test_files:
371
360
  - spec/riak/bucket_spec.rb
372
361
  - spec/riak/client_spec.rb
373
362
  - spec/riak/core_ext/to_param_spec.rb
363
+ - spec/riak/counter_spec.rb
374
364
  - spec/riak/escape_spec.rb
375
365
  - spec/riak/excon_backend_spec.rb
376
366
  - spec/riak/feature_detection_spec.rb
@@ -379,15 +369,19 @@ test_files:
379
369
  - spec/riak/http_backend/object_methods_spec.rb
380
370
  - spec/riak/http_backend/transport_methods_spec.rb
381
371
  - spec/riak/http_backend_spec.rb
372
+ - spec/riak/index_collection_spec.rb
382
373
  - spec/riak/link_spec.rb
374
+ - spec/riak/list_buckets_spec.rb
383
375
  - spec/riak/map_reduce/filter_builder_spec.rb
384
376
  - spec/riak/map_reduce/phase_spec.rb
385
377
  - spec/riak/map_reduce_spec.rb
378
+ - spec/riak/multiget_spec.rb
386
379
  - spec/riak/multipart_spec.rb
387
380
  - spec/riak/net_http_backend_spec.rb
388
381
  - spec/riak/node_spec.rb
389
382
  - spec/riak/robject_spec.rb
390
383
  - spec/riak/search_spec.rb
384
+ - spec/riak/secondary_index_spec.rb
391
385
  - spec/riak/serializers_spec.rb
392
386
  - spec/riak/stamp_spec.rb
393
387
  - spec/riak/stream_parser_spec.rb