riak-client 2.1.0 → 2.2.0.pre1
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 +4 -4
- data/Gemfile +3 -1
- data/Guardfile +15 -9
- data/README.markdown +118 -9
- data/lib/riak/bucket.rb +16 -1
- data/lib/riak/bucket_properties.rb +67 -0
- data/lib/riak/bucket_type.rb +48 -0
- data/lib/riak/bucket_typed/bucket.rb +113 -0
- data/lib/riak/client/beefcake/bucket_properties_operator.rb +178 -0
- data/lib/riak/client/beefcake/message_overlay.rb +42 -20
- data/lib/riak/client/beefcake/object_methods.rb +1 -1
- data/lib/riak/client/beefcake/socket.rb +6 -6
- data/lib/riak/client/beefcake_protobuffs_backend.rb +44 -60
- data/lib/riak/client/protobuffs_backend.rb +8 -8
- data/lib/riak/client.rb +7 -2
- data/lib/riak/crdt/base.rb +29 -1
- data/lib/riak/crdt/counter.rb +7 -3
- data/lib/riak/crdt/inner_flag.rb +1 -1
- data/lib/riak/crdt/map.rb +7 -3
- data/lib/riak/crdt/set.rb +7 -4
- data/lib/riak/errors/failed_request.rb +2 -0
- data/lib/riak/errors/search_error.rb +29 -0
- data/lib/riak/locale/en.yml +7 -0
- data/lib/riak/map_reduce.rb +70 -6
- data/lib/riak/robject.rb +19 -3
- data/lib/riak/search/index.rb +73 -0
- data/lib/riak/search/query.rb +133 -0
- data/lib/riak/search/result_collection.rb +91 -0
- data/lib/riak/search/result_document.rb +59 -0
- data/lib/riak/search/schema.rb +65 -0
- data/lib/riak/search.rb +10 -0
- data/lib/riak/secondary_index.rb +6 -0
- data/lib/riak/version.rb +1 -1
- data/spec/fixtures/yz_schema_template.xml +18 -0
- data/spec/integration/riak/bucket_types_spec.rb +218 -39
- data/spec/integration/riak/conflict_resolution_spec.rb +96 -0
- data/spec/integration/riak/crdt_spec.rb +30 -2
- data/spec/integration/riak/properties_spec.rb +69 -0
- data/spec/integration/riak/search_spec.rb +104 -0
- data/spec/integration/riak/secondary_index_spec.rb +18 -0
- data/spec/riak/beefcake_protobuffs_backend/bucket_properties_operator_spec.rb +247 -0
- data/spec/riak/bucket_properties_spec.rb +114 -0
- data/spec/riak/bucket_type_spec.rb +34 -0
- data/spec/riak/bucket_typed/bucket.rb +43 -0
- data/spec/riak/client_spec.rb +16 -8
- data/spec/riak/crdt/counter_spec.rb +2 -1
- data/spec/riak/crdt/map_spec.rb +2 -1
- data/spec/riak/crdt/set_spec.rb +2 -1
- data/spec/riak/map_reduce_spec.rb +169 -124
- data/spec/riak/search/index_spec.rb +62 -0
- data/spec/riak/search/query_spec.rb +88 -0
- data/spec/riak/search/result_collection_spec.rb +87 -0
- data/spec/riak/search/result_document_spec.rb +63 -0
- data/spec/riak/search/schema_spec.rb +63 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/support/search_config.rb +81 -0
- data/spec/support/test_client.yml +14 -7
- metadata +44 -5
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
Riak::Client::BeefcakeProtobuffsBackend.configured?
|
3
|
+
|
4
|
+
describe Riak::Client::BeefcakeProtobuffsBackend::BucketPropertiesOperator do
|
5
|
+
let(:backend_class){ Riak::Client::BeefcakeProtobuffsBackend }
|
6
|
+
let(:backend) { instance_double('Riak::Client::BeefcakeProtobuffsBackend') }
|
7
|
+
|
8
|
+
let(:protocol) do
|
9
|
+
instance_double('Riak::Client::BeefcakeProtobuffsBackend::Protocol').
|
10
|
+
tap do |p|
|
11
|
+
allow(backend).to receive(:protocol).and_yield(p)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:bucket_name){ 'bucket_name' }
|
16
|
+
let(:bucket) do
|
17
|
+
instance_double('Riak::Bucket').tap do |b|
|
18
|
+
allow(b).to receive(:name).and_return(bucket_name)
|
19
|
+
allow(b).to receive(:is_a?).with(Riak::Bucket).and_return(true)
|
20
|
+
allow(b).to receive(:needs_type?).and_return(false)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:test_props) do
|
25
|
+
backend_class::RpbBucketProps.
|
26
|
+
new(
|
27
|
+
n_val: 3,
|
28
|
+
pr: 0xffffffff - 1,
|
29
|
+
r: 0xffffffff - 2,
|
30
|
+
w: 0xffffffff - 3,
|
31
|
+
pw: 0xffffffff - 4,
|
32
|
+
dw: 0,
|
33
|
+
rw: 1,
|
34
|
+
precommit: precommit,
|
35
|
+
postcommit: backend_class::RpbCommitHook.new(name: 'piper'),
|
36
|
+
linkfun: backend_class::RpbModFun.new(module: 'nachos',
|
37
|
+
function: 'galacticos')
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:precommit) do
|
42
|
+
backend_class::RpbCommitHook.
|
43
|
+
new(
|
44
|
+
modfun: backend_class::RpbModFun.new(
|
45
|
+
module: 'validate_json',
|
46
|
+
function: 'validate'
|
47
|
+
))
|
48
|
+
end
|
49
|
+
|
50
|
+
let(:get_bucket_request) do
|
51
|
+
backend_class::RpbGetBucketReq.new bucket: bucket_name
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:get_bucket_response) do
|
55
|
+
backend_class::RpbGetBucketResp.
|
56
|
+
new(props: test_props)
|
57
|
+
end
|
58
|
+
|
59
|
+
let(:get_bucket_expectation) do
|
60
|
+
expect(protocol).to receive(:write).
|
61
|
+
with(:GetBucketReq, get_bucket_request)
|
62
|
+
|
63
|
+
expect(protocol).to receive(:expect).
|
64
|
+
with(:GetBucketResp,
|
65
|
+
backend_class::RpbGetBucketResp).
|
66
|
+
and_return(get_bucket_response)
|
67
|
+
end
|
68
|
+
|
69
|
+
subject{ described_class.new backend }
|
70
|
+
|
71
|
+
it 'is initialized with a backend' do
|
72
|
+
expect{ described_class.new backend }.to_not raise_error
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'passes through scalar properties' do
|
76
|
+
get_bucket_expectation
|
77
|
+
|
78
|
+
resp = nil
|
79
|
+
expect{ resp = subject.get bucket }.to_not raise_error
|
80
|
+
|
81
|
+
expect(resp['n_val']).to eq 3
|
82
|
+
end
|
83
|
+
|
84
|
+
describe 'quorums' do
|
85
|
+
it 'rubyfies' do
|
86
|
+
get_bucket_expectation
|
87
|
+
|
88
|
+
resp = nil
|
89
|
+
expect{ resp = subject.get bucket }.to_not raise_error
|
90
|
+
|
91
|
+
expect(resp['pr']).to eq 'one'
|
92
|
+
expect(resp['r']).to eq 'quorum'
|
93
|
+
expect(resp['w']).to eq 'all'
|
94
|
+
expect(resp['pw']).to eq 'default'
|
95
|
+
expect(resp['dw']).to eq 0
|
96
|
+
expect(resp['rw']).to eq 1
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'riakifies' do
|
100
|
+
expected_props = backend_class::RpbBucketProps.
|
101
|
+
new(
|
102
|
+
pr: 0xffffffff - 1,
|
103
|
+
r: 0xffffffff - 2,
|
104
|
+
w: 0xffffffff - 3,
|
105
|
+
pw: 0xffffffff - 4,
|
106
|
+
dw: 0,
|
107
|
+
rw: 1
|
108
|
+
)
|
109
|
+
|
110
|
+
set_bucket_request = backend_class::RpbSetBucketReq.new
|
111
|
+
set_bucket_request.bucket = bucket_name
|
112
|
+
set_bucket_request.props = expected_props
|
113
|
+
|
114
|
+
expect(protocol).to receive(:write).
|
115
|
+
with(:SetBucketReq, set_bucket_request)
|
116
|
+
|
117
|
+
expect(protocol).to receive(:expect).
|
118
|
+
with(:SetBucketResp)
|
119
|
+
|
120
|
+
# support both strings and symbols for quorum names
|
121
|
+
write_props = {
|
122
|
+
pr: 'one',
|
123
|
+
r: :quorum,
|
124
|
+
w: 'all',
|
125
|
+
pw: :default,
|
126
|
+
dw: 0,
|
127
|
+
rw: 1
|
128
|
+
}
|
129
|
+
|
130
|
+
expect{ subject.put bucket, write_props }.to_not raise_error
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe 'commit hooks' do
|
135
|
+
it 'rubyfies' do
|
136
|
+
expect(protocol).to receive(:write).
|
137
|
+
with(:GetBucketReq, get_bucket_request)
|
138
|
+
|
139
|
+
expect(protocol).to receive(:expect).
|
140
|
+
with(:GetBucketResp,
|
141
|
+
backend_class::RpbGetBucketResp).
|
142
|
+
and_return(get_bucket_response)
|
143
|
+
|
144
|
+
resp = nil
|
145
|
+
expect{ resp = subject.get bucket }.to_not raise_error
|
146
|
+
|
147
|
+
expect(resp['precommit']).to be_an Array
|
148
|
+
expect(pre = resp['precommit'].first).to be_a Hash
|
149
|
+
expect(pre['mod']).to eq 'validate_json'
|
150
|
+
expect(pre['fun']).to eq 'validate'
|
151
|
+
|
152
|
+
expect(resp['postcommit'].first).to eq 'piper'
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'riakifies' do
|
156
|
+
modfun = backend_class::RpbModFun.new(
|
157
|
+
module: 'validate_json',
|
158
|
+
function: 'validate'
|
159
|
+
)
|
160
|
+
expected_props = backend_class::RpbBucketProps.
|
161
|
+
new(
|
162
|
+
precommit: [backend_class::RpbCommitHook.
|
163
|
+
new(modfun: modfun)],
|
164
|
+
postcommit: [backend_class::RpbCommitHook.
|
165
|
+
new(name: 'piper')]
|
166
|
+
)
|
167
|
+
|
168
|
+
set_bucket_request = backend_class::RpbSetBucketReq.new
|
169
|
+
set_bucket_request.bucket = bucket_name
|
170
|
+
set_bucket_request.props = expected_props
|
171
|
+
|
172
|
+
expect(protocol).to receive(:write).
|
173
|
+
with(:SetBucketReq, set_bucket_request)
|
174
|
+
|
175
|
+
expect(protocol).to receive(:expect).
|
176
|
+
with(:SetBucketResp)
|
177
|
+
|
178
|
+
write_props = {
|
179
|
+
precommit: { mod: 'validate_json', fun: 'validate' },
|
180
|
+
postcommit: ['piper']
|
181
|
+
}
|
182
|
+
|
183
|
+
expect{ subject.put bucket, write_props }.to_not raise_error
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe 'modfuns' do
|
188
|
+
it 'rubyfies' do
|
189
|
+
get_bucket_expectation
|
190
|
+
|
191
|
+
resp = nil
|
192
|
+
expect{ resp = subject.get bucket }.to_not raise_error
|
193
|
+
|
194
|
+
expect(resp['linkfun']).to eq({
|
195
|
+
'mod' => 'nachos',
|
196
|
+
'fun' => 'galacticos'
|
197
|
+
})
|
198
|
+
|
199
|
+
expect(resp['chash_keyfun']).to_not be
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'riakifies' do
|
203
|
+
expected_props = backend_class::RpbBucketProps.
|
204
|
+
new(
|
205
|
+
linkfun: backend_class::RpbModFun.new(module: 'nachos',
|
206
|
+
function: 'galacticos')
|
207
|
+
)
|
208
|
+
|
209
|
+
set_bucket_request = backend_class::RpbSetBucketReq.new
|
210
|
+
set_bucket_request.bucket = bucket_name
|
211
|
+
set_bucket_request.props = expected_props
|
212
|
+
|
213
|
+
expect(protocol).to receive(:write).
|
214
|
+
with(:SetBucketReq, set_bucket_request)
|
215
|
+
|
216
|
+
expect(protocol).to receive(:expect).
|
217
|
+
with(:SetBucketResp)
|
218
|
+
|
219
|
+
write_props = {
|
220
|
+
linkfun: { mod: 'nachos', fun: 'galacticos' }
|
221
|
+
}
|
222
|
+
|
223
|
+
expect{ subject.put bucket, write_props }.to_not raise_error
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
describe 'repl modes' do
|
228
|
+
it 'riakifies symbols' do
|
229
|
+
expected_props = backend_class::RpbBucketProps.
|
230
|
+
new(repl: 2)
|
231
|
+
|
232
|
+
set_bucket_request = backend_class::RpbSetBucketReq.new
|
233
|
+
set_bucket_request.bucket = bucket_name
|
234
|
+
set_bucket_request.props = expected_props
|
235
|
+
|
236
|
+
expect(protocol).to receive(:write).
|
237
|
+
with(:SetBucketReq, set_bucket_request)
|
238
|
+
|
239
|
+
expect(protocol).to receive(:expect).
|
240
|
+
with(:SetBucketResp)
|
241
|
+
|
242
|
+
write_props = { repl: :fullsync }
|
243
|
+
|
244
|
+
expect{ subject.put bucket, write_props }.to_not raise_error
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'riak/bucket_properties'
|
3
|
+
|
4
|
+
describe Riak::BucketProperties do
|
5
|
+
let(:client){ instance_double 'Riak::Client' }
|
6
|
+
let(:backend) do
|
7
|
+
instance_double('Riak::Client::BeefcakeProtobuffsBackend').tap do |be|
|
8
|
+
allow(client).to receive(:backend).and_yield be
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:props_operator) do
|
13
|
+
instance_double('Riak::Client::BeefcakeProtobuffsBackend::BucketPropertiesOperator').
|
14
|
+
tap do |po|
|
15
|
+
allow(backend).to receive(:bucket_properties_operator).
|
16
|
+
and_return(po)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:bucket) do
|
21
|
+
instance_double('Riak::Bucket').tap do |b|
|
22
|
+
allow(b).to receive(:client).and_return(client)
|
23
|
+
allow(b).to receive(:needs_type?).and_return(false)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:typed_bucket) do
|
28
|
+
instance_double('Riak::BucketTyped::Bucket').tap do |b|
|
29
|
+
allow(b).to receive(:client).and_return(client)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
subject{ described_class.new bucket }
|
34
|
+
|
35
|
+
it 'is initialized with a bucket' do
|
36
|
+
p = nil
|
37
|
+
expect{ p = described_class.new bucket }.to_not raise_error
|
38
|
+
expect(p.client).to eq client
|
39
|
+
expect(p.bucket).to eq bucket
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'initialzies correctly with a bucket-typed bucket' do
|
43
|
+
p = nil
|
44
|
+
expect{ p = described_class.new typed_bucket }.to_not raise_error
|
45
|
+
expect(p.client).to eq client
|
46
|
+
expect(p.bucket).to eq typed_bucket
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'provides hash-like access to properties' do
|
50
|
+
expect(props_operator).to receive(:get).
|
51
|
+
with(bucket).
|
52
|
+
and_return('allow_mult' => true)
|
53
|
+
|
54
|
+
expect(subject['allow_mult']).to be
|
55
|
+
|
56
|
+
subject['allow_mult'] = false
|
57
|
+
|
58
|
+
expect(props_operator).to receive(:put).
|
59
|
+
with(bucket, hash_including('allow_mult' => false))
|
60
|
+
|
61
|
+
subject.store
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'merges properties from hashes' do
|
65
|
+
expect(props_operator).to receive(:get).
|
66
|
+
with(bucket).
|
67
|
+
and_return('allow_mult' => true)
|
68
|
+
|
69
|
+
expect(subject['allow_mult']).to be
|
70
|
+
|
71
|
+
property_hash = { 'allow_mult' => false }
|
72
|
+
expect{ subject.merge! property_hash }.to_not raise_error
|
73
|
+
|
74
|
+
expect(props_operator).to receive(:put).
|
75
|
+
with(bucket, hash_including('allow_mult' => false))
|
76
|
+
|
77
|
+
subject.store
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'merges properties from other bucket properties objects' do
|
81
|
+
expect(props_operator).to receive(:get).
|
82
|
+
with(bucket).
|
83
|
+
and_return('allow_mult' => true)
|
84
|
+
|
85
|
+
expect(subject['allow_mult']).to be
|
86
|
+
|
87
|
+
other_props = described_class.new typed_bucket
|
88
|
+
other_props.
|
89
|
+
instance_variable_set :@cached_props, { 'allow_mult' => false}
|
90
|
+
|
91
|
+
expect{ subject.merge! other_props }.to_not raise_error
|
92
|
+
|
93
|
+
expect(props_operator).to receive(:put).
|
94
|
+
with(bucket, hash_including('allow_mult' => false))
|
95
|
+
|
96
|
+
subject.store
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'reloads' do
|
100
|
+
expect(props_operator).to receive(:get).
|
101
|
+
with(bucket).
|
102
|
+
and_return('allow_mult' => true)
|
103
|
+
|
104
|
+
expect(subject['allow_mult']).to be
|
105
|
+
|
106
|
+
expect(props_operator).to receive(:get).
|
107
|
+
with(bucket).
|
108
|
+
and_return('allow_mult' => false)
|
109
|
+
|
110
|
+
expect{ subject.reload }.to_not raise_error
|
111
|
+
|
112
|
+
expect(subject['allow_mult']).to_not be
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'riak/bucket_type'
|
3
|
+
|
4
|
+
describe Riak::BucketType do
|
5
|
+
let(:client){ Riak::Client.allocate }
|
6
|
+
let(:name){ 'bucket_type_spec' }
|
7
|
+
let(:backend) do
|
8
|
+
double('Backend').tap do |backend|
|
9
|
+
allow(client).to receive(:backend).and_yield(backend)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
subject{ described_class.new client, name }
|
14
|
+
|
15
|
+
it 'is created with a client and name' do
|
16
|
+
expect{ described_class.new client, name }.to_not raise_error
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns a typed bucket' do
|
20
|
+
typed_bucket = subject.bucket 'empanadas'
|
21
|
+
expect(typed_bucket).to be_a Riak::Bucket
|
22
|
+
expect(typed_bucket).to be_a Riak::BucketTyped::Bucket
|
23
|
+
expect(typed_bucket.name).to eq 'empanadas'
|
24
|
+
expect(typed_bucket.type).to eq subject
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:sample_props){ { allow_mult: true } }
|
28
|
+
|
29
|
+
it 'has properties' do
|
30
|
+
expect(backend).to receive(:get_bucket_type_props).with(name).and_return(sample_props)
|
31
|
+
expect(props = subject.properties).to be_a Hash
|
32
|
+
expect(props[:allow_mult]).to be
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'riak/bucket_typed/bucket'
|
3
|
+
|
4
|
+
describe Riak::BucketTyped::Bucket do
|
5
|
+
let(:client){ Riak::Client.allocate }
|
6
|
+
let(:type){ client.bucket_type 'type' }
|
7
|
+
let(:name){ 'bucket_typed_bucket_spec' }
|
8
|
+
|
9
|
+
subject{ described_class.new client, name, type }
|
10
|
+
|
11
|
+
it 'initializes a typed RObject' do
|
12
|
+
typed_robject = subject.new 'panther'
|
13
|
+
expect(typed_robject).to be_a Riak::RObject
|
14
|
+
expect(typed_robject.key).to eq 'panther'
|
15
|
+
expect(typed_robject.type).to eq type
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'has a bucket type' do
|
19
|
+
expect(subject.type).to eq type
|
20
|
+
expect(subject.type.name).to eq 'type'
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'bucket properties' do
|
24
|
+
it 'returns properties scoped by bucket and type' do
|
25
|
+
expect(client).to receive(:get_bucket_props).with(subject, { type: subject.type.name }).and_return('allow_mult' => true)
|
26
|
+
|
27
|
+
expect(props = subject.props).to be_a Hash
|
28
|
+
expect(props['allow_mult']).to be
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'clears properties scoped by bucket and type' do
|
32
|
+
expect(client).to receive(:clear_bucket_props).with(subject, { type: subject.type.name })
|
33
|
+
|
34
|
+
expect{ subject.clear_props }.to_not raise_error
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'sets properties scoped by bucket and type' do
|
38
|
+
expect(client).to receive(:set_bucket_props).with(subject, { 'allow_mult' => true }, subject.type.name)
|
39
|
+
|
40
|
+
expect{ subject.props = { 'allow_mult' => true } }.to_not raise_error
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/spec/riak/client_spec.rb
CHANGED
@@ -31,10 +31,10 @@ describe Riak::Client, test_client: true do
|
|
31
31
|
|
32
32
|
it "accepts multiple nodes" do
|
33
33
|
client = Riak::Client.new :nodes => [
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
{:host => 'riak1.basho.com'},
|
35
|
+
{:host => 'riak2.basho.com', :pb_port => 1234},
|
36
|
+
{:host => 'riak3.basho.com', :pb_port => 5678}
|
37
|
+
]
|
38
38
|
expect(client.nodes.size).to eq(3)
|
39
39
|
expect(client.nodes.first.host).to eq("riak1.basho.com")
|
40
40
|
end
|
@@ -45,6 +45,13 @@ describe Riak::Client, test_client: true do
|
|
45
45
|
expect(subject.stamp).to be_kind_of(Riak::Stamp)
|
46
46
|
end
|
47
47
|
|
48
|
+
it 'exposes bucket types' do
|
49
|
+
bucket_type = nil
|
50
|
+
expect{ bucket_type = subject.bucket_type('example') }.to_not raise_error
|
51
|
+
expect(bucket_type).to be_a Riak::BucketType
|
52
|
+
expect(bucket_type.name).to eq 'example'
|
53
|
+
end
|
54
|
+
|
48
55
|
describe "reconfiguring" do
|
49
56
|
before :each do
|
50
57
|
@client = Riak::Client.new
|
@@ -108,9 +115,9 @@ describe Riak::Client, test_client: true do
|
|
108
115
|
expect(@bucket).to receive(:[]).with('value1').and_return(double('robject'))
|
109
116
|
expect(@bucket).to receive(:[]).with('value2').and_return(double('robject'))
|
110
117
|
@pairs = [
|
111
|
-
|
112
|
-
|
113
|
-
|
118
|
+
[@bucket, 'value1'],
|
119
|
+
[@bucket, 'value2']
|
120
|
+
]
|
114
121
|
end
|
115
122
|
|
116
123
|
it 'accepts an array of bucket and key pairs' do
|
@@ -185,7 +192,7 @@ describe Riak::Client, test_client: true do
|
|
185
192
|
end
|
186
193
|
end
|
187
194
|
|
188
|
-
describe "when receiving errors from the backend"
|
195
|
+
describe "when receiving errors from the backend" do
|
189
196
|
before do
|
190
197
|
@client = Riak::Client.new
|
191
198
|
end
|
@@ -217,4 +224,5 @@ describe Riak::Client, test_client: true do
|
|
217
224
|
expect(error).not_to be_nil
|
218
225
|
expect(error).to be_instance_of(RuntimeError)
|
219
226
|
end
|
227
|
+
end
|
220
228
|
end
|
@@ -5,7 +5,8 @@ describe Riak::Crdt::Counter do
|
|
5
5
|
let(:bucket) do
|
6
6
|
double('bucket').tap do |b|
|
7
7
|
allow(b).to receive(:name).and_return('bucket')
|
8
|
-
allow(b).to receive(:is_a?).and_return(true)
|
8
|
+
allow(b).to receive(:is_a?).with(Riak::Bucket).and_return(true)
|
9
|
+
allow(b).to receive(:is_a?).with(Riak::BucketTyped::Bucket).and_return(false)
|
9
10
|
end
|
10
11
|
end
|
11
12
|
it 'initializes with bucket, key, and optional bucket-type' do
|
data/spec/riak/crdt/map_spec.rb
CHANGED
@@ -5,7 +5,8 @@ describe Riak::Crdt::Map do
|
|
5
5
|
let(:bucket) do
|
6
6
|
double('bucket').tap do |b|
|
7
7
|
allow(b).to receive(:name).and_return('bucket')
|
8
|
-
allow(b).to receive(:is_a?).and_return(true)
|
8
|
+
allow(b).to receive(:is_a?).with(Riak::Bucket).and_return(true)
|
9
|
+
allow(b).to receive(:is_a?).with(Riak::BucketTyped::Bucket).and_return(false)
|
9
10
|
allow(b).to receive(:client).and_return(client)
|
10
11
|
end
|
11
12
|
end
|
data/spec/riak/crdt/set_spec.rb
CHANGED
@@ -5,7 +5,8 @@ describe Riak::Crdt::Set do
|
|
5
5
|
let(:bucket) do
|
6
6
|
double('bucket').tap do |b|
|
7
7
|
allow(b).to receive(:name).and_return('bucket')
|
8
|
-
allow(b).to receive(:is_a?).and_return(true)
|
8
|
+
allow(b).to receive(:is_a?).with(Riak::Bucket).and_return(true)
|
9
|
+
allow(b).to receive(:is_a?).with(Riak::BucketTyped::Bucket).and_return(false)
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|