riak-client 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2dd52a7e386245c3d3dc1d7c1be2ba94b3dd2c91
4
- data.tar.gz: 48ed739d11831361ca42d2c8291753c9d87c7124
3
+ metadata.gz: 90e4c5dd56ba3d2a7ea13534ba0d15f0bd7b2119
4
+ data.tar.gz: e1c2afdbb12543c942f7d58bf15d9f5c07f40f03
5
5
  SHA512:
6
- metadata.gz: dc420b627bd2854197b03468a4aaf09895eb267f601fb285280788ff73754266b098d9fac1251354f662853eb8e4c73973a75874d040e9fa3019a64adac6d86a
7
- data.tar.gz: f07cc587b55e1b54662b86f3ca572df999f89511ed8ae340ed935848a410d5b9bcb7947f7cc96a569121ddc270e595eedf9e19518f1266fa0cbe7b7d04e5229a
6
+ metadata.gz: ab4b31f98818b08370d58a6379ce9a607ab9aabdbc09efddf1cc40a2f45af7d45252add5dbdfb4f562c5ad9d21bf40ad4a1f3506c4ba5ba4ed2eaa98a244c356
7
+ data.tar.gz: f6241dbd209b254d53024eca1db750789aaa6ec031ea53483b34dbb315317d0bf94d80570edd6cf92dba841092c9d6a90ffc3a3f12b3cfeeb3e8c1ae64e9e44e
data/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Riak Ruby Client Release Notes
2
2
 
3
+ ## 2.2.1 Release - 2015-06-19
4
+
5
+ Version 2.2.1 is a bugfix release, and includes additional testing of character
6
+ encodings.
7
+
8
+ Bug fixes:
9
+
10
+ * Support bucket-typed buckets when creating secondary-index input phases
11
+ for map-reduce, thanks to Takeshi Akima.
12
+ * Support Riak Search 2 / Yokozuna results as input phases for map-reduce,
13
+ thanks again to Takeshi Akima.
14
+ * `BucketTyped::Bucket#get_index` now includes the bucket type name in the
15
+ 2i request.
16
+ * `Bucket#==` now performs an encoding-independent comparison on bucket names.
17
+ * `BucketType#==` also does an encoding-independent comparison on type names.
18
+
19
+ Testing enhancements:
20
+
21
+ * Non-ASCII UTF-8 strings, and binary strings containing byte 255 are tested
22
+ with key-value, secondary index, CRDT, and Riak Search interfaces. These
23
+ findings are available on our documentation site:
24
+ http://basho.github.io/riak-ruby-client/encoding.html
25
+
3
26
  ## 2.2.0 Release - 2015-05-27
4
27
 
5
28
  Version 2.2.0 is a feature release.
data/lib/riak/bucket.rb CHANGED
@@ -33,6 +33,10 @@ module Riak
33
33
  # If a block is given, keys will be streamed through
34
34
  # the block (useful for large buckets). When streaming,
35
35
  # results of the operation will not be returned to the caller.
36
+ #
37
+ # Returned keys will be in binary encoding regardless of the key's original
38
+ # encoding.
39
+ #
36
40
  # @yield [Array<String>] a list of keys from the current chunk
37
41
  # @return [Array<String>] Keys in this bucket
38
42
  # @note This operation has serious performance implications and
@@ -290,7 +294,11 @@ module Riak
290
294
  def ==(other)
291
295
  return false unless self.class == other.class
292
296
  return false unless self.client == other.client
293
- return false unless self.name == other.name
297
+ return true if self.name.nil? && other.name.nil?
298
+ unless self.name.respond_to?(:bytes) && other.name.respond_to?(:bytes)
299
+ return false
300
+ end
301
+ return false unless self.name.bytes == other.name.bytes
294
302
  true
295
303
  end
296
304
  end
@@ -70,7 +70,7 @@ module Riak
70
70
  def ==(other)
71
71
  return false unless self.class == other.class
72
72
  return false unless self.client == other.client
73
- return false unless self.name == other.name
73
+ return false unless self.name.bytes == other.name.bytes
74
74
  true
75
75
  end
76
76
  end
