dalli 2.6.4 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of dalli might be problematic. Click here for more details.

@@ -99,11 +99,34 @@ describe 'Dalli' do
99
99
  val2 = dc.get('a')
100
100
  assert_equal val1, val2
101
101
 
102
- assert_equal true, dc.set('a', nil)
102
+ assert op_addset_succeeds(dc.set('a', nil))
103
103
  assert_nil dc.get('a')
104
104
  end
105
105
  end
106
106
 
107
+ it 'supports delete' do
108
+ memcached do |dc|
109
+ dc.set('some_key', 'some_value')
110
+ assert_equal 'some_value', dc.get('some_key')
111
+
112
+ dc.delete('some_key')
113
+ assert_nil dc.get('some_key')
114
+ end
115
+ end
116
+
117
+ it 'returns nil for nonexist key' do
118
+ memcached do |dc|
119
+ assert_equal nil, dc.get('notexist')
120
+ end
121
+ end
122
+
123
+ it 'allows "Not found" as value' do
124
+ memcached do |dc|
125
+ dc.set('key1', 'Not found')
126
+ assert_equal 'Not found', dc.get('key1')
127
+ end
128
+ end
129
+
107
130
  it "support stats" do
108
131
  memcached do |dc|
109
132
  # make sure that get_hits would not equal 0
@@ -198,7 +221,7 @@ describe 'Dalli' do
198
221
  assert_equal expected, value
199
222
  mutated
200
223
  end
201
- assert_equal true, resp
224
+ assert op_cas_succeeds(resp)
202
225
 
203
226
  resp = dc.get('cas_key')
204
227
  assert_equal mutated, resp
@@ -215,8 +238,17 @@ describe 'Dalli' do
215
238
  dc.set('a', 'foo')
216
239
  dc.set('b', 123)
217
240
  dc.set('c', %w(a b c))
241
+ # Invocation without block
218
242
  resp = dc.get_multi(%w(a b c d e f))
219
- assert_equal({ 'a' => 'foo', 'b' => 123, 'c' => %w(a b c) }, resp)
243
+ expected_resp = { 'a' => 'foo', 'b' => 123, 'c' => %w(a b c) }
244
+ assert_equal(expected_resp, resp)
245
+
246
+ # Invocation with block
247
+ dc.get_multi(%w(a b c d e f)) do |k, v|
248
+ assert(expected_resp.has_key?(k) && expected_resp[k] == v)
249
+ expected_resp.delete(k)
250
+ end
251
+ assert expected_resp.empty?
220
252
 
221
253
  # Perform a big multi-get with 1000 elements.
222
254
  arr = []
@@ -237,7 +269,7 @@ describe 'Dalli' do
237
269
  memcached do |client|
238
270
  client.flush
239
271
 
240
- assert_equal true, client.set('fakecounter', 0, 0, :raw => true)
272
+ assert op_addset_succeeds(client.set('fakecounter', 0, 0, :raw => true))
241
273
  assert_equal 1, client.incr('fakecounter', 1)
242
274
  assert_equal 2, client.incr('fakecounter', 1)
243
275
  assert_equal 3, client.incr('fakecounter', 1)
@@ -253,7 +285,7 @@ describe 'Dalli' do
253
285
  assert_equal 3, resp
254
286
 
255
287
  resp = client.set('rawcounter', 10, 0, :raw => true)
256
- assert_equal true, resp
288
+ assert op_cas_succeeds(resp)
257
289
 
258
290
  resp = client.get('rawcounter', :raw => true)
259
291
  assert_equal '10', resp
@@ -314,7 +346,7 @@ describe 'Dalli' do
314
346
  it 'support the append and prepend operations' do
315
347
  memcached do |dc|
316
348
  dc.flush
317
- assert_equal true, dc.set('456', 'xyz', 0, :raw => true)
349
+ assert op_addset_succeeds(dc.set('456', 'xyz', 0, :raw => true))
318
350
  assert_equal true, dc.prepend('456', '0')
319
351
  assert_equal true, dc.append('456', '9')
320
352
  assert_equal '0xyz9', dc.get('456', :raw => true)
@@ -325,6 +357,16 @@ describe 'Dalli' do
325
357
  end
326
358
  end
327
359
 
