memcached 1.3.7 → 1.4.1
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.
- data.tar.gz.sig +0 -0
- data/BENCHMARKS +115 -121
- data/CHANGELOG +5 -1
- data/README.rdoc +2 -1
- data/Rakefile +3 -2
- data/TODO +2 -2
- data/ext/extconf.rb +3 -2
- data/lib/memcached/rails.rb +35 -3
- data/memcached.gemspec +18 -18
- data/test/unit/memcached_experimental_test.rb +30 -30
- data/test/unit/rails_test.rb +63 -0
- metadata +5 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
|
Binary file
|
data/BENCHMARKS
CHANGED
|
@@ -7,128 +7,122 @@ You can easily run your own benchmarks, as long as you have memcached itself on
|
|
|
7
7
|
|
|
8
8
|
== x86-64 OS X
|
|
9
9
|
|
|
10
|
-
These benchmarks were run on a 64-bit OS X machine, with memcached 1.4.5:
|
|
11
|
-
|
|
12
|
-
Darwin
|
|
13
|
-
|
|
14
|
-
ruby
|
|
15
|
-
Ruby
|
|
16
|
-
|
|
17
|
-
RUBY_HEAP_MIN_SLOTS=500000
|
|
18
|
-
RUBY_HEAP_SLOTS_INCREMENT=250000
|
|
19
|
-
RUBY_GC_MALLOC_LIMIT=50000000
|
|
20
|
-
RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
|
|
21
|
-
RUBY_VERSION=ree-1.8.7-2010.02
|
|
22
|
-
Ruby 1.8.7p253
|
|
23
|
-
Loaded memcached 1.1.1
|
|
10
|
+
These benchmarks were run on a 64-bit OS X machine, with memcached 1.4.5:
|
|
11
|
+
|
|
12
|
+
Darwin winter.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64
|
|
13
|
+
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.1]
|
|
14
|
+
RUBY_VERSION=ruby-1.9.2-p290
|
|
15
|
+
Ruby 1.9.2p290
|
|
16
|
+
Loaded memcached 1.4.0
|
|
24
17
|
Loaded remix-stash 1.1.3
|
|
25
18
|
Loaded memcache-client 1.8.5
|
|
26
|
-
Loaded kgio 2.
|
|
27
|
-
Loaded dalli 1.
|
|
28
|
-
PID is
|
|
29
|
-
Loops is
|
|
19
|
+
Loaded kgio 2.6.0
|
|
20
|
+
Loaded dalli 1.1.5
|
|
21
|
+
PID is 7161
|
|
22
|
+
Loops is 50000
|
|
30
23
|
Stack depth is 0
|
|
31
|
-
Small value size is:
|
|
32
|
-
Large value size is:
|
|
33
|
-
|
|
24
|
+
Small value size is: 19 bytes
|
|
25
|
+
Large value size is: 4189 bytes
|
|
34
26
|
user system total real
|
|
35
|
-
set:
|
|
36
|
-
set: libm:ascii
|
|
37
|
-
set: libm:ascii:
|
|
38
|
-
set: libm:
|
|
39
|
-
set: libm:bin
|
|
40
|
-
set:
|
|
41
|
-
set: mclient:ascii
|
|
42
|
-
set: stash:bin
|
|
43
|
-
|
|
44
|
-
get:
|
|
45
|
-
get: libm:ascii
|
|
46
|
-
get: libm:ascii:
|
|
47
|
-
get: libm:
|
|
48
|
-
get: libm:bin
|
|
49
|
-
get:
|
|
50
|
-
get: mclient:ascii
|
|
51
|
-
get: stash:bin 2.310000
|
|
52
|
-
|
|
53
|
-
get-multi:
|
|
54
|
-
get-multi: libm:ascii
|
|
55
|
-
get-multi: libm:ascii:
|
|
56
|
-
get-multi: libm:
|
|
57
|
-
get-multi: libm:bin
|
|
58
|
-
get-multi:
|
|
59
|
-
|
|
60
|
-
append:
|
|
61
|
-
append: libm:ascii
|
|
62
|
-
append: libm:ascii:
|
|
63
|
-
append: libm:
|
|
64
|
-
append: libm:bin
|
|
65
|
-
append:
|
|
66
|
-
append: mclient:ascii
|
|
67
|
-
|
|
68
|
-
prepend:
|
|
69
|
-
prepend: libm:ascii
|
|
70
|
-
prepend: libm:ascii:
|
|
71
|
-
prepend: libm:
|
|
72
|
-
prepend: libm:bin
|
|
73
|
-
prepend:
|
|
74
|
-
prepend: mclient:ascii
|
|
75
|
-
|
|
76
|
-
delete:
|
|
77
|
-
delete: libm:ascii
|
|
78
|
-
delete: libm:ascii:
|
|
79
|
-
delete: libm:
|
|
80
|
-
delete: libm:bin
|
|
81
|
-
delete:
|
|
82
|
-
delete: mclient:ascii
|
|
83
|
-
|
|
84
|
-
get-missing:
|
|
85
|
-
get-missing: libm:ascii
|
|
86
|
-
get-missing: libm:ascii:
|
|
87
|
-
get-missing: libm:
|
|
88
|
-
get-missing: libm:bin
|
|
89
|
-
get-missing:
|
|
90
|
-
get-missing: mclient:ascii
|
|
91
|
-
|
|
92
|
-
append-missing:
|
|
93
|
-
append-missing: libm:ascii
|
|
94
|
-
append-missing: libm:ascii:
|
|
95
|
-
append-missing: libm:
|
|
96
|
-
append-missing:
|
|
97
|
-
append-missing:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
prepend-missing:
|
|
101
|
-
prepend-missing: libm:ascii
|
|
102
|
-
prepend-missing: libm:
|
|
103
|
-
prepend-missing:
|
|
104
|
-
prepend-missing:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
set-large:
|
|
109
|
-
set-large: libm:
|
|
110
|
-
set-large: libm:
|
|
111
|
-
set-large:
|
|
112
|
-
set-large:
|
|
113
|
-
set-large:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
get-large:
|
|
118
|
-
get-large: libm:
|
|
119
|
-
get-large: libm:
|
|
120
|
-
get-large:
|
|
121
|
-
get-large:
|
|
122
|
-
get-large:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
hash:
|
|
127
|
-
hash:
|
|
128
|
-
hash:
|
|
129
|
-
hash:
|
|
130
|
-
hash:
|
|
131
|
-
hash:
|
|
132
|
-
hash:
|
|
133
|
-
hash:
|
|
134
|
-
hash:
|
|
27
|
+
set: dalli:bin 6.230000 2.860000 9.090000 ( 13.771901)
|
|
28
|
+
set: libm:ascii 0.900000 1.600000 2.500000 ( 6.201596)
|
|
29
|
+
set: libm:ascii:pipeline 0.380000 0.010000 0.390000 ( 0.399863)
|
|
30
|
+
set: libm:ascii:udp 0.540000 0.810000 1.350000 ( 3.033980)
|
|
31
|
+
set: libm:bin 0.660000 1.550000 2.210000 ( 5.829103)
|
|
32
|
+
set: libm:bin:buffer 0.310000 0.560000 0.870000 ( 1.335899)
|
|
33
|
+
set: mclient:ascii 13.760000 3.640000 17.400000 ( 17.519859)
|
|
34
|
+
set: stash:bin 4.350000 2.260000 6.610000 ( 10.901810)
|
|
35
|
+
|
|
36
|
+
get: dalli:bin 6.370000 3.040000 9.410000 ( 13.762127)
|
|
37
|
+
get: libm:ascii 1.130000 1.710000 2.840000 ( 6.472671)
|
|
38
|
+
get: libm:ascii:pipeline 1.350000 2.480000 3.830000 ( 8.459317)
|
|
39
|
+
get: libm:ascii:udp 0.770000 0.910000 1.680000 ( 3.084506)
|
|
40
|
+
get: libm:bin 1.450000 2.910000 4.360000 ( 9.041859)
|
|
41
|
+
get: libm:bin:buffer 1.390000 3.400000 4.790000 ( 9.160760)
|
|
42
|
+
get: mclient:ascii 15.390000 3.890000 19.280000 ( 19.325698)
|
|
43
|
+
get: stash:bin 3.630000 2.310000 5.940000 ( 9.561887)
|
|
44
|
+
|
|
45
|
+
get-multi: dalli:bin 11.220000 4.720000 15.940000 ( 15.977336)
|
|
46
|
+
get-multi: libm:ascii 1.150000 1.190000 2.340000 ( 4.063418)
|
|
47
|
+
get-multi: libm:ascii:pipeline 1.160000 1.190000 2.350000 ( 4.063346)
|
|
48
|
+
get-multi: libm:ascii:udp 1.200000 1.110000 2.310000 ( 2.746055)
|
|
49
|
+
get-multi: libm:bin 1.520000 2.320000 3.840000 ( 5.053102)
|
|
50
|
+
get-multi: libm:bin:buffer 1.560000 2.350000 3.910000 ( 5.154312)
|
|
51
|
+
|
|
52
|
+
append: dalli:bin 5.470000 2.930000 8.400000 ( 24.011438)
|
|
53
|
+
append: libm:ascii 1.290000 1.790000 3.080000 ( 17.774130)
|
|
54
|
+
append: libm:ascii:pipeline 0.450000 0.040000 0.490000 ( 6.633257)
|
|
55
|
+
append: libm:ascii:udp 1.070000 0.970000 2.040000 ( 14.307639)
|
|
56
|
+
append: libm:bin 1.010000 1.740000 2.750000 ( 17.286027)
|
|
57
|
+
append: libm:bin:buffer 1.570000 3.060000 4.630000 ( 11.351744)
|
|
58
|
+
append: mclient:ascii 13.860000 4.610000 18.470000 ( 28.063347)
|
|
59
|
+
|
|
60
|
+
prepend: dalli:bin 5.480000 2.920000 8.400000 ( 24.141383)
|
|
61
|
+
prepend: libm:ascii 1.290000 1.800000 3.090000 ( 17.990164)
|
|
62
|
+
prepend: libm:ascii:pipeline 0.460000 0.050000 0.510000 ( 6.913219)
|
|
63
|
+
prepend: libm:ascii:udp 1.080000 0.970000 2.050000 ( 14.498750)
|
|
64
|
+
prepend: libm:bin 1.010000 1.750000 2.760000 ( 17.490186)
|
|
65
|
+
prepend: libm:bin:buffer 1.590000 3.030000 4.620000 ( 11.528854)
|
|
66
|
+
prepend: mclient:ascii 13.820000 4.590000 18.410000 ( 27.996415)
|
|
67
|
+
|
|
68
|
+
delete: dalli:bin 5.190000 2.860000 8.050000 ( 12.158696)
|
|
69
|
+
delete: libm:ascii 1.730000 1.760000 3.490000 ( 6.891763)
|
|
70
|
+
delete: libm:ascii:pipeline 0.270000 0.010000 0.280000 ( 0.286750)
|
|
71
|
+
delete: libm:ascii:udp 1.280000 0.960000 2.240000 ( 3.521770)
|
|
72
|
+
delete: libm:bin 1.670000 1.730000 3.400000 ( 6.670207)
|
|
73
|
+
delete: libm:bin:buffer 1.990000 1.420000 3.410000 ( 3.408682)
|
|
74
|
+
delete: mclient:ascii 12.300000 3.440000 15.740000 ( 15.004959)
|
|
75
|
+
|
|
76
|
+
get-missing: dalli:bin 5.190000 2.900000 8.090000 ( 12.288468)
|
|
77
|
+
get-missing: libm:ascii 1.890000 1.930000 3.820000 ( 7.300238)
|
|
78
|
+
get-missing: libm:ascii:pipeline 2.000000 2.400000 4.400000 ( 7.861120)
|
|
79
|
+
get-missing: libm:ascii:udp 1.420000 1.000000 2.420000 ( 3.684960)
|
|
80
|
+
get-missing: libm:bin 2.450000 2.880000 5.330000 ( 9.904413)
|
|
81
|
+
get-missing: libm:bin:buffer 2.590000 3.600000 6.190000 ( 10.558657)
|
|
82
|
+
get-missing: mclient:ascii 12.610000 3.520000 16.130000 ( 16.112399)
|
|
83
|
+
|
|
84
|
+
append-missing: dalli:bin 5.440000 2.930000 8.370000 ( 13.119090)
|
|
85
|
+
append-missing: libm:ascii 2.060000 2.060000 4.120000 ( 8.168211)
|
|
86
|
+
append-missing: libm:ascii:pipeline 0.410000 0.020000 0.430000 ( 0.423779)
|
|
87
|
+
append-missing: libm:ascii:udp 1.470000 0.980000 2.450000 ( 4.093117)
|
|
88
|
+
append-missing: libm:bin 1.800000 1.880000 3.680000 ( 7.384185)
|
|
89
|
+
append-missing: libm:bin:buffer 1.920000 2.500000 4.420000 ( 8.242885)
|
|
90
|
+
append-missing: mclient:ascii 12.780000 3.560000 16.340000 ( 16.303513)
|
|
91
|
+
|
|
92
|
+
prepend-missing: dalli:bin 5.440000 2.940000 8.380000 ( 13.143816)
|
|
93
|
+
prepend-missing: libm:ascii 2.060000 2.050000 4.110000 ( 8.207103)
|
|
94
|
+
prepend-missing: libm:ascii:pipeline 0.390000 0.010000 0.400000 ( 0.405324)
|
|
95
|
+
prepend-missing: libm:ascii:udp 1.480000 0.980000 2.460000 ( 4.100100)
|
|
96
|
+
prepend-missing: libm:bin 1.820000 1.910000 3.730000 ( 7.485082)
|
|
97
|
+
prepend-missing: libm:bin:buffer 1.930000 2.490000 4.420000 ( 8.220931)
|
|
98
|
+
prepend-missing: mclient:ascii 12.750000 3.570000 16.320000 ( 16.327426)
|
|
99
|
+
|
|
100
|
+
set-large: dalli:bin 8.210000 4.760000 12.970000 ( 20.323687)
|
|
101
|
+
set-large: libm:ascii 0.980000 1.690000 2.670000 ( 6.540981)
|
|
102
|
+
set-large: libm:ascii:pipeline 0.750000 0.620000 1.370000 ( 1.374806)
|
|
103
|
+
set-large: libm:ascii:udp 0.590000 0.880000 1.470000 ( 3.345455)
|
|
104
|
+
set-large: libm:bin 0.720000 1.620000 2.340000 ( 6.085282)
|
|
105
|
+
set-large: libm:bin:buffer 0.540000 1.000000 1.540000 ( 2.073624)
|
|
106
|
+
set-large: mclient:ascii 15.440000 5.050000 20.490000 ( 21.033437)
|
|
107
|
+
set-large: stash:bin 6.990000 2.970000 9.960000 ( 14.580058)
|
|
108
|
+
|
|
109
|
+
get-large: dalli:bin 6.430000 3.050000 9.480000 ( 13.863885)
|
|
110
|
+
get-large: libm:ascii 1.280000 1.910000 3.190000 ( 7.413390)
|
|
111
|
+
get-large: libm:ascii:pipeline 1.510000 2.690000 4.200000 ( 9.178352)
|
|
112
|
+
get-large: libm:ascii:udp 0.940000 1.050000 1.990000 ( 3.705017)
|
|
113
|
+
get-large: libm:bin 1.580000 3.140000 4.720000 ( 10.028901)
|
|
114
|
+
get-large: libm:bin:buffer 1.550000 3.740000 5.290000 ( 10.237274)
|
|
115
|
+
get-large: mclient:ascii 15.090000 3.590000 18.680000 ( 18.686119)
|
|
116
|
+
get-large: stash:bin 4.810000 3.010000 7.820000 ( 13.311248)
|
|
117
|
+
|
|
118
|
+
hash:default 0.540000 0.010000 0.550000 ( 0.537555)
|
|
119
|
+
hash:md5 0.910000 0.000000 0.910000 ( 0.914356)
|
|
120
|
+
hash:crc 0.620000 0.000000 0.620000 ( 0.624606)
|
|
121
|
+
hash:fnv1_64 0.420000 0.000000 0.420000 ( 0.421316)
|
|
122
|
+
hash:fnv1a_64 0.380000 0.000000 0.380000 ( 0.376717)
|
|
123
|
+
hash:fnv1_32 0.370000 0.000000 0.370000 ( 0.368479)
|
|
124
|
+
hash:fnv1a_32 0.350000 0.000000 0.350000 ( 0.353779)
|
|
125
|
+
hash:hsieh 0.160000 0.000000 0.160000 ( 0.161812)
|
|
126
|
+
hash:murmur 0.220000 0.000000 0.220000 ( 0.220061)
|
|
127
|
+
hash:jenkins 0.270000 0.000000 0.270000 ( 0.264617)
|
|
128
|
+
hash:none 0.160000 0.000000 0.160000 ( 0.165394)
|
data/CHANGELOG
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
v1.4.1. Fix Memcached::Rails#servers bug (tomhughes).
|
|
2
|
+
|
|
3
|
+
v1.4.0. Update Memcached::Rails compatibility wrapper to play along with Rails 3.2, including support for the horrendous ActiveSupport::Duration (tomhughes).
|
|
4
|
+
|
|
1
5
|
v1.3.7. Rebuild gem to work around timestamp issue in Gemspec on Rubygems 1.7 (tarcieri).
|
|
2
6
|
|
|
3
|
-
v1.3.6. Stop autoconf from running (eric). Raise generic Memcached::Error (instead of nil) on unexpected return code (gcampbell). Retry on Memcached::ServerEnd (ChristopherThorpe)
|
|
7
|
+
v1.3.6. Stop autoconf from running (eric). Raise generic Memcached::Error (instead of nil) on unexpected return code (gcampbell). Retry on Memcached::ServerEnd (ChristopherThorpe).
|
|
4
8
|
|
|
5
9
|
v1.3.5. Fix build again (eric).
|
|
6
10
|
|
data/README.rdoc
CHANGED
|
@@ -10,6 +10,7 @@ Copyright 2009-2011 Cloudburst, LLC. Licensed under the AFL 3. See the included
|
|
|
10
10
|
|
|
11
11
|
* clean API
|
|
12
12
|
* robust access to all memcached features
|
|
13
|
+
* SASL support for the binary protocol
|
|
13
14
|
* multiple hashing modes, including consistent hashing
|
|
14
15
|
* ludicrous speed, including optional pipelined IO with no_reply
|
|
15
16
|
|
|
@@ -107,7 +108,7 @@ There is a compatibility wrapper for legacy applications called Memcached::Rails
|
|
|
107
108
|
|
|
108
109
|
== Reporting problems
|
|
109
110
|
|
|
110
|
-
The support forum is here[http://github.com/
|
|
111
|
+
The support forum is here[http://github.com/evan/memcached/issues].
|
|
111
112
|
|
|
112
113
|
Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
|
|
113
114
|
|
data/Rakefile
CHANGED
|
@@ -3,7 +3,7 @@ require 'echoe'
|
|
|
3
3
|
|
|
4
4
|
Echoe.new("memcached") do |p|
|
|
5
5
|
p.author = "Evan Weaver"
|
|
6
|
-
p.project = "
|
|
6
|
+
p.project = "evan"
|
|
7
7
|
p.summary = "An interface to the libmemcached C client."
|
|
8
8
|
p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|exceptions|experimental.rb|behaviors|rails.rb|memcached.rb/
|
|
9
9
|
p.rdoc_options = %w[--line-numbers --inline-source --title Memcached --main README.rdoc --exclude=ext/bin --exclude=ext/libmemcached-.*/(clients|tests)]
|
|
@@ -13,6 +13,7 @@ Echoe.new("memcached") do |p|
|
|
|
13
13
|
"ext/lib",
|
|
14
14
|
"ext/share",
|
|
15
15
|
"ext/**/Makefile",
|
|
16
|
+
"ext/Makefile.in",
|
|
16
17
|
"ext/libmemcached-*/autom4te.cache",
|
|
17
18
|
"ext/libmemcached-*/clients/memcat",
|
|
18
19
|
"ext/libmemcached-*/clients/memcp",
|
|
@@ -72,7 +73,7 @@ task :valgrind do
|
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
def with_vms(cmd)
|
|
75
|
-
["ree", "1.9.2", "rbx"].each do |vm| #, "jruby-head"
|
|
76
|
+
["ree-1.8.7-2011.03", "1.9.2", "rbx"].each do |vm| #, "jruby-head"
|
|
76
77
|
if !system("bash -c 'cd && source .bash_profile && rvm use #{vm} && cd - && rake clean >> /dev/null && rake compile >> /dev/null && rake #{cmd}'")
|
|
77
78
|
puts "#{vm} #{cmd} failed"
|
|
78
79
|
exit(1)
|
data/TODO
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
+
* Promote touch support to toplevel and add ASCII protocol touching
|
|
3
|
+
* Remove SWIG and modify libmemcached to accept and return Ruby objects directly
|
|
2
4
|
* Verify that DNS lookups are getting cached
|
|
3
|
-
* Check for memory leaks in Valgrind after free callback change
|
|
4
|
-
* Re-run benchmarks
|
data/ext/extconf.rb
CHANGED
|
@@ -47,9 +47,8 @@ def check_libmemcached
|
|
|
47
47
|
$DEFLIBPATH = [] unless SOLARIS_32
|
|
48
48
|
|
|
49
49
|
Dir.chdir(HERE) do
|
|
50
|
-
run("touch -r #{BUNDLE_PATH}/m4/visibility.m4 #{BUNDLE_PATH}/configure.ac #{BUNDLE_PATH}/m4/pandora_have_sasl.m4 #{BUNDLE_PATH}/aclocal.m4", "Touching aclocal.m4 in libmemcached.")
|
|
51
|
-
|
|
52
50
|
Dir.chdir(BUNDLE_PATH) do
|
|
51
|
+
run("find . | xargs touch", "Touching all files so autoconf doesn't run.")
|
|
53
52
|
run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
|
|
54
53
|
end
|
|
55
54
|
|
|
@@ -84,3 +83,5 @@ end
|
|
|
84
83
|
|
|
85
84
|
$CFLAGS << " -Os"
|
|
86
85
|
create_makefile 'rlibmemcached'
|
|
86
|
+
run("mv Makefile Makefile.in", "Copy Makefile")
|
|
87
|
+
run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
|
data/lib/memcached/rails.rb
CHANGED
|
@@ -4,7 +4,7 @@ class Memcached
|
|
|
4
4
|
eval("alias :'#{method_name}_orig' :'#{method_name}'")
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
# A legacy compatibility wrapper for the Memcached class. It has basic compatibility with the <b>memcache-client</b> API.
|
|
7
|
+
# A legacy compatibility wrapper for the Memcached class. It has basic compatibility with the <b>memcache-client</b> API and Rails 3.2. (Note that ActiveSupport::Duration objects are supported, but not recommended, as ttl parameters. Using Fixnum ttls, such as provided by time_constants.gem, is much faster.)
|
|
8
8
|
class Rails < ::Memcached
|
|
9
9
|
|
|
10
10
|
DEFAULTS = {
|
|
@@ -23,7 +23,9 @@ class Memcached
|
|
|
23
23
|
args.any? ? args.unshift : opts.delete(:servers)
|
|
24
24
|
).flatten.compact
|
|
25
25
|
|
|
26
|
-
opts[:prefix_key]
|
|
26
|
+
opts[:prefix_key] = opts[:namespace] if opts[:namespace]
|
|
27
|
+
opts[:prefix_delimiter] = opts[:namespace_separator] if opts[:namespace_separator]
|
|
28
|
+
|
|
27
29
|
@logger = opts[:logger]
|
|
28
30
|
@string_return_types = opts[:string_return_types]
|
|
29
31
|
|
|
@@ -35,6 +37,11 @@ class Memcached
|
|
|
35
37
|
@logger = logger
|
|
36
38
|
end
|
|
37
39
|
|
|
40
|
+
# Check if there are any servers defined?
|
|
41
|
+
def active?
|
|
42
|
+
servers.any?
|
|
43
|
+
end
|
|
44
|
+
|
|
38
45
|
# Wraps Memcached#get so that it doesn't raise. This has the side-effect of preventing you from
|
|
39
46
|
# storing <tt>nil</tt> values.
|
|
40
47
|
def get(key, raw=false)
|
|
@@ -60,6 +67,9 @@ class Memcached
|
|
|
60
67
|
def cas(key, ttl=@default_ttl, raw=false, &block)
|
|
61
68
|
super(key, ttl, !raw, &block)
|
|
62
69
|
true
|
|
70
|
+
rescue TypeError => e
|
|
71
|
+
# Maybe we got an ActiveSupport::Duration
|
|
72
|
+
ttl = ttl.value and retry rescue raise e
|
|
63
73
|
rescue NotFound, ConnectionDataExists
|
|
64
74
|
false
|
|
65
75
|
end
|
|
@@ -75,6 +85,9 @@ class Memcached
|
|
|
75
85
|
def set(key, value, ttl=@default_ttl, raw=false)
|
|
76
86
|
super(key, value, ttl, !raw)
|
|
77
87
|
true
|
|
88
|
+
rescue TypeError => e
|
|
89
|
+
# Maybe we got an ActiveSupport::Duration
|
|
90
|
+
ttl = ttl.value and retry rescue raise e
|
|
78
91
|
rescue NotStored
|
|
79
92
|
false
|
|
80
93
|
end
|
|
@@ -88,8 +101,10 @@ class Memcached
|
|
|
88
101
|
# Wraps Memcached#add so that it doesn't raise.
|
|
89
102
|
def add(key, value, ttl=@default_ttl, raw=false)
|
|
90
103
|
super(key, value, ttl, !raw)
|
|
91
|
-
# This causes me pain
|
|
92
104
|
@string_return_types ? "STORED\r\n" : true
|
|
105
|
+
rescue TypeError => e
|
|
106
|
+
# Maybe we got an ActiveSupport::Duration
|
|
107
|
+
ttl = ttl.value and retry rescue raise e
|
|
93
108
|
rescue NotStored
|
|
94
109
|
@string_return_types? "NOT STORED\r\n" : false
|
|
95
110
|
end
|
|
@@ -129,5 +144,22 @@ class Memcached
|
|
|
129
144
|
alias :"[]" :get
|
|
130
145
|
alias :"[]=" :set
|
|
131
146
|
|
|
147
|
+
# Return an array of server objects.
|
|
148
|
+
def servers
|
|
149
|
+
server_structs.each do |server|
|
|
150
|
+
def server.alive?
|
|
151
|
+
next_retry <= Time.now
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Wraps Memcached#set_servers to convert server objects to strings.
|
|
157
|
+
def set_servers(servers)
|
|
158
|
+
servers = Array(servers)
|
|
159
|
+
servers.map! do |server|
|
|
160
|
+
server.is_a?(String) ? server : inspect_server(server)
|
|
161
|
+
end
|
|
162
|
+
super
|
|
163
|
+
end
|
|
132
164
|
end
|
|
133
165
|
end
|
data/memcached.gemspec
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
|
-
s.name =
|
|
5
|
-
s.version = "1.
|
|
4
|
+
s.name = %q{memcached}
|
|
5
|
+
s.version = "1.4.1"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
|
-
s.authors = [
|
|
9
|
-
s.cert_chain = [
|
|
10
|
-
s.date =
|
|
11
|
-
s.description =
|
|
12
|
-
s.email =
|
|
13
|
-
s.extensions = [
|
|
14
|
-
s.extra_rdoc_files = [
|
|
15
|
-
s.files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "TODO", "ext/extconf-make.rb", "ext/extconf.rb", "ext/libmemcached-0.32/AUTHORS", "ext/libmemcached-0.32/COPYING", "ext/libmemcached-0.32/ChangeLog", "ext/libmemcached-0.32/INSTALL", "ext/libmemcached-0.32/Makefile.am", "ext/libmemcached-0.32/Makefile.in", "ext/libmemcached-0.32/NEWS", "ext/libmemcached-0.32/README", "ext/libmemcached-0.32/THANKS", "ext/libmemcached-0.32/TODO", "ext/libmemcached-0.32/aclocal.m4", "ext/libmemcached-0.32/clients/Makefile.am", "ext/libmemcached-0.32/clients/Makefile.in", "ext/libmemcached-0.32/clients/client_options.h", "ext/libmemcached-0.32/clients/execute.c", "ext/libmemcached-0.32/clients/execute.h", "ext/libmemcached-0.32/clients/generator.c", "ext/libmemcached-0.32/clients/generator.h", "ext/libmemcached-0.32/clients/memcat.c", "ext/libmemcached-0.32/clients/memcp.c", "ext/libmemcached-0.32/clients/memdump.c", "ext/libmemcached-0.32/clients/memerror.c", "ext/libmemcached-0.32/clients/memflush.c", "ext/libmemcached-0.32/clients/memrm.c", "ext/libmemcached-0.32/clients/memslap.c", "ext/libmemcached-0.32/clients/memstat.c", "ext/libmemcached-0.32/clients/utilities.c", "ext/libmemcached-0.32/clients/utilities.h", "ext/libmemcached-0.32/config.h.in", "ext/libmemcached-0.32/config/compile", "ext/libmemcached-0.32/config/config.guess", "ext/libmemcached-0.32/config/config.rpath", "ext/libmemcached-0.32/config/config.sub", "ext/libmemcached-0.32/config/depcomp", "ext/libmemcached-0.32/config/install-sh", "ext/libmemcached-0.32/config/ltmain.sh", "ext/libmemcached-0.32/config/missing", "ext/libmemcached-0.32/configure", "ext/libmemcached-0.32/configure.ac", "ext/libmemcached-0.32/docs/Makefile.am", "ext/libmemcached-0.32/docs/Makefile.in", "ext/libmemcached-0.32/docs/libmemcached.pod", "ext/libmemcached-0.32/docs/libmemcached_examples.pod", "ext/libmemcached-0.32/docs/libmemcachedutil.pod", "ext/libmemcached-0.32/docs/memcached_analyze.pod", "ext/libmemcached-0.32/docs/memcached_auto.pod", "ext/libmemcached-0.32/docs/memcached_behavior.pod", "ext/libmemcached-0.32/docs/memcached_callback.pod", "ext/libmemcached-0.32/docs/memcached_create.pod", "ext/libmemcached-0.32/docs/memcached_delete.pod", "ext/libmemcached-0.32/docs/memcached_dump.pod", "ext/libmemcached-0.32/docs/memcached_flush.pod", "ext/libmemcached-0.32/docs/memcached_flush_buffers.pod", "ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod", "ext/libmemcached-0.32/docs/memcached_get.pod", "ext/libmemcached-0.32/docs/memcached_memory_allocators.pod", "ext/libmemcached-0.32/docs/memcached_pool.pod", "ext/libmemcached-0.32/docs/memcached_quit.pod", "ext/libmemcached-0.32/docs/memcached_sasl.pod", "ext/libmemcached-0.32/docs/memcached_server_st.pod", "ext/libmemcached-0.32/docs/memcached_servers.pod", "ext/libmemcached-0.32/docs/memcached_set.pod", "ext/libmemcached-0.32/docs/memcached_stats.pod", "ext/libmemcached-0.32/docs/memcached_strerror.pod", "ext/libmemcached-0.32/docs/memcached_user_data.pod", "ext/libmemcached-0.32/docs/memcached_verbosity.pod", "ext/libmemcached-0.32/docs/memcached_version.pod", "ext/libmemcached-0.32/docs/memcat.pod", "ext/libmemcached-0.32/docs/memcp.pod", "ext/libmemcached-0.32/docs/memdump.pod", "ext/libmemcached-0.32/docs/memerror.pod", "ext/libmemcached-0.32/docs/memflush.pod", "ext/libmemcached-0.32/docs/memrm.pod", "ext/libmemcached-0.32/docs/memslap.pod", "ext/libmemcached-0.32/docs/memstat.pod", "ext/libmemcached-0.32/libmemcached/Makefile.am", "ext/libmemcached-0.32/libmemcached/Makefile.in", "ext/libmemcached-0.32/libmemcached/byteorder.c", "ext/libmemcached-0.32/libmemcached/common.h", "ext/libmemcached-0.32/libmemcached/crc.c", "ext/libmemcached-0.32/libmemcached/hsieh_hash.c", "ext/libmemcached-0.32/libmemcached/jenkins_hash.c", "ext/libmemcached-0.32/libmemcached/libmemcached.ver", "ext/libmemcached-0.32/libmemcached/libmemcached_probes.d", "ext/libmemcached-0.32/libmemcached/libmemcached_probes.h", "ext/libmemcached-0.32/libmemcached/md5.c", "ext/libmemcached-0.32/libmemcached/memcached.c", "ext/libmemcached-0.32/libmemcached/memcached.h", "ext/libmemcached-0.32/libmemcached/memcached.hpp", "ext/libmemcached-0.32/libmemcached/memcached/README.txt", "ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h", "ext/libmemcached-0.32/libmemcached/memcached_allocators.c", "ext/libmemcached-0.32/libmemcached/memcached_analyze.c", "ext/libmemcached-0.32/libmemcached/memcached_auto.c", "ext/libmemcached-0.32/libmemcached/memcached_behavior.c", "ext/libmemcached-0.32/libmemcached/memcached_callback.c", "ext/libmemcached-0.32/libmemcached/memcached_configure.h.in", "ext/libmemcached-0.32/libmemcached/memcached_connect.c", "ext/libmemcached-0.32/libmemcached/memcached_constants.h", "ext/libmemcached-0.32/libmemcached/memcached_delete.c", "ext/libmemcached-0.32/libmemcached/memcached_do.c", "ext/libmemcached-0.32/libmemcached/memcached_dump.c", "ext/libmemcached-0.32/libmemcached/memcached_fetch.c", "ext/libmemcached-0.32/libmemcached/memcached_flush.c", "ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c", "ext/libmemcached-0.32/libmemcached/memcached_get.c", "ext/libmemcached-0.32/libmemcached/memcached_get.h", "ext/libmemcached-0.32/libmemcached/memcached_hash.c", "ext/libmemcached-0.32/libmemcached/memcached_hosts.c", "ext/libmemcached-0.32/libmemcached/memcached_internal.h", "ext/libmemcached-0.32/libmemcached/memcached_io.c", "ext/libmemcached-0.32/libmemcached/memcached_io.h", "ext/libmemcached-0.32/libmemcached/memcached_key.c", "ext/libmemcached-0.32/libmemcached/memcached_parse.c", "ext/libmemcached-0.32/libmemcached/memcached_pool.h", "ext/libmemcached-0.32/libmemcached/memcached_purge.c", "ext/libmemcached-0.32/libmemcached/memcached_quit.c", "ext/libmemcached-0.32/libmemcached/memcached_response.c", "ext/libmemcached-0.32/libmemcached/memcached_result.c", "ext/libmemcached-0.32/libmemcached/memcached_result.h", "ext/libmemcached-0.32/libmemcached/memcached_sasl.c", "ext/libmemcached-0.32/libmemcached/memcached_sasl.h", "ext/libmemcached-0.32/libmemcached/memcached_server.c", "ext/libmemcached-0.32/libmemcached/memcached_server.h", "ext/libmemcached-0.32/libmemcached/memcached_stats.c", "ext/libmemcached-0.32/libmemcached/memcached_storage.c", "ext/libmemcached-0.32/libmemcached/memcached_storage.h", "ext/libmemcached-0.32/libmemcached/memcached_strerror.c", "ext/libmemcached-0.32/libmemcached/memcached_string.c", "ext/libmemcached-0.32/libmemcached/memcached_string.h", "ext/libmemcached-0.32/libmemcached/memcached_touch.c", "ext/libmemcached-0.32/libmemcached/memcached_touch.h", "ext/libmemcached-0.32/libmemcached/memcached_types.h", "ext/libmemcached-0.32/libmemcached/memcached_util.h", "ext/libmemcached-0.32/libmemcached/memcached_verbosity.c", "ext/libmemcached-0.32/libmemcached/memcached_version.c", "ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h", "ext/libmemcached-0.32/libmemcached/murmur_hash.c", "ext/libmemcached-0.32/libmemcached/visibility.h", "ext/libmemcached-0.32/libmemcachedutil/Makefile.am", "ext/libmemcached-0.32/libmemcachedutil/Makefile.in", "ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver", "ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c", "ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4", "ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4", "ext/libmemcached-0.32/m4/aclocal.m4", "ext/libmemcached-0.32/m4/acx_pthread.m4", "ext/libmemcached-0.32/m4/byteorder.m4", "ext/libmemcached-0.32/m4/deprecated.m4", "ext/libmemcached-0.32/m4/enable_utillib.m4", "ext/libmemcached-0.32/m4/extensions.m4", "ext/libmemcached-0.32/m4/hsieh.m4", "ext/libmemcached-0.32/m4/lib-prefix.m4", "ext/libmemcached-0.32/m4/libtool.m4", "ext/libmemcached-0.32/m4/ltoptions.m4", "ext/libmemcached-0.32/m4/ltsugar.m4", "ext/libmemcached-0.32/m4/ltversion.m4", "ext/libmemcached-0.32/m4/lt~obsolete.m4", "ext/libmemcached-0.32/m4/memcached.m4", "ext/libmemcached-0.32/m4/pandora_64bit.m4", "ext/libmemcached-0.32/m4/pandora_canonical.m4", "ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4", "ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4", "ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4", "ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4", "ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4", "ext/libmemcached-0.32/m4/pandora_have_sasl.m4", "ext/libmemcached-0.32/m4/pandora_header_assert.m4", "ext/libmemcached-0.32/m4/pandora_libtool.m4", "ext/libmemcached-0.32/m4/pandora_optimize.m4", "ext/libmemcached-0.32/m4/pandora_shared_ptr.m4", "ext/libmemcached-0.32/m4/pandora_vc_build.m4", "ext/libmemcached-0.32/m4/pandora_warnings.m4", "ext/libmemcached-0.32/m4/pod2man.m4", "ext/libmemcached-0.32/m4/protocol_binary.m4", "ext/libmemcached-0.32/m4/setsockopt.m4", "ext/libmemcached-0.32/m4/visibility.m4", "ext/libmemcached-0.32/support/Makefile.am", "ext/libmemcached-0.32/support/Makefile.in", "ext/libmemcached-0.32/support/libmemcached-fc.spec.in", "ext/libmemcached-0.32/support/libmemcached.pc.in", "ext/libmemcached-0.32/support/libmemcached.spec", "ext/libmemcached-0.32/support/libmemcached.spec.in", "ext/libmemcached-0.32/support/set_benchmark.sh", "ext/libmemcached-0.32/tests/Makefile.am", "ext/libmemcached-0.32/tests/Makefile.in", "ext/libmemcached-0.32/tests/atomsmasher.c", "ext/libmemcached-0.32/tests/function.c", "ext/libmemcached-0.32/tests/ketama_test_cases.h", "ext/libmemcached-0.32/tests/output.cmp", "ext/libmemcached-0.32/tests/output.res", "ext/libmemcached-0.32/tests/output2.res", "ext/libmemcached-0.32/tests/plus.cpp", "ext/libmemcached-0.32/tests/r/memcat.res", "ext/libmemcached-0.32/tests/r/memcp.res", "ext/libmemcached-0.32/tests/r/memrm.res", "ext/libmemcached-0.32/tests/r/memslap.res", "ext/libmemcached-0.32/tests/r/memstat.res", "ext/libmemcached-0.32/tests/server.c", "ext/libmemcached-0.32/tests/server.h", "ext/libmemcached-0.32/tests/start.c", "ext/libmemcached-0.32/tests/t/memcat.test", "ext/libmemcached-0.32/tests/t/memcp.test", "ext/libmemcached-0.32/tests/t/memrm.test", "ext/libmemcached-0.32/tests/t/memslap.test", "ext/libmemcached-0.32/tests/t/memstat.test", "ext/libmemcached-0.32/tests/test.c", "ext/libmemcached-0.32/tests/test.h", "ext/libmemcached-0.32/tests/udp.c", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "test/profile/benchmark.rb", "test/profile/c_profiler.rb", "test/profile/exercise.rb", "test/profile/rb_profiler.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb", "memcached.gemspec"]
|
|
16
|
-
s.homepage =
|
|
17
|
-
s.rdoc_options = [
|
|
18
|
-
s.require_paths = [
|
|
19
|
-
s.rubyforge_project =
|
|
20
|
-
s.rubygems_version =
|
|
21
|
-
s.signing_key =
|
|
22
|
-
s.summary =
|
|
23
|
-
s.test_files = [
|
|
8
|
+
s.authors = [%q{Evan Weaver}]
|
|
9
|
+
s.cert_chain = [%q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem}]
|
|
10
|
+
s.date = %q{2012-02-27}
|
|
11
|
+
s.description = %q{An interface to the libmemcached C client.}
|
|
12
|
+
s.email = %q{}
|
|
13
|
+
s.extensions = [%q{ext/extconf.rb}]
|
|
14
|
+
s.extra_rdoc_files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{README.rdoc}, %q{TODO}, %q{ext/libmemcached-0.32/README}, %q{ext/libmemcached-0.32/TODO}, %q{ext/libmemcached-0.32/libmemcached/memcached/README.txt}, %q{lib/memcached.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}]
|
|
15
|
+
s.files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README.rdoc}, %q{Rakefile}, %q{TODO}, %q{ext/extconf-make.rb}, %q{ext/extconf.rb}, %q{ext/libmemcached-0.32/AUTHORS}, %q{ext/libmemcached-0.32/COPYING}, %q{ext/libmemcached-0.32/ChangeLog}, %q{ext/libmemcached-0.32/INSTALL}, %q{ext/libmemcached-0.32/Makefile.am}, %q{ext/libmemcached-0.32/Makefile.in}, %q{ext/libmemcached-0.32/NEWS}, %q{ext/libmemcached-0.32/README}, %q{ext/libmemcached-0.32/THANKS}, %q{ext/libmemcached-0.32/TODO}, %q{ext/libmemcached-0.32/aclocal.m4}, %q{ext/libmemcached-0.32/clients/Makefile.am}, %q{ext/libmemcached-0.32/clients/Makefile.in}, %q{ext/libmemcached-0.32/clients/client_options.h}, %q{ext/libmemcached-0.32/clients/execute.c}, %q{ext/libmemcached-0.32/clients/execute.h}, %q{ext/libmemcached-0.32/clients/generator.c}, %q{ext/libmemcached-0.32/clients/generator.h}, %q{ext/libmemcached-0.32/clients/memcat.c}, %q{ext/libmemcached-0.32/clients/memcp.c}, %q{ext/libmemcached-0.32/clients/memdump.c}, %q{ext/libmemcached-0.32/clients/memerror.c}, %q{ext/libmemcached-0.32/clients/memflush.c}, %q{ext/libmemcached-0.32/clients/memrm.c}, %q{ext/libmemcached-0.32/clients/memslap.c}, %q{ext/libmemcached-0.32/clients/memstat.c}, %q{ext/libmemcached-0.32/clients/utilities.c}, %q{ext/libmemcached-0.32/clients/utilities.h}, %q{ext/libmemcached-0.32/config.h.in}, %q{ext/libmemcached-0.32/config/compile}, %q{ext/libmemcached-0.32/config/config.guess}, %q{ext/libmemcached-0.32/config/config.rpath}, %q{ext/libmemcached-0.32/config/config.sub}, %q{ext/libmemcached-0.32/config/depcomp}, %q{ext/libmemcached-0.32/config/install-sh}, %q{ext/libmemcached-0.32/config/ltmain.sh}, %q{ext/libmemcached-0.32/config/missing}, %q{ext/libmemcached-0.32/configure}, %q{ext/libmemcached-0.32/configure.ac}, %q{ext/libmemcached-0.32/docs/Makefile.am}, %q{ext/libmemcached-0.32/docs/Makefile.in}, %q{ext/libmemcached-0.32/docs/libmemcached.pod}, %q{ext/libmemcached-0.32/docs/libmemcached_examples.pod}, %q{ext/libmemcached-0.32/docs/libmemcachedutil.pod}, %q{ext/libmemcached-0.32/docs/memcached_analyze.pod}, %q{ext/libmemcached-0.32/docs/memcached_auto.pod}, %q{ext/libmemcached-0.32/docs/memcached_behavior.pod}, %q{ext/libmemcached-0.32/docs/memcached_callback.pod}, %q{ext/libmemcached-0.32/docs/memcached_create.pod}, %q{ext/libmemcached-0.32/docs/memcached_delete.pod}, %q{ext/libmemcached-0.32/docs/memcached_dump.pod}, %q{ext/libmemcached-0.32/docs/memcached_flush.pod}, %q{ext/libmemcached-0.32/docs/memcached_flush_buffers.pod}, %q{ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod}, %q{ext/libmemcached-0.32/docs/memcached_get.pod}, %q{ext/libmemcached-0.32/docs/memcached_memory_allocators.pod}, %q{ext/libmemcached-0.32/docs/memcached_pool.pod}, %q{ext/libmemcached-0.32/docs/memcached_quit.pod}, %q{ext/libmemcached-0.32/docs/memcached_sasl.pod}, %q{ext/libmemcached-0.32/docs/memcached_server_st.pod}, %q{ext/libmemcached-0.32/docs/memcached_servers.pod}, %q{ext/libmemcached-0.32/docs/memcached_set.pod}, %q{ext/libmemcached-0.32/docs/memcached_stats.pod}, %q{ext/libmemcached-0.32/docs/memcached_strerror.pod}, %q{ext/libmemcached-0.32/docs/memcached_user_data.pod}, %q{ext/libmemcached-0.32/docs/memcached_verbosity.pod}, %q{ext/libmemcached-0.32/docs/memcached_version.pod}, %q{ext/libmemcached-0.32/docs/memcat.pod}, %q{ext/libmemcached-0.32/docs/memcp.pod}, %q{ext/libmemcached-0.32/docs/memdump.pod}, %q{ext/libmemcached-0.32/docs/memerror.pod}, %q{ext/libmemcached-0.32/docs/memflush.pod}, %q{ext/libmemcached-0.32/docs/memrm.pod}, %q{ext/libmemcached-0.32/docs/memslap.pod}, %q{ext/libmemcached-0.32/docs/memstat.pod}, %q{ext/libmemcached-0.32/libmemcached/Makefile.am}, %q{ext/libmemcached-0.32/libmemcached/Makefile.in}, %q{ext/libmemcached-0.32/libmemcached/byteorder.c}, %q{ext/libmemcached-0.32/libmemcached/common.h}, %q{ext/libmemcached-0.32/libmemcached/crc.c}, %q{ext/libmemcached-0.32/libmemcached/hsieh_hash.c}, %q{ext/libmemcached-0.32/libmemcached/jenkins_hash.c}, %q{ext/libmemcached-0.32/libmemcached/libmemcached.ver}, %q{ext/libmemcached-0.32/libmemcached/libmemcached_probes.d}, %q{ext/libmemcached-0.32/libmemcached/libmemcached_probes.h}, %q{ext/libmemcached-0.32/libmemcached/md5.c}, %q{ext/libmemcached-0.32/libmemcached/memcached.c}, %q{ext/libmemcached-0.32/libmemcached/memcached.h}, %q{ext/libmemcached-0.32/libmemcached/memcached.hpp}, %q{ext/libmemcached-0.32/libmemcached/memcached/README.txt}, %q{ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_allocators.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_analyze.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_auto.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_behavior.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_callback.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_configure.h.in}, %q{ext/libmemcached-0.32/libmemcached/memcached_connect.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_constants.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_delete.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_do.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_dump.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_fetch.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_flush.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_get.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_get.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_hash.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_hosts.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_internal.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_io.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_io.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_key.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_parse.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_pool.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_purge.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_quit.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_response.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_result.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_result.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_sasl.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_sasl.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_server.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_server.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_stats.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_storage.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_storage.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_strerror.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_string.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_string.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_touch.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_touch.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_types.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_util.h}, %q{ext/libmemcached-0.32/libmemcached/memcached_verbosity.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_version.c}, %q{ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h}, %q{ext/libmemcached-0.32/libmemcached/murmur_hash.c}, %q{ext/libmemcached-0.32/libmemcached/visibility.h}, %q{ext/libmemcached-0.32/libmemcachedutil/Makefile.am}, %q{ext/libmemcached-0.32/libmemcachedutil/Makefile.in}, %q{ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver}, %q{ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c}, %q{ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4}, %q{ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4}, %q{ext/libmemcached-0.32/m4/aclocal.m4}, %q{ext/libmemcached-0.32/m4/acx_pthread.m4}, %q{ext/libmemcached-0.32/m4/byteorder.m4}, %q{ext/libmemcached-0.32/m4/deprecated.m4}, %q{ext/libmemcached-0.32/m4/enable_utillib.m4}, %q{ext/libmemcached-0.32/m4/extensions.m4}, %q{ext/libmemcached-0.32/m4/hsieh.m4}, %q{ext/libmemcached-0.32/m4/lib-prefix.m4}, %q{ext/libmemcached-0.32/m4/libtool.m4}, %q{ext/libmemcached-0.32/m4/ltoptions.m4}, %q{ext/libmemcached-0.32/m4/ltsugar.m4}, %q{ext/libmemcached-0.32/m4/ltversion.m4}, %q{ext/libmemcached-0.32/m4/lt~obsolete.m4}, %q{ext/libmemcached-0.32/m4/memcached.m4}, %q{ext/libmemcached-0.32/m4/pandora_64bit.m4}, %q{ext/libmemcached-0.32/m4/pandora_canonical.m4}, %q{ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4}, %q{ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4}, %q{ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4}, %q{ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4}, %q{ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4}, %q{ext/libmemcached-0.32/m4/pandora_have_sasl.m4}, %q{ext/libmemcached-0.32/m4/pandora_header_assert.m4}, %q{ext/libmemcached-0.32/m4/pandora_libtool.m4}, %q{ext/libmemcached-0.32/m4/pandora_optimize.m4}, %q{ext/libmemcached-0.32/m4/pandora_shared_ptr.m4}, %q{ext/libmemcached-0.32/m4/pandora_vc_build.m4}, %q{ext/libmemcached-0.32/m4/pandora_warnings.m4}, %q{ext/libmemcached-0.32/m4/pod2man.m4}, %q{ext/libmemcached-0.32/m4/protocol_binary.m4}, %q{ext/libmemcached-0.32/m4/setsockopt.m4}, %q{ext/libmemcached-0.32/m4/visibility.m4}, %q{ext/libmemcached-0.32/support/Makefile.am}, %q{ext/libmemcached-0.32/support/Makefile.in}, %q{ext/libmemcached-0.32/support/libmemcached-fc.spec.in}, %q{ext/libmemcached-0.32/support/libmemcached.pc.in}, %q{ext/libmemcached-0.32/support/libmemcached.spec}, %q{ext/libmemcached-0.32/support/libmemcached.spec.in}, %q{ext/libmemcached-0.32/support/set_benchmark.sh}, %q{ext/libmemcached-0.32/tests/Makefile.am}, %q{ext/libmemcached-0.32/tests/Makefile.in}, %q{ext/libmemcached-0.32/tests/atomsmasher.c}, %q{ext/libmemcached-0.32/tests/function.c}, %q{ext/libmemcached-0.32/tests/ketama_test_cases.h}, %q{ext/libmemcached-0.32/tests/output.cmp}, %q{ext/libmemcached-0.32/tests/output.res}, %q{ext/libmemcached-0.32/tests/output2.res}, %q{ext/libmemcached-0.32/tests/plus.cpp}, %q{ext/libmemcached-0.32/tests/r/memcat.res}, %q{ext/libmemcached-0.32/tests/r/memcp.res}, %q{ext/libmemcached-0.32/tests/r/memrm.res}, %q{ext/libmemcached-0.32/tests/r/memslap.res}, %q{ext/libmemcached-0.32/tests/r/memstat.res}, %q{ext/libmemcached-0.32/tests/server.c}, %q{ext/libmemcached-0.32/tests/server.h}, %q{ext/libmemcached-0.32/tests/start.c}, %q{ext/libmemcached-0.32/tests/t/memcat.test}, %q{ext/libmemcached-0.32/tests/t/memcp.test}, %q{ext/libmemcached-0.32/tests/t/memrm.test}, %q{ext/libmemcached-0.32/tests/t/memslap.test}, %q{ext/libmemcached-0.32/tests/t/memstat.test}, %q{ext/libmemcached-0.32/tests/test.c}, %q{ext/libmemcached-0.32/tests/test.h}, %q{ext/libmemcached-0.32/tests/udp.c}, %q{ext/rlibmemcached.i}, %q{ext/rlibmemcached_wrap.c}, %q{lib/memcached.rb}, %q{lib/memcached/auth.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}, %q{test/profile/benchmark.rb}, %q{test/profile/c_profiler.rb}, %q{test/profile/exercise.rb}, %q{test/profile/rb_profiler.rb}, %q{test/profile/valgrind.rb}, %q{test/setup.rb}, %q{test/teardown.rb}, %q{test/test_helper.rb}, %q{test/unit/binding_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/rails_test.rb}, %q{memcached.gemspec}]
|
|
16
|
+
s.homepage = %q{http://evan.github.com/evan/memcached/}
|
|
17
|
+
s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Memcached}, %q{--main}, %q{README.rdoc}, %q{--exclude=ext/bin}, %q{--exclude=ext/libmemcached-.*/(clients|tests)}]
|
|
18
|
+
s.require_paths = [%q{lib}, %q{ext}]
|
|
19
|
+
s.rubyforge_project = %q{evan}
|
|
20
|
+
s.rubygems_version = %q{1.8.6}
|
|
21
|
+
s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
|
|
22
|
+
s.summary = %q{An interface to the libmemcached C client.}
|
|
23
|
+
s.test_files = [%q{test/test_helper.rb}, %q{test/unit/binding_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/rails_test.rb}]
|
|
24
24
|
|
|
25
25
|
if s.respond_to? :specification_version then
|
|
26
26
|
s.specification_version = 3
|
|
@@ -60,7 +60,7 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def test_get_len
|
|
63
|
-
server_get_len_capable
|
|
63
|
+
server_get_len_capable do
|
|
64
64
|
value = "foobar"
|
|
65
65
|
@experimental_cache.set key, value, 0, false
|
|
66
66
|
result = @experimental_cache.get_len 1, key
|
|
@@ -82,52 +82,52 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
82
82
|
result = @experimental_cache.get_len 32, key
|
|
83
83
|
assert_equal result.size, 6
|
|
84
84
|
assert_equal result, value
|
|
85
|
-
|
|
85
|
+
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
def test_get_len_0_failure
|
|
89
|
-
server_get_len_capable
|
|
89
|
+
server_get_len_capable do
|
|
90
90
|
value = "Test that we cannot get 0 bytes with a get_len call."
|
|
91
91
|
@experimental_cache.set key, value, 0, false
|
|
92
92
|
assert_raises(Memcached::Failure) do
|
|
93
93
|
result = @experimental_cache.get_len 0, key
|
|
94
94
|
end
|
|
95
|
-
|
|
95
|
+
end
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def test_get_len_large
|
|
99
|
-
server_get_len_capable
|
|
99
|
+
server_get_len_capable do
|
|
100
100
|
value = "Test that we can get the first 20 bytes of a string"
|
|
101
101
|
@experimental_cache.set key, value, 0, false
|
|
102
102
|
result = @experimental_cache.get_len 20, key
|
|
103
103
|
assert_equal result.size, 20
|
|
104
104
|
assert_equal result, value[0..19]
|
|
105
|
-
|
|
105
|
+
end
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
def test_get_len_packed
|
|
109
|
-
server_get_len_capable
|
|
109
|
+
server_get_len_capable do
|
|
110
110
|
value = [1, 2, 3, 4].pack("Q*")
|
|
111
111
|
@experimental_cache.set key, value, 0, false
|
|
112
112
|
result = @experimental_cache.get_len 8, key
|
|
113
113
|
assert_equal [1], result.unpack("Q*")
|
|
114
|
-
|
|
114
|
+
end
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
# get_len is not supported when using the binary protocol.
|
|
118
118
|
# Make sure the single get variant fails appropriately.
|
|
119
119
|
def test_get_len_binary
|
|
120
|
-
server_get_len_capable
|
|
120
|
+
server_get_len_capable do
|
|
121
121
|
@experimental_binary_protocol_cache.set key, @value
|
|
122
122
|
assert_raises(Memcached::ActionNotSupported) do
|
|
123
123
|
result = @experimental_binary_protocol_cache.get_len 2, key
|
|
124
124
|
end
|
|
125
|
-
|
|
125
|
+
end
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
# Retrieve the first 64 bits of the values for multiple keys.
|
|
129
129
|
def test_get_len_multi_packed
|
|
130
|
-
server_get_len_capable
|
|
130
|
+
server_get_len_capable do
|
|
131
131
|
key_1 = "get_len_1"
|
|
132
132
|
value_1 = [1, 2, 3].pack("Q*")
|
|
133
133
|
key_2 = "get_len_missing"
|
|
@@ -140,13 +140,13 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
140
140
|
{key_1=>value_1[0..7], key_3=>value_3[0..7]},
|
|
141
141
|
@experimental_cache.get_len(8, keys)
|
|
142
142
|
)
|
|
143
|
-
|
|
143
|
+
end
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
# Test that the entire value is passed back when the length specified
|
|
147
147
|
# is larger than any of the values (e.g., 32 in the case below).
|
|
148
148
|
def test_get_len_multi_packed_full
|
|
149
|
-
server_get_len_capable
|
|
149
|
+
server_get_len_capable do
|
|
150
150
|
key_1 = "get_len_1"
|
|
151
151
|
value_1 = [1, 2, 3].pack("Q*")
|
|
152
152
|
key_2 = "get_len_missing"
|
|
@@ -159,13 +159,13 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
159
159
|
{key_1=>value_1, key_3=>value_3},
|
|
160
160
|
@experimental_cache.get_len(32, keys)
|
|
161
161
|
)
|
|
162
|
-
|
|
162
|
+
end
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
# get_len is not supported when using the binary protocol.
|
|
166
166
|
# Test that the multi get variant fails appropriately.
|
|
167
167
|
def test_get_len_multi_packed_binary
|
|
168
|
-
server_get_len_capable
|
|
168
|
+
server_get_len_capable do
|
|
169
169
|
key_1 = "get_len_1"
|
|
170
170
|
value_1 = [1, 2, 3].pack("Q*")
|
|
171
171
|
key_2 = "get_len_2"
|
|
@@ -176,63 +176,63 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
176
176
|
assert_raises(Memcached::ActionNotSupported) do
|
|
177
177
|
result = @experimental_binary_protocol_cache.get_len 2, keys
|
|
178
178
|
end
|
|
179
|
-
|
|
179
|
+
end
|
|
180
180
|
end
|
|
181
181
|
|
|
182
182
|
def test_get_len_multi_completely_missing
|
|
183
|
-
server_get_len_capable
|
|
183
|
+
server_get_len_capable do
|
|
184
184
|
@experimental_cache.delete "#{key}_1" rescue nil
|
|
185
185
|
@experimental_cache.delete "#{key}_2" rescue nil
|
|
186
186
|
assert_equal(
|
|
187
187
|
{},
|
|
188
188
|
@experimental_cache.get_len(1, ["#{key}_1", "#{key}_2"])
|
|
189
189
|
)
|
|
190
|
-
|
|
190
|
+
end
|
|
191
191
|
end
|
|
192
192
|
|
|
193
193
|
def test_get_len_failure
|
|
194
|
-
server_get_len_capable
|
|
194
|
+
server_get_len_capable do
|
|
195
195
|
value = "Test that we cannot use get_len without setting the :experimental_features config."
|
|
196
196
|
assert_raises(NoMethodError) do
|
|
197
197
|
result = @cache.get_len 10, key
|
|
198
198
|
end
|
|
199
|
-
|
|
199
|
+
end
|
|
200
200
|
end
|
|
201
201
|
|
|
202
202
|
def test_cas
|
|
203
|
-
server_get_len_capable
|
|
203
|
+
server_get_len_capable do
|
|
204
204
|
# Get the first three chars of the value back.
|
|
205
205
|
@experimental_cas_cache.set(key, "foo_bar", 0, false)
|
|
206
206
|
assert_equal "foo", @experimental_cas_cache.get_len(3, key)
|
|
207
207
|
assert_equal "foo_bar", @experimental_cas_cache.get_len(7, key)
|
|
208
|
-
|
|
208
|
+
end
|
|
209
209
|
end
|
|
210
210
|
|
|
211
211
|
# Touch command
|
|
212
212
|
|
|
213
213
|
def test_touch_capability
|
|
214
|
-
server_touch_capable
|
|
215
|
-
@
|
|
214
|
+
server_touch_capable do
|
|
215
|
+
@experimental_binary_protocol_cache.set(key, "value", 10)
|
|
216
216
|
assert_nothing_raised do
|
|
217
|
-
@experimental_binary_protocol_cache.touch(key,
|
|
217
|
+
@experimental_binary_protocol_cache.touch(key, 20)
|
|
218
218
|
end
|
|
219
219
|
assert_raises(Memcached::ActionNotSupported) do
|
|
220
220
|
@experimental_cache.touch(key, 10)
|
|
221
221
|
end
|
|
222
|
-
|
|
222
|
+
end
|
|
223
223
|
end
|
|
224
224
|
|
|
225
225
|
def test_touch_missing_key
|
|
226
|
-
server_touch_capable
|
|
226
|
+
server_touch_capable do
|
|
227
227
|
@experimental_binary_protocol_cache.delete key rescue nil
|
|
228
228
|
assert_raises(Memcached::NotFound) do
|
|
229
229
|
@experimental_binary_protocol_cache.touch(key, 10)
|
|
230
230
|
end
|
|
231
|
-
|
|
231
|
+
end
|
|
232
232
|
end
|
|
233
233
|
|
|
234
234
|
def test_touch
|
|
235
|
-
server_touch_capable
|
|
235
|
+
server_touch_capable do
|
|
236
236
|
@experimental_binary_protocol_cache.set key, @value, 2
|
|
237
237
|
assert_equal @value, @experimental_binary_protocol_cache.get(key)
|
|
238
238
|
sleep(1)
|
|
@@ -244,7 +244,7 @@ class MemcachedExperimentalTest < Test::Unit::TestCase
|
|
|
244
244
|
assert_raises(Memcached::NotFound) do
|
|
245
245
|
@experimental_binary_protocol_cache.get(key)
|
|
246
246
|
end
|
|
247
|
-
|
|
247
|
+
end
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
# Memory cleanup
|
data/test/unit/rails_test.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
|
|
3
|
+
require 'active_support/duration'
|
|
3
4
|
|
|
4
5
|
class RailsTest < Test::Unit::TestCase
|
|
5
6
|
|
|
6
7
|
def setup
|
|
7
8
|
@servers = ['127.0.0.1:43042', '127.0.0.1:43043', "#{UNIX_SOCKET_NAME}0"]
|
|
9
|
+
@duration = ActiveSupport::Duration.new(2592000, [[:months, 1]])
|
|
8
10
|
@namespace = 'rails_test'
|
|
9
11
|
@cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace)
|
|
10
12
|
@value = OpenStruct.new(:a => 1, :b => 2, :c => GenericClass)
|
|
@@ -18,6 +20,7 @@ class RailsTest < Test::Unit::TestCase
|
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def test_exist
|
|
23
|
+
@cache.delete(key)
|
|
21
24
|
assert !@cache.exist?(key)
|
|
22
25
|
@cache.set key, nil
|
|
23
26
|
assert @cache.exist?(key)
|
|
@@ -115,10 +118,70 @@ class RailsTest < Test::Unit::TestCase
|
|
|
115
118
|
assert_equal @namespace, @cache.namespace
|
|
116
119
|
end
|
|
117
120
|
|
|
121
|
+
def test_active
|
|
122
|
+
assert @cache.active?
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_servers
|
|
126
|
+
compare_servers @cache, @servers
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_servers_alive
|
|
130
|
+
@cache.servers.each do |server|
|
|
131
|
+
assert server.alive?
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_set_servers
|
|
136
|
+
cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace)
|
|
137
|
+
compare_servers cache, @servers
|
|
138
|
+
cache.set_servers cache.servers
|
|
139
|
+
cache = Memcached::Rails.new(:servers => @servers.first, :namespace => @namespace)
|
|
140
|
+
cache.set_servers @servers.first
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def test_cas_with_duration
|
|
144
|
+
cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace, :support_cas => true)
|
|
145
|
+
value2 = OpenStruct.new(:d => 3, :e => 4, :f => GenericClass)
|
|
146
|
+
cache.set key, @value
|
|
147
|
+
cache.cas(key, @duration) do |current|
|
|
148
|
+
assert_equal @value, current
|
|
149
|
+
value2
|
|
150
|
+
end
|
|
151
|
+
assert_equal value2, cache.get(key)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def test_set_with_duration
|
|
155
|
+
@cache.set key, @value, @duration
|
|
156
|
+
result = @cache.get key
|
|
157
|
+
assert_equal @value, result
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_set_with_invalid_type
|
|
161
|
+
assert_raises(TypeError) do
|
|
162
|
+
@cache.set key, Object.new, 0, true
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def test_write_with_duration
|
|
167
|
+
@cache.write key, @value, :ttl => @duration
|
|
168
|
+
result = @cache.get key
|
|
169
|
+
assert_equal @value, result
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def test_add_with_duration
|
|
173
|
+
@cache.add key, @value, @duration
|
|
174
|
+
result = @cache.get key
|
|
175
|
+
assert_equal @value, result
|
|
176
|
+
end
|
|
177
|
+
|
|
118
178
|
private
|
|
119
179
|
|
|
120
180
|
def key
|
|
121
181
|
caller.first[/.*[` ](.*)'/, 1] # '
|
|
122
182
|
end
|
|
123
183
|
|
|
184
|
+
def compare_servers(cache, servers)
|
|
185
|
+
cache.servers.map{|s| "#{s.hostname}:#{s.port}".chomp(':0')} == servers
|
|
186
|
+
end
|
|
124
187
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: memcached
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -50,7 +50,7 @@ cert_chain:
|
|
|
50
50
|
-----END CERTIFICATE-----
|
|
51
51
|
|
|
52
52
|
'
|
|
53
|
-
date: 2012-02-
|
|
53
|
+
date: 2012-02-27 00:00:00.000000000Z
|
|
54
54
|
dependencies: []
|
|
55
55
|
description: An interface to the libmemcached C client.
|
|
56
56
|
email: ''
|
|
@@ -313,7 +313,7 @@ files:
|
|
|
313
313
|
- test/unit/memcached_test.rb
|
|
314
314
|
- test/unit/rails_test.rb
|
|
315
315
|
- memcached.gemspec
|
|
316
|
-
homepage: http://
|
|
316
|
+
homepage: http://evan.github.com/evan/memcached/
|
|
317
317
|
licenses: []
|
|
318
318
|
post_install_message:
|
|
319
319
|
rdoc_options:
|
|
@@ -341,8 +341,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
341
341
|
- !ruby/object:Gem::Version
|
|
342
342
|
version: '1.2'
|
|
343
343
|
requirements: []
|
|
344
|
-
rubyforge_project:
|
|
345
|
-
rubygems_version: 1.8.
|
|
344
|
+
rubyforge_project: evan
|
|
345
|
+
rubygems_version: 1.8.6
|
|
346
346
|
signing_key:
|
|
347
347
|
specification_version: 3
|
|
348
348
|
summary: An interface to the libmemcached C client.
|
metadata.gz.sig
CHANGED
|
Binary file
|