couchbase-jruby-client 0.2.2-java → 1.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +103 -0
  3. data/.ruby-version +1 -1
  4. data/Rakefile +13 -2
  5. data/couchbase-jruby-client.gemspec +7 -6
  6. data/lib/couchbase/bucket.rb +11 -338
  7. data/lib/couchbase/cluster.rb +10 -88
  8. data/lib/couchbase/configuration.rb +39 -0
  9. data/lib/couchbase/design_doc.rb +18 -73
  10. data/lib/couchbase/document.rb +34 -0
  11. data/lib/couchbase/error.rb +0 -35
  12. data/lib/couchbase/operations.rb +60 -40
  13. data/lib/couchbase/version.rb +1 -1
  14. data/lib/couchbase/view.rb +55 -345
  15. data/lib/couchbase.rb +37 -141
  16. data/lib/jars/couchbase-core-io-1.1.4.jar +0 -0
  17. data/lib/jars/couchbase-java-client-2.1.4.jar +0 -0
  18. data/lib/jars/rxjava-1.0.8.jar +0 -0
  19. data/lib/jars/rxjruby-0.0.1.jar +0 -0
  20. data/test/{test_cas.rb → helper.rb} +15 -10
  21. data/test/test_bucket.rb +14 -228
  22. data/test/test_cluster.rb +1 -29
  23. data/test/test_configuration.rb +51 -0
  24. data/test/test_couchbase.rb +28 -28
  25. data/test/test_design_doc.rb +29 -0
  26. data/test/test_document.rb +51 -0
  27. data/test/test_operations.rb +49 -0
  28. data/test/test_view.rb +62 -116
  29. metadata +43 -125
  30. data/lib/couchbase/async/callback.rb +0 -38
  31. data/lib/couchbase/async/queue.rb +0 -26
  32. data/lib/couchbase/async.rb +0 -32
  33. data/lib/couchbase/constants.rb +0 -29
  34. data/lib/couchbase/operations/arithmetic.rb +0 -290
  35. data/lib/couchbase/operations/delete.rb +0 -115
  36. data/lib/couchbase/operations/design_docs.rb +0 -99
  37. data/lib/couchbase/operations/fetch.rb +0 -33
  38. data/lib/couchbase/operations/get.rb +0 -303
  39. data/lib/couchbase/operations/stats.rb +0 -42
  40. data/lib/couchbase/operations/store.rb +0 -463
  41. data/lib/couchbase/operations/touch.rb +0 -140
  42. data/lib/couchbase/operations/unlock.rb +0 -209
  43. data/lib/couchbase/operations/utils.rb +0 -68
  44. data/lib/couchbase/query.rb +0 -76
  45. data/lib/couchbase/result.rb +0 -60
  46. data/lib/couchbase/transcoder.rb +0 -81
  47. data/lib/couchbase/utils.rb +0 -62
  48. data/lib/couchbase/view_row.rb +0 -227
  49. data/lib/jars/commons-codec-1.5.jar +0 -0
  50. data/lib/jars/couchbase-client-1.3.2-javadoc.jar +0 -0
  51. data/lib/jars/couchbase-client-1.3.2-sources.jar +0 -0
  52. data/lib/jars/couchbase-client-1.3.2.jar +0 -0
  53. data/lib/jars/httpcore-4.3.1.jar +0 -0
  54. data/lib/jars/httpcore-nio-4.3.1.jar +0 -0
  55. data/lib/jars/jettison-1.1.jar +0 -0
  56. data/lib/jars/netty-3.5.5.Final.jar +0 -0
  57. data/lib/jars/spymemcached-2.10.5-javadoc.jar +0 -0
  58. data/lib/jars/spymemcached-2.10.5-sources.jar +0 -0
  59. data/lib/jars/spymemcached-2.10.5.jar +0 -0
  60. data/tasks/benchmark.rake +0 -6
  61. data/tasks/test.rake +0 -36
  62. data/tasks/util.rake +0 -21
  63. data/test/mock.rb +0 -85
  64. data/test/profile/.gitignore +0 -1
  65. data/test/profile/.jrubyrc +0 -722
  66. data/test/profile/Gemfile +0 -7
  67. data/test/profile/benchmark.rb +0 -177
  68. data/test/profile/profile.rb +0 -59
  69. data/test/setup.rb +0 -74
  70. data/test/test_arithmetic.rb +0 -155
  71. data/test/test_async.rb +0 -24
  72. data/test/test_couchbase_rails_cache_store.rb +0 -341
  73. data/test/test_delete.rb +0 -139
  74. data/test/test_design_docs.rb +0 -67
  75. data/test/test_errors.rb +0 -74
  76. data/test/test_fetch.rb +0 -71
  77. data/test/test_format.rb +0 -142
  78. data/test/test_get.rb +0 -363
  79. data/test/test_query.rb +0 -23
  80. data/test/test_result.rb +0 -15
  81. data/test/test_stats.rb +0 -44
  82. data/test/test_store.rb +0 -203
  83. data/test/test_touch.rb +0 -90
  84. data/test/test_unlock.rb +0 -89
  85. data/test/test_utils.rb +0 -67
  86. data/test/test_version.rb +0 -28
  87. data/test/test_view_row.rb +0 -74