@@ -98,6 +98,17 @@ module Riak
98
98
  end
99
99
  end
100
100
 
101
+ # Queries a secondary index on the bucket-typed bucket.
102
+ # @note This will only work if your Riak installation supports 2I.
103
+ # @param [String] index the name of the index
104
+ # @param [String,Integer,Range] query the value of the index, or a
105
+ # Range of values to query
106
+ # @return [Array<String>] a list of keys that match the index
107
+ # query
108
+ def get_index(index, query, options = { })
109
+ super index, query, o(options)
110
+ end
111
+
101
112
  # Does this {BucketTyped::Bucket} have a non-default bucket type?
102
113
  # @return [Boolean] true if this bucket has a non-default type.
103
114
  def needs_type?
@@ -110,12 +110,13 @@ module Riak
110
110
  end
111
111
 
112
112
  # (Riak Search) Use a search query to start a map/reduce job.
113
- # @param [String, Bucket] bucket the bucket/index to search
113
+ # @param [String,Riak::Search::Index] index the index to query, either a
114
+ # {Riak::Search::Index} instance or a {String}
114
115
  # @param [String] query the query to run
115
116
  # @return [MapReduce] self
116
- def search(bucket, query)
117
- bucket = bucket.name if bucket.respond_to?(:name)
118
- @inputs = {:module => "riak_search", :function => "mapred_search", :arg => [bucket, query]}
117
+ def search(index, query)
118
+ index = index.name if index.respond_to?(:name)
119
+ @inputs = {:module => "yokozuna", :function => "mapred_search", :arg => [index, query]}
119
120
  self
120
121
  end
121
122
 
@@ -127,13 +128,18 @@ module Riak
127
128
  # a range of values (of Strings or Integers)
128
129
  # @return [MapReduce] self
129
130
  def index(bucket, index, query)
130
- bucket = bucket.name if bucket.respond_to?(:name)
131
+ if bucket.is_a? Bucket
132
+ bucket = bucket.needs_type? ? [maybe_escape(bucket.type.name), maybe_escape(bucket.name)] : maybe_escape(bucket.name)
133
+ else
134
+ bucket = maybe_escape(bucket)
135
+ end
136
+
131
137
  case query
132
138
  when String, Fixnum
133
- @inputs = {:bucket => maybe_escape(bucket), :index => index, :key => query}
139
+ @inputs = {:bucket => bucket, :index => index, :key => query}
134
140
  when Range
135
141
  raise ArgumentError, t('invalid_index_query', :value => query.inspect) unless String === query.begin || Integer === query.begin
136
- @inputs = {:bucket => maybe_escape(bucket), :index => index, :start => query.begin, :end => query.end}
142
+ @inputs = {:bucket => bucket, :index => index, :start => query.begin, :end => query.end}
137
143
  else
138
144
  raise ArgumentError, t('invalid_index_query', :value => query.inspect)
139
145
  end
data/lib/riak/rcontent.rb CHANGED
@@ -58,7 +58,8 @@ module Riak
58
58
  end
59
59
  end
60
60
 
61
- # @return [Object] the unmarshaled form of {#raw_data} stored in riak at this object's key
61
+ # @return [Object] the unmarshaled form of {#raw_data} stored in riak at
62
+ # this object's key
62
63
  def data
63
64
  if @raw_data && !@data
64
65
  raw = @raw_data.respond_to?(:read) ? @raw_data.read : @raw_data
@@ -82,7 +83,6 @@ module Riak
82
83
  @data = new_data
83
84
  end
84
85
 
85
-
86
86
  # @return [String] raw data stored in riak for this object's key
87
87
  def raw_data
88
88
  if @data && !@raw_data
