riak-client 2.5.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'riak'
|
3
|
-
|
4
|
-
describe 'Preflist', integration: true, test_client: true do
|
5
|
-
let(:bucket){ random_bucket }
|
6
|
-
let(:robject) do
|
7
|
-
bucket.get_or_new(random_key).tap do |robj|
|
8
|
-
robj.data = 'asdf'
|
9
|
-
robj.store
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
matcher :be_a_preflist do
|
14
|
-
match do |actual|
|
15
|
-
actual.is_a?(Array) &&
|
16
|
-
actual.first.is_a?(Riak::PreflistItem)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'is available from RObjects' do
|
21
|
-
begin
|
22
|
-
expect(robject.preflist).to be_a_preflist
|
23
|
-
rescue Riak::ProtobuffsErrorResponse
|
24
|
-
skip('preflists are not supported')
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'is available from Buckets' do
|
29
|
-
begin
|
30
|
-
expect(bucket.get_preflist robject.key).to be_a_preflist
|
31
|
-
rescue Riak::ProtobuffsErrorResponse
|
32
|
-
skip('preflists are not supported')
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'is available from the Client' do
|
37
|
-
begin
|
38
|
-
expect(test_client.get_preflist bucket.name, robject.key).to be_a_preflist
|
39
|
-
rescue Riak::ProtobuffsErrorResponse
|
40
|
-
skip('preflists are not supported')
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'riak/bucket_properties'
|
3
|
-
|
4
|
-
describe Riak::BucketProperties, test_client: true, integration: true do
|
5
|
-
describe 'Bucket Properties objects' do
|
6
|
-
let(:bucket){ random_bucket 'props' }
|
7
|
-
subject{ described_class.new bucket }
|
8
|
-
|
9
|
-
let(:other_bucket) do
|
10
|
-
random_bucket('props-other').tap do |b|
|
11
|
-
p = described_class.new b
|
12
|
-
p['r'] = 1
|
13
|
-
p.store
|
14
|
-
end
|
15
|
-
end
|
16
|
-
let(:other_props){ described_class.new other_bucket }
|
17
|
-
|
18
|
-
before(:example) do
|
19
|
-
bucket.clear_props
|
20
|
-
subject.reload
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'is initializable with a bucket' do
|
24
|
-
expect{ described_class.new bucket }.to_not raise_error
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'works like a hash' do
|
28
|
-
expect(subject['r']).to eq 'quorum'
|
29
|
-
expect{ subject['r'] = 1 }.to_not raise_error
|
30
|
-
subject.store
|
31
|
-
subject.reload
|
32
|
-
|
33
|
-
expect(subject['r']).to eq 1
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'can be merged from a hash' do
|
37
|
-
bulk_props = { r: 1, w: 1, dw: 1 }
|
38
|
-
expect{ subject.merge! bulk_props }.to_not raise_error
|
39
|
-
subject.store
|
40
|
-
subject.reload
|
41
|
-
|
42
|
-
expect(subject['r']).to eq 1
|
43
|
-
expect(subject['w']).to eq 1
|
44
|
-
expect(subject['dw']).to eq 1
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'can be merged from a bucket properties object' do
|
48
|
-
expect(other_props['r']).to eq 1
|
49
|
-
expect(subject['r']).to eq 'quorum'
|
50
|
-
|
51
|
-
expect{ subject.merge! other_props }.to_not raise_error
|
52
|
-
subject.store
|
53
|
-
subject.reload
|
54
|
-
|
55
|
-
expect(subject['r']).to eq 1
|
56
|
-
end
|
57
|
-
|
58
|
-
let(:modfun){ { 'mod' => 'validate_json', 'fun' => 'validate' } }
|
59
|
-
|
60
|
-
it 'works with composite/modfun properties' do
|
61
|
-
expect{ subject['precommit'] = modfun }.to_not raise_error
|
62
|
-
|
63
|
-
subject.store
|
64
|
-
subject.reload
|
65
|
-
|
66
|
-
expect(subject['precommit']).to eq [modfun]
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'timeout'
|
3
|
-
|
4
|
-
describe 'Protocol Buffers', test_client: true do
|
5
|
-
describe 'interrupted requests' do
|
6
|
-
|
7
|
-
let(:bucket){ random_bucket 'interrupted_requests' }
|
8
|
-
|
9
|
-
before do
|
10
|
-
first = bucket.new 'first'
|
11
|
-
first.data = 'first'
|
12
|
-
first.content_type = 'text/plain'
|
13
|
-
first.store
|
14
|
-
|
15
|
-
second = bucket.new 'second'
|
16
|
-
second.data = 'second'
|
17
|
-
second.content_type = 'text/plain'
|
18
|
-
second.store
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'fails out when a request is interrupted, and never returns the wrong payload' do
|
22
|
-
expect do
|
23
|
-
Timeout.timeout 1 do
|
24
|
-
loop do
|
25
|
-
expect(bucket.get('first').data).to eq 'first'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end.to raise_error Timeout::Error
|
29
|
-
|
30
|
-
expect(bucket.get('second').data).to eq 'second'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,178 +0,0 @@
|
|
1
|
-
require 'socket'
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
require 'riak/client/beefcake/messages'
|
5
|
-
require 'riak/client/beefcake/protocol'
|
6
|
-
|
7
|
-
describe 'Protocol Buffers', test_client: true, integration: true, slow: true do
|
8
|
-
if RUBY_VERSION >= '2.0.0'
|
9
|
-
describe 'timeouts' do
|
10
|
-
it 'raises error on connect timeout' do
|
11
|
-
# unroutable TEST-NET (https://tools.ietf.org/html/rfc5737)
|
12
|
-
config = {}
|
13
|
-
config[:host] = '192.0.2.0'
|
14
|
-
config[:pb_port] = 65535
|
15
|
-
|
16
|
-
config[:connect_timeout] = 0.0001
|
17
|
-
client = Riak::Client.new(config)
|
18
|
-
|
19
|
-
expect do
|
20
|
-
client.ping
|
21
|
-
end.to raise_error RuntimeError, /timed out/
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'raises error on read timeout' do
|
25
|
-
ok_to_continue = false
|
26
|
-
quitting = false
|
27
|
-
port = 0
|
28
|
-
|
29
|
-
server = nil
|
30
|
-
thr = Thread.new do
|
31
|
-
server = TCPServer.new port
|
32
|
-
port = server.addr[1]
|
33
|
-
ok_to_continue = true
|
34
|
-
loop do
|
35
|
-
begin
|
36
|
-
Thread.start(server.accept) do |s|
|
37
|
-
loop do
|
38
|
-
p = Riak::Client::BeefcakeProtobuffsBackend::Protocol.new s
|
39
|
-
begin
|
40
|
-
msgname, _body = p.receive
|
41
|
-
rescue IOError
|
42
|
-
break if quitting
|
43
|
-
raise
|
44
|
-
end
|
45
|
-
case msgname
|
46
|
-
when :PingReq
|
47
|
-
sleep 0.5
|
48
|
-
p.write :PingResp
|
49
|
-
else
|
50
|
-
$stderr.puts("unknown msgname: #{msgname}")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
rescue IOError
|
55
|
-
break if quitting
|
56
|
-
raise
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
loop do
|
62
|
-
break if ok_to_continue
|
63
|
-
sleep 0.1
|
64
|
-
end
|
65
|
-
ok_to_continue = false
|
66
|
-
|
67
|
-
config = {}
|
68
|
-
config[:pb_port] = port
|
69
|
-
config[:client_id] = port
|
70
|
-
config[:read_timeout] = 0.0001
|
71
|
-
client = Riak::Client.new(config)
|
72
|
-
|
73
|
-
max_ping_attempts = 16
|
74
|
-
ping_count = 0
|
75
|
-
loop do
|
76
|
-
begin
|
77
|
-
client.ping
|
78
|
-
ping_count += 1
|
79
|
-
break if ping_count > max_ping_attempts
|
80
|
-
rescue RuntimeError => e
|
81
|
-
break if e.message =~ /timed out/
|
82
|
-
end
|
83
|
-
sleep 0.5
|
84
|
-
end
|
85
|
-
|
86
|
-
quitting = true
|
87
|
-
server.close
|
88
|
-
thr.join
|
89
|
-
|
90
|
-
expect(ping_count).to be < max_ping_attempts
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'raises error on write timeout' do
|
94
|
-
ok_to_continue = false
|
95
|
-
quitting = false
|
96
|
-
port = 0
|
97
|
-
|
98
|
-
server = nil
|
99
|
-
thr = Thread.new do
|
100
|
-
server = TCPServer.new port
|
101
|
-
port = server.addr[1]
|
102
|
-
ok_to_continue = true
|
103
|
-
loop do
|
104
|
-
begin
|
105
|
-
Thread.start(server.accept) do |s|
|
106
|
-
loop do
|
107
|
-
p = Riak::Client::BeefcakeProtobuffsBackend::Protocol.new s
|
108
|
-
begin
|
109
|
-
msgname, _body = p.receive
|
110
|
-
rescue IOError
|
111
|
-
break if quitting
|
112
|
-
raise
|
113
|
-
end
|
114
|
-
case msgname
|
115
|
-
when :PingReq
|
116
|
-
p.write :PingResp
|
117
|
-
when :GetServerInfoReq
|
118
|
-
r = Riak::Client::BeefcakeProtobuffsBackend::RpbGetServerInfoResp.new
|
119
|
-
r.node = 'dev1@127.0.0.1'.force_encoding('BINARY')
|
120
|
-
r.server_version = '2.1.4'.force_encoding('BINARY')
|
121
|
-
p.write :GetServerInfoResp, r
|
122
|
-
when :PutReq
|
123
|
-
r = Riak::Client::BeefcakeProtobuffsBackend::RpbPutResp.new
|
124
|
-
p.write :PutResp, r
|
125
|
-
else
|
126
|
-
$stderr.puts("unknown msgname: #{msgname}")
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
rescue IOError
|
131
|
-
break if quitting
|
132
|
-
raise
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
loop do
|
138
|
-
break if ok_to_continue
|
139
|
-
sleep 0.1
|
140
|
-
end
|
141
|
-
ok_to_continue = false
|
142
|
-
|
143
|
-
config = {}
|
144
|
-
config[:pb_port] = port
|
145
|
-
config[:client_id] = port
|
146
|
-
config[:write_timeout] = 0.0001
|
147
|
-
client = Riak::Client.new(config)
|
148
|
-
|
149
|
-
bucket = client.bucket('timeouts')
|
150
|
-
|
151
|
-
max_store_attempts = 16
|
152
|
-
store_count = 0
|
153
|
-
loop do
|
154
|
-
begin
|
155
|
-
obj = bucket.new "obj-#{store_count}"
|
156
|
-
# write enough data to grow beyond socket buffer capacity
|
157
|
-
obj.data = SecureRandom.urlsafe_base64(10_000_000)
|
158
|
-
obj.content_type = 'text/plain'
|
159
|
-
obj.store
|
160
|
-
store_count += 1
|
161
|
-
break if store_count > max_store_attempts
|
162
|
-
rescue RuntimeError => e
|
163
|
-
break if e.message =~ /timed out/
|
164
|
-
end
|
165
|
-
sleep 0.5
|
166
|
-
end
|
167
|
-
|
168
|
-
quitting = true
|
169
|
-
server.close
|
170
|
-
thr.join
|
171
|
-
|
172
|
-
expect(store_count).to be < max_store_attempts
|
173
|
-
end
|
174
|
-
end
|
175
|
-
else
|
176
|
-
skip 'not supported in this version of Ruby'
|
177
|
-
end
|
178
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Protocol Buffers", test_client: true do
|
4
|
-
before do
|
5
|
-
@client = test_client
|
6
|
-
@bucket = random_bucket 'protobuf_spec'
|
7
|
-
end
|
8
|
-
|
9
|
-
[:BeefcakeProtobuffsBackend].each do |klass|
|
10
|
-
bklass = Riak::Client.const_get(klass)
|
11
|
-
if bklass.configured?
|
12
|
-
describe klass.to_s do
|
13
|
-
before do
|
14
|
-
@backend = bklass.new(@client, @client.node)
|
15
|
-
end
|
16
|
-
|
17
|
-
it_should_behave_like "Unified backend API"
|
18
|
-
|
19
|
-
describe "searching yokozuna" do
|
20
|
-
include_context "search corpus setup"
|
21
|
-
|
22
|
-
it 'returns documents with UTF-8 fields (GH #75)' do
|
23
|
-
utf8 = Encoding.find('UTF-8')
|
24
|
-
results = @backend.search(
|
25
|
-
@search_bucket.name,
|
26
|
-
'fearless elephant rushed',
|
27
|
-
df: 'text'
|
28
|
-
)
|
29
|
-
results['docs'].each do |d|
|
30
|
-
d.each do |(k, v)|
|
31
|
-
expect(k.encoding).to eq(utf8)
|
32
|
-
expect(v.encoding).to eq(utf8)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'riak/search'
|
3
|
-
|
4
|
-
describe 'Object-oriented Search API', test_client: true, integration: true, search_config: true do
|
5
|
-
before :all do
|
6
|
-
create_index
|
7
|
-
configure_bucket
|
8
|
-
load_corpus
|
9
|
-
end
|
10
|
-
|
11
|
-
let(:term){ 'bitcask' }
|
12
|
-
|
13
|
-
describe 'queries' do
|
14
|
-
let(:index){ Riak::Search::Index.new test_client, index_name }
|
15
|
-
subject { Riak::Search::Query.new test_client, index, term }
|
16
|
-
|
17
|
-
it 'performs queries' do
|
18
|
-
results = nil
|
19
|
-
expect{ results = subject.results }.to_not raise_error
|
20
|
-
expect(results.raw).to_not be_empty
|
21
|
-
expect(results).to_not be_empty
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'performs limited and sorted queries' do
|
25
|
-
subject.rows = 5
|
26
|
-
results = nil
|
27
|
-
expect{ results = subject.results }.to_not raise_error
|
28
|
-
expect(results.raw).to_not be_empty
|
29
|
-
expect(results.length).to eq 5
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'results from queries' do
|
34
|
-
let(:index){ Riak::Search::Index.new test_client, index_name }
|
35
|
-
let(:query){ Riak::Search::Query.new test_client, index, term }
|
36
|
-
subject { query.results }
|
37
|
-
|
38
|
-
it 'exposes search-result documents' do
|
39
|
-
expect(subject).to_not be_empty
|
40
|
-
|
41
|
-
expect(subject.docs).to_not be_empty
|
42
|
-
expect(first = subject.docs.first).to be
|
43
|
-
|
44
|
-
expect(first.score).to be_a Numeric
|
45
|
-
|
46
|
-
expect(first.bucket_type).to be_a Riak::BucketType
|
47
|
-
expect(first.bucket).to be_a Riak::Bucket
|
48
|
-
expect(first.key).to be_a String
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'exposes RObjects' do
|
52
|
-
expect(subject).to_not be_empty
|
53
|
-
|
54
|
-
expect(first = subject.first).to be_a Riak::RObject
|
55
|
-
expect(first).to eq subject.docs.first.robject
|
56
|
-
|
57
|
-
expect(first.key).to eq subject.docs.first.key
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe 'indexes' do
|
62
|
-
it 'tests for index existence and content' do
|
63
|
-
existing_index = Riak::Search::Index.new test_client, index_name
|
64
|
-
expect(existing_index).to be_exists # auto predicate matcher
|
65
|
-
|
66
|
-
nonexistent_index = Riak::Search::Index.new(test_client, "nonexist-#{random_key}")
|
67
|
-
expect(nonexistent_index).to_not be_exists
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'creates indexes' do
|
71
|
-
new_index = Riak::Search::Index.new test_client, "search-spec-#{random_key}"
|
72
|
-
expect(new_index).to_not be_exist
|
73
|
-
expect{ new_index.create! }.to_not raise_error
|
74
|
-
|
75
|
-
wait_until{ new_index.exists? }
|
76
|
-
|
77
|
-
expect(new_index).to be_exists
|
78
|
-
|
79
|
-
expect{ new_index.create! }.to raise_error Riak::SearchError::IndexExistsError
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe 'schemas' do
|
84
|
-
it 'tests for schema existence and content' do
|
85
|
-
existing_schema = Riak::Search::Schema.new test_client, '_yz_default'
|
86
|
-
expect(existing_schema).to be_exists
|
87
|
-
|
88
|
-
nonexistent_schema = Riak::Search::Schema.new(test_client, "nonexist-#{random_key}")
|
89
|
-
expect(nonexistent_schema).to_not be_exists
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'creates schemas' do
|
93
|
-
new_schema = Riak::Search::Schema.new test_client, "search-spec-#{random_key}"
|
94
|
-
expect(new_schema).to_not be_exist
|
95
|
-
expect{ new_schema.create! schema_xml(new_schema.name) }.to_not raise_error
|
96
|
-
|
97
|
-
wait_until{ new_schema.exists? }
|
98
|
-
|
99
|
-
expect(new_schema).to be_exists
|
100
|
-
|
101
|
-
expect{ new_schema.create! schema_xml(new_schema.name) }.to raise_error Riak::SearchError::SchemaExistsError
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|