@@ -1,177 +0,0 @@
1
- # Useful environment variables:
2
- #
3
- # LOOPS (50000)
4
- # how many time run exercises
5
- #
6
- # HOST (127.0.0.1)
7
- # the host where cluster is running. benchmark will use default ports to
8
- # connect to it (11211 and 8091)
9
- #
10
- # STACK_DEPTH (0)
11
- # the depth of stack where exercises are run. the benchmark will
12
- # recursively go to given depth before run
13
- #
14
- # TEST ('')
15
- # use to run specific test (possible values are: set, get, get-multi,
16
- # append, prepend, delete, get-missing, append-missing, prepend-missing,
17
- # set-large, get-large)
18
- #
19
- # CLIENT ('')
20
- # use to run with specific client (possible values are: couchbase, dalli,
21
- # memcached, memcached:buffer)
22
- #
23
- # DEBUG ('')
24
- # show exceptions
25
- #
26
-
27
- require 'rubygems'
28
- require 'bundler/setup'
29
-
30
- $LOAD_PATH << File.join(File.dirname(__FILE__), "..", "..", "lib")
31
- require 'couchbase'
32
- require 'benchmark/ips'
33
-
34
- puts `uname -a`
35
- puts File.readlines('/proc/cpuinfo').sort.uniq.grep(/model name|cpu cores/) rescue nil
36
- puts RUBY_DESCRIPTION
37
-
38
- class Bench
39
-
40
- def initialize
41
-
42
- puts "PID is #{Process.pid}"
43
-
44
- @value = { 'im' => [ 'testing', 'stuff' ] }
45
-
46
- puts "Raw value size is: #{@value.size} bytes"
47
-
48
- @keys = [
49
- @k1 = "Short",
50
- @k2 = "Sym1-2-3::45" * 8,
51
- @k3 = "Long" * 40,
52
- @k4 = "Medium" * 8,
53
- @k5 = "Medium2" * 8,
54
- @k6 = "Long3" * 40]
55
-
56
- @cb = Couchbase.new
57
- @cl = @cb.client
58
-
59
- # Ensure it is JITed
60
- 2_000.times do
61
- @cb.set(@k1, 'a')
62
- @cb.get(@k1)
63
- end
64
- end
65
-
66
- def run
67
- Benchmark.ips do |x|
68
- x.report('jruby set') do
69
- @cb.set @k1, @value
70
- @cb.set @k2, @value
71
- @cb.set @k3, @value
72
- end
73
-
74
- x.report('java set') do
75
- @cl.set(@k1, MultiJson.dump(@value)).get
76
- @cl.set(@k2, MultiJson.dump(@value)).get
77
- @cl.set(@k3, MultiJson.dump(@value)).get
78
- end
79
-
80
- x.report('jruby get') do
81
- @cb.get @k1
82
- @cb.get @k2
83
- @cb.get @k3
84
- end
85
-
86
- x.report('java get') do
87
- MultiJson.load @cl.get(@k1)
88
- MultiJson.load @cl.get(@k2)
89
- MultiJson.load @cl.get(@k3)
90
- end
91
-
92
- x.report('jruby get multi') do
93
- @cb.get([@k1, @k2, @k3])
94
- end
95
-
96
- x.report('java get multi') do
97
- @cl.getBulk([@k1, @k2, @k3])
98
- end
99
-
100
- x.report('jruby delete') do
101
- @cb.set @k1, ''
102
- @cb.set @k2, ''
103
- @cb.set @k3, ''
104
- @cb.delete(@k1)
105
- @cb.delete(@k2)
106
- @cb.delete(@k3)
107
- end
108
-
109
- x.report('java delete') do
110
- @cl.set @k1, ''
111
- @cl.set @k2, ''
112
- @cl.set @k3, ''
113
- @cl.delete @k1
114
- @cl.delete @k2
115
- @cl.delete @k3
116
- end
117
-
118
- x.report('jruby get missing') do
119
- @cb.get(@k1, quiet: true)
120
- @cb.get(@k2, quiet: true)
121
- @cb.get(@k3, quiet: true)
122
- end
123
-
124
- x.report('java get missing') do
125
- @cl.get @k1
126
- @cl.get @k2
127
- @cl.get @k3
128
- end
129
-
130
- # x.report('jruby async set') do
131
- # @cb.run do
132
- # 100.times do
133
- # @cb.set @k1, @value
134
- # @cb.set @k2, @value
135
- # @cb.set @k3, @value
136
- # end
137
- # end
138
- # end
139
-
140
- # x.report('java async set') do
141
- # futures = []
142
- # 100.times do
143
- # futures << @cb.client.set(@k1, MultiJson.dump(@value))
144
- # futures << @cb.client.set(@k2, MultiJson.dump(@value))
145
- # futures << @cb.client.set(@k3, MultiJson.dump(@value))
146
- # end
147
- # futures.each(&:get)
148
- # end
149
-
150
- # x.report('jruby async get') do
151
- # @cb.run do
152
- # 100.times do
153
- # @cb.get @k1
154
- # @cb.get @k2
155
- # @cb.get @k3
156
- # end
157
- # end
158
- # end
159
-
160
- # x.report('java async get') do
161
- # futures = []
162
- # 100.times do
163
- # futures << @cb.client.asyncGet(@k1)
164
- # futures << @cb.client.asyncGet(@k2)
165
- # futures << @cb.client.asyncGet(@k3)
166
- # end
167
- # futures.each(&:get)
168
- # end
169
-
170
- end
171
-
172
- @cb.disconnect
173
- end
174
-
175
- end
176
-
177
- Bench.new.run
@@ -1,59 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'bundler/setup'
4
-
5
- $LOAD_PATH << File.join(File.dirname(__FILE__), "..", "..", "lib")
6
- require 'couchbase'
7
- require 'jruby/profiler'
8
-
9
- puts `uname -a`
10
- puts File.readlines('/proc/cpuinfo').sort.uniq.grep(/model name|cpu cores/) rescue nil
11
- puts RUBY_DESCRIPTION
12
-
13
- class Profile
14
-
15
- def initialize
16
-
17
- puts "PID is #{Process.pid}"
18
-
19
- @value = { 'im' => [ 'testing', 'stuff' ] }
20
-
21
- puts "Raw value size is: #{@value.size} bytes"
22
-
23
- @keys = [
24
- @k1 = "Short",
25
- @k2 = "Sym1-2-3::45" * 8,
26
- @k3 = "Long" * 40,
27
- @k4 = "Medium" * 8,
28
- @k5 = "Medium2" * 8,
29
- @k6 = "Long3" * 40]
30
-
31
- @cb = Couchbase.new
32
-
33
-
34
- end
35
-
36
- def run
37
- profile_data = JRuby::Profiler.profile do
38
- 2_000.times do
39
- @cb.set(@k1, @value)
40
- @cb.set(@k2, @value)
41
- @cb.set(@k3, @value)
42
- end
43
-
44
- 2_000.times do
45
- @cb.get(@k1)
46
- @cb.get(@k2)
47
- @cb.get(@k3)
48
- end
49
- end
50
-
51
- profile_printer = JRuby::Profiler::GraphProfilePrinter.new(profile_data)
52
- profile_printer.printProfile(STDOUT)
53
-
54
- @cb.disconnect
55
- end
56
-
57
- end
58
-
59
- Profile.new.run
data/test/setup.rb DELETED
@@ -1,74 +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
- gem 'minitest'
19
- require 'coveralls'
20
- Coveralls.wear!
21
- require 'minitest'
22
- gem 'mocha'
23
- require 'mocha/setup'
24
- require 'couchbase'
25
- require 'open-uri'
26
- require 'ostruct'
27
- require_relative 'mock'
28
- require 'pry'
29
-
30
- # Surpress connection logging
31
- # java_import java.lang.System
32
- # java_import java.util.logging.Logger
33
- # java_import java.util.logging.Level
34
-
35
- # properties = System.getProperties
36
- # properties.put("net.spy.log.LoggerImpl", "net.spy.memcached.compat.log.Log4JLogger")
37
- # System.setProperties(properties)
38
-
39
- # Logger.getLogger('net.spy.memcached').setLevel(Level::SEVERE)
40
- # Logger.getLogger('com.couchbase.client').setLevel(Level::SEVERE)
41
- # Logger.getLogger('com.couchbase.client.vbucket').setLevel(Level::SEVERE)
42
-
43
- # $stderr = StringIO.new
44
-
45
- class Minitest::Test
46
-
47
- def cb
48
- Couchbase.bucket
49
- end
50
-
51
- def with_configs(configs = {})
52
- configs = Couchbase::Bucket::DEFAULT_OPTIONS.merge(configs)
53
- if configs[:host].nil?
54
- configs[:host] = configs[:hostname]
55
- end
56
- yield OpenStruct.new(configs)
57
- end
58
-
59
- def uniq_id(*suffixes)
60
- test_id = [caller.first[/.*[` ](.*)'/, 1], suffixes].compact.join("_")
61
- @ids ||= {}
62
- @ids[test_id] ||= Time.now.to_f
63
- [test_id, @ids[test_id]].join("_")
64
- end
65
-
66
- end
67
-
68
- at_exit {
69
- $mock = start_mock
70
- exit_code = Minitest.run(ARGV)
71
- Couchbase.disconnect
72
- $mock.stop
73
- java.lang.System.exit(exit_code ? 0 : 1)
74
- }
@@ -1,155 +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
- require File.join(File.dirname(__FILE__), 'setup')
19
-
20
- class TestArithmetic < Minitest::Test
21
-
22
- def test_trivial_incr_decr
23
- cb.set(uniq_id, 1)
24
- val = cb.incr(uniq_id)
25
- assert_equal 2, val
26
- val = cb.get(uniq_id)
27
- assert_equal 2, val
28
-
29
- cb.set(uniq_id, 7)
30
- val = cb.decr(uniq_id)
31
- assert_equal 6, val
32
- val = cb.get(uniq_id)
33
- assert_equal 6, val
34
- end
35
-
36
- def test_it_fails_to_incr_decr_missing_key
37
- assert_raises(Couchbase::Error::NotFound) do
38
- cb.incr(uniq_id(:missing))
39
- end
40
- assert_raises(Couchbase::Error::NotFound) do
41
- cb.decr(uniq_id(:missing))
42
- end
43
- end
44
-
45
- def test_it_allows_to_make_increments_less_verbose_by_forcing_create_by_default
46
- cb.default_arithmetic_init = true
47
- assert_raises(Couchbase::Error::NotFound) do
48
- cb.get(uniq_id)
49
- end
50
- assert_equal 0, cb.incr(uniq_id), "return value"
51
- assert_equal 0, cb.get(uniq_id), "via get command"
52
- ensure
53
- cb.default_arithmetic_init = 0
54
- end
55
-
56
- def test_it_allows_to_setup_initial_value_during_connection
57
- cb.default_arithmetic_init = 10
58
- assert_raises(Couchbase::Error::NotFound) do
59
- cb.get(uniq_id)
60
- end
61
-
62
- assert_equal 10, cb.incr(uniq_id), "return value"
63
- assert_equal 10, cb.get(uniq_id), "via get command"
64
- ensure
65
- cb.default_arithmetic_init = 0
66
- end
67
-
68
- def test_it_allows_to_change_default_initial_value_after_connection
69
- assert_equal 0, cb.default_arithmetic_init
70
- assert_raises(Couchbase::Error::NotFound) do
71
- cb.incr(uniq_id)
72
- end
73
-
74
- cb.default_arithmetic_init = 10
75
- assert_equal 10, cb.default_arithmetic_init
76
- assert_raises(Couchbase::Error::NotFound) do
77
- cb.get(uniq_id)
78
- end
79
- assert_equal 10, cb.incr(uniq_id), "return value"
80
- assert_equal 10, cb.get(uniq_id), "via get command"
81
- ensure
82
- cb.default_arithmetic_init = 0
83
- end
84
-
85
- def test_it_creates_missing_key_when_initial_value_specified
86
- val = cb.incr(uniq_id(:missing), :initial => 5)
87
- assert_equal 5, val
88
- val = cb.incr(uniq_id(:missing), :initial => 5)
89
- assert_equal 6, val
90
- val = cb.get(uniq_id(:missing))
91
- assert_equal 6, val
92
- end
93
-
94
- def test_it_uses_zero_as_default_value_for_missing_keys
95
- val = cb.incr(uniq_id(:missing), :create => true)
96
- assert_equal 0, val
97
- val = cb.incr(uniq_id(:missing), :create => true)
98
- assert_equal 1, val
99
- val = cb.get(uniq_id(:missing))
100
- assert_equal 1, val
101
- end
102
-
103
- def test_it_allows_custom_ttl
104
- val = cb.incr(uniq_id(:missing), :create => true, :ttl => 1)
105
- assert_equal 0, val
106
- val = cb.incr(uniq_id(:missing), :create => true)
107
- assert_equal 1, val
108
- sleep(2)
109
- assert_raises(Couchbase::Error::NotFound) do
110
- cb.get(uniq_id(:missing))
111
- end
112
- end
113
-
114
- def test_decrement_with_absolute_ttl
115
- skip unless $mock.real?
116
- # absolute TTL: one second from now
117
- exp = Time.now.to_i + 1
118
- val = cb.decr(uniq_id, 12, :initial => 0, :ttl => exp)
119
- assert_equal 0, val
120
- assert_equal 0, cb.get(uniq_id)
121
- sleep(3)
122
- assert_raises(Couchbase::Error::NotFound) do
123
- cb.get(uniq_id)
124
- end
125
- end
126
-
127
- def test_it_allows_custom_delta
128
- cb.set(uniq_id, 12)
129
- val = cb.incr(uniq_id, 10)
130
- assert_equal 22, val
131
- end
132
-
133
- def test_it_allows_to_specify_delta_in_options
134
- cb.set(uniq_id, 12)
135
- options = {:delta => 10}
136
- val = cb.incr(uniq_id, options)
137
- assert_equal 22, val
138
- end
139
-
140
- def test_multi_incr
141
- cb.set(uniq_id(:foo) => 1, uniq_id(:bar) => 1)
142
-
143
- assert_equal [2, 2], cb.incr(uniq_id(:foo), uniq_id(:bar)).values.sort
144
- assert_equal [12, 12], cb.incr(uniq_id(:foo), uniq_id(:bar), :delta => 10).values.sort
145
- assert_equal [14, 15], cb.incr(uniq_id(:foo) => 2, uniq_id(:bar) => 3).values.sort
146
- end
147
-
148
- def test_multi_decr
149
- cb.set(uniq_id(:foo) => 14, uniq_id(:bar) => 15)
150
-
151
- assert_equal [12, 12], cb.decr(uniq_id(:foo) => 2, uniq_id(:bar) => 3).values.sort
152
- assert_equal [2, 2], cb.decr(uniq_id(:foo), uniq_id(:bar), :delta => 10).values.sort
153
- assert_equal [1, 1], cb.decr(uniq_id(:foo), uniq_id(:bar)).values.sort
154
- end
155
- end
data/test/test_async.rb DELETED
@@ -1,24 +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
- require File.join(File.dirname(__FILE__), 'setup')
19
-
20
- class TestAsync < Minitest::Test
21
-
22
-
23
-
24
- end