data/lib/riak/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Riak
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
@@ -0,0 +1,76 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+ require 'riak'
4
+
5
+ describe 'Encoding and CRDTs', integration: true, search_config: true do
6
+ shared_examples 'CRDTs with weird names' do
7
+ let(:counter_bucket) do
8
+ test_client.bucket_type('counters').bucket(random_string)
9
+ end
10
+ let(:map_bucket) do
11
+ test_client.bucket_type('maps').bucket(random_string)
12
+ end
13
+ let(:set_bucket) do
14
+ test_client.bucket_type('sets').bucket(random_string)
15
+ end
16
+
17
+ it 'creates counters' do
18
+ counter = nil
19
+ expect{ counter = Riak::Crdt::Counter.new counter_bucket, random_string }.
20
+ to_not raise_error
21
+
22
+ expect(counter).to be_a Riak::Crdt::Counter
23
+
24
+ expect(value = counter.value).to be_a Numeric
25
+
26
+ expect{ counter.increment }.to_not raise_error
27
+ expect(counter.value).to eq value + 1
28
+ end
29
+
30
+ it 'updates registers in maps' do
31
+ map = nil
32
+ expect{ map = Riak::Crdt::Map.new map_bucket, random_string }.
33
+ to_not raise_error
34
+
35
+ expect(map).to be_a Riak::Crdt::Map
36
+
37
+ expect(map.registers[random_string]).to be_nil
38
+ expect{ map.registers[random_string] = random_string }.
39
+ to_not raise_error
40
+
41
+ expect(map.registers[random_string]).to eq random_string
42
+ end
43
+
44
+ it 'updates sets' do
45
+ set = nil
46
+ expect{ set = Riak::Crdt::Set.new set_bucket, random_string }.
47
+ to_not raise_error
48
+
49
+ expect(set).to be_a Riak::Crdt::Set
50
+
51
+ expect(set.members).to_not include random_string
52
+
53
+ set.add random_string
54
+
55
+ expect(set.members).to include random_string
56
+
57
+ set.remove random_string
58
+
59
+ expect(set.members).to_not include random_string
60
+ end
61
+ end
62
+
63
+ describe 'with utf-8 strings' do
64
+ let(:string){ "\xF0\x9F\x9A\xB4こんにちはสวัสดี" }
65
+ let(:random_string){ string + random_key }
66
+
67
+ include_examples 'CRDTs with weird names'
68
+ end
69
+
70
+ describe 'with binary strings' do
71
+ let(:string){ "\xff\xff".force_encoding('binary') }
72
+ let(:random_string){ string + random_key }
73
+
74
+ include_examples 'CRDTs with weird names'
75
+ end
76
+ end
@@ -0,0 +1,81 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+ require 'riak'
4
+
5
+ describe 'Encoding and Riak KV', integration: true, test_client: true do
6
+ let(:bucket_type){ test_client.bucket_type 'yokozuna' }
7
+
8
+ let(:utf8_encoding){ Encoding.find 'utf-8' }
9
+ let(:utf8_string){ "\xF0\x9F\x9A\xB4こんにちはสวัสดี" }
10
+ let(:random_utf8_string){ utf8_string + random_key }
11
+ let(:utf8_bucket){ bucket_type.bucket random_utf8_string }
12
+
13
+ let(:binary_encoding){ Encoding.find 'binary' }
14
+ let(:binary_string){ "\xff\xff".force_encoding('binary') }
15
+ let(:random_binary_string){ binary_string + random_key }
16
+ let(:binary_bucket){ bucket_type.bucket random_binary_string }
17
+
18
+ it 'encodes the test strings correctly' do
19
+ expect(utf8_string.encoding).to eq utf8_encoding
20
+ expect(random_utf8_string.encoding).to eq utf8_encoding
21
+ expect(binary_string.encoding).to eq binary_encoding
22
+ expect(random_binary_string.encoding).to eq binary_encoding
23
+ end
24
+
25
+ describe 'key-value operations' do
26
+ it 'allows utf-8 strings in bucket and key names, values, and 2i' do
27
+ expect(utf8_bucket).to be_a Riak::Bucket
28
+ expect(robj = utf8_bucket.new(random_utf8_string)).to be_a Riak::RObject
29
+ robj.content_type = 'text/plain'
30
+ robj.data = random_utf8_string
31
+ robj.indexes['cat_bin'] = [random_utf8_string, 'asdf']
32
+ expect{ robj.store }.to_not raise_error
33
+
34
+ expect(robj2 = utf8_bucket.get(random_utf8_string)).to be_a Riak::RObject
35
+ expect(robj2.data).to eq random_utf8_string
36
+
37
+ robj.raw_data = random_utf8_string
38
+ robj.store
39
+ robj2.reload
40
+ expect(robj2.raw_data).to eq random_utf8_string
41
+ expect(robj2.indexes['cat_bin']).to include 'asdf'
42
+ expect(robj2.indexes['cat_bin']).
43
+ to include random_utf8_string.force_encoding('binary')
44
+
45
+ expect(utf8_bucket.get_index 'cat_bin', 'asdf').
46
+ to include random_utf8_string.force_encoding('binary')
47
+ expect(utf8_bucket.get_index 'cat_bin', random_utf8_string).
48
+ to include random_utf8_string.force_encoding('binary')
49
+
50
+ # riak gives us binary-encoding back, which is working as intended
51
+ expect(utf8_bucket.keys).
52
+ to include random_utf8_string.force_encoding('binary')
53
+ end
54
+
55
+ it 'allows binary strings in bucket and key names and values' do
56
+ expect(binary_bucket).to be_a Riak::Bucket
57
+ expect(robj = binary_bucket.new(random_binary_string)).
58
+ to be_a Riak::RObject
59
+ robj.content_type = 'text/plain'
60
+ robj.data = random_binary_string
61
+ robj.indexes['cat_bin'] = [random_binary_string, 'asdf']
62
+ expect{ robj.store }.to_not raise_error
63
+
64
+ expect(robj2 = binary_bucket.get(random_binary_string)).
65
+ to be_a Riak::RObject
66
+ expect(robj2.data).to eq random_binary_string
67
+
68
+ robj.raw_data = random_binary_string
69
+ robj.store
70
+ robj2.reload
71
+ expect(robj2.raw_data).to eq random_binary_string
72
+
73
+ expect(binary_bucket.get_index 'cat_bin', 'asdf').
74
+ to include random_binary_string
75
+ expect(binary_bucket.get_index 'cat_bin', random_binary_string).
76
+ to include random_binary_string
77
+
78
+ expect(binary_bucket.keys).to include random_binary_string
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,141 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+ require 'riak'
4
+
5
+ describe 'Encoding and Riak Search', integration: true, search_config: true do
6
+ let(:bucket_type){ test_client.bucket_type 'yokozuna' }
7
+
8
+ let(:utf8_encoding){ Encoding.find 'utf-8' }
9
+ let(:utf8_string){ "\xF0\x9F\x9A\xB4こんにちはสวัสดี" }
10
+ let(:random_utf8_string){ utf8_string + random_key }
11
+ let(:utf8_bucket){ bucket_type.bucket random_utf8_string }
12
+
13
+ let(:binary_encoding){ Encoding.find 'binary' }
14
+ let(:binary_string){ "\xff\xff".force_encoding('binary') }
15
+ let(:random_binary_string){ binary_string + random_key }
16
+ let(:binary_bucket){ bucket_type.bucket random_binary_string }
17
+
18
+ describe 'with utf-8 strings' do
19
+ it 'creates schemas' do
20
+ schema = nil
21
+ expect do
22
+ schema = Riak::Search::Schema.new test_client, random_utf8_string
23
+ end.to_not raise_error
24
+
25
+ expect(schema).to be_a Riak::Search::Schema
26
+
27
+ expect{ schema.create! schema_xml random_utf8_string }.to_not raise_error
28
+
29
+ schema2 = Riak::Search::Schema.new test_client, random_utf8_string
30
+ expect(schema2).to be_exists
31
+ end
32
+
33
+ it 'refuses to create indexes' do
34
+ index = nil
35
+ expect do
36
+ index = Riak::Search::Index.new test_client, random_utf8_string
37
+ end.to_not raise_error
38
+
39
+ expect(index).to be_a Riak::Search::Index
40
+
41
+ expect{ index.create! }.to raise_error /Invalid character/
42
+ end
43
+
44
+ it 'queries non-weird indexes' do
45
+ create_index
46
+
47
+ props = Riak::BucketProperties.new utf8_bucket
48
+ props['search_index'] = index_name
49
+ props.store
50
+
51
+ wait_until do
52
+ props.reload
53
+ props['search_index'] == index_name
54
+ end
55
+
56
+ robj = utf8_bucket.new random_utf8_string
57
+ robj.content_type = 'text/plain'
58
+ robj.raw_data = <<EOD
59
+ This is due to the write-once, append-only nature of the Bitcask database files.
60
+ High throughput, especially when writing an incoming stream of random items
61
+ Because the data being written doesn't need to be ordered on disk and because
62
+ the log structured design allows for minimal disk head movement during writes
63
+ these operations generally saturate the I/O and disk bandwidth.
64
+ EOD
65
+ robj.store
66
+
67
+ results = nil
68
+ wait_until do
69
+ results = index.query('bitcask').results
70
+ !results.empty?
71
+ end
72
+ expect(results).to_not be_empty
73
+ expect(results.docs.first.bucket_type).to eq robj.bucket.type
74
+ expect(results.docs.first.bucket).to eq robj.bucket
75
+ expect(results.docs.first.key.bytes).to eq robj.key.bytes
76
+ end
77
+ end
78
+
79
+ describe 'with binary strings' do
80
+ it 'refuses to create schemas' do
81
+ schema = nil
82
+ expect do
83
+ schema = Riak::Search::Schema.new test_client, random_binary_string
84
+ end.to_not raise_error
85
+
86
+ expect(schema).to be_a Riak::Search::Schema
87
+
88
+ # yz will refuse to create files with names that aren't valid utf-8
89
+ expect{ schema.create! schema_xml random_binary_string }.
90
+ to raise_error /bad_character/
91
+ end
92
+
93
+
94
+ it 'refuses to create indexes' do
95
+ index = nil
96
+ expect do
97
+ index = Riak::Search::Index.new test_client, random_binary_string
98
+ end.to_not raise_error
99
+
100
+ expect(index).to be_a Riak::Search::Index
101
+
102
+ expect{ index.create! }.to raise_error /Invalid character/
103
+ end
104
+
105
+ # left here for reference: yz can't index documents with \xff\xff in the
106
+ # key, or presumably bucket name either
107
+ # it 'queries non-weird indexes' do
108
+ # create_index
109
+
110
+ # props = Riak::BucketProperties.new binary_bucket
111
+ # props['search_index'] = index_name
112
+ # props.store
113
+
114
+ # wait_until do
115
+ # props.reload
116
+ # props['search_index'] == index_name
117
+ # end
118
+
119
+ # robj = binary_bucket.new random_binary_string
120
+ # robj.content_type = 'text/plain'
121
+ # robj.raw_data = <<EOD
122
+ # This is due to the write-once, append-only nature of the Bitcask database files.
123
+ # High throughput, especially when writing an incoming stream of random items
124
+ # Because the data being written doesn't need to be ordered on disk and because
125
+ # the log structured design allows for minimal disk head movement during writes
126
+ # these operations generally saturate the I/O and disk bandwidth.
127
+ # EOD
128
+ # robj.store
129
+
130
+ # results = nil
131
+ # wait_until do
132
+ # results = index.query('bitcask').results
133
+ # !results.empty?
134
+ # end
135
+ # expect(results).to_not be_empty
136
+ # expect(results.docs.first.bucket_type).to eq robj.bucket.type
137
+ # expect(results.docs.first.bucket).to eq robj.bucket
138
+ # expect(results.docs.first.key.bytes).to eq robj.key.bytes
139
+ # end
140
+ end
141
+ end
@@ -59,4 +59,20 @@ describe Riak::BucketTyped::Bucket do
59
59
  expect{ subject.props = { 'allow_mult' => true } }.to_not raise_error
