jruby-memcached-thoughtworks 0.6.0
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 +7 -0
- data/.gitignore +31 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +89 -0
- data/Gemfile +6 -0
- data/MIT-LICENSE +20 -0
- data/README.md +75 -0
- data/Rakefile +16 -0
- data/benchmark.rb +104 -0
- data/jruby_memcached.gemspec +21 -0
- data/lib/memcached.rb +12 -0
- data/lib/memcached/version.rb +3 -0
- data/pom.xml +69 -0
- data/spec/memcached_spec.rb +247 -0
- data/spec/rails_spec.rb +181 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/timeout_spec.rb +103 -0
- data/src/main/java/com/openfeint/memcached/Memcached.java +511 -0
- data/src/main/java/com/openfeint/memcached/MemcachedService.java +35 -0
- data/src/main/java/com/openfeint/memcached/Rails.java +237 -0
- data/src/main/java/com/openfeint/memcached/error/ATimeoutOccurred.java +7 -0
- data/src/main/java/com/openfeint/memcached/error/Error.java +31 -0
- data/src/main/java/com/openfeint/memcached/error/NotFound.java +7 -0
- data/src/main/java/com/openfeint/memcached/error/NotStored.java +7 -0
- data/src/main/java/com/openfeint/memcached/error/NotSupport.java +7 -0
- data/src/main/java/com/openfeint/memcached/transcoder/MarshalTranscoder.java +91 -0
- data/src/main/java/com/openfeint/memcached/transcoder/MarshalZlibTranscoder.java +103 -0
- data/src/main/java/net/spy/memcached/KetamaNodeLocator.java +165 -0
- data/src/main/java/net/spy/memcached/util/DefaultKetamaNodeLocatorConfiguration.java +104 -0
- data/target/spymemcached-ext-0.0.2.jar +0 -0
- metadata +104 -0
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Memcached do
|
4
|
+
context "localhost" do
|
5
|
+
before(:all) { @memcached = Memcached.new(["127.0.0.1:11211"]) }
|
6
|
+
after(:all) { @memcached.quit }
|
7
|
+
|
8
|
+
it "should get all servers" do
|
9
|
+
@memcached.set "foo", "bar"
|
10
|
+
@memcached.servers.should == ["127.0.0.1:11211"]
|
11
|
+
end
|
12
|
+
|
13
|
+
context "initialize" do
|
14
|
+
it "should connect to 127.0.0.1:11211 if no server defined" do
|
15
|
+
memcached = Memcached.new
|
16
|
+
memcached.set "foo", "bar"
|
17
|
+
memcached.servers.should == ["127.0.0.1:11211"]
|
18
|
+
memcached.shutdown
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should raise error with unsupported option hash" do
|
22
|
+
expect { Memcached.new("127.0.0.1:11211", :hash => :unknown) }.to raise_error(Memcached::NotSupport)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should raise error with unsupported option distribution" do
|
26
|
+
expect { Memcached.new("127.0.0.1:11211", :distribution => :unknown) }.to raise_error(Memcached::NotSupport)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should ignore nil value" do
|
30
|
+
expect { Memcached.new("127.0.0.1:11211", :prefix => nil) }.not_to raise_error
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "set/get" do
|
35
|
+
it "should set/get with plain text" do
|
36
|
+
@memcached.set "key", "value"
|
37
|
+
@memcached.get("key").should == "value"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should set/get with compressed text" do
|
41
|
+
@memcached.set "key", "x\234c?P?*?/?I\001\000\b8\002a"
|
42
|
+
@memcached.get("key").should == "x\234c?P?*?/?I\001\000\b8\002a"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "get" do
|
47
|
+
it "should get nil" do
|
48
|
+
@memcached.set "key", nil, 0
|
49
|
+
@memcached.get("key").should be_nil
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should get missing" do
|
53
|
+
@memcached.delete "key" rescue nil
|
54
|
+
expect { @memcached.get "key" }.to raise_error(Memcached::NotFound)
|
55
|
+
end
|
56
|
+
|
57
|
+
context "multiget" do
|
58
|
+
it "should get hash containing multiple key/value pairs" do
|
59
|
+
@memcached.set "key1", "value1"
|
60
|
+
@memcached.set "key2", "value2"
|
61
|
+
@memcached.get(["key1", "key2"]).should == {"key1" => "value1", "key2" => "value2"}
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should get hash containing nil value" do
|
65
|
+
@memcached.set "key", nil, 0
|
66
|
+
@memcached.get(["key"]).should == {"key" => nil}
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should get empty hash" do
|
70
|
+
@memcached.delete "key" rescue nil
|
71
|
+
@memcached.get(["key"]).should be_empty
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "set" do
|
77
|
+
it "should set expiry" do
|
78
|
+
@memcached.set "key", "value", 1
|
79
|
+
@memcached.get("key").should == "value"
|
80
|
+
sleep 1
|
81
|
+
expect { @memcached.get("key") }.to raise_error(Memcached::NotFound)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "add" do
|
86
|
+
it "should add new key" do
|
87
|
+
@memcached.delete "key" rescue nil
|
88
|
+
@memcached.add "key", "value"
|
89
|
+
@memcached.get("key").should == "value"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should not add existing key" do
|
93
|
+
@memcached.set "key", "value"
|
94
|
+
expect { @memcached.add "key", "value" }.to raise_error(Memcached::NotStored)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should add expiry" do
|
98
|
+
@memcached.delete "key" rescue nil
|
99
|
+
@memcached.add "key", "value", 1
|
100
|
+
@memcached.get "key"
|
101
|
+
sleep 1
|
102
|
+
expect { @memcached.get "key" }.to raise_error(Memcached::NotFound)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context "replace" do
|
107
|
+
it "should replace existing key" do
|
108
|
+
@memcached.set "key", nil
|
109
|
+
@memcached.replace "key", "value"
|
110
|
+
@memcached.get("key").should == "value"
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should not replace with new key" do
|
114
|
+
@memcached.delete "key" rescue nil
|
115
|
+
expect { @memcached.replace "key", "value" }.to raise_error(Memcached::NotStored)
|
116
|
+
expect { @memcached.get "key" }.to raise_error(Memcached::NotFound)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context "delete" do
|
121
|
+
it "should delete with existing key" do
|
122
|
+
@memcached.set "key", "value"
|
123
|
+
@memcached.delete "key"
|
124
|
+
expect { @memcached.get "key" }.to raise_error(Memcached::NotFound)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should not delete with new key" do
|
128
|
+
@memcached.delete "key" rescue nil
|
129
|
+
expect { @memcached.delete "key" }.to raise_error(Memcached::NotFound)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "increment" do
|
134
|
+
it "should increment to default value" do
|
135
|
+
@memcached.delete "intkey" rescue nil
|
136
|
+
@memcached.increment "intkey"
|
137
|
+
@memcached.get("intkey").should == 1
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should increment by 1" do
|
141
|
+
@memcached.delete "intkey" rescue nil
|
142
|
+
@memcached.increment "intkey"
|
143
|
+
@memcached.increment "intkey"
|
144
|
+
@memcached.get("intkey").should == 2
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should increment by 10" do
|
148
|
+
@memcached.delete "intkey" rescue nil
|
149
|
+
@memcached.increment "intkey"
|
150
|
+
@memcached.increment "intkey", 10
|
151
|
+
@memcached.get("intkey").should == 11
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
context "decrement" do
|
156
|
+
it "should decrement to default value" do
|
157
|
+
@memcached.delete "intkey" rescue nil
|
158
|
+
@memcached.decrement "intkey"
|
159
|
+
@memcached.get("intkey").should == 0
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should decrement by 1" do
|
163
|
+
@memcached.delete "intkey" rescue nil
|
164
|
+
2.times { @memcached.increment "intkey" }
|
165
|
+
@memcached.decrement "intkey"
|
166
|
+
@memcached.get("intkey").should == 1
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should decrement by 10" do
|
170
|
+
@memcached.delete "intkey" rescue nil
|
171
|
+
@memcached.increment "intkey"
|
172
|
+
@memcached.increment "intkey", 20
|
173
|
+
@memcached.decrement "intkey", 10
|
174
|
+
@memcached.get("intkey").should == 11
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context "flush" do
|
179
|
+
it "should flush all keys" do
|
180
|
+
@memcached.set "key1", "value2"
|
181
|
+
@memcached.set "key2", "value2"
|
182
|
+
@memcached.flush
|
183
|
+
expect { @memcached.get "key1" }.to raise_error(Memcached::NotFound)
|
184
|
+
expect { @memcached.get "key2" }.to raise_error(Memcached::NotFound)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
context "namespace/prefix_key" do
|
189
|
+
it "should get/set with namespace" do
|
190
|
+
memcached = Memcached.new("127.0.0.1:11211", :namespace => "jruby")
|
191
|
+
memcached.set "key", "value"
|
192
|
+
memcached.get("key").should == "value"
|
193
|
+
memcached.shutdown
|
194
|
+
@memcached.get("jrubykey").should == "value"
|
195
|
+
end
|
196
|
+
|
197
|
+
context "prefix_key" do
|
198
|
+
before(:all) { @prefix_memcached = Memcached.new("127.0.0.1:11211", :prefix_key => "jruby") }
|
199
|
+
after(:all) { @prefix_memcached.shutdown }
|
200
|
+
|
201
|
+
it "should get/set with prefix_key" do
|
202
|
+
@prefix_memcached.set "key", "value"
|
203
|
+
@prefix_memcached.get("key").should == "value"
|
204
|
+
@memcached.get("jrubykey").should == "value"
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should add/replace with prefix_key" do
|
208
|
+
@prefix_memcached.add "newkey", "value"
|
209
|
+
@prefix_memcached.replace "newkey", "new_value"
|
210
|
+
@memcached.get("jrubynewkey").should == "new_value"
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should delete with prefix_key" do
|
214
|
+
@prefix_memcached.set "key", "value"
|
215
|
+
@prefix_memcached.delete "key"
|
216
|
+
expect { @memcached.get("jrubykey") }.to raise_error(Memcached::NotFound)
|
217
|
+
end
|
218
|
+
|
219
|
+
it "should multiget with prefix_key" do
|
220
|
+
@prefix_memcached.set "key1", "value1"
|
221
|
+
@prefix_memcached.set "key2", "value2"
|
222
|
+
@prefix_memcached.get(["key1", "key2"]).should == {"key1" => "value1", "key2" => "value2"}
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should increment/decrement with prefix_key" do
|
226
|
+
@prefix_memcached.delete "intkey" rescue nil
|
227
|
+
@prefix_memcached.increment "intkey"
|
228
|
+
@prefix_memcached.increment "intkey", 10
|
229
|
+
@prefix_memcached.decrement "intkey", 5
|
230
|
+
@memcached.get("jrubyintkey").should == 6
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "active?" do
|
236
|
+
it "should be true if has available servers" do
|
237
|
+
expect(@memcached.active?).to eq(true)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should be false if hasn't available servers" do
|
241
|
+
@memcached_bad = Memcached.new(["127.0.0.1:22121"])
|
242
|
+
expect(@memcached_bad.active?).to eq(false)
|
243
|
+
@memcached_bad.quit
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
data/spec/rails_spec.rb
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Memcached::Rails do
|
4
|
+
context "localhost" do
|
5
|
+
before(:all) { @memcached = Memcached::Rails.new(:servers => ["127.0.0.1:11211"]) }
|
6
|
+
after(:all) { @memcached.shutdown }
|
7
|
+
|
8
|
+
it "should get all servers" do
|
9
|
+
@memcached.set "foo", "bar"
|
10
|
+
@memcached.servers.should == ["127.0.0.1:11211"]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should get logger" do
|
14
|
+
require 'logger'
|
15
|
+
@memcached.logger = Logger.new(STDOUT)
|
16
|
+
@memcached.logger.should_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be active" do
|
20
|
+
@memcached.should be_active
|
21
|
+
end
|
22
|
+
|
23
|
+
context "get" do
|
24
|
+
it "should get value" do
|
25
|
+
@memcached.set "key", "value"
|
26
|
+
@memcached.get("key").should == "value"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should get nil if key is missing" do
|
30
|
+
@memcached.delete "key" rescue nil
|
31
|
+
@memcached.get("key").should be_nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "read" do
|
36
|
+
it "should get value" do
|
37
|
+
@memcached.set "key", "value"
|
38
|
+
@memcached.get("key").should == "value"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should get nil if key is missing" do
|
42
|
+
@memcached.delete "key" rescue nil
|
43
|
+
@memcached.get("key").should be_nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "exist?" do
|
48
|
+
it "should return true if key exists" do
|
49
|
+
@memcached.set "key", "value"
|
50
|
+
@memcached.exist?("key").should be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return false if key is missing" do
|
54
|
+
@memcached.delete "key" rescue nil
|
55
|
+
@memcached.exist?("key").should be_false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "get_multi" do
|
60
|
+
it "should get hash containing multiple key/value pairs" do
|
61
|
+
@memcached.set "key1", "value1"
|
62
|
+
@memcached.set "key2", "value2"
|
63
|
+
@memcached.get(["key1", "key2"]).should == {"key1" => "value1", "key2" => "value2"}
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should get hash containing nil value" do
|
67
|
+
@memcached.set "key", nil, 0
|
68
|
+
@memcached.get(["key"]).should == {"key" => nil}
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should get empty hash" do
|
72
|
+
@memcached.delete "key" rescue nil
|
73
|
+
@memcached.get(["key"]).should be_empty
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "set" do
|
78
|
+
it "should set successfully" do
|
79
|
+
@memcached.set("key", "value").should be_true
|
80
|
+
@memcached.get("key").should == "value"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "write" do
|
85
|
+
it "should write successfully" do
|
86
|
+
@memcached.write("key", "value").should be_true
|
87
|
+
@memcached.read("key").should == "value"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should expire" do
|
91
|
+
@memcached.write("key", "value", :expires_in => 1)
|
92
|
+
@memcached.read("key").should == "value"
|
93
|
+
sleep 1
|
94
|
+
@memcached.read("key").should be_nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context "fetch" do
|
99
|
+
it "should read if key exists" do
|
100
|
+
@memcached.write("key", "value")
|
101
|
+
@memcached.fetch("key") { "new value" }.should == "value"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should write if key is missing" do
|
105
|
+
@memcached.delete "key" rescue nil
|
106
|
+
@memcached.fetch("key") { "new value" }.should == "new value"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context "add" do
|
111
|
+
it "should add if key is missing" do
|
112
|
+
@memcached.delete "key" rescue nil
|
113
|
+
@memcached.add("key", "value").should be_true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should do nothing if key exists" do
|
117
|
+
@memcached.set "key", "value"
|
118
|
+
@memcached.add("key", "value").should be_false
|
119
|
+
end
|
120
|
+
|
121
|
+
context "with string_return_types" do
|
122
|
+
before(:all) { @string_memcached = Memcached::Rails.new("127.0.0.1:11211", :string_return_types => true) }
|
123
|
+
after(:all) { @string_memcached.quit }
|
124
|
+
|
125
|
+
it "should add if key is missing" do
|
126
|
+
@string_memcached.delete "key" rescue nil
|
127
|
+
@string_memcached.add("key", "value").should == "STORED\r\n"
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should do nothing if key exists" do
|
131
|
+
@string_memcached.set "key", "value"
|
132
|
+
@string_memcached.add("key", "value").should == "NOT STORED\r\n"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "delete" do
|
138
|
+
it "should delete existing key" do
|
139
|
+
@memcached.set "key", "value"
|
140
|
+
@memcached.delete "key"
|
141
|
+
@memcached.get("key").should be_nil
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should do nothing if delete missing key" do
|
145
|
+
@memcached.delete "key" rescue nil
|
146
|
+
@memcached.delete "key"
|
147
|
+
@memcached.get("key").should be_nil
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context "alias" do
|
152
|
+
it "should respond_to? flush_all" do
|
153
|
+
@memcached.should be_respond_to(:flush_all)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should respond_to? clear" do
|
157
|
+
@memcached.should be_respond_to(:clear)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should respond_to? :[]" do
|
161
|
+
@memcached.should be_respond_to(:"[]")
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should respond_to? :[]=" do
|
165
|
+
@memcached.should be_respond_to(:"[]=")
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "read_multi" do
|
170
|
+
it "should read hash containing multiple key/value pairs" do
|
171
|
+
@memcached.write "key1", "value1"
|
172
|
+
@memcached.write "key2", "value2"
|
173
|
+
@memcached.read_multi(["key1", "key2"]).should == {"key1" => "value1", "key2" => "value2"}
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should read empty hash without params" do
|
177
|
+
@memcached.read_multi.should be_empty
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'rspec'
|
4
|
+
require 'rspec/autorun'
|
5
|
+
|
6
|
+
require 'memcached'
|
7
|
+
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.mock_framework = :mocha
|
10
|
+
config.filter_run :focus => true
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# This is a stupid way to test timeout cases.
|
4
|
+
#
|
5
|
+
# Originally, I want to mock MemcachedClient methods to throw OperationTimeout, like
|
6
|
+
#
|
7
|
+
# MemcachedClient.any_instance.stubs(:get).raises(OperationTimeout)
|
8
|
+
# lambda { @timeout_memcached.get "key" }.should raise_error(Memcached::ATimeoutOccurred)
|
9
|
+
#
|
10
|
+
# But it doesn't work.
|
11
|
+
#
|
12
|
+
# The current solution is to call @timeout_memcahced.get in an infinite loop until a
|
13
|
+
# Memcached::ATimeoutOccurred raised. It works, but really slow down the tests, I hate it.
|
14
|
+
#
|
15
|
+
# If you have a better solution, please let me know flyerhzm at gmail dot com, thanks.
|
16
|
+
describe Memcached do
|
17
|
+
before(:all) do
|
18
|
+
@memcached = Memcached.new("127.0.0.1:11211")
|
19
|
+
@timeout_memcached = Memcached.new("127.0.0.1:11211", :timeout => 1, :exception_retry_limit => 0)
|
20
|
+
end
|
21
|
+
|
22
|
+
after(:all) do
|
23
|
+
@timeout_memcached.quit
|
24
|
+
@memcached.quit
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "Rails" do
|
28
|
+
before(:all) do
|
29
|
+
@timeout_rails = Memcached::Rails.new("127.0.0.1:11211", :timeout => 1, :exception_retry_limit => 0)
|
30
|
+
end
|
31
|
+
|
32
|
+
after(:all) do
|
33
|
+
@timeout_rails.quit
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return nil when got timeout" do
|
37
|
+
@memcached.set "a-key", "value"
|
38
|
+
while true
|
39
|
+
break if @timeout_rails.get("a-key").nil?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should set timeout" do
|
45
|
+
lambda {
|
46
|
+
while true
|
47
|
+
@timeout_memcached.set "key", "new_value"
|
48
|
+
end
|
49
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should add timeout" do
|
53
|
+
lambda {
|
54
|
+
while true
|
55
|
+
@memcached.delete "key" rescue nil
|
56
|
+
@timeout_memcached.add "key", "new_value"
|
57
|
+
end
|
58
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should replace timeout" do
|
62
|
+
@memcached.set "key", "value"
|
63
|
+
lambda {
|
64
|
+
while true
|
65
|
+
@timeout_memcached.replace "key", "new_value"
|
66
|
+
end
|
67
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should delete timeout" do
|
71
|
+
lambda {
|
72
|
+
while true
|
73
|
+
@memcached.set "key", "value"
|
74
|
+
@timeout_memcached.delete "key"
|
75
|
+
end
|
76
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should get timeout" do
|
80
|
+
@memcached.set "key", "value"
|
81
|
+
lambda {
|
82
|
+
while true
|
83
|
+
@timeout_memcached.get "key"
|
84
|
+
end
|
85
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should increment timeout" do
|
89
|
+
lambda {
|
90
|
+
while true
|
91
|
+
@timeout_memcached.increment "intkey"
|
92
|
+
end
|
93
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should decrement timeout" do
|
97
|
+
lambda {
|
98
|
+
while true
|
99
|
+
@timeout_memcached.decrement "intkey"
|
100
|
+
end
|
101
|
+
}.should raise_error(Memcached::ATimeoutOccurred)
|
102
|
+
end
|
103
|
+
end
|