360
+ it 'supports replace operation' do
361
+ memcached do |dc|
362
+ dc.flush
363
+ dc.set('key', 'value')
364
+ assert op_replace_succeeds(dc.replace('key', 'value2'))
365
+
366
+ assert_equal 'value2', dc.get('key')
367
+ end
368
+ end
369
+
328
370
  it 'support touch operation' do
329
371
  memcached do |dc|
330
372
  begin
@@ -341,6 +383,16 @@ describe 'Dalli' do
341
383
  end
342
384
  end
343
385
 
386
+ it 'support version operation' do
387
+ memcached do |dc|
388
+ v = dc.version
389
+ servers = v.keys
390
+ assert(servers.any? do |s|
391
+ v[s] != nil
392
+ end, "version failed")
393
+ end
394
+ end
395
+
344
396
  it 'allow TCP connections to be configured for keepalive' do
345
397
  memcached(19122, '', :keepalive => true) do |dc|
346
398
  dc.set(:a, 1)
@@ -361,20 +413,18 @@ describe 'Dalli' do
361
413
  refute_nil resp
362
414
  assert_equal [true, true], resp
363
415
 
364
- assert_equal true, dc.set(:foo, 'bar')
416
+ assert op_addset_succeeds(dc.set(:foo, 'bar'))
365
417
  assert_equal 'bar', dc.get(:foo)
366
418
 
367
419
  resp = dc.get('123')
368
420
  assert_equal nil, resp
369
421
 
370
- resp = dc.set('123', 'xyz')
371
- assert_equal true, resp
422
+ assert op_addset_succeeds(dc.set('123', 'xyz'))
372
423
 
373
424
  resp = dc.get('123')
374
425
  assert_equal 'xyz', resp
375
426
 
376
- resp = dc.set('123', 'abc')
377
- assert_equal true, resp
427
+ assert op_addset_succeeds(dc.set('123', 'abc'))
378
428
 
379
429
  dc.prepend('123', '0')
380
430
  dc.append('123', '0')
@@ -388,8 +438,7 @@ describe 'Dalli' do
388
438
 
389
439
  dc = Dalli::Client.new('localhost:19122')
390
440
 
391
- resp = dc.set('456', 'xyz', 0, :raw => true)
392
- assert_equal true, resp
441
+ assert op_addset_succeeds(dc.set('456', 'xyz', 0, :raw => true))
393
442
 
394
443
  resp = dc.prepend '456', '0'
395
444
  assert_equal true, resp
@@ -400,8 +449,7 @@ describe 'Dalli' do
400
449
  resp = dc.get('456', :raw => true)
401
450
  assert_equal '0xyz9', resp
402
451
 
403
- resp = dc.set('456', false)
404
- assert_equal true, resp
452
+ assert op_addset_succeeds(dc.set('456', false))
405
453
 
406
454
  resp = dc.get('456')
407
455
  assert_equal false, resp
@@ -419,9 +467,9 @@ describe 'Dalli' do
419
467
  workers = []
420
468
 
421
469
  cache.set('f', 'zzz')
422
- assert_equal true, (cache.cas('f') do |value|
470
+ assert op_cas_succeeds((cache.cas('f') do |value|
423
471
  value << 'z'
424
- end)
472
+ end))
425
473
  assert_equal 'zzzz', cache.get('f')
426
474
 
427
475
  # Have a bunch of threads perform a bunch of operations at the same time.
@@ -469,11 +517,11 @@ describe 'Dalli' do
469
517
 
470
518
  it 'truncate cache keys that are too long' do
471
519
  memcached do
472
- @dalli = Dalli::Client.new('localhost:19122', :namespace => 'some:namspace')
520
+ dc = Dalli::Client.new('localhost:19122', :namespace => 'some:namspace')
473
521
  key = "this cache key is far too long so it must be hashed and truncated and stuff" * 10
474
522
  value = "some value"
475
- assert_equal true, @dalli.set(key, value)
476
- assert_equal value, @dalli.get(key)
523
+ assert op_addset_succeeds(dc.set(key, value))
524
+ assert_equal value, dc.get(key)
477
525
  end
478
526
  end
479
527
 
@@ -518,7 +566,7 @@ describe 'Dalli' do
518
566
  value = "1234567890"*100
519
567
  1_000.times do |idx|
520
568
  begin
521
- assert_equal true, dc.set(idx, value)
569
+ assert op_addset_succeeds(dc.set(idx, value))
522
570
  rescue Dalli::DalliError
