riak-client 2.2.0 → 2.2.1

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.
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