couchbase-jruby-client 0.1.0-java → 0.1.5-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/.jrubyrc +722 -0
- data/.ruby-version +1 -1
- data/README.md +12 -90
- data/couchbase-jruby-client.gemspec +6 -6
- data/lib/couchbase/async.rb +18 -0
- data/lib/couchbase/bucket.rb +90 -180
- data/lib/couchbase/constants.rb +17 -0
- data/lib/couchbase/design_doc.rb +83 -0
- data/lib/couchbase/error.rb +31 -0
- data/lib/couchbase/operations/arithmetic.rb +17 -0
- data/lib/couchbase/operations/delete.rb +17 -0
- data/lib/couchbase/operations/design_docs.rb +99 -0
- data/lib/couchbase/operations/get.rb +73 -67
- data/lib/couchbase/operations/stats.rb +28 -1
- data/lib/couchbase/operations/store.rb +114 -97
- data/lib/couchbase/operations/touch.rb +49 -19
- data/lib/couchbase/operations/unlock.rb +209 -0
- data/lib/couchbase/operations/utils.rb +22 -10
- data/lib/couchbase/operations.rb +21 -0
- data/lib/couchbase/query.rb +92 -0
- data/lib/couchbase/result.rb +18 -1
- data/lib/couchbase/transcoder.rb +36 -42
- data/lib/couchbase/version.rb +18 -1
- data/lib/couchbase/view.rb +30 -172
- data/lib/couchbase/view_row.rb +38 -98
- data/lib/couchbase.rb +74 -72
- data/test/profile/.jrubyrc +722 -0
- data/test/profile/Gemfile +5 -5
- data/test/profile/benchmark.rb +106 -124
- data/test/profile/profile.rb +59 -0
- data/test/setup.rb +10 -145
- data/test/test_arithmetic.rb +54 -77
- data/test/test_async.rb +74 -102
- data/test/test_bucket.rb +74 -60
- data/test/test_cas.rb +10 -23
- data/test/test_couchbase.rb +11 -3
- data/test/test_delete.rb +41 -43
- data/test/test_design_docs.rb +62 -0
- data/test/test_errors.rb +9 -18
- data/test/test_format.rb +21 -31
- data/test/test_get.rb +107 -151
- data/test/test_query.rb +23 -0
- data/test/test_stats.rb +9 -24
- data/test/test_store.rb +52 -65
- data/test/test_timer.rb +4 -12
- data/test/test_touch.rb +26 -33
- data/test/test_unlock.rb +47 -78
- data/test/test_utils.rb +2 -11
- data/test/test_version.rb +5 -14
- data/test/test_view.rb +87 -0
- metadata +27 -14
- data/lib/couchbase/jruby/couchbase_client.rb +0 -22
- data/lib/couchbase/jruby/future.rb +0 -8
data/test/test_store.rb
CHANGED
@@ -19,98 +19,84 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestStore < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_trivial_set
|
31
|
-
|
32
|
-
cas = connection.set(uniq_id, "bar")
|
23
|
+
cas = cb.set(uniq_id, "bar")
|
33
24
|
assert(cas > 0)
|
34
25
|
end
|
35
26
|
|
36
27
|
def test_set_with_cas
|
37
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
38
28
|
|
39
|
-
cas1 =
|
29
|
+
cas1 = cb.set(uniq_id, "bar1")
|
40
30
|
assert cas1 > 0
|
41
31
|
|
42
32
|
assert_raises(Couchbase::Error::KeyExists) do
|
43
|
-
|
33
|
+
cb.set(uniq_id, "bar2", :cas => cas1+1)
|
44
34
|
end
|
45
35
|
|
46
|
-
cas2 =
|
36
|
+
cas2 = cb.set(uniq_id, "bar2", :cas => cas1)
|
47
37
|
assert cas2 > 0
|
48
38
|
refute_equal cas2, cas1
|
49
39
|
|
50
|
-
cas3 =
|
40
|
+
cas3 = cb.set(uniq_id, "bar3")
|
51
41
|
assert cas3 > 0
|
52
42
|
refute_equal cas3, cas2
|
53
43
|
refute_equal cas3, cas1
|
54
44
|
end
|
55
45
|
|
56
46
|
def test_add
|
57
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
58
47
|
|
59
|
-
cas1 =
|
48
|
+
cas1 = cb.add(uniq_id, "bar")
|
60
49
|
assert cas1 > 0
|
61
50
|
|
62
51
|
assert_raises(Couchbase::Error::KeyExists) do
|
63
|
-
|
52
|
+
cb.add(uniq_id, "bar")
|
64
53
|
end
|
65
54
|
|
66
55
|
assert_raises(Couchbase::Error::KeyExists) do
|
67
|
-
|
56
|
+
cb.add(uniq_id, "bar", :cas => cas1)
|
68
57
|
end
|
69
58
|
end
|
70
59
|
|
71
60
|
def test_replace
|
72
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
73
61
|
|
74
62
|
assert_raises(Couchbase::Error::NotFound) do
|
75
|
-
|
63
|
+
cb.replace(uniq_id, "bar")
|
76
64
|
end
|
77
65
|
|
78
|
-
cas1 =
|
66
|
+
cas1 = cb.set(uniq_id, "bar")
|
79
67
|
assert cas1 > 0
|
80
68
|
|
81
|
-
|
69
|
+
cb.replace(uniq_id, "bar")
|
82
70
|
end
|
83
71
|
|
84
72
|
def test_acceptable_keys
|
85
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
86
73
|
|
87
|
-
cas =
|
74
|
+
cas = cb.set(uniq_id.to_sym, "bar")
|
88
75
|
assert cas > 0
|
89
76
|
|
90
|
-
cas =
|
77
|
+
cas = cb.set(uniq_id.to_s, "bar")
|
91
78
|
assert cas > 0
|
92
79
|
|
93
80
|
assert_raises(TypeError) do
|
94
|
-
|
81
|
+
cb.set(nil, "bar")
|
95
82
|
end
|
96
83
|
|
97
84
|
obj = {:foo => "bar", :baz => 1}
|
98
85
|
assert_raises(TypeError) do
|
99
|
-
|
86
|
+
cb.set(obj, "bar")
|
100
87
|
end
|
101
88
|
|
102
89
|
class << obj
|
103
90
|
alias :to_str :to_s
|
104
91
|
end
|
105
92
|
|
106
|
-
|
93
|
+
cb.set(obj, "bar")
|
107
94
|
assert cas > 0
|
108
95
|
end
|
109
96
|
|
110
97
|
def test_asynchronous_set
|
111
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
112
98
|
ret = nil
|
113
|
-
|
99
|
+
cb.run do |conn|
|
114
100
|
conn.set(uniq_id("1"), "foo1") {|res| ret = res}
|
115
101
|
conn.set(uniq_id("2"), "foo2") # ignore result
|
116
102
|
end
|
@@ -123,72 +109,71 @@ class TestStore < MiniTest::Test
|
|
123
109
|
end
|
124
110
|
|
125
111
|
def test_it_raises_error_when_appending_or_prepending_to_missing_key
|
126
|
-
skip
|
127
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
128
112
|
|
129
113
|
assert_raises(Couchbase::Error::NotStored) do
|
130
|
-
|
114
|
+
cb.append(uniq_id(:missing), "foo")
|
131
115
|
end
|
132
116
|
|
133
117
|
assert_raises(Couchbase::Error::NotStored) do
|
134
|
-
|
118
|
+
cb.prepend(uniq_id(:missing), "foo")
|
135
119
|
end
|
136
120
|
end
|
137
121
|
|
138
122
|
def test_append
|
139
|
-
|
140
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port, :default_format => :plain)
|
123
|
+
cb.default_format = :plain
|
141
124
|
|
142
|
-
cas1 =
|
125
|
+
cas1 = cb.set(uniq_id, "foo")
|
143
126
|
assert cas1 > 0
|
144
|
-
cas2 =
|
127
|
+
cas2 = cb.append(uniq_id, "bar")
|
145
128
|
assert cas2 > 0
|
146
129
|
refute_equal cas2, cas1
|
147
130
|
|
148
|
-
val =
|
131
|
+
val = cb.get(uniq_id)
|
149
132
|
assert_equal "foobar", val
|
133
|
+
ensure
|
134
|
+
cb.default_format = :document
|
150
135
|
end
|
151
136
|
|
152
137
|
def test_prepend
|
153
|
-
skip
|
154
|
-
|
138
|
+
skip 'Plain encoding isnt working correctly'
|
139
|
+
cb.default_format = :plain
|
155
140
|
|
156
|
-
cas1 =
|
141
|
+
cas1 = cb.set(uniq_id, "foo")
|
157
142
|
assert cas1 > 0
|
158
|
-
cas2 =
|
143
|
+
cas2 = cb.prepend(uniq_id, "bar")
|
159
144
|
assert cas2 > 0
|
160
145
|
refute_equal cas2, cas1
|
161
146
|
|
162
|
-
val =
|
147
|
+
val = cb.get(uniq_id)
|
163
148
|
assert_equal "barfoo", val
|
149
|
+
ensure
|
150
|
+
cb.default_format = :document
|
164
151
|
end
|
165
152
|
|
166
153
|
def test_set_with_prefix
|
167
154
|
skip
|
168
155
|
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port, :key_prefix => "prefix:")
|
169
|
-
|
170
|
-
assert_equal "bar",
|
156
|
+
cb.set(uniq_id(:foo), "bar")
|
157
|
+
assert_equal "bar", cb.get(uniq_id(:foo))
|
171
158
|
expected = {uniq_id(:foo) => "bar"}
|
172
|
-
assert_equal expected,
|
159
|
+
assert_equal expected, cb.get(uniq_id(:foo), :assemble_hash => true)
|
173
160
|
|
174
161
|
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port, :key_prefix => nil)
|
175
162
|
expected = {"prefix:#{uniq_id(:foo)}" => "bar"}
|
176
|
-
assert_equal expected,
|
163
|
+
assert_equal expected, cb.get("prefix:#{uniq_id(:foo)}", :assemble_hash => true)
|
177
164
|
end
|
178
165
|
|
179
166
|
ArbitraryData = Struct.new(:baz)
|
180
167
|
|
181
168
|
def test_set_using_brackets
|
182
|
-
|
183
|
-
|
184
|
-
connection[uniq_id(1)] = "foo"
|
185
|
-
val = connection.get(uniq_id(1))
|
169
|
+
cb[uniq_id(1)] = "foo"
|
170
|
+
val = cb.get(uniq_id(1))
|
186
171
|
assert_equal "foo", val
|
187
172
|
|
188
173
|
# if RUBY_VERSION =~ /^1\.9/
|
189
174
|
# eval <<-EOC
|
190
175
|
# connection[uniq_id(3), :format => :marshal] = ArbitraryData.new("thing")
|
191
|
-
# val =
|
176
|
+
# val = cb.get(uniq_id(3))
|
192
177
|
# assert val.is_a?(ArbitraryData)
|
193
178
|
# assert_equal "thing", val.baz
|
194
179
|
# EOC
|
@@ -196,21 +181,23 @@ class TestStore < MiniTest::Test
|
|
196
181
|
end
|
197
182
|
|
198
183
|
def test_multi_store
|
199
|
-
|
200
|
-
|
201
|
-
assert_equal ["bbb", "yyy"],
|
184
|
+
cb.default_format = :plain
|
185
|
+
cb.add(uniq_id(:a) => "bbb", uniq_id(:z) => "yyy")
|
186
|
+
assert_equal ["bbb", "yyy"], cb.get(uniq_id(:a), uniq_id(:z))
|
202
187
|
|
203
|
-
#
|
204
|
-
# assert_equal ["aaabbb", "xxxyyy"],
|
188
|
+
# cb.prepend(uniq_id(:a) => "aaa", uniq_id(:z) => "xxx")
|
189
|
+
# assert_equal ["aaabbb", "xxxyyy"], cb.get(uniq_id(:a), uniq_id(:z))
|
205
190
|
|
206
|
-
#
|
207
|
-
# assert_equal ["aaabbbccc", "xxxyyyzzz"],
|
191
|
+
# cb.append(uniq_id(:a) => "ccc", uniq_id(:z) => "zzz")
|
192
|
+
# assert_equal ["aaabbbccc", "xxxyyyzzz"], cb.get(uniq_id(:a), uniq_id(:z))
|
208
193
|
|
209
|
-
#
|
210
|
-
# assert_equal ["foo", "bar"],
|
194
|
+
# cb.replace(uniq_id(:a) => "foo", uniq_id(:z) => "bar")
|
195
|
+
# assert_equal ["foo", "bar"], cb.get(uniq_id(:a), uniq_id(:z))
|
211
196
|
|
212
|
-
res =
|
213
|
-
assert_equal ["bar", "foo"],
|
197
|
+
res = cb.set(uniq_id(:a) => "bar", uniq_id(:z) => "foo")
|
198
|
+
assert_equal ["bar", "foo"], cb.get(uniq_id(:a), uniq_id(:z))
|
214
199
|
assert res.is_a?(Hash)
|
200
|
+
ensure
|
201
|
+
cb.default_format = :document
|
215
202
|
end
|
216
203
|
end
|
data/test/test_timer.rb
CHANGED
@@ -19,23 +19,15 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestTimer < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_initialization
|
31
|
-
|
23
|
+
skip
|
32
24
|
num = 0
|
33
|
-
|
25
|
+
cb.run do
|
34
26
|
assert Couchbase::Timer.new(connection, 100) { num += 1}
|
35
|
-
assert
|
27
|
+
assert cb.create_timer(100) { num += 1}
|
36
28
|
|
37
29
|
assert Couchbase::Timer.new(connection, 100, :periodic => true) {|t| num += 1; t.cancel}
|
38
|
-
assert
|
30
|
+
assert cb.create_periodic_timer(100) {|t| num += 1; t.cancel}
|
39
31
|
end
|
40
32
|
assert_equal 4, num
|
41
33
|
end
|
data/test/test_touch.rb
CHANGED
@@ -19,79 +19,72 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestTouch < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_trivial_touch
|
31
|
-
|
32
|
-
|
33
|
-
connection.touch(uniq_id, :ttl => 2)
|
23
|
+
cb.set(uniq_id, "bar", :ttl => 1)
|
24
|
+
cb.touch(uniq_id, :ttl => 2)
|
34
25
|
sleep(1)
|
35
|
-
assert
|
26
|
+
assert cb.get(uniq_id)
|
36
27
|
sleep(2)
|
37
28
|
assert_raises(Couchbase::Error::NotFound) do
|
38
|
-
|
29
|
+
cb.get(uniq_id)
|
39
30
|
end
|
40
31
|
end
|
41
32
|
|
42
33
|
def test_multi_touch
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
ret = connection.touch(uniq_id(1) => 1, uniq_id(2) => 1)
|
34
|
+
cb.set(uniq_id(1), "bar")
|
35
|
+
cb.set(uniq_id(2), "baz")
|
36
|
+
ret = cb.touch(uniq_id(1) => 1, uniq_id(2) => 1)
|
47
37
|
assert ret[uniq_id(1)]
|
48
38
|
assert ret[uniq_id(2)]
|
49
39
|
sleep(2)
|
50
40
|
assert_raises(Couchbase::Error::NotFound) do
|
51
|
-
|
41
|
+
cb.get(uniq_id(1))
|
52
42
|
end
|
53
43
|
assert_raises(Couchbase::Error::NotFound) do
|
54
|
-
|
44
|
+
cb.get(uniq_id(2))
|
55
45
|
end
|
56
46
|
end
|
57
47
|
|
58
48
|
def test_it_uses_default_ttl_for_touch
|
59
|
-
|
60
|
-
|
61
|
-
|
49
|
+
cb.default_ttl = 1
|
50
|
+
cb.set(uniq_id, "bar", :ttl => 10)
|
51
|
+
cb.touch(uniq_id)
|
62
52
|
sleep(2)
|
63
53
|
assert_raises(Couchbase::Error::NotFound) do
|
64
|
-
|
54
|
+
cb.get(uniq_id)
|
65
55
|
end
|
56
|
+
ensure
|
57
|
+
cb.default_ttl = 0
|
66
58
|
end
|
67
59
|
|
68
60
|
def test_it_accepts_ttl_for_get_command
|
69
|
-
|
70
|
-
|
71
|
-
val = connection.get(uniq_id, :ttl => 1)
|
61
|
+
cb.set(uniq_id, "bar", :ttl => 10)
|
62
|
+
val = cb.get(uniq_id, :ttl => 1)
|
72
63
|
assert_equal "bar", val
|
73
64
|
sleep(2)
|
74
65
|
assert_raises(Couchbase::Error::NotFound) do
|
75
|
-
|
66
|
+
cb.get(uniq_id)
|
76
67
|
end
|
77
68
|
end
|
78
69
|
|
79
70
|
def test_missing_in_quiet_mode
|
80
|
-
|
81
|
-
cas1 =
|
82
|
-
cas2 =
|
71
|
+
cb.quiet = true
|
72
|
+
cas1 = cb.set(uniq_id(1), "foo1")
|
73
|
+
cas2 = cb.set(uniq_id(2), "foo2")
|
83
74
|
|
84
75
|
assert_raises(Couchbase::Error::NotFound) do
|
85
|
-
|
76
|
+
cb.touch(uniq_id(:missing), :quiet => false)
|
86
77
|
end
|
87
78
|
|
88
|
-
val =
|
79
|
+
val = cb.touch(uniq_id(:missing))
|
89
80
|
refute(val)
|
90
81
|
|
91
|
-
ret =
|
82
|
+
ret = cb.touch(uniq_id(1), uniq_id(:missing), uniq_id(2))
|
92
83
|
assert_equal true, ret[uniq_id(1)]
|
93
84
|
assert_equal false, ret[uniq_id(:missing)]
|
94
85
|
assert_equal true, ret[uniq_id(2)]
|
86
|
+
ensure
|
87
|
+
cb.quiet = false
|
95
88
|
end
|
96
89
|
|
97
90
|
end
|
data/test/test_unlock.rb
CHANGED
@@ -19,101 +19,70 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestUnlock < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_trivial_unlock
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
assert_raises Couchbase::Error::KeyExists do
|
36
|
-
connection.set(uniq_id, "bar")
|
37
|
-
end
|
38
|
-
assert connection.unlock(uniq_id, :cas => cas)
|
39
|
-
connection.set(uniq_id, "bar")
|
40
|
-
else
|
41
|
-
skip("GETL and UNL aren't implemented in CouchbaseMock.jar yet")
|
23
|
+
cb.set(uniq_id, "foo")
|
24
|
+
_, _, cas = cb.get(uniq_id, :lock => true, :extended => true)
|
25
|
+
assert_raises Couchbase::Error::KeyExists do
|
26
|
+
cb.set(uniq_id, "bar")
|
42
27
|
end
|
28
|
+
assert cb.unlock(uniq_id, :cas => cas)
|
29
|
+
cb.set(uniq_id, "bar")
|
43
30
|
end
|
44
31
|
|
45
32
|
def test_alternative_syntax_for_single_key
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
assert_raises Couchbase::Error::KeyExists do
|
51
|
-
connection.set(uniq_id, "bar")
|
52
|
-
end
|
53
|
-
assert connection.unlock(uniq_id, cas)
|
54
|
-
connection.set(uniq_id, "bar")
|
55
|
-
else
|
56
|
-
skip("GETL and UNL aren't implemented in CouchbaseMock.jar yet")
|
33
|
+
cb.set(uniq_id, "foo")
|
34
|
+
_, _, cas = cb.get(uniq_id, :lock => true, :extended => true)
|
35
|
+
assert_raises Couchbase::Error::KeyExists do
|
36
|
+
cb.set(uniq_id, "bar")
|
57
37
|
end
|
38
|
+
assert cb.unlock(uniq_id, cas)
|
39
|
+
cb.set(uniq_id, "bar")
|
58
40
|
end
|
59
41
|
|
60
42
|
def test_multiple_unlock
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
connection.set(uniq_id(2), "bar")
|
71
|
-
end
|
72
|
-
ret = connection.unlock(uniq_id(1) => info[uniq_id(1)][2],
|
73
|
-
uniq_id(2) => info[uniq_id(2)][2])
|
74
|
-
assert ret[uniq_id(1)]
|
75
|
-
assert ret[uniq_id(2)]
|
76
|
-
connection.set(uniq_id(1), "bar")
|
77
|
-
connection.set(uniq_id(2), "bar")
|
78
|
-
else
|
79
|
-
skip("GETL and UNL aren't implemented in CouchbaseMock.jar yet")
|
43
|
+
skip
|
44
|
+
cb.set(uniq_id(1), "foo")
|
45
|
+
cb.set(uniq_id(2), "foo")
|
46
|
+
info = cb.get(uniq_id(1), uniq_id(2), :lock => true, :extended => true)
|
47
|
+
assert_raises Couchbase::Error::KeyExists do
|
48
|
+
cb.set(uniq_id(1), "bar")
|
49
|
+
end
|
50
|
+
assert_raises Couchbase::Error::KeyExists do
|
51
|
+
cb.set(uniq_id(2), "bar")
|
80
52
|
end
|
53
|
+
ret = cb.unlock(uniq_id(1) => info[uniq_id(1)][2],
|
54
|
+
uniq_id(2) => info[uniq_id(2)][2])
|
55
|
+
assert ret[uniq_id(1)]
|
56
|
+
assert ret[uniq_id(2)]
|
57
|
+
cb.set(uniq_id(1), "bar")
|
58
|
+
cb.set(uniq_id(2), "bar")
|
81
59
|
end
|
82
60
|
|
83
61
|
def test_quiet_mode
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
connection.unlock(uniq_id(:missing), :cas => 0xdeadbeef)
|
90
|
-
end
|
91
|
-
keys = {
|
92
|
-
uniq_id => cas,
|
93
|
-
uniq_id(:missing) => 0xdeadbeef
|
94
|
-
}
|
95
|
-
ret = connection.unlock(keys, :quiet => true)
|
96
|
-
assert ret[uniq_id]
|
97
|
-
refute ret[uniq_id(:missing)]
|
98
|
-
else
|
99
|
-
skip("GETL and UNL aren't implemented in CouchbaseMock.jar yet")
|
62
|
+
skip
|
63
|
+
cb.set(uniq_id, "foo")
|
64
|
+
_, _, cas = cb.get(uniq_id, :lock => true, :extended => true)
|
65
|
+
assert_raises Couchbase::Error::NotFound do
|
66
|
+
cb.unlock(uniq_id(:missing), :cas => 0xdeadbeef)
|
100
67
|
end
|
68
|
+
keys = {
|
69
|
+
uniq_id => cas,
|
70
|
+
uniq_id(:missing) => 0xdeadbeef
|
71
|
+
}
|
72
|
+
ret = cb.unlock(keys, :quiet => true)
|
73
|
+
assert ret[uniq_id]
|
74
|
+
refute ret[uniq_id(:missing)]
|
101
75
|
end
|
102
76
|
|
103
77
|
def test_tmp_failure
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
assert_raises Couchbase::Error::TemporaryFail do
|
113
|
-
connection.unlock(uniq_id(2), cas2)
|
114
|
-
end
|
115
|
-
else
|
116
|
-
skip("GETL and UNL aren't implemented in CouchbaseMock.jar yet")
|
78
|
+
cas1 = cb.set(uniq_id(1), "foo")
|
79
|
+
cas2 = cb.set(uniq_id(2), "foo")
|
80
|
+
cb.get(uniq_id(1), :lock => true) # get with lock will update CAS
|
81
|
+
assert_raises Couchbase::Error::TemporaryFail do
|
82
|
+
cb.unlock(uniq_id(1), cas1)
|
83
|
+
end
|
84
|
+
assert_raises Couchbase::Error::TemporaryFail do
|
85
|
+
cb.unlock(uniq_id(2), cas2)
|
117
86
|
end
|
118
87
|
end
|
119
88
|
end
|
data/test/test_utils.rb
CHANGED
@@ -19,14 +19,6 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestUtils < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_complex_startkey
|
31
23
|
assert_equal "all_docs?startkey=%5B%22Deadmau5%22%2C%22%22%5D", Couchbase::Utils.build_query("all_docs", :startkey => ["Deadmau5", ""])
|
32
24
|
end
|
@@ -38,12 +30,11 @@ class TestUtils < MiniTest::Test
|
|
38
30
|
raise ArgumentError, "cannot accept your object"
|
39
31
|
end
|
40
32
|
end
|
41
|
-
connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
|
42
33
|
assert_raises(Couchbase::Error::ValueFormat) do
|
43
|
-
|
34
|
+
cb.set(uniq_id, "foo")
|
44
35
|
end
|
45
36
|
begin
|
46
|
-
|
37
|
+
cb.set(uniq_id, "foo")
|
47
38
|
rescue Couchbase::Error::ValueFormat => ex
|
48
39
|
assert_match /cannot accept your object/, ex.to_s
|
49
40
|
assert_instance_of ArgumentError, ex.inner_exception
|
data/test/test_version.rb
CHANGED
@@ -19,31 +19,22 @@ require File.join(File.dirname(__FILE__), 'setup')
|
|
19
19
|
|
20
20
|
class TestVersion < MiniTest::Test
|
21
21
|
|
22
|
-
def setup
|
23
|
-
@mock = start_mock
|
24
|
-
end
|
25
|
-
|
26
|
-
def teardown
|
27
|
-
stop_mock(@mock)
|
28
|
-
end
|
29
|
-
|
30
22
|
def test_sync_version
|
31
|
-
|
32
|
-
ver = connection.version
|
23
|
+
ver = cb.version
|
33
24
|
assert ver.is_a?(Hash)
|
34
|
-
assert_equal
|
25
|
+
assert_equal 1, ver.size
|
35
26
|
end
|
36
27
|
|
37
28
|
def test_async_version
|
38
|
-
|
29
|
+
skip
|
39
30
|
ver = {}
|
40
|
-
|
31
|
+
cb.run do |conn|
|
41
32
|
conn.version do |ret|
|
42
33
|
assert ret.success?
|
43
34
|
ver[ret.node] = ret.value
|
44
35
|
end
|
45
36
|
end
|
46
|
-
assert_equal
|
37
|
+
assert_equal 1, ver.size
|
47
38
|
ver.each do |node, v|
|
48
39
|
assert v.is_a?(String)
|
49
40
|
end
|