523
571
  failed = true
524
572
  assert((800..960).include?(idx), "unexpected failure on iteration #{idx}")
@@ -536,7 +584,7 @@ describe 'Dalli' do
536
584
  value = "1234567890"*1000
537
585
  10_000.times do |idx|
538
586
  begin
539
- assert_equal true, dalli.set(idx, value)
587
+ assert op_addset_succeeds(dalli.set(idx, value))
540
588
  rescue Dalli::DalliError
541
589
  failed = true
542
590
  assert((6000..7800).include?(idx), "unexpected failure on iteration #{idx}")
@@ -30,19 +30,19 @@ describe 'Sasl' do
30
30
  assert true
31
31
  end
32
32
 
33
- xit 'gracefully handle authentication failures' do
33
+ it 'gracefully handle authentication failures' do
34
34
  memcached(19124, '-S') do |dc|
35
- assert_raise Dalli::DalliError, /32/ do
35
+ assert_error Dalli::DalliError, /32/ do
36
36
  dc.set('abc', 123)
37
37
  end
38
38
  end
39
39
  end
40
40
  end
41
41
 
42
- xit 'fail SASL authentication with wrong options' do
42
+ it 'fail SASL authentication with wrong options' do
43
43
  memcached(19124, '-S') do |dc|
44
44
  dc = Dalli::Client.new('localhost:19124', :username => 'foo', :password => 'wrongpwd')
45
- assert_raise Dalli::DalliError, /32/ do
45
+ assert_error Dalli::DalliError, /32/ do
46
46
  dc.set('abc', 123)
47
47
  end
48
48
  end
metadata CHANGED
@@ -1,52 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dalli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.4
5
- prerelease:
4
+ version: 2.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mike Perham
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-27 00:00:00.000000000 Z
11
+ date: 2014-01-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: minitest
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
- version: 5.0.0
19
+ version: 4.2.0
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
- version: 5.0.0
26
+ version: 4.2.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: mocha
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rails
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -67,6 +60,7 @@ extra_rdoc_files: []
67
60
  files:
68
61
  - lib/action_dispatch/middleware/session/dalli_store.rb
69
62
  - lib/active_support/cache/dalli_store.rb
63
+ - lib/dalli/cas/client.rb
70
64
  - lib/dalli/client.rb
71
65
  - lib/dalli/compressor.rb
72
66
  - lib/dalli/options.rb
@@ -87,7 +81,9 @@ files:
87
81
  - test/benchmark_test.rb
88
82
  - test/helper.rb
89
83
  - test/memcached_mock.rb
84
+ - test/sasldb
90
85
  - test/test_active_support.rb
86
+ - test/test_cas_client.rb
91
87
  - test/test_compressor.rb
92
88
  - test/test_dalli.rb
93
89
  - test/test_encoding.rb
@@ -100,34 +96,35 @@ files:
100
96
  homepage: http://github.com/mperham/dalli
101
97
  licenses:
102
98
  - MIT
99
+ metadata: {}
103
100
  post_install_message:
104
101
  rdoc_options:
105
102
  - --charset=UTF-8
106
103
  require_paths:
107
104
  - lib
108
105
  required_ruby_version: !ruby/object:Gem::Requirement
109
- none: false
110
106
  requirements:
111
- - - ! '>='
107
+ - - '>='
112
108
  - !ruby/object:Gem::Version
113
109
  version: '0'
114
110
  required_rubygems_version: !ruby/object:Gem::Requirement
115
- none: false
116
111
  requirements:
117
- - - ! '>='
112
+ - - '>='
118
113
  - !ruby/object:Gem::Version
119
114
  version: '0'
120
115
  requirements: []
121
116
  rubyforge_project:
122
- rubygems_version: 1.8.23
117
+ rubygems_version: 2.0.14
123
118
  signing_key:
124
- specification_version: 3
119
+ specification_version: 4
125
120
  summary: High performance memcached client for Ruby
126
121
  test_files:
127
122
  - test/benchmark_test.rb
128
123
  - test/helper.rb
129
124
  - test/memcached_mock.rb
125
+ - test/sasldb
130
126
  - test/test_active_support.rb
127
+ - test/test_cas_client.rb
131
128
  - test/test_compressor.rb
132
129
  - test/test_dalli.rb
133
130
  - test/test_encoding.rb