riak-client 2.5.0 → 2.6.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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/RELNOTES.md +3 -0
- data/lib/riak/bucket.rb +1 -1
- data/lib/riak/client.rb +14 -7
- data/lib/riak/client/beefcake/messages.rb +13 -0
- data/lib/riak/multi.rb +101 -0
- data/lib/riak/multiexist.rb +14 -0
- data/lib/riak/multiget.rb +7 -107
- data/lib/riak/version.rb +1 -1
- metadata +12 -234
- data/.document +0 -5
- data/.gitignore +0 -44
- data/.rspec +0 -2
- data/Gemfile +0 -17
- data/Guardfile +0 -20
- data/Rakefile +0 -124
- data/riak-client.gemspec +0 -71
- data/spec/failover/failover.rb +0 -59
- data/spec/fixtures/bitcask.txt +0 -25
- data/spec/fixtures/cat.jpg +0 -0
- data/spec/fixtures/multipart-basic-conflict.txt +0 -15
- data/spec/fixtures/multipart-blank.txt +0 -7
- data/spec/fixtures/multipart-mapreduce.txt +0 -10
- data/spec/fixtures/multipart-with-body.txt +0 -16
- data/spec/fixtures/multipart-with-marked-tombstones.txt +0 -17
- data/spec/fixtures/multipart-with-unmarked-tombstone.txt +0 -16
- data/spec/fixtures/server.cert.crt +0 -15
- data/spec/fixtures/server.cert.key +0 -15
- data/spec/fixtures/test.pem +0 -1
- data/spec/fixtures/yz_schema_template.xml +0 -18
- data/spec/integration/riak/bucket_types_spec.rb +0 -308
- data/spec/integration/riak/conflict_resolution_spec.rb +0 -96
- data/spec/integration/riak/counters_spec.rb +0 -36
- data/spec/integration/riak/crdt/configuration_spec.rb +0 -38
- data/spec/integration/riak/crdt_search_spec.rb +0 -176
- data/spec/integration/riak/crdt_spec.rb +0 -332
- data/spec/integration/riak/crdt_validation/map_spec.rb +0 -63
- data/spec/integration/riak/crdt_validation/set_spec.rb +0 -122
- data/spec/integration/riak/encodings/crdt_spec.rb +0 -122
- data/spec/integration/riak/encodings/kv_spec.rb +0 -87
- data/spec/integration/riak/encodings/yz_spec.rb +0 -142
- data/spec/integration/riak/preflist_spec.rb +0 -43
- data/spec/integration/riak/properties_spec.rb +0 -69
- data/spec/integration/riak/protobuffs/interrupted_request_spec.rb +0 -33
- data/spec/integration/riak/protobuffs/timeouts_spec.rb +0 -178
- data/spec/integration/riak/protobuffs_backends_spec.rb +0 -40
- data/spec/integration/riak/search_spec.rb +0 -104
- data/spec/integration/riak/secondary_index_spec.rb +0 -72
- data/spec/integration/riak/security_spec.rb +0 -105
- data/spec/integration/riak/threading_spec.rb +0 -154
- data/spec/integration/riak/time_series_spec.rb +0 -212
- data/spec/integration/yokozuna/index_spec.rb +0 -61
- data/spec/integration/yokozuna/queries_spec.rb +0 -115
- data/spec/integration/yokozuna/schema_spec.rb +0 -49
- data/spec/riak/beefcake_protobuffs_backend/bucket_properties_operator_spec.rb +0 -247
- data/spec/riak/beefcake_protobuffs_backend/crdt_operator_spec.rb +0 -244
- data/spec/riak/beefcake_protobuffs_backend/object_methods_spec.rb +0 -53
- data/spec/riak/beefcake_protobuffs_backend/protocol_spec.rb +0 -189
- data/spec/riak/beefcake_protobuffs_backend/ts_cell_codec_spec.rb +0 -124
- data/spec/riak/beefcake_protobuffs_backend_spec.rb +0 -162
- data/spec/riak/bucket_properties_spec.rb +0 -135
- data/spec/riak/bucket_spec.rb +0 -275
- data/spec/riak/bucket_type_spec.rb +0 -50
- data/spec/riak/bucket_typed/bucket_spec.rb +0 -78
- data/spec/riak/client_spec.rb +0 -304
- data/spec/riak/core_ext/to_param_spec.rb +0 -15
- data/spec/riak/counter_spec.rb +0 -122
- data/spec/riak/crdt/counter_spec.rb +0 -55
- data/spec/riak/crdt/hyper_log_log_spec.rb +0 -56
- data/spec/riak/crdt/inner_counter_spec.rb +0 -21
- data/spec/riak/crdt/inner_flag_spec.rb +0 -39
- data/spec/riak/crdt/inner_map_spec.rb +0 -47
- data/spec/riak/crdt/inner_register_spec.rb +0 -40
- data/spec/riak/crdt/inner_set_spec.rb +0 -33
- data/spec/riak/crdt/map_spec.rb +0 -78
- data/spec/riak/crdt/set_spec.rb +0 -61
- data/spec/riak/crdt/shared_examples.rb +0 -88
- data/spec/riak/crdt/typed_collection_spec.rb +0 -225
- data/spec/riak/escape_spec.rb +0 -72
- data/spec/riak/feature_detection_spec.rb +0 -77
- data/spec/riak/index_collection_spec.rb +0 -53
- data/spec/riak/instrumentation_spec.rb +0 -124
- data/spec/riak/link_spec.rb +0 -85
- data/spec/riak/list_buckets_spec.rb +0 -41
- data/spec/riak/map_reduce/filter_builder_spec.rb +0 -32
- data/spec/riak/map_reduce/phase_spec.rb +0 -142
- data/spec/riak/map_reduce_spec.rb +0 -434
- data/spec/riak/multiget_spec.rb +0 -81
- data/spec/riak/node_spec.rb +0 -26
- data/spec/riak/robject_spec.rb +0 -542
- data/spec/riak/search/index_spec.rb +0 -72
- data/spec/riak/search/query_spec.rb +0 -88
- data/spec/riak/search/result_collection_spec.rb +0 -89
- data/spec/riak/search/result_document_spec.rb +0 -106
- data/spec/riak/search/schema_spec.rb +0 -63
- data/spec/riak/search_spec.rb +0 -107
- data/spec/riak/secondary_index_spec.rb +0 -225
- data/spec/riak/serializers_spec.rb +0 -121
- data/spec/riak/stamp_spec.rb +0 -54
- data/spec/riak/time_series/deletion_spec.rb +0 -33
- data/spec/riak/time_series/listing_spec.rb +0 -51
- data/spec/riak/time_series/submission_spec.rb +0 -35
- data/spec/riak/util/gzip_spec.rb +0 -49
- data/spec/riak/walk_spec_spec.rb +0 -203
- data/spec/spec_helper.rb +0 -67
- data/spec/support/certs/README.md +0 -13
- data/spec/support/certs/ca.crt +0 -21
- data/spec/support/certs/client.crl +0 -13
- data/spec/support/certs/client.crt +0 -94
- data/spec/support/certs/client.csr +0 -18
- data/spec/support/certs/client.key +0 -27
- data/spec/support/certs/empty_ca.crt +0 -21
- data/spec/support/certs/server.crl +0 -13
- data/spec/support/certs/server.crt +0 -94
- data/spec/support/certs/server.key +0 -27
- data/spec/support/crdt_search_config.rb +0 -112
- data/spec/support/crdt_search_fixtures.rb +0 -42
- data/spec/support/integration_setup.rb +0 -10
- data/spec/support/search_config.rb +0 -83
- data/spec/support/search_corpus_setup.rb +0 -39
- data/spec/support/test_client.rb +0 -52
- data/spec/support/test_client.yml.example +0 -10
- data/spec/support/unified_backend_examples.rb +0 -402
- data/spec/support/version_filter.rb +0 -12
- data/spec/support/wait_until.rb +0 -20
@@ -1,50 +0,0 @@
|
|
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
|
-
describe 'equality' do
|
28
|
-
let(:same){ described_class.new client, name }
|
29
|
-
let(:different_client){ described_class.new Riak::Client.allocate, name }
|
30
|
-
let(:different_name){ described_class.new client, 'different name' }
|
31
|
-
it { is_expected.to eq same }
|
32
|
-
it { is_expected.to_not eq different_client }
|
33
|
-
it { is_expected.to_not eq different_name }
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'properties' do
|
37
|
-
let(:props_expectation){ expect(backend).to receive(:get_bucket_type_props).with(name) }
|
38
|
-
|
39
|
-
it 'is queryable' do
|
40
|
-
props_expectation.and_return(allow_mult: true)
|
41
|
-
expect(props = subject.properties).to be_a Hash
|
42
|
-
expect(props[:allow_mult]).to be
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'asks for data type' do
|
46
|
-
props_expectation.and_return(datatype: 'set')
|
47
|
-
expect(subject.data_type_class).to eq Riak::Crdt::Set
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,78 +0,0 @@
|
|
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.bucket.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 'equality' do
|
24
|
-
let(:same){ described_class.new client, name, type }
|
25
|
-
let(:different){ described_class.new client, 'other', type }
|
26
|
-
let(:untyped){ Riak::Bucket.new client, name }
|
27
|
-
it { is_expected.to eq subject }
|
28
|
-
it { is_expected.to eq same }
|
29
|
-
it { is_expected.to_not eq untyped }
|
30
|
-
it { is_expected.to_not eq different }
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'bucket properties' do
|
34
|
-
it 'returns properties scoped by bucket and type' do
|
35
|
-
expect(client).to receive(:get_bucket_props).
|
36
|
-
with(subject, { type: subject.type.name }).
|
37
|
-
and_return('allow_mult' => true)
|
38
|
-
|
39
|
-
expect(props = subject.props).to be_a Hash
|
40
|
-
expect(props['allow_mult']).to be
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'clears properties scoped by bucket and type' do
|
44
|
-
expect(client).to receive(:clear_bucket_props).
|
45
|
-
with(subject, { type: subject.type.name })
|
46
|
-
|
47
|
-
expect{ subject.clear_props }.to_not raise_error
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'sets properties scoped by bucket and type' do
|
51
|
-
expect(client).to receive(:get_bucket_props).
|
52
|
-
with(subject, { type: subject.type.name }).
|
53
|
-
and_return('allow_mult' => false)
|
54
|
-
expect(client).to receive(:set_bucket_props).
|
55
|
-
with(subject,
|
56
|
-
{ 'allow_mult' => true },
|
57
|
-
subject.type.name)
|
58
|
-
|
59
|
-
expect{ subject.props = { 'allow_mult' => true } }.to_not raise_error
|
60
|
-
end
|
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
|
78
|
-
end
|
data/spec/riak/client_spec.rb
DELETED
@@ -1,304 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'riak/errors/protobuffs_error'
|
3
|
-
|
4
|
-
describe Riak::Client, test_client: true do
|
5
|
-
describe "when initializing" do
|
6
|
-
it "defaults to a single local node" do
|
7
|
-
client = Riak::Client.new
|
8
|
-
expect(client.nodes).to eq([Riak::Client::Node.new(client)])
|
9
|
-
end
|
10
|
-
|
11
|
-
it "accepts a host" do
|
12
|
-
client = Riak::Client.new :host => "riak.basho.com"
|
13
|
-
expect(client.nodes.size).to eq(1)
|
14
|
-
expect(client.nodes.first.host).to eq("riak.basho.com")
|
15
|
-
end
|
16
|
-
|
17
|
-
it "accepts a Protobuffs port" do
|
18
|
-
client = Riak::Client.new :pb_port => 9000
|
19
|
-
expect(client.nodes.size).to eq(1)
|
20
|
-
expect(client.nodes.first.host).to eq('127.0.0.1')
|
21
|
-
expect(client.nodes.first.pb_port).to eq(9000)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "accepts a client ID" do
|
25
|
-
client = Riak::Client.new :client_id => "AAAAAA=="
|
26
|
-
expect(client.client_id).to eq("AAAAAA==")
|
27
|
-
end
|
28
|
-
|
29
|
-
it "creates a client ID if not specified", :integration => true do
|
30
|
-
expect(Riak::Client.new(pb_port: test_client.nodes.first.pb_port).
|
31
|
-
client_id).to_not be_nil
|
32
|
-
end
|
33
|
-
|
34
|
-
it "accepts multiple nodes" do
|
35
|
-
client = Riak::Client.new nodes: [
|
36
|
-
{host: 'riak1.basho.com'},
|
37
|
-
{host: 'riak2.basho.com', pb_port: 1234},
|
38
|
-
{host: 'riak3.basho.com', pb_port: 5678}
|
39
|
-
]
|
40
|
-
expect(client.nodes.size).to eq(3)
|
41
|
-
expect(client.nodes.first.host).to eq("riak1.basho.com")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "maps port to unset nodes, and does not create localhost node" do
|
45
|
-
client = Riak::Client.new nodes: [
|
46
|
-
{host: 'riak1.basho.com'},
|
47
|
-
{host: 'riak2.basho.com', pb_port: 1234},
|
48
|
-
{host: 'riak3.basho.com', pb_port: 5678}
|
49
|
-
], pb_port: 4321
|
50
|
-
expect(client.nodes.size).to eq(3)
|
51
|
-
expect(client.nodes[0].host).to eq("riak1.basho.com")
|
52
|
-
expect(client.nodes[0].pb_port).to eq(4321)
|
53
|
-
expect(client.nodes[1].host).to eq("riak2.basho.com")
|
54
|
-
expect(client.nodes[1].pb_port).to eq(1234)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "defaults to max_retries = 2" do
|
58
|
-
client = Riak::Client.new
|
59
|
-
expect(client.max_retries).to eq(2)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "accepts max_retries option" do
|
63
|
-
client = Riak::Client.new :max_retries => 42
|
64
|
-
expect(client.max_retries).to eq(42)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "accepts timeouts" do
|
68
|
-
client = Riak::Client.new(
|
69
|
-
:connect_timeout => 1,
|
70
|
-
:read_timeout => 2,
|
71
|
-
:write_timeout => 3
|
72
|
-
)
|
73
|
-
expect(client.connect_timeout).to eq(1)
|
74
|
-
expect(client.read_timeout).to eq(2)
|
75
|
-
expect(client.write_timeout).to eq(3)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "accepts convert_timestamp" do
|
79
|
-
client = Riak::Client.new(
|
80
|
-
:convert_timestamp => true
|
81
|
-
)
|
82
|
-
expect(client.convert_timestamp).to be
|
83
|
-
end
|
84
|
-
|
85
|
-
it "has default convert_timestamp of false" do
|
86
|
-
client = Riak::Client.new
|
87
|
-
expect(client.convert_timestamp).to_not be
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
it "exposes a Stamp object" do
|
92
|
-
expect(subject).to respond_to(:stamp)
|
93
|
-
expect(subject.stamp).to be_kind_of(Riak::Stamp)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'exposes bucket types' do
|
97
|
-
bucket_type = nil
|
98
|
-
expect{ bucket_type = subject.bucket_type('example') }.to_not raise_error
|
99
|
-
expect(bucket_type).to be_a Riak::BucketType
|
100
|
-
expect(bucket_type.name).to eq 'example'
|
101
|
-
end
|
102
|
-
|
103
|
-
describe "reconfiguring" do
|
104
|
-
before :each do
|
105
|
-
@client = Riak::Client.new
|
106
|
-
end
|
107
|
-
|
108
|
-
describe "setting the client id" do
|
109
|
-
it "accepts a string unmodified" do
|
110
|
-
@client.client_id = "foo"
|
111
|
-
expect(@client.client_id).to eq("foo")
|
112
|
-
end
|
113
|
-
|
114
|
-
it "rejects an integer equal to the maximum client id" do
|
115
|
-
expect do
|
116
|
-
@client.client_id = Riak::Client::MAX_CLIENT_ID
|
117
|
-
end.to raise_error(ArgumentError)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "rejects an integer larger than the maximum client id" do
|
121
|
-
expect do
|
122
|
-
@client.client_id = Riak::Client::MAX_CLIENT_ID + 1
|
123
|
-
end.to raise_error(ArgumentError)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe "choosing a Protobuffs backend" do
|
129
|
-
before :each do
|
130
|
-
@client = Riak::Client.new
|
131
|
-
end
|
132
|
-
|
133
|
-
it "chooses the selected backend" do
|
134
|
-
@client.protobuffs_backend = :Beefcake
|
135
|
-
@client.protobuffs do |p|
|
136
|
-
expect(p).to be_instance_of(Riak::Client::BeefcakeProtobuffsBackend)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
it "tears down the existing Protobuffs connections when changed" do
|
141
|
-
expect(@client.protobuffs_pool).to receive(:clear)
|
142
|
-
@client.protobuffs_backend = :Beefcake
|
143
|
-
end
|
144
|
-
|
145
|
-
it "raises an error when the chosen backend is not valid" do
|
146
|
-
expect(Riak::Client::BeefcakeProtobuffsBackend).to receive(:configured?).
|
147
|
-
and_return(false)
|
148
|
-
expect do
|
149
|
-
@client.protobuffs { |x| }
|
150
|
-
end.to raise_error Riak::BackendCreationError
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe "choosing a unified backend" do
|
155
|
-
before :each do
|
156
|
-
@client = Riak::Client.new
|
157
|
-
end
|
158
|
-
|
159
|
-
it "uses Protobuffs when the protocol is pbc" do
|
160
|
-
@client.backend do |b|
|
161
|
-
expect(b).to be_kind_of(Riak::Client::ProtobuffsBackend)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe "retrieving many values" do
|
167
|
-
before :each do
|
168
|
-
@client = Riak::Client.new
|
169
|
-
@bucket = @client.bucket('foo')
|
170
|
-
expect(@bucket).to receive(:[]).
|
171
|
-
with('value1').
|
172
|
-
and_return(double('robject'))
|
173
|
-
expect(@bucket).to receive(:[]).
|
174
|
-
with('value2').
|
175
|
-
and_return(double('robject'))
|
176
|
-
@pairs = [
|
177
|
-
[@bucket, 'value1'],
|
178
|
-
[@bucket, 'value2']
|
179
|
-
]
|
180
|
-
end
|
181
|
-
|
182
|
-
it 'accepts an array of bucket and key pairs' do
|
183
|
-
expect{ @client.get_many(@pairs) }.not_to raise_error
|
184
|
-
end
|
185
|
-
|
186
|
-
it 'returns a hash of bucket/key pairs and robjects' do
|
187
|
-
@results = @client.get_many(@pairs)
|
188
|
-
expect(@results).to be_a Hash
|
189
|
-
expect(@results.length).to be(@pairs.length)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
describe "retrieving a bucket" do
|
194
|
-
before :each do
|
195
|
-
@client = Riak::Client.new
|
196
|
-
@backend = double("Backend")
|
197
|
-
allow(@client).to receive(:backend).and_yield(@backend)
|
198
|
-
end
|
199
|
-
|
200
|
-
it "returns a bucket object" do
|
201
|
-
expect(@client.bucket("foo")).to be_kind_of(Riak::Bucket)
|
202
|
-
end
|
203
|
-
|
204
|
-
it "fetches bucket properties if asked" do
|
205
|
-
expect(@backend).to receive(:get_bucket_props) do |b|
|
206
|
-
expect(b.name).to eq("foo")
|
207
|
-
{}
|
208
|
-
end
|
209
|
-
@client.bucket("foo", :props => true)
|
210
|
-
end
|
211
|
-
|
212
|
-
it "memoizes bucket parameters" do
|
213
|
-
@bucket = double("Bucket")
|
214
|
-
expect(Riak::Bucket).to receive(:new).
|
215
|
-
with(@client, "baz").
|
216
|
-
once.
|
217
|
-
and_return(@bucket)
|
218
|
-
expect(@client.bucket("baz")).to eq(@bucket)
|
219
|
-
expect(@client.bucket("baz")).to eq(@bucket)
|
220
|
-
end
|
221
|
-
|
222
|
-
it "rejects buckets with zero-length names" do
|
223
|
-
expect { @client.bucket('') }.to raise_error(ArgumentError)
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
describe "listing buckets" do
|
228
|
-
before do
|
229
|
-
@client = Riak::Client.new
|
230
|
-
@backend = double("Backend")
|
231
|
-
allow(@client).to receive(:backend).and_yield(@backend)
|
232
|
-
end
|
233
|
-
|
234
|
-
after { Riak.disable_list_keys_warnings = true }
|
235
|
-
|
236
|
-
it "lists buckets" do
|
237
|
-
expect(@backend).to receive(:list_buckets).and_return(%w{test test2})
|
238
|
-
buckets = @client.buckets
|
239
|
-
expect(buckets.size).to eq(2)
|
240
|
-
expect(buckets).to be_all {|b| b.is_a?(Riak::Bucket) }
|
241
|
-
expect(buckets[0].name).to eq("test")
|
242
|
-
expect(buckets[1].name).to eq("test2")
|
243
|
-
end
|
244
|
-
|
245
|
-
it "warns about the expense of list-buckets when warnings are not disabled" do
|
246
|
-
Riak.disable_list_keys_warnings = false
|
247
|
-
allow(@backend).to receive(:list_buckets).and_return(%w{test test2})
|
248
|
-
expect(@client).to receive(:warn)
|
249
|
-
@client.buckets
|
250
|
-
end
|
251
|
-
|
252
|
-
it "supports a timeout option" do
|
253
|
-
expect(@backend).to receive(:list_buckets).with(timeout: 1234).and_return(%w{test test2})
|
254
|
-
|
255
|
-
buckets = @client.buckets timeout: 1234
|
256
|
-
expect(buckets.size).to eq(2)
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
describe "when receiving errors from the backend" do
|
261
|
-
before do
|
262
|
-
@client = Riak::Client.new
|
263
|
-
end
|
264
|
-
|
265
|
-
it "retries on recoverable errors" do
|
266
|
-
call_count = 0
|
267
|
-
|
268
|
-
begin
|
269
|
-
@client.backend do |b|
|
270
|
-
call_count += 1
|
271
|
-
raise Riak::ProtobuffsFailedHeader
|
272
|
-
end
|
273
|
-
rescue RuntimeError
|
274
|
-
end
|
275
|
-
|
276
|
-
expect(call_count).to eq(@client.max_retries + 1)
|
277
|
-
end
|
278
|
-
|
279
|
-
it "throws a RuntimeError if it runs out of retries" do
|
280
|
-
error = nil
|
281
|
-
begin
|
282
|
-
@client.backend do |b|
|
283
|
-
raise Riak::ProtobuffsFailedHeader
|
284
|
-
end
|
285
|
-
rescue RuntimeError => e
|
286
|
-
error = e
|
287
|
-
end
|
288
|
-
|
289
|
-
expect(error).not_to be_nil
|
290
|
-
expect(error).to be_instance_of(RuntimeError)
|
291
|
-
end
|
292
|
-
|
293
|
-
it "logs the error" do
|
294
|
-
expect(Riak.logger).to receive(:warn).with(/Riak::ProtobuffsFailedHeader/).at_least(:once)
|
295
|
-
|
296
|
-
begin
|
297
|
-
@client.backend do |b|
|
298
|
-
raise Riak::ProtobuffsFailedHeader
|
299
|
-
end
|
300
|
-
rescue RuntimeError
|
301
|
-
end
|
302
|
-
end
|
303
|
-
end
|
304
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
describe Riak do
|
3
|
-
require 'riak/core_ext/to_param'
|
4
|
-
|
5
|
-
it "converts params correctly" do
|
6
|
-
expect({ :name => 'David', :nationality => 'Danish' }.to_param).to eq("name=David&nationality=Danish")
|
7
|
-
end
|
8
|
-
|
9
|
-
# Based on the activesupport implementation.
|
10
|
-
# https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/object/to_param.rb
|
11
|
-
it "converts namespaced params correctly" do
|
12
|
-
expect({ :name => 'David', :nationality => 'Danish' }.to_param('user')).to eq("user%5Bname%5D=David&user%5Bnationality%5D=Danish")
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|