60
60
  end
61
61
  end
62
+
63
+ describe "querying an index" do
64
+ it "attaches the bucket type" do
65
+ expect(client).
66
+ to receive(:get_index).
67
+ with(subject, 'test_bin', 'testing', { type: 'type' }).
68
+ and_return(
69
+ Riak::IndexCollection.new_from_json({
70
+ keys: ['asdf']
71
+ }.to_json))
72
+
73
+ result = subject.get_index('test_bin', 'testing')
74
+ expect(result).to be_a Riak::IndexCollection
75
+ expect(result.to_a).to eq %w{asdf}
76
+ end
77
+ end
62
78
  end
@@ -129,6 +129,13 @@ describe Riak::MapReduce do
129
129
  end
130
130
 
131
131
  context "using secondary indexes as inputs" do
132
+ it "set the inputs for a bucket-typed bucket" do
133
+ expect(mr.index(typed_bucket, "email_bin", "sean@basho.com")).to eq(mr)
134
+ expect(mr.inputs).to eq(bucket: [typed_bucket.type.name, typed_bucket.name],
135
+ index: "email_bin",
136
+ key: "sean@basho.com")
137
+ end
138
+
132
139
  it "sets the inputs for equality" do
133
140
  expect(mr.index("foo", "email_bin", "sean@basho.com")).to eq(mr)
