couchbase-jruby-client 0.2.2-java → 1.0.4-java
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/.rubocop.yml +103 -0
- data/.ruby-version +1 -1
- data/Rakefile +13 -2
- data/couchbase-jruby-client.gemspec +7 -6
- data/lib/couchbase/bucket.rb +11 -338
- data/lib/couchbase/cluster.rb +10 -88
- data/lib/couchbase/configuration.rb +39 -0
- data/lib/couchbase/design_doc.rb +18 -73
- data/lib/couchbase/document.rb +34 -0
- data/lib/couchbase/error.rb +0 -35
- data/lib/couchbase/operations.rb +60 -40
- data/lib/couchbase/version.rb +1 -1
- data/lib/couchbase/view.rb +55 -345
- data/lib/couchbase.rb +37 -141
- data/lib/jars/couchbase-core-io-1.1.4.jar +0 -0
- data/lib/jars/couchbase-java-client-2.1.4.jar +0 -0
- data/lib/jars/rxjava-1.0.8.jar +0 -0
- data/lib/jars/rxjruby-0.0.1.jar +0 -0
- data/test/{test_cas.rb → helper.rb} +15 -10
- data/test/test_bucket.rb +14 -228
- data/test/test_cluster.rb +1 -29
- data/test/test_configuration.rb +51 -0
- data/test/test_couchbase.rb +28 -28
- data/test/test_design_doc.rb +29 -0
- data/test/test_document.rb +51 -0
- data/test/test_operations.rb +49 -0
- data/test/test_view.rb +62 -116
- metadata +43 -125
- data/lib/couchbase/async/callback.rb +0 -38
- data/lib/couchbase/async/queue.rb +0 -26
- data/lib/couchbase/async.rb +0 -32
- data/lib/couchbase/constants.rb +0 -29
- data/lib/couchbase/operations/arithmetic.rb +0 -290
- data/lib/couchbase/operations/delete.rb +0 -115
- data/lib/couchbase/operations/design_docs.rb +0 -99
- data/lib/couchbase/operations/fetch.rb +0 -33
- data/lib/couchbase/operations/get.rb +0 -303
- data/lib/couchbase/operations/stats.rb +0 -42
- data/lib/couchbase/operations/store.rb +0 -463
- data/lib/couchbase/operations/touch.rb +0 -140
- data/lib/couchbase/operations/unlock.rb +0 -209
- data/lib/couchbase/operations/utils.rb +0 -68
- data/lib/couchbase/query.rb +0 -76
- data/lib/couchbase/result.rb +0 -60
- data/lib/couchbase/transcoder.rb +0 -81
- data/lib/couchbase/utils.rb +0 -62
- data/lib/couchbase/view_row.rb +0 -227
- data/lib/jars/commons-codec-1.5.jar +0 -0
- data/lib/jars/couchbase-client-1.3.2-javadoc.jar +0 -0
- data/lib/jars/couchbase-client-1.3.2-sources.jar +0 -0
- data/lib/jars/couchbase-client-1.3.2.jar +0 -0
- data/lib/jars/httpcore-4.3.1.jar +0 -0
- data/lib/jars/httpcore-nio-4.3.1.jar +0 -0
- data/lib/jars/jettison-1.1.jar +0 -0
- data/lib/jars/netty-3.5.5.Final.jar +0 -0
- data/lib/jars/spymemcached-2.10.5-javadoc.jar +0 -0
- data/lib/jars/spymemcached-2.10.5-sources.jar +0 -0
- data/lib/jars/spymemcached-2.10.5.jar +0 -0
- data/tasks/benchmark.rake +0 -6
- data/tasks/test.rake +0 -36
- data/tasks/util.rake +0 -21
- data/test/mock.rb +0 -85
- data/test/profile/.gitignore +0 -1
- data/test/profile/.jrubyrc +0 -722
- data/test/profile/Gemfile +0 -7
- data/test/profile/benchmark.rb +0 -177
- data/test/profile/profile.rb +0 -59
- data/test/setup.rb +0 -74
- data/test/test_arithmetic.rb +0 -155
- data/test/test_async.rb +0 -24
- data/test/test_couchbase_rails_cache_store.rb +0 -341
- data/test/test_delete.rb +0 -139
- data/test/test_design_docs.rb +0 -67
- data/test/test_errors.rb +0 -74
- data/test/test_fetch.rb +0 -71
- data/test/test_format.rb +0 -142
- data/test/test_get.rb +0 -363
- data/test/test_query.rb +0 -23
- data/test/test_result.rb +0 -15
- data/test/test_stats.rb +0 -44
- data/test/test_store.rb +0 -203
- data/test/test_touch.rb +0 -90
- data/test/test_unlock.rb +0 -89
- data/test/test_utils.rb +0 -67
- data/test/test_version.rb +0 -28
- data/test/test_view_row.rb +0 -74
data/lib/couchbase/view_row.rb
DELETED
@@ -1,227 +0,0 @@
|
|
1
|
-
# Author:: Couchbase <info@couchbase.com>
|
2
|
-
# Copyright:: 2011-2012 Couchbase, Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
module Couchbase
|
19
|
-
|
20
|
-
java_import com.couchbase.client.protocol.views.ViewRowNoDocs
|
21
|
-
java_import com.couchbase.client.protocol.views.ViewRowWithDocs
|
22
|
-
java_import com.couchbase.client.protocol.views.ViewRowReduced
|
23
|
-
java_import com.couchbase.client.protocol.views.SpatialViewRowNoDocs
|
24
|
-
java_import com.couchbase.client.protocol.views.SpatialViewRowWithDocs
|
25
|
-
|
26
|
-
class Java::ComCouchbaseClientProtocolViews::ViewRowNoDocs
|
27
|
-
def doc
|
28
|
-
{
|
29
|
-
id: getId,
|
30
|
-
key: getKey,
|
31
|
-
value: getValue
|
32
|
-
}
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class Java::ComCouchbaseClientProtocolViews::ViewRowWithDocs
|
37
|
-
def doc
|
38
|
-
{
|
39
|
-
'meta' => {
|
40
|
-
'id' => self['id']
|
41
|
-
},
|
42
|
-
'value' => document
|
43
|
-
}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
module Java::ComCouchbaseClientProtocolViews::ViewRow
|
48
|
-
def [](key)
|
49
|
-
if respond_to?(key)
|
50
|
-
send(key)
|
51
|
-
else
|
52
|
-
fail NoMethodError, "ViewRow##{key} isn't defined."
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
# This class encapsulates structured JSON document
|
59
|
-
#
|
60
|
-
# @since 1.2.0
|
61
|
-
#
|
62
|
-
# It behaves like Hash for document included into row, and has access methods to row data as well.
|
63
|
-
#
|
64
|
-
# @see http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-datastore.html
|
65
|
-
class ViewRow
|
66
|
-
|
67
|
-
include Constants
|
68
|
-
|
69
|
-
# Undefine as much methods as we can to free names for views
|
70
|
-
instance_methods.each do |m|
|
71
|
-
undef_method(m) if m.to_s !~ /(?:^__|^nil\?$|^send$|^object_id$|^class$|)/
|
72
|
-
end
|
73
|
-
|
74
|
-
# The hash built from JSON document.
|
75
|
-
#
|
76
|
-
# @since 1.2.0
|
77
|
-
#
|
78
|
-
# This is complete response from the Couchbase
|
79
|
-
#
|
80
|
-
# @return [Hash]
|
81
|
-
attr_accessor :data
|
82
|
-
|
83
|
-
# The key which was emitted by map function
|
84
|
-
#
|
85
|
-
# @since 1.2.0
|
86
|
-
#
|
87
|
-
# @see http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-map.html
|
88
|
-
#
|
89
|
-
# Usually it is String (the object +_id+) but it could be also any
|
90
|
-
# compount JSON value.
|
91
|
-
#
|
92
|
-
# @return [Object]
|
93
|
-
attr_accessor :key
|
94
|
-
|
95
|
-
# The value which was emitted by map function
|
96
|
-
#
|
97
|
-
# @since 1.2.0
|
98
|
-
#
|
99
|
-
# @see http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-map.html
|
100
|
-
#
|
101
|
-
# @return [Object]
|
102
|
-
attr_accessor :value
|
103
|
-
|
104
|
-
# The document hash.
|
105
|
-
#
|
106
|
-
# @since 1.2.0
|
107
|
-
#
|
108
|
-
# It usually available when view executed with +:include_doc+ argument.
|
109
|
-
#
|
110
|
-
# @return [Hash]
|
111
|
-
attr_accessor :doc
|
112
|
-
|
113
|
-
# The identificator of the document
|
114
|
-
#
|
115
|
-
# @since 1.2.0
|
116
|
-
#
|
117
|
-
# @return [String]
|
118
|
-
attr_accessor :id
|
119
|
-
|
120
|
-
# The meta data linked to the document
|
121
|
-
#
|
122
|
-
# @since 1.2.0
|
123
|
-
#
|
124
|
-
# @return [Hash]
|
125
|
-
attr_accessor :meta
|
126
|
-
|
127
|
-
# Initialize the document instance
|
128
|
-
#
|
129
|
-
# @since 1.2.0
|
130
|
-
#
|
131
|
-
# It takes reference to the bucket, data hash.
|
132
|
-
#
|
133
|
-
# @param [Couchbase::Bucket] bucket the reference to connection
|
134
|
-
# @param [Hash] data the data hash, which was built from JSON document
|
135
|
-
# representation
|
136
|
-
def initialize(bucket, data)
|
137
|
-
@bucket = bucket
|
138
|
-
@data = data
|
139
|
-
@key = data.key
|
140
|
-
@last = false
|
141
|
-
@id = data.id unless data.is_a?(ViewRowReduced)
|
142
|
-
|
143
|
-
case data
|
144
|
-
when ViewRowWithDocs, SpatialViewRowWithDocs
|
145
|
-
@doc = data.document
|
146
|
-
when ViewRowReduced
|
147
|
-
@value = MultiJson.load(data.value)
|
148
|
-
when SpatialViewRowNoDocs, SpatialViewRowWithDocs
|
149
|
-
@geometry = data.geometry
|
150
|
-
@bbox = data.bbox
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
# Wraps data hash into ViewRow instance
|
155
|
-
#
|
156
|
-
# @since 1.2.0
|
157
|
-
#
|
158
|
-
# @see ViewRow#initialize
|
159
|
-
#
|
160
|
-
# @param [Couchbase::Bucket] bucket the reference to connection
|
161
|
-
# @param [Hash] data the data hash, which was built from JSON document
|
162
|
-
# representation
|
163
|
-
#
|
164
|
-
# @return [ViewRow]
|
165
|
-
def self.wrap(bucket, data)
|
166
|
-
self.new(bucket, data)
|
167
|
-
end
|
168
|
-
|
169
|
-
# Get attribute of the document
|
170
|
-
#
|
171
|
-
# @since 1.2.0
|
172
|
-
#
|
173
|
-
# Fetches attribute from underlying document hash
|
174
|
-
#
|
175
|
-
# @param [String] key the attribute name
|
176
|
-
#
|
177
|
-
# @return [Object] property value or nil
|
178
|
-
def [](key)
|
179
|
-
@doc[key]
|
180
|
-
end
|
181
|
-
|
182
|
-
# Check attribute existence
|
183
|
-
#
|
184
|
-
# @since 1.2.0
|
185
|
-
#
|
186
|
-
# @param [String] key the attribute name
|
187
|
-
#
|
188
|
-
# @return [true, false] +true+ if the given attribute is present in in
|
189
|
-
# the document.
|
190
|
-
def has_key?(key)
|
191
|
-
@doc.has_key?(key)
|
192
|
-
end
|
193
|
-
|
194
|
-
# Set document attribute
|
195
|
-
#
|
196
|
-
# @since 1.2.0
|
197
|
-
#
|
198
|
-
# Set or update the attribute in the document hash
|
199
|
-
#
|
200
|
-
# @param [String] key the attribute name
|
201
|
-
# @param [Object] value the attribute value
|
202
|
-
#
|
203
|
-
# @return [Object] the value
|
204
|
-
def []=(key, value)
|
205
|
-
@doc[key] = value
|
206
|
-
end
|
207
|
-
|
208
|
-
# Signals if this row is last in a stream
|
209
|
-
#
|
210
|
-
# @since 1.2.1
|
211
|
-
#
|
212
|
-
# @return [true, false] +true+ if this row is last in a stream
|
213
|
-
def last?
|
214
|
-
@last
|
215
|
-
end
|
216
|
-
|
217
|
-
def inspect
|
218
|
-
desc = "#<#{self.class.name}:#{self.object_id}"
|
219
|
-
[:@id, :@key, :@value, :@doc, :@meta].each do |iv|
|
220
|
-
desc << " #{iv}=#{instance_variable_get(iv).inspect}"
|
221
|
-
end
|
222
|
-
desc << ">"
|
223
|
-
desc
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/jars/httpcore-4.3.1.jar
DELETED
Binary file
|
Binary file
|
data/lib/jars/jettison-1.1.jar
DELETED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/tasks/benchmark.rake
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
desc 'Run benchmarks and compare them to memcached and dalli gems'
|
2
|
-
task :benchmark => [:clean, :compile] do
|
3
|
-
cd File.expand_path(File.join(__FILE__, '..', '..', 'test', 'profile')) do
|
4
|
-
sh "bundle install && bundle exec ruby benchmark.rb | tee benchmark-#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}.log"
|
5
|
-
end
|
6
|
-
end
|
data/tasks/test.rake
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Author:: Couchbase <info@couchbase.com>
|
2
|
-
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
rule 'test/CouchbaseMock.jar' do |task|
|
19
|
-
jar_path = "0.6-SNAPSHOT/CouchbaseMock-0.6-20130903.160518-3.jar"
|
20
|
-
sh %{wget -q -O test/CouchbaseMock.jar http://files.couchbase.com/maven2/org/couchbase/mock/CouchbaseMock/#{jar_path}}
|
21
|
-
end
|
22
|
-
|
23
|
-
task :test do
|
24
|
-
$LOAD_PATH.unshift('lib', 'test')
|
25
|
-
|
26
|
-
if ENV['TEST']
|
27
|
-
require ENV['TEST']
|
28
|
-
else
|
29
|
-
Dir.glob('./test/**/test_*.rb') { |f| require f }
|
30
|
-
end
|
31
|
-
|
32
|
-
require 'test/setup.rb'
|
33
|
-
end
|
34
|
-
|
35
|
-
Rake::Task['test'].prerequisites.unshift('test/CouchbaseMock.jar')
|
36
|
-
|
data/tasks/util.rake
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# Author:: Couchbase <info@couchbase.com>
|
2
|
-
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
desc 'Start an irb session and load the library.'
|
19
|
-
task :console do
|
20
|
-
exec "irb -I lib -rcouchbase"
|
21
|
-
end
|
data/test/mock.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
class CouchbaseServer
|
2
|
-
attr_accessor :host, :port, :num_nodes, :buckets_spec
|
3
|
-
|
4
|
-
def real?
|
5
|
-
true
|
6
|
-
end
|
7
|
-
|
8
|
-
def initialize(params = {})
|
9
|
-
@host, @port = ENV['COUCHBASE_SERVER'].split(':')
|
10
|
-
@port = @port.to_i
|
11
|
-
|
12
|
-
if @host.nil? || @host.empty? || @port == 0
|
13
|
-
raise ArgumentError, 'Check COUCHBASE_SERVER variable. It should be hostname:port'
|
14
|
-
end
|
15
|
-
|
16
|
-
@config = MultiJson.load(open("http://#{@host}:#{@port}/pools/default"))
|
17
|
-
@num_nodes = @config['nodes'].size
|
18
|
-
@buckets_spec = params[:buckets_spec] || 'default:' # "default:,protected:secret,cache::memcache"
|
19
|
-
end
|
20
|
-
|
21
|
-
def start
|
22
|
-
# flush all buckets
|
23
|
-
@buckets_spec.split(',') do |bucket|
|
24
|
-
name, password, _ = bucket.split(':')
|
25
|
-
connection = Couchbase.new(:hostname => @host,
|
26
|
-
:port => @port,
|
27
|
-
:username => name,
|
28
|
-
:bucket => name,
|
29
|
-
:password => password)
|
30
|
-
connection.flush
|
31
|
-
end
|
32
|
-
end
|
33
|
-
def stop; end
|
34
|
-
end
|
35
|
-
|
36
|
-
require "#{File.dirname(__FILE__)}/CouchbaseMock.jar"
|
37
|
-
|
38
|
-
class CouchbaseMock
|
39
|
-
attr_accessor :host, :port, :num_nodes, :buckets_spec, :num_vbuckets
|
40
|
-
|
41
|
-
def real?
|
42
|
-
false
|
43
|
-
end
|
44
|
-
|
45
|
-
def initialize(params = {})
|
46
|
-
@host = 'localhost'
|
47
|
-
@port = 8091
|
48
|
-
@num_nodes = 1
|
49
|
-
@num_vbuckets = 4096
|
50
|
-
@buckets_spec = 'default:' # "default:,protected:secret,cache::memcache"
|
51
|
-
params.each do |key, value|
|
52
|
-
send("#{key}=", value)
|
53
|
-
end
|
54
|
-
yield self if block_given?
|
55
|
-
if @num_vbuckets < 1 || (@num_vbuckets & (@num_vbuckets - 1) != 0)
|
56
|
-
raise ArgumentError, 'Number of vbuckets should be a power of two and greater than zero'
|
57
|
-
end
|
58
|
-
@mock = Java::OrgCouchbaseMock::CouchbaseMock.new(@host, @port, @num_nodes, @num_vbuckets, @buckets_spec)
|
59
|
-
end
|
60
|
-
|
61
|
-
def start
|
62
|
-
@mock.start
|
63
|
-
@mock.waitForStartup
|
64
|
-
end
|
65
|
-
|
66
|
-
def stop
|
67
|
-
@mock.stop
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def start_mock(params = {})
|
72
|
-
mock = nil
|
73
|
-
if ENV['COUCHBASE_SERVER']
|
74
|
-
mock = CouchbaseServer.new(params)
|
75
|
-
if (params[:port] && mock.port != params[:port]) ||
|
76
|
-
(params[:host] && mock.host != params[:host]) ||
|
77
|
-
mock.buckets_spec != 'default:'
|
78
|
-
skip("Unable to configure real cluster. Requested config is: #{params.inspect}")
|
79
|
-
end
|
80
|
-
else
|
81
|
-
mock = CouchbaseMock.new(params)
|
82
|
-
end
|
83
|
-
mock.start
|
84
|
-
mock
|
85
|
-
end
|
data/test/profile/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
benchmark*.log
|