riak-client 0.9.4 → 0.9.5
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.
- data/bin/autospec +16 -0
- data/bin/htmldiff +16 -0
- data/bin/ldiff +16 -0
- data/bin/protoc-gen-beefcake +16 -0
- data/bin/rackup +16 -0
- data/bin/rake +16 -0
- data/bin/rspec +16 -0
- data/lib/riak/bucket.rb +1 -0
- data/lib/riak/client.rb +2 -2
- data/lib/riak/client/beefcake_protobuffs_backend.rb +1 -1
- data/lib/riak/client/http_backend/transport_methods.rb +2 -2
- data/lib/riak/client/net_http_backend.rb +9 -1
- data/lib/riak/core_ext/to_param.rb +3 -3
- data/lib/riak/locale/en.yml +1 -1
- data/lib/riak/robject.rb +2 -2
- data/pkg/httpvpbuf.rb +48 -0
- data/pkg/lk.rb +21 -0
- data/pkg/riak-client-0.9.4.gem +0 -0
- data/pkg/ts.rb +35 -0
- data/riak-client.gemspec +7 -7
- data/spec/integration/riak/http_backends_spec.rb +26 -0
- data/spec/riak/beefcake_protobuffs_backend_spec.rb +19 -0
- data/spec/riak/bucket_spec.rb +11 -0
- data/spec/riak/core_ext/to_param_spec.rb +15 -0
- data/spec/riak/http_backend/transport_methods_spec.rb +2 -1
- metadata +91 -83
data/bin/autospec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'autospec' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rspec-core', 'autospec')
|
data/bin/htmldiff
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'htmldiff' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('diff-lcs', 'htmldiff')
|
data/bin/ldiff
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'ldiff' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('diff-lcs', 'ldiff')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'protoc-gen-beefcake' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('beefcake', 'protoc-gen-beefcake')
|
data/bin/rackup
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rackup' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rack', 'rackup')
|
data/bin/rake
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rake' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rake', 'rake')
|
data/bin/rspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rspec' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rspec-core', 'rspec')
|
data/lib/riak/bucket.rb
CHANGED
data/lib/riak/client.rb
CHANGED
@@ -312,7 +312,7 @@ module Riak
|
|
312
312
|
end
|
313
313
|
alias :list_buckets :buckets
|
314
314
|
|
315
|
-
# Stores a large file/IO object in Riak via the "Luwak" interface.
|
315
|
+
# Stores a large file/IO-like object in Riak via the "Luwak" interface.
|
316
316
|
# @overload store_file(filename, content_type, data)
|
317
317
|
# Stores the file at the given key/filename
|
318
318
|
# @param [String] filename the key/filename for the object
|
@@ -321,7 +321,7 @@ module Riak
|
|
321
321
|
# @overload store_file(content_type, data)
|
322
322
|
# Stores the file with a server-determined key/filename
|
323
323
|
# @param [String] content_type the MIME Content-Type for the data
|
324
|
-
# @param [
|
324
|
+
# @param [String, #read] data the contents of the file
|
325
325
|
# @return [String] the key/filename where the object was stored
|
326
326
|
def store_file(*args)
|
327
327
|
data, content_type, filename = args.reverse
|
@@ -128,7 +128,7 @@ module Riak
|
|
128
128
|
# @param [URI] uri the HTTP URI to request
|
129
129
|
# @param [Hash] headers headers to send along with the request
|
130
130
|
# @param [Fixnum, Array] expect the expected response code(s)
|
131
|
-
# @param [String,
|
131
|
+
# @param [String, #read] body the PUT or POST request body
|
132
132
|
# @return [Hash] response data, containing :headers, :code and :body keys. Only :headers and :code should be present when the body is streamed or the method is :head.
|
133
133
|
# @yield [chunk] if the method is not :head, successive chunks of the response body will be yielded as strings
|
134
134
|
# @raise [NotImplementedError] if a subclass does not implement this method
|
@@ -186,7 +186,7 @@ module Riak
|
|
186
186
|
raise ArgumentError, t("path_and_body_required")
|
187
187
|
end
|
188
188
|
|
189
|
-
raise ArgumentError, t("request_body_type") unless String === body ||
|
189
|
+
raise ArgumentError, t("request_body_type") unless String === body || body.respond_to?(:read)
|
190
190
|
[args, body]
|
191
191
|
end
|
192
192
|
|
@@ -39,7 +39,15 @@ module Riak
|
|
39
39
|
case data
|
40
40
|
when String
|
41
41
|
request.body = data
|
42
|
-
when
|
42
|
+
when data.respond_to?(:read)
|
43
|
+
case
|
44
|
+
when data.respond_to?(:stat) # IO#stat
|
45
|
+
request.content_length = data.stat.size
|
46
|
+
when data.respond_to?(:size) # Some IO-like objects
|
47
|
+
request.content_length = data.size
|
48
|
+
else
|
49
|
+
request['Transfer-Encoding'] = 'chunked'
|
50
|
+
end
|
43
51
|
request.body_stream = data
|
44
52
|
end
|
45
53
|
|
@@ -22,9 +22,9 @@ unless Object.new.respond_to? :to_query and Object.new.respond_to? :to_param
|
|
22
22
|
end
|
23
23
|
|
24
24
|
class Hash
|
25
|
-
def to_param
|
26
|
-
|
27
|
-
value.to_query(key)
|
25
|
+
def to_param(namespace = nil)
|
26
|
+
collect do |key, value|
|
27
|
+
value.to_query(namespace ? "#{namespace}[#{key}]" : key)
|
28
28
|
end.sort * '&'
|
29
29
|
end
|
30
30
|
end
|
data/lib/riak/locale/en.yml
CHANGED
@@ -42,7 +42,7 @@ en:
|
|
42
42
|
path_and_body_required: "You must supply both a resource path and a body."
|
43
43
|
port_invalid: "port must be an integer between 0 and 65535"
|
44
44
|
protobuffs_failed_request: "Expected success from Riak but received %{code}. %{body}"
|
45
|
-
request_body_type: "Request body must be a String or
|
45
|
+
request_body_type: "Request body must be a String or respond to :read."
|
46
46
|
resource_path_short: "Resource path too short"
|
47
47
|
search_docs_require_id: "Search index documents must include the 'id' field."
|
48
48
|
search_remove_requires_id_or_query: "Search index documents to be removed must have 'id' or 'query' keys."
|
data/lib/riak/robject.rb
CHANGED
@@ -125,7 +125,7 @@ module Riak
|
|
125
125
|
@raw_data
|
126
126
|
end
|
127
127
|
|
128
|
-
# @param [String, IO] the raw data to be stored in riak at this key, will not be marshaled or manipulated prior to storage. Overrides any data stored by {#data=}
|
128
|
+
# @param [String, IO-like] the raw data to be stored in riak at this key, will not be marshaled or manipulated prior to storage. Overrides any data stored by {#data=}
|
129
129
|
# @return [String] the data stored
|
130
130
|
def raw_data=(new_raw_data)
|
131
131
|
@data = nil
|
@@ -196,7 +196,7 @@ module Riak
|
|
196
196
|
# be done.
|
197
197
|
# @param [Object] payload the data to serialize
|
198
198
|
def serialize(payload)
|
199
|
-
return payload if
|
199
|
+
return payload if payload.respond_to?(:read)
|
200
200
|
case @content_type
|
201
201
|
when /json/
|
202
202
|
payload.to_json(Riak.json_options)
|
data/pkg/httpvpbuf.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler/setup'
|
4
|
+
$: << File.expand_path("../../lib", __FILE__)
|
5
|
+
require 'riak'
|
6
|
+
require 'benchmark'
|
7
|
+
|
8
|
+
http = Riak::Client.new(:http_backend => :Excon)
|
9
|
+
pbc = Riak::Client.new(:protocol => "pbc")
|
10
|
+
|
11
|
+
ops = {
|
12
|
+
:list_buckets => [5],
|
13
|
+
:list_keys => [20,"riakjs_http"],
|
14
|
+
:ping => [100],
|
15
|
+
:get_bucket_props => [1000,"riakjs_airlines"],
|
16
|
+
:set_bucket_props => [100,"foo", {:n_val => 2}]
|
17
|
+
}
|
18
|
+
|
19
|
+
def textobj(c,key=nil)
|
20
|
+
obj = c['bench'].new(key)
|
21
|
+
obj.content_type = "text/plain"
|
22
|
+
obj.raw_data = "This is a message to all out there who like to benchmark."
|
23
|
+
obj
|
24
|
+
end
|
25
|
+
|
26
|
+
KEYS = 1000
|
27
|
+
|
28
|
+
OPERATIONS = [
|
29
|
+
[:ping, lambda {|client| 100.times { client.ping }}],
|
30
|
+
[:buckets, lambda {|client| 10.times { client.buckets } }],
|
31
|
+
[:get_bucket, lambda {|client| 1000.times { client.backend.get_bucket_props('foo') }}],
|
32
|
+
[:set_bucket, lambda {|client| 100.times { client['foo'].props = {"n_val" => 2}}}],
|
33
|
+
[:store_new, lambda {|client| KEYS.times { textobj(client).store }}],
|
34
|
+
[:store_key, lambda {|client| KEYS.times {|i| textobj(client, "#{client.protocol}#{i}").store }}],
|
35
|
+
[:fetch_key, lambda {|client| KEYS.times {|i| client['bench'].get("#{client.protocol}#{i}") } }],
|
36
|
+
[:keys, lambda {|client| 5.times { client.backend.list_keys('bench') }}],
|
37
|
+
[:key_stream, lambda {|client| 5.times { client['bench'].keys {|ks| "." }}}]
|
38
|
+
]
|
39
|
+
|
40
|
+
Benchmark.bmbm(25) do |x|
|
41
|
+
OPERATIONS.each do |op|
|
42
|
+
[http, pbc].each do |c|
|
43
|
+
x.report("#{c.protocol.ljust(6)}#{op[0]}") do
|
44
|
+
op[1][c]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/pkg/lk.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'riak'
|
2
|
+
|
3
|
+
riak = Riak::Client.new( :http_backend => :Excon )
|
4
|
+
|
5
|
+
bucket_names = ["foobar"]
|
6
|
+
bucket_names.each do |bucket_name|
|
7
|
+
bucket = riak.bucket(bucket_name)
|
8
|
+
10.times do
|
9
|
+
new_one = Riak::RObject.new(bucket, "#{rand}")
|
10
|
+
new_one.content_type = "application/javascript" # You must set the content type.
|
11
|
+
new_one.data = "Hello, World!')"
|
12
|
+
new_one.store
|
13
|
+
end
|
14
|
+
|
15
|
+
bucket.keys do |keys|
|
16
|
+
keys.each do |key|
|
17
|
+
puts key
|
18
|
+
bucket.delete(key)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
Binary file
|
data/pkg/ts.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'riak'
|
3
|
+
require 'riak/test_server'
|
4
|
+
|
5
|
+
OUTER = 100
|
6
|
+
INNER = 1000
|
7
|
+
|
8
|
+
ts = Riak::TestServer.new(:bin_dir => "/usr/local/bin",
|
9
|
+
:temp_dir => "./rel")
|
10
|
+
$expect_verbose = true
|
11
|
+
ts.prepare!
|
12
|
+
ts.start
|
13
|
+
|
14
|
+
c = Riak::Client.new(:port => 9000, :http_backend => :Excon)
|
15
|
+
|
16
|
+
OUTER.times do
|
17
|
+
warn "NOT STARTED, WTF?" unless ts.started?
|
18
|
+
INNER.times do
|
19
|
+
unless rand > 0.8
|
20
|
+
c['test'].new.tap do |o|
|
21
|
+
o.data = "Some test data" * rand(10)
|
22
|
+
o.content_type = "text/plain"
|
23
|
+
o.store
|
24
|
+
end
|
25
|
+
print "."
|
26
|
+
end
|
27
|
+
end
|
28
|
+
puts
|
29
|
+
|
30
|
+
ts.recycle
|
31
|
+
end
|
32
|
+
|
33
|
+
ts.stop
|
34
|
+
ts.cleanup
|
35
|
+
$expect_verbose = false
|
data/riak-client.gemspec
CHANGED
@@ -2,19 +2,19 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{riak-client}
|
5
|
-
s.version = "0.9.
|
5
|
+
s.version = "0.9.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.date = %q{2011-
|
8
|
+
s.authors = [%q{Sean Cribbs}]
|
9
|
+
s.date = %q{2011-06-14}
|
10
10
|
s.description = %q{riak-client is a rich client for Riak, the distributed database by Basho. It supports the full HTTP interface including storage operations, bucket configuration, link-walking and map-reduce.}
|
11
11
|
s.email = %q{sean@basho.com}
|
12
|
-
s.files = [
|
12
|
+
s.files = [%q{erl_src/riak_kv_test_backend.beam}, %q{erl_src/riak_kv_test_backend.erl}, %q{Gemfile}, %q{lib/active_support/cache/riak_store.rb}, %q{lib/riak/bucket.rb}, %q{lib/riak/cache_store.rb}, %q{lib/riak/client/beefcake/messages.rb}, %q{lib/riak/client/beefcake/object_methods.rb}, %q{lib/riak/client/beefcake_protobuffs_backend.rb}, %q{lib/riak/client/curb_backend.rb}, %q{lib/riak/client/excon_backend.rb}, %q{lib/riak/client/http_backend/configuration.rb}, %q{lib/riak/client/http_backend/key_streamer.rb}, %q{lib/riak/client/http_backend/object_methods.rb}, %q{lib/riak/client/http_backend/request_headers.rb}, %q{lib/riak/client/http_backend/transport_methods.rb}, %q{lib/riak/client/http_backend.rb}, %q{lib/riak/client/net_http_backend.rb}, %q{lib/riak/client/protobuffs_backend.rb}, %q{lib/riak/client/pump.rb}, %q{lib/riak/client.rb}, %q{lib/riak/core_ext/blank.rb}, %q{lib/riak/core_ext/extract_options.rb}, %q{lib/riak/core_ext/slice.rb}, %q{lib/riak/core_ext/stringify_keys.rb}, %q{lib/riak/core_ext/symbolize_keys.rb}, %q{lib/riak/core_ext/to_param.rb}, %q{lib/riak/core_ext.rb}, %q{lib/riak/failed_request.rb}, %q{lib/riak/i18n.rb}, %q{lib/riak/json.rb}, %q{lib/riak/link.rb}, %q{lib/riak/locale/en.yml}, %q{lib/riak/map_reduce/filter_builder.rb}, %q{lib/riak/map_reduce/phase.rb}, %q{lib/riak/map_reduce.rb}, %q{lib/riak/map_reduce_error.rb}, %q{lib/riak/robject.rb}, %q{lib/riak/search.rb}, %q{lib/riak/test_server.rb}, %q{lib/riak/util/escape.rb}, %q{lib/riak/util/fiber1.8.rb}, %q{lib/riak/util/headers.rb}, %q{lib/riak/util/multipart/stream_parser.rb}, %q{lib/riak/util/multipart.rb}, %q{lib/riak/util/tcp_socket_extensions.rb}, %q{lib/riak/util/translation.rb}, %q{lib/riak/walk_spec.rb}, %q{lib/riak.rb}, %q{pkg/httpvpbuf.rb}, %q{pkg/lk.rb}, %q{pkg/riak-client-0.9.4.gem}, %q{pkg/ts.rb}, %q{Rakefile}, %q{riak-client.gemspec}, %q{spec/fixtures/cat.jpg}, %q{spec/fixtures/multipart-blank.txt}, %q{spec/fixtures/multipart-mapreduce.txt}, %q{spec/fixtures/multipart-with-body.txt}, %q{spec/fixtures/server.cert.crt}, %q{spec/fixtures/server.cert.key}, %q{spec/fixtures/test.pem}, %q{spec/integration/riak/cache_store_spec.rb}, %q{spec/integration/riak/http_backends_spec.rb}, %q{spec/integration/riak/protobuffs_backends_spec.rb}, %q{spec/integration/riak/test_server_spec.rb}, %q{spec/riak/beefcake_protobuffs_backend_spec.rb}, %q{spec/riak/bucket_spec.rb}, %q{spec/riak/client_spec.rb}, %q{spec/riak/core_ext/to_param_spec.rb}, %q{spec/riak/curb_backend_spec.rb}, %q{spec/riak/escape_spec.rb}, %q{spec/riak/excon_backend_spec.rb}, %q{spec/riak/headers_spec.rb}, %q{spec/riak/http_backend/configuration_spec.rb}, %q{spec/riak/http_backend/object_methods_spec.rb}, %q{spec/riak/http_backend/transport_methods_spec.rb}, %q{spec/riak/http_backend_spec.rb}, %q{spec/riak/link_spec.rb}, %q{spec/riak/map_reduce/filter_builder_spec.rb}, %q{spec/riak/map_reduce/phase_spec.rb}, %q{spec/riak/map_reduce_spec.rb}, %q{spec/riak/multipart_spec.rb}, %q{spec/riak/net_http_backend_spec.rb}, %q{spec/riak/robject_spec.rb}, %q{spec/riak/search_spec.rb}, %q{spec/riak/stream_parser_spec.rb}, %q{spec/riak/walk_spec_spec.rb}, %q{spec/spec_helper.rb}, %q{spec/support/drb_mock_server.rb}, %q{spec/support/http_backend_implementation_examples.rb}, %q{spec/support/mock_server.rb}, %q{spec/support/mocks.rb}, %q{spec/support/test_server.yml.example}, %q{spec/support/unified_backend_examples.rb}]
|
13
13
|
s.homepage = %q{http://seancribbs.github.com/ripple}
|
14
|
-
s.require_paths = [
|
15
|
-
s.rubygems_version = %q{1.
|
14
|
+
s.require_paths = [%q{lib}]
|
15
|
+
s.rubygems_version = %q{1.8.5}
|
16
16
|
s.summary = %q{riak-client is a rich client for Riak, the distributed database by Basho.}
|
17
|
-
s.test_files = [
|
17
|
+
s.test_files = [%q{lib/riak/walk_spec.rb}, %q{spec/integration/riak/cache_store_spec.rb}, %q{spec/integration/riak/http_backends_spec.rb}, %q{spec/integration/riak/protobuffs_backends_spec.rb}, %q{spec/integration/riak/test_server_spec.rb}, %q{spec/riak/beefcake_protobuffs_backend_spec.rb}, %q{spec/riak/bucket_spec.rb}, %q{spec/riak/client_spec.rb}, %q{spec/riak/core_ext/to_param_spec.rb}, %q{spec/riak/curb_backend_spec.rb}, %q{spec/riak/escape_spec.rb}, %q{spec/riak/excon_backend_spec.rb}, %q{spec/riak/headers_spec.rb}, %q{spec/riak/http_backend/configuration_spec.rb}, %q{spec/riak/http_backend/object_methods_spec.rb}, %q{spec/riak/http_backend/transport_methods_spec.rb}, %q{spec/riak/http_backend_spec.rb}, %q{spec/riak/link_spec.rb}, %q{spec/riak/map_reduce/filter_builder_spec.rb}, %q{spec/riak/map_reduce/phase_spec.rb}, %q{spec/riak/map_reduce_spec.rb}, %q{spec/riak/multipart_spec.rb}, %q{spec/riak/net_http_backend_spec.rb}, %q{spec/riak/robject_spec.rb}, %q{spec/riak/search_spec.rb}, %q{spec/riak/stream_parser_spec.rb}, %q{spec/riak/walk_spec_spec.rb}]
|
18
18
|
|
19
19
|
if s.respond_to? :specification_version then
|
20
20
|
s.specification_version = 3
|
@@ -42,4 +42,30 @@ describe "HTTP" do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
class Reader < Array
|
47
|
+
def read(*args)
|
48
|
+
shift
|
49
|
+
end
|
50
|
+
|
51
|
+
def size
|
52
|
+
join.size
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class SizelessReader < Reader
|
57
|
+
undef :size
|
58
|
+
end
|
59
|
+
|
60
|
+
describe 'NetHTTPBackend' do
|
61
|
+
subject { Riak::Client::NetHTTPBackend.new(@client) }
|
62
|
+
let(:file) { File.open(__FILE__) }
|
63
|
+
let(:sized) { Reader.new(["foo", "bar", "baz"]) }
|
64
|
+
let(:sizeless) { SizelessReader.new(["foo", "bar", "baz"]) }
|
65
|
+
it "should set the content-length or transfer-encoding properly on IO uploads" do
|
66
|
+
lambda { subject.put(204, "/riak/nethttp", "test-file", file, {"Content-Type" => "text/plain"}) }.should_not raise_error
|
67
|
+
lambda { subject.put(204, "/riak/nethttp", "test-sized", sized, {"Content-Type" => "text/plain"}) }.should_not raise_error
|
68
|
+
lambda { subject.put(204, "/riak/nethttp", "test-file", sizeless, {"Content-Type" => "text/plain"}) }.should_not raise_error
|
69
|
+
end
|
70
|
+
end
|
45
71
|
end
|
@@ -38,3 +38,22 @@ describe Riak::Client::BeefcakeProtobuffsBackend do
|
|
38
38
|
@backend.list_keys(exp_bucket).should == exp_keys
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
describe Riak::Client::BeefcakeProtobuffsBackend, '#mapred' do
|
43
|
+
before(:each) do
|
44
|
+
@client = Riak::Client.new
|
45
|
+
@backend = Riak::Client::BeefcakeProtobuffsBackend.new(@client)
|
46
|
+
@backend.instance_variable_set(:@server_config, {})
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should not return nil for previous phases that don't return anything" do
|
50
|
+
socket = stub(:socket).as_null_object
|
51
|
+
socket.stub(:read).and_return(stub(:socket_header, :unpack => [2, 24]), stub(:socket_message), stub(:socket_header_2, :unpack => [0, 1]))
|
52
|
+
message = stub(:message, :phase => 1, :response => [{}].to_json)
|
53
|
+
message.stub(:done).and_return(false, true)
|
54
|
+
Riak::Client::BeefcakeProtobuffsBackend::RpbMapRedResp.stub(:decode => message)
|
55
|
+
TCPSocket.stub(:new => socket)
|
56
|
+
|
57
|
+
@backend.mapred('').should == [{}]
|
58
|
+
end
|
59
|
+
end
|
data/spec/riak/bucket_spec.rb
CHANGED
@@ -57,6 +57,17 @@ describe Riak::Bucket do
|
|
57
57
|
end
|
58
58
|
all_keys.should == ["bar", "baz"]
|
59
59
|
end
|
60
|
+
|
61
|
+
it "should invalidate the key cache when streaming" do
|
62
|
+
@backend.should_receive(:list_keys).once.and_return(['a'])
|
63
|
+
@backend.should_receive(:list_keys).once.and_yield(['b'])
|
64
|
+
@backend.should_receive(:list_keys).once.and_return(['c'])
|
65
|
+
@bucket.keys.should == ['a']
|
66
|
+
keys = []
|
67
|
+
@bucket.keys {|kl| keys.concat(kl) }
|
68
|
+
keys.should == ['b']
|
69
|
+
@bucket.keys.should == ['c']
|
70
|
+
end
|
60
71
|
end
|
61
72
|
|
62
73
|
describe "setting the bucket properties" do
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
describe Riak do
|
3
|
+
require 'riak/core_ext/to_param'
|
4
|
+
|
5
|
+
it "should do param conversion correctly" do
|
6
|
+
{ :name => 'David', :nationality => 'Danish' }.to_param.should == "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 "should do param conversion correctly with a namespace" do
|
12
|
+
{ :name => 'David', :nationality => 'Danish' }.to_param('user').should == "user%5Bname%5D=David&user%5Bnationality%5D=Danish"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -54,9 +54,10 @@ describe Riak::Client::HTTPBackend::TransportMethods do
|
|
54
54
|
data.should == "This is the body."
|
55
55
|
end
|
56
56
|
|
57
|
-
it "should raise an error if the body is not a string or IO" do
|
57
|
+
it "should raise an error if the body is not a string or IO or IO-like (responds to :read)" do
|
58
58
|
lambda { @backend.verify_path_and_body!(["/riak/", "foo", nil]) }.should raise_error(ArgumentError)
|
59
59
|
lambda { @backend.verify_path_and_body!(["/riak/", "foo", File.open("spec/fixtures/cat.jpg")]) }.should_not raise_error(ArgumentError)
|
60
|
+
lambda { @backend.verify_path_and_body!(["/riak/", "foo", Tempfile.new('riak-spec')]) }.should_not raise_error(ArgumentError)
|
60
61
|
end
|
61
62
|
|
62
63
|
it "should raise an error if a body is not given" do
|
metadata
CHANGED
@@ -1,114 +1,119 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: riak-client
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.9.4
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Sean Cribbs
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-06-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: rspec
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2151933920 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
18
|
+
requirements:
|
21
19
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 2.4.0
|
24
22
|
type: :development
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: fakeweb
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *2151933920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: fakeweb
|
27
|
+
requirement: &2151932640 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.2'
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rack
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *2151932640
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rack
|
38
|
+
requirement: &2151931000 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '1.0'
|
46
44
|
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: curb
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *2151931000
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: curb
|
49
|
+
requirement: &2151929760 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version:
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.6'
|
57
55
|
type: :development
|
58
|
-
version_requirements: *id004
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: excon
|
61
56
|
prerelease: false
|
62
|
-
|
57
|
+
version_requirements: *2151929760
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: excon
|
60
|
+
requirement: &2151928760 !ruby/object:Gem::Requirement
|
63
61
|
none: false
|
64
|
-
requirements:
|
62
|
+
requirements:
|
65
63
|
- - ~>
|
66
|
-
- !ruby/object:Gem::Version
|
64
|
+
- !ruby/object:Gem::Version
|
67
65
|
version: 0.5.7
|
68
66
|
type: :development
|
69
|
-
version_requirements: *id005
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: i18n
|
72
67
|
prerelease: false
|
73
|
-
|
68
|
+
version_requirements: *2151928760
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: i18n
|
71
|
+
requirement: &2151927680 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
78
76
|
version: 0.4.0
|
79
77
|
type: :runtime
|
80
|
-
version_requirements: *id006
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: builder
|
83
78
|
prerelease: false
|
84
|
-
|
79
|
+
version_requirements: *2151927680
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: builder
|
82
|
+
requirement: &2151926600 !ruby/object:Gem::Requirement
|
85
83
|
none: false
|
86
|
-
requirements:
|
84
|
+
requirements:
|
87
85
|
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
86
|
+
- !ruby/object:Gem::Version
|
89
87
|
version: 2.1.2
|
90
88
|
type: :runtime
|
91
|
-
version_requirements: *id007
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: beefcake
|
94
89
|
prerelease: false
|
95
|
-
|
90
|
+
version_requirements: *2151926600
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: beefcake
|
93
|
+
requirement: &2151924800 !ruby/object:Gem::Requirement
|
96
94
|
none: false
|
97
|
-
requirements:
|
95
|
+
requirements:
|
98
96
|
- - ~>
|
99
|
-
- !ruby/object:Gem::Version
|
97
|
+
- !ruby/object:Gem::Version
|
100
98
|
version: 0.3.0
|
101
99
|
type: :runtime
|
102
|
-
|
103
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *2151924800
|
102
|
+
description: riak-client is a rich client for Riak, the distributed database by Basho.
|
103
|
+
It supports the full HTTP interface including storage operations, bucket configuration,
|
104
|
+
link-walking and map-reduce.
|
104
105
|
email: sean@basho.com
|
105
106
|
executables: []
|
106
|
-
|
107
107
|
extensions: []
|
108
|
-
|
109
108
|
extra_rdoc_files: []
|
110
|
-
|
111
|
-
|
109
|
+
files:
|
110
|
+
- bin/autospec
|
111
|
+
- bin/htmldiff
|
112
|
+
- bin/ldiff
|
113
|
+
- bin/protoc-gen-beefcake
|
114
|
+
- bin/rackup
|
115
|
+
- bin/rake
|
116
|
+
- bin/rspec
|
112
117
|
- erl_src/riak_kv_test_backend.beam
|
113
118
|
- erl_src/riak_kv_test_backend.erl
|
114
119
|
- Gemfile
|
@@ -158,6 +163,10 @@ files:
|
|
158
163
|
- lib/riak/util/translation.rb
|
159
164
|
- lib/riak/walk_spec.rb
|
160
165
|
- lib/riak.rb
|
166
|
+
- pkg/httpvpbuf.rb
|
167
|
+
- pkg/lk.rb
|
168
|
+
- pkg/riak-client-0.9.4.gem
|
169
|
+
- pkg/ts.rb
|
161
170
|
- Rakefile
|
162
171
|
- riak-client.gemspec
|
163
172
|
- spec/fixtures/cat.jpg
|
@@ -174,6 +183,7 @@ files:
|
|
174
183
|
- spec/riak/beefcake_protobuffs_backend_spec.rb
|
175
184
|
- spec/riak/bucket_spec.rb
|
176
185
|
- spec/riak/client_spec.rb
|
186
|
+
- spec/riak/core_ext/to_param_spec.rb
|
177
187
|
- spec/riak/curb_backend_spec.rb
|
178
188
|
- spec/riak/escape_spec.rb
|
179
189
|
- spec/riak/excon_backend_spec.rb
|
@@ -201,32 +211,29 @@ files:
|
|
201
211
|
- spec/support/unified_backend_examples.rb
|
202
212
|
homepage: http://seancribbs.github.com/ripple
|
203
213
|
licenses: []
|
204
|
-
|
205
214
|
post_install_message:
|
206
215
|
rdoc_options: []
|
207
|
-
|
208
|
-
require_paths:
|
216
|
+
require_paths:
|
209
217
|
- lib
|
210
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
218
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
211
219
|
none: false
|
212
|
-
requirements:
|
213
|
-
- -
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version:
|
216
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
|
+
requirements:
|
221
|
+
- - ! '>='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
225
|
none: false
|
218
|
-
requirements:
|
219
|
-
- -
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version:
|
226
|
+
requirements:
|
227
|
+
- - ! '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
222
230
|
requirements: []
|
223
|
-
|
224
231
|
rubyforge_project:
|
225
|
-
rubygems_version: 1.
|
232
|
+
rubygems_version: 1.8.5
|
226
233
|
signing_key:
|
227
234
|
specification_version: 3
|
228
235
|
summary: riak-client is a rich client for Riak, the distributed database by Basho.
|
229
|
-
test_files:
|
236
|
+
test_files:
|
230
237
|
- lib/riak/walk_spec.rb
|
231
238
|
- spec/integration/riak/cache_store_spec.rb
|
232
239
|
- spec/integration/riak/http_backends_spec.rb
|
@@ -235,6 +242,7 @@ test_files:
|
|
235
242
|
- spec/riak/beefcake_protobuffs_backend_spec.rb
|
236
243
|
- spec/riak/bucket_spec.rb
|
237
244
|
- spec/riak/client_spec.rb
|
245
|
+
- spec/riak/core_ext/to_param_spec.rb
|
238
246
|
- spec/riak/curb_backend_spec.rb
|
239
247
|
- spec/riak/escape_spec.rb
|
240
248
|
- spec/riak/excon_backend_spec.rb
|