134
141
  expect(mr.inputs).to eq(bucket: "foo",
@@ -85,20 +85,20 @@ describe "Search features" do
85
85
  end
86
86
 
87
87
  describe "using a search query as inputs" do
88
- it "accepts a bucket name and query" do
88
+ it "accepts a index name and query" do
89
89
  @mr.search("foo", "bar OR baz")
90
- expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
90
+ expect(@mr.inputs).to eq({:module => "yokozuna", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
91
91
  end
92
92
 
93
- it "accepts a Riak::Bucket and query" do
94
- @mr.search(Riak::Bucket.new(@client, "foo"), "bar OR baz")
95
- expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
93
+ it "accepts a Riak::Search::Index and query" do
94
+ @mr.search(Riak::Search::Index.new(@client, "foo"), "bar OR baz")
95
+ expect(@mr.inputs).to eq({:module => "yokozuna", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
96
96
  end
97
97
 
98
98
  it "emits the Erlang function and arguments" do
99
99
  @mr.search("foo", "bar OR baz")
100
100
  expect(@mr.to_json).to include('"inputs":{')
101
- expect(@mr.to_json).to include('"module":"riak_search"')
101
+ expect(@mr.to_json).to include('"module":"yokozuna"')
102
102
  expect(@mr.to_json).to include('"function":"mapred_search"')
103
103
  expect(@mr.to_json).to include('"arg":["foo","bar OR baz"]')
104
104
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riak-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Kerley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-27 00:00:00.000000000 Z
11
+ date: 2015-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -310,6 +310,9 @@ files:
310
310
  - spec/integration/riak/crdt_spec.rb
311
311
  - spec/integration/riak/crdt_validation/map_spec.rb
312
312
  - spec/integration/riak/crdt_validation/set_spec.rb
313
+ - spec/integration/riak/encodings/crdt_spec.rb
314
+ - spec/integration/riak/encodings/kv_spec.rb
315
+ - spec/integration/riak/encodings/yz_spec.rb
313
316
  - spec/integration/riak/preflist_spec.rb
314
317
  - spec/integration/riak/properties_spec.rb
315
318
  - spec/integration/riak/protobuffs/interrupted_request_spec.rb
@@ -407,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
410
  version: '0'
408
411
  requirements: []
409
412
  rubyforge_project:
410
- rubygems_version: 2.4.6
413
+ rubygems_version: 2.4.5
411
414
  signing_key:
412
415
  specification_version: 4
413
416
  summary: riak-client is a rich client for Riak, the distributed database by Basho.
@@ -433,6 +436,9 @@ test_files:
433
436
  - spec/integration/riak/crdt_spec.rb
434
437
  - spec/integration/riak/crdt_validation/map_spec.rb
435
438
  - spec/integration/riak/crdt_validation/set_spec.rb
439
+ - spec/integration/riak/encodings/crdt_spec.rb
440
+ - spec/integration/riak/encodings/kv_spec.rb
441
+ - spec/integration/riak/encodings/yz_spec.rb
436
442
  - spec/integration/riak/preflist_spec.rb
437
443
  - spec/integration/riak/properties_spec.rb
438
444
  - spec/integration/riak/protobuffs/interrupted_request_spec.rb