couchbase-jruby-client 0.1.0-java → 0.1.5-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|