vinted-memcached 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. checksums.yaml +7 -0
  2. data/BENCHMARKS +142 -0
  3. data/CHANGELOG +176 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +45 -0
  6. data/LICENSE +184 -0
  7. data/Manifest +209 -0
  8. data/README.rdoc +124 -0
  9. data/Rakefile +134 -0
  10. data/TODO +1 -0
  11. data/ext/extconf-make.rb +25 -0
  12. data/ext/extconf.rb +78 -0
  13. data/ext/libmemcached-0.32/AUTHORS +7 -0
  14. data/ext/libmemcached-0.32/COPYING +32 -0
  15. data/ext/libmemcached-0.32/ChangeLog +303 -0
  16. data/ext/libmemcached-0.32/INSTALL +302 -0
  17. data/ext/libmemcached-0.32/Makefile.am +36 -0
  18. data/ext/libmemcached-0.32/Makefile.in +911 -0
  19. data/ext/libmemcached-0.32/NEWS +1 -0
  20. data/ext/libmemcached-0.32/README +33 -0
  21. data/ext/libmemcached-0.32/THANKS +14 -0
  22. data/ext/libmemcached-0.32/TODO +11 -0
  23. data/ext/libmemcached-0.32/aclocal.m4 +2108 -0
  24. data/ext/libmemcached-0.32/clients/Makefile.am +80 -0
  25. data/ext/libmemcached-0.32/clients/Makefile.in +773 -0
  26. data/ext/libmemcached-0.32/clients/client_options.h +32 -0
  27. data/ext/libmemcached-0.32/clients/execute.c +64 -0
  28. data/ext/libmemcached-0.32/clients/execute.h +5 -0
  29. data/ext/libmemcached-0.32/clients/generator.c +74 -0
  30. data/ext/libmemcached-0.32/clients/generator.h +20 -0
  31. data/ext/libmemcached-0.32/clients/memcat.c +178 -0
  32. data/ext/libmemcached-0.32/clients/memcp.c +251 -0
  33. data/ext/libmemcached-0.32/clients/memdump.c +170 -0
  34. data/ext/libmemcached-0.32/clients/memerror.c +80 -0
  35. data/ext/libmemcached-0.32/clients/memflush.c +143 -0
  36. data/ext/libmemcached-0.32/clients/memrm.c +160 -0
  37. data/ext/libmemcached-0.32/clients/memslap.c +441 -0
  38. data/ext/libmemcached-0.32/clients/memstat.c +326 -0
  39. data/ext/libmemcached-0.32/clients/utilities.c +207 -0
  40. data/ext/libmemcached-0.32/clients/utilities.h +41 -0
  41. data/ext/libmemcached-0.32/config/compile +143 -0
  42. data/ext/libmemcached-0.32/config/config.guess +1561 -0
  43. data/ext/libmemcached-0.32/config/config.rpath +666 -0
  44. data/ext/libmemcached-0.32/config/config.sub +1686 -0
  45. data/ext/libmemcached-0.32/config/depcomp +630 -0
  46. data/ext/libmemcached-0.32/config/install-sh +520 -0
  47. data/ext/libmemcached-0.32/config/ltmain.sh +9636 -0
  48. data/ext/libmemcached-0.32/config/missing +376 -0
  49. data/ext/libmemcached-0.32/config.h.in +254 -0
  50. data/ext/libmemcached-0.32/configure +23843 -0
  51. data/ext/libmemcached-0.32/configure.ac +120 -0
  52. data/ext/libmemcached-0.32/libmemcached/Makefile.am +111 -0
  53. data/ext/libmemcached-0.32/libmemcached/Makefile.in +1069 -0
  54. data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
  55. data/ext/libmemcached-0.32/libmemcached/common.h +189 -0
  56. data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
  57. data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
  58. data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
  59. data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
  60. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +30 -0
  61. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +82 -0
  62. data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
  63. data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
  64. data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +385 -0
  65. data/ext/libmemcached-0.32/libmemcached/memcached.c +153 -0
  66. data/ext/libmemcached-0.32/libmemcached/memcached.h +305 -0
  67. data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
  68. data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
  69. data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
  70. data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
  71. data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +290 -0
  72. data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
  73. data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
  74. data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +371 -0
  75. data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +146 -0
  76. data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  77. data/ext/libmemcached-0.32/libmemcached/memcached_do.c +72 -0
  78. data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
  79. data/ext/libmemcached-0.32/libmemcached/memcached_exist.c +114 -0
  80. data/ext/libmemcached-0.32/libmemcached/memcached_exist.h +20 -0
  81. data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
  82. data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
  83. data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +23 -0
  84. data/ext/libmemcached-0.32/libmemcached/memcached_get.c +494 -0
  85. data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
  86. data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
  87. data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
  88. data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
  89. data/ext/libmemcached-0.32/libmemcached/memcached_io.c +594 -0
  90. data/ext/libmemcached-0.32/libmemcached/memcached_io.h +72 -0
  91. data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
  92. data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
  93. data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
  94. data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
  95. data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
  96. data/ext/libmemcached-0.32/libmemcached/memcached_response.c +529 -0
  97. data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
  98. data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
  99. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
  100. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
  101. data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
  102. data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
  103. data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +437 -0
  104. data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +514 -0
  105. data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
  106. data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
  107. data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
  108. data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
  109. data/ext/libmemcached-0.32/libmemcached/memcached_touch.c +60 -0
  110. data/ext/libmemcached-0.32/libmemcached/memcached_touch.h +31 -0
  111. data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
  112. data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
  113. data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
  114. data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
  115. data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
  116. data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
  117. data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
  118. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
  119. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +604 -0
  120. data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
  121. data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
  122. data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
  123. data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
  124. data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
  125. data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
  126. data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
  127. data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
  128. data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
  129. data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
  130. data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
  131. data/ext/libmemcached-0.32/m4/libtool.m4 +7831 -0
  132. data/ext/libmemcached-0.32/m4/ltoptions.m4 +369 -0
  133. data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
  134. data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
  135. data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +98 -0
  136. data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
  137. data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
  138. data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
  139. data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
  140. data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
  141. data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
  142. data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
  143. data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
  144. data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
  145. data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
  146. data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
  147. data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
  148. data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
  149. data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
  150. data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
  151. data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
  152. data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
  153. data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
  154. data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
  155. data/ext/libmemcached-0.32/support/Makefile.am +4 -0
  156. data/ext/libmemcached-0.32/support/Makefile.in +487 -0
  157. data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
  158. data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
  159. data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
  160. data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
  161. data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
  162. data/ext/libmemcached-0.32/tests/Makefile.am +113 -0
  163. data/ext/libmemcached-0.32/tests/Makefile.in +762 -0
  164. data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
  165. data/ext/libmemcached-0.32/tests/function.c +4904 -0
  166. data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
  167. data/ext/libmemcached-0.32/tests/output.cmp +7 -0
  168. data/ext/libmemcached-0.32/tests/output.res +7 -0
  169. data/ext/libmemcached-0.32/tests/output2.res +46 -0
  170. data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
  171. data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
  172. data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
  173. data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
  174. data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
  175. data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
  176. data/ext/libmemcached-0.32/tests/server.c +118 -0
  177. data/ext/libmemcached-0.32/tests/server.h +25 -0
  178. data/ext/libmemcached-0.32/tests/start.c +16 -0
  179. data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
  180. data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
  181. data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
  182. data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
  183. data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
  184. data/ext/libmemcached-0.32/tests/test.c +137 -0
  185. data/ext/libmemcached-0.32/tests/test.h +46 -0
  186. data/ext/libmemcached-0.32/tests/udp.c +76 -0
  187. data/ext/rlibmemcached.i +258 -0
  188. data/ext/rlibmemcached_wrap.c +13917 -0
  189. data/lib/memcached/auth.rb +16 -0
  190. data/lib/memcached/behaviors.rb +78 -0
  191. data/lib/memcached/exceptions.rb +84 -0
  192. data/lib/memcached/experimental.rb +48 -0
  193. data/lib/memcached/marshal_codec.rb +10 -0
  194. data/lib/memcached/memcached.rb +732 -0
  195. data/lib/memcached/rails.rb +250 -0
  196. data/lib/memcached.rb +33 -0
  197. data/memcached.gemspec +0 -0
  198. data/test/profile/benchmark.rb +280 -0
  199. data/test/profile/c_profiler.rb +14 -0
  200. data/test/profile/exercise.rb +185 -0
  201. data/test/profile/rb_profiler.rb +21 -0
  202. data/test/profile/valgrind.rb +10 -0
  203. data/test/setup.rb +30 -0
  204. data/test/teardown.rb +0 -0
  205. data/test/test_helper.rb +18 -0
  206. data/test/unit/binding_test.rb +8 -0
  207. data/test/unit/memcached_experimental_test.rb +272 -0
  208. data/test/unit/memcached_test.rb +1487 -0
  209. data/test/unit/rails_test.rb +330 -0
  210. metadata +336 -0
@@ -0,0 +1,330 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
2
+ require 'active_support/duration'
3
+ require 'logger'
4
+
5
+ class RailsTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @servers = ['127.0.0.1:43042', '127.0.0.1:43043', "#{UNIX_SOCKET_NAME}0"]
9
+ @duration = ActiveSupport::Duration.new(2592000, [[:months, 1]])
10
+ @namespace = 'rails_test'
11
+ @cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace, :logger => Logger.new(File.open("/dev/null", "w")))
12
+ @value = OpenStruct.new(:a => 1, :b => 2, :c => GenericClass)
13
+ @marshalled_value = Marshal.dump(@value)
14
+ end
15
+
16
+ def test_get
17
+ @cache.set key, @value
18
+ result = @cache.get key
19
+ assert_equal @value, result
20
+ end
21
+
22
+ def test_exist
23
+ @cache.delete(key)
24
+ assert !@cache.exist?(key)
25
+ @cache.set key, nil
26
+ assert @cache.exist?(key)
27
+ @cache.set key, @value
28
+ assert @cache.exist?(key)
29
+ end
30
+
31
+ def test_get_multi
32
+ @cache.set key, @value
33
+ assert_equal(
34
+ {key => @value},
35
+ @cache.get_multi([key]))
36
+ end
37
+
38
+ def test_get_multi_empty_string
39
+ @cache.set key, "", 0, true
40
+ assert_equal(
41
+ {key => ""},
42
+ @cache.get_multi([key], true))
43
+ end
44
+
45
+ def test_delete
46
+ @cache.set key, @value
47
+ assert_nothing_raised do
48
+ @cache.delete key
49
+ end
50
+ assert_nil(@cache.get(key))
51
+ end
52
+
53
+ def test_delete_missing
54
+ assert_nothing_raised do
55
+ @cache.delete key
56
+ assert !@cache.delete(key)
57
+ end
58
+ end
59
+
60
+ def test_delete_with_two_arguments
61
+ assert_nothing_raised do
62
+ @cache.delete(key, 5)
63
+ assert_nil(@cache.get(key))
64
+ end
65
+ end
66
+
67
+ def test_bracket_accessors
68
+ @cache[key] = @value
69
+ result = @cache[key]
70
+ assert_equal @value, result
71
+ end
72
+
73
+ def test_cas
74
+ cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace, :support_cas => true)
75
+ value2 = OpenStruct.new(:d => 3, :e => 4, :f => GenericClass)
76
+
77
+ # Existing set
78
+ cache.set key, @value
79
+ cache.cas(key) do |current|
80
+ assert_equal @value, current
81
+ value2
82
+ end
83
+ assert_equal value2, cache.get(key)
84
+
85
+ # Missing set
86
+ cache.delete key
87
+ assert_nothing_raised do
88
+ cache.cas(key) { @called = true }
89
+ end
90
+ assert_nil cache.get(key)
91
+ assert_nil @called
92
+
93
+ # Conflicting set after a gets
94
+ cache.set key, @value
95
+ assert_nothing_raised do
96
+ result = cache.cas(key) do |current|
97
+ cache.set key, value2
98
+ current
99
+ end
100
+ assert_equal result, false
101
+ end
102
+ assert_equal value2, cache.get(key)
103
+ end
104
+
105
+ def test_get_missing
106
+ @cache.delete key rescue nil
107
+ result = @cache.get key
108
+ assert_equal nil, result
109
+ end
110
+
111
+ def test_get_nil
112
+ @cache.set key, nil, 0
113
+ result = @cache.get key
114
+ assert_equal nil, result
115
+ end
116
+
117
+ def test_namespace
118
+ assert_equal @namespace, @cache.namespace
119
+ end
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_default_duration
167
+ # should be do an actual write
168
+ @cache.write key, @value
169
+ result = @cache.get key
170
+ assert_equal @value, result
171
+
172
+ # should use correct ttl
173
+ @cache = Memcached::Rails.new(:servers => @servers, :namespace => @namespace, :default_ttl => 123)
174
+ @cache.expects(:set).with(key, @value, 123, nil)
175
+ @cache.write key, @value
176
+ end
177
+
178
+ def test_write_with_duration_as_ttl
179
+ # should be do an actual write
180
+ @cache.write key, @value, :ttl => 123
181
+ result = @cache.get key
182
+ assert_equal @value, result
183
+
184
+ # should use correct ttl
185
+ @cache.expects(:set).with(key, @value, 123, nil)
186
+ @cache.write key, @value, :ttl => 123
187
+ end
188
+
189
+ def test_write_with_duration_as_expires_in
190
+ # should be do an actual write
191
+ @cache.write key, @value, :expires_in => @duration
192
+ result = @cache.get key
193
+ assert_equal @value, result
194
+
195
+ # should use correct ttl
196
+ @cache.expects(:set).with(key, @value, 123, nil)
197
+ @cache.write key, @value, :expires_in => 123
198
+ end
199
+
200
+ def test_write_with_unless_exist
201
+ @cache.write key, @value, :unless_exist => true
202
+ result = @cache.get key
203
+ assert_equal @value, result
204
+
205
+ rand_value = "rand-value-#{rand}"
206
+ @cache.write key, rand_value, :unless_exist => true
207
+
208
+ result = @cache.get key
209
+ assert_equal @value, result
210
+ end
211
+
212
+ def test_write_with_fixnum_and_raw
213
+ @cache.write key, 1, :raw => true
214
+ result = @cache.read key, :raw => true
215
+ assert_equal "1", result
216
+ end
217
+
218
+ def test_add_with_duration
219
+ @cache.add key, @value, @duration
220
+ result = @cache.get key
221
+ assert_equal @value, result
222
+ end
223
+
224
+ def test_fetch
225
+ # returns
226
+ assert_equal @value, @cache.fetch("x"){ @value }
227
+
228
+ # sets
229
+ assert_equal @value, @cache.read("x")
230
+
231
+ # reads
232
+ assert_equal @value, @cache.fetch("x"){ 1 }
233
+
234
+ # works with options
235
+ @cache.expects(:write).with("y", 1, :foo => :bar)
236
+ @cache.fetch("y", :foo => :bar){ 1 }
237
+ end
238
+
239
+ def test_fetch_when_no_block_given
240
+ rand_key = "key-#{rand}"
241
+
242
+ # gets nil the first time
243
+ assert_equal nil, @cache.fetch(rand_key)
244
+
245
+ # sets value to @value
246
+ assert_equal @value, @cache.fetch(rand_key) { @value }
247
+
248
+ # gets @value
249
+ assert_equal @value, @cache.fetch(rand_key)
250
+ end
251
+
252
+ def test_read_multi
253
+ # empty
254
+ assert_equal({}, @cache.read_multi)
255
+ assert_equal({}, @cache.read_multi("a", "b"))
256
+ assert_raise TypeError do
257
+ @cache.read_multi(["a", "b"])
258
+ end
259
+
260
+ # filled
261
+ @cache.write "a", @value
262
+ assert_equal({"a" => @value}, @cache.read_multi("a", "b"))
263
+ assert_raise TypeError do
264
+ @cache.read_multi(["a", "b"])
265
+ end
266
+
267
+ # multiple keys
268
+ @cache.write "b", 1
269
+ assert_equal({"a" => @value, "b" => 1}, @cache.read_multi("a", "b"))
270
+
271
+ # keeps order on 1.9
272
+ if RUBY_VERSION =~ /^1.9/
273
+ assert_equal ["a", "b"], @cache.read_multi("a", "b").keys
274
+ assert_equal ["b", "a"], @cache.read_multi("b", "a").keys
275
+ end
276
+ end
277
+
278
+ def test_clear
279
+ @cache.write("x", 1)
280
+ assert_equal 1, @cache.read("x")
281
+ assert_equal nil, @cache.clear
282
+ assert_equal nil, @cache.read("x")
283
+ end
284
+
285
+ def test_increment
286
+ rand_key = "rand-key-#{rand}"
287
+ assert_equal nil, @cache.increment(rand_key)
288
+
289
+ start = 10
290
+ @cache.write rand_key, start.to_s, { :raw => true }
291
+
292
+ assert_equal start, @cache.read(rand_key, { :raw => true }).to_i
293
+ assert_equal start+1, @cache.increment(rand_key)
294
+
295
+ assert_equal start+1+5, @cache.increment(rand_key, 5)
296
+ end
297
+
298
+ def test_decrement
299
+ rand_key = "rand-key-#{rand}"
300
+ assert_equal nil, @cache.decrement(rand_key)
301
+
302
+ start = 10
303
+ @cache.write rand_key, start.to_s, { :raw => true }
304
+
305
+ assert_equal start, @cache.read(rand_key, { :raw => true }).to_i
306
+ assert_equal start-1, @cache.decrement(rand_key)
307
+
308
+ assert_equal start-1-5, @cache.decrement(rand_key, 5)
309
+ end
310
+
311
+ def test_read_with_nil_options
312
+ @cache.write key, @value
313
+ assert_equal @value, @cache.read(key, nil)
314
+ end
315
+
316
+ def test_write_with_nil_options
317
+ @cache.write key, @value, nil
318
+ assert_equal @value, @cache.read(key)
319
+ end
320
+
321
+ private
322
+
323
+ def key
324
+ caller.first[/.*[` ](.*)'/, 1] # '
325
+ end
326
+
327
+ def compare_servers(cache, servers)
328
+ cache.servers.map{|s| "#{s.hostname}:#{s.port}".chomp(':0')} == servers
329
+ end
330
+ end
metadata ADDED
@@ -0,0 +1,336 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vinted-memcached
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Evan Weaver
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mocha
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: echoe
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: An interface to the libmemcached C client.
70
+ email: ''
71
+ executables: []
72
+ extensions:
73
+ - ext/extconf.rb
74
+ extra_rdoc_files:
75
+ - BENCHMARKS
76
+ - CHANGELOG
77
+ - LICENSE
78
+ - README.rdoc
79
+ - TODO
80
+ - ext/libmemcached-0.32/README
81
+ - ext/libmemcached-0.32/TODO
82
+ - ext/libmemcached-0.32/libmemcached/memcached/README.txt
83
+ - lib/memcached.rb
84
+ - lib/memcached/behaviors.rb
85
+ - lib/memcached/exceptions.rb
86
+ - lib/memcached/experimental.rb
87
+ - lib/memcached/memcached.rb
88
+ - lib/memcached/rails.rb
89
+ files:
90
+ - BENCHMARKS
91
+ - CHANGELOG
92
+ - Gemfile
93
+ - Gemfile.lock
94
+ - LICENSE
95
+ - Manifest
96
+ - README.rdoc
97
+ - Rakefile
98
+ - TODO
99
+ - ext/extconf-make.rb
100
+ - ext/extconf.rb
101
+ - ext/libmemcached-0.32/AUTHORS
102
+ - ext/libmemcached-0.32/COPYING
103
+ - ext/libmemcached-0.32/ChangeLog
104
+ - ext/libmemcached-0.32/INSTALL
105
+ - ext/libmemcached-0.32/Makefile.am
106
+ - ext/libmemcached-0.32/Makefile.in
107
+ - ext/libmemcached-0.32/NEWS
108
+ - ext/libmemcached-0.32/README
109
+ - ext/libmemcached-0.32/THANKS
110
+ - ext/libmemcached-0.32/TODO
111
+ - ext/libmemcached-0.32/aclocal.m4
112
+ - ext/libmemcached-0.32/clients/Makefile.am
113
+ - ext/libmemcached-0.32/clients/Makefile.in
114
+ - ext/libmemcached-0.32/clients/client_options.h
115
+ - ext/libmemcached-0.32/clients/execute.c
116
+ - ext/libmemcached-0.32/clients/execute.h
117
+ - ext/libmemcached-0.32/clients/generator.c
118
+ - ext/libmemcached-0.32/clients/generator.h
119
+ - ext/libmemcached-0.32/clients/memcat.c
120
+ - ext/libmemcached-0.32/clients/memcp.c
121
+ - ext/libmemcached-0.32/clients/memdump.c
122
+ - ext/libmemcached-0.32/clients/memerror.c
123
+ - ext/libmemcached-0.32/clients/memflush.c
124
+ - ext/libmemcached-0.32/clients/memrm.c
125
+ - ext/libmemcached-0.32/clients/memslap.c
126
+ - ext/libmemcached-0.32/clients/memstat.c
127
+ - ext/libmemcached-0.32/clients/utilities.c
128
+ - ext/libmemcached-0.32/clients/utilities.h
129
+ - ext/libmemcached-0.32/config.h.in
130
+ - ext/libmemcached-0.32/config/compile
131
+ - ext/libmemcached-0.32/config/config.guess
132
+ - ext/libmemcached-0.32/config/config.rpath
133
+ - ext/libmemcached-0.32/config/config.sub
134
+ - ext/libmemcached-0.32/config/depcomp
135
+ - ext/libmemcached-0.32/config/install-sh
136
+ - ext/libmemcached-0.32/config/ltmain.sh
137
+ - ext/libmemcached-0.32/config/missing
138
+ - ext/libmemcached-0.32/configure
139
+ - ext/libmemcached-0.32/configure.ac
140
+ - ext/libmemcached-0.32/libmemcached/Makefile.am
141
+ - ext/libmemcached-0.32/libmemcached/Makefile.in
142
+ - ext/libmemcached-0.32/libmemcached/byteorder.c
143
+ - ext/libmemcached-0.32/libmemcached/common.h
144
+ - ext/libmemcached-0.32/libmemcached/crc.c
145
+ - ext/libmemcached-0.32/libmemcached/hsieh_hash.c
146
+ - ext/libmemcached-0.32/libmemcached/jenkins_hash.c
147
+ - ext/libmemcached-0.32/libmemcached/libmemcached.ver
148
+ - ext/libmemcached-0.32/libmemcached/libmemcached_probes.d
149
+ - ext/libmemcached-0.32/libmemcached/libmemcached_probes.h
150
+ - ext/libmemcached-0.32/libmemcached/md5.c
151
+ - ext/libmemcached-0.32/libmemcached/memcached.c
152
+ - ext/libmemcached-0.32/libmemcached/memcached.h
153
+ - ext/libmemcached-0.32/libmemcached/memcached.hpp
154
+ - ext/libmemcached-0.32/libmemcached/memcached/README.txt
155
+ - ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h
156
+ - ext/libmemcached-0.32/libmemcached/memcached_allocators.c
157
+ - ext/libmemcached-0.32/libmemcached/memcached_analyze.c
158
+ - ext/libmemcached-0.32/libmemcached/memcached_auto.c
159
+ - ext/libmemcached-0.32/libmemcached/memcached_behavior.c
160
+ - ext/libmemcached-0.32/libmemcached/memcached_callback.c
161
+ - ext/libmemcached-0.32/libmemcached/memcached_configure.h.in
162
+ - ext/libmemcached-0.32/libmemcached/memcached_connect.c
163
+ - ext/libmemcached-0.32/libmemcached/memcached_constants.h
164
+ - ext/libmemcached-0.32/libmemcached/memcached_delete.c
165
+ - ext/libmemcached-0.32/libmemcached/memcached_do.c
166
+ - ext/libmemcached-0.32/libmemcached/memcached_dump.c
167
+ - ext/libmemcached-0.32/libmemcached/memcached_exist.c
168
+ - ext/libmemcached-0.32/libmemcached/memcached_exist.h
169
+ - ext/libmemcached-0.32/libmemcached/memcached_fetch.c
170
+ - ext/libmemcached-0.32/libmemcached/memcached_flush.c
171
+ - ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c
172
+ - ext/libmemcached-0.32/libmemcached/memcached_get.c
173
+ - ext/libmemcached-0.32/libmemcached/memcached_get.h
174
+ - ext/libmemcached-0.32/libmemcached/memcached_hash.c
175
+ - ext/libmemcached-0.32/libmemcached/memcached_hosts.c
176
+ - ext/libmemcached-0.32/libmemcached/memcached_internal.h
177
+ - ext/libmemcached-0.32/libmemcached/memcached_io.c
178
+ - ext/libmemcached-0.32/libmemcached/memcached_io.h
179
+ - ext/libmemcached-0.32/libmemcached/memcached_key.c
180
+ - ext/libmemcached-0.32/libmemcached/memcached_parse.c
181
+ - ext/libmemcached-0.32/libmemcached/memcached_pool.h
182
+ - ext/libmemcached-0.32/libmemcached/memcached_purge.c
183
+ - ext/libmemcached-0.32/libmemcached/memcached_quit.c
184
+ - ext/libmemcached-0.32/libmemcached/memcached_response.c
185
+ - ext/libmemcached-0.32/libmemcached/memcached_result.c
186
+ - ext/libmemcached-0.32/libmemcached/memcached_result.h
187
+ - ext/libmemcached-0.32/libmemcached/memcached_sasl.c
188
+ - ext/libmemcached-0.32/libmemcached/memcached_sasl.h
189
+ - ext/libmemcached-0.32/libmemcached/memcached_server.c
190
+ - ext/libmemcached-0.32/libmemcached/memcached_server.h
191
+ - ext/libmemcached-0.32/libmemcached/memcached_stats.c
192
+ - ext/libmemcached-0.32/libmemcached/memcached_storage.c
193
+ - ext/libmemcached-0.32/libmemcached/memcached_storage.h
194
+ - ext/libmemcached-0.32/libmemcached/memcached_strerror.c
195
+ - ext/libmemcached-0.32/libmemcached/memcached_string.c
196
+ - ext/libmemcached-0.32/libmemcached/memcached_string.h
197
+ - ext/libmemcached-0.32/libmemcached/memcached_touch.c
198
+ - ext/libmemcached-0.32/libmemcached/memcached_touch.h
199
+ - ext/libmemcached-0.32/libmemcached/memcached_types.h
200
+ - ext/libmemcached-0.32/libmemcached/memcached_util.h
201
+ - ext/libmemcached-0.32/libmemcached/memcached_verbosity.c
202
+ - ext/libmemcached-0.32/libmemcached/memcached_version.c
203
+ - ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h
204
+ - ext/libmemcached-0.32/libmemcached/murmur_hash.c
205
+ - ext/libmemcached-0.32/libmemcached/visibility.h
206
+ - ext/libmemcached-0.32/libmemcachedutil/Makefile.am
207
+ - ext/libmemcached-0.32/libmemcachedutil/Makefile.in
208
+ - ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver
209
+ - ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c
210
+ - ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4
211
+ - ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4
212
+ - ext/libmemcached-0.32/m4/acx_pthread.m4
213
+ - ext/libmemcached-0.32/m4/byteorder.m4
214
+ - ext/libmemcached-0.32/m4/deprecated.m4
215
+ - ext/libmemcached-0.32/m4/enable_utillib.m4
216
+ - ext/libmemcached-0.32/m4/extensions.m4
217
+ - ext/libmemcached-0.32/m4/hsieh.m4
218
+ - ext/libmemcached-0.32/m4/lib-prefix.m4
219
+ - ext/libmemcached-0.32/m4/libtool.m4
220
+ - ext/libmemcached-0.32/m4/ltoptions.m4
221
+ - ext/libmemcached-0.32/m4/ltsugar.m4
222
+ - ext/libmemcached-0.32/m4/ltversion.m4
223
+ - ext/libmemcached-0.32/m4/lt~obsolete.m4
224
+ - ext/libmemcached-0.32/m4/memcached.m4
225
+ - ext/libmemcached-0.32/m4/pandora_64bit.m4
226
+ - ext/libmemcached-0.32/m4/pandora_canonical.m4
227
+ - ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4
228
+ - ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4
229
+ - ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4
230
+ - ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4
231
+ - ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4
232
+ - ext/libmemcached-0.32/m4/pandora_have_sasl.m4
233
+ - ext/libmemcached-0.32/m4/pandora_header_assert.m4
234
+ - ext/libmemcached-0.32/m4/pandora_libtool.m4
235
+ - ext/libmemcached-0.32/m4/pandora_optimize.m4
236
+ - ext/libmemcached-0.32/m4/pandora_shared_ptr.m4
237
+ - ext/libmemcached-0.32/m4/pandora_vc_build.m4
238
+ - ext/libmemcached-0.32/m4/pandora_warnings.m4
239
+ - ext/libmemcached-0.32/m4/pod2man.m4
240
+ - ext/libmemcached-0.32/m4/protocol_binary.m4
241
+ - ext/libmemcached-0.32/m4/setsockopt.m4
242
+ - ext/libmemcached-0.32/m4/visibility.m4
243
+ - ext/libmemcached-0.32/support/Makefile.am
244
+ - ext/libmemcached-0.32/support/Makefile.in
245
+ - ext/libmemcached-0.32/support/libmemcached-fc.spec.in
246
+ - ext/libmemcached-0.32/support/libmemcached.pc.in
247
+ - ext/libmemcached-0.32/support/libmemcached.spec
248
+ - ext/libmemcached-0.32/support/libmemcached.spec.in
249
+ - ext/libmemcached-0.32/support/set_benchmark.sh
250
+ - ext/libmemcached-0.32/tests/Makefile.am
251
+ - ext/libmemcached-0.32/tests/Makefile.in
252
+ - ext/libmemcached-0.32/tests/atomsmasher.c
253
+ - ext/libmemcached-0.32/tests/function.c
254
+ - ext/libmemcached-0.32/tests/ketama_test_cases.h
255
+ - ext/libmemcached-0.32/tests/output.cmp
256
+ - ext/libmemcached-0.32/tests/output.res
257
+ - ext/libmemcached-0.32/tests/output2.res
258
+ - ext/libmemcached-0.32/tests/plus.cpp
259
+ - ext/libmemcached-0.32/tests/r/memcat.res
260
+ - ext/libmemcached-0.32/tests/r/memcp.res
261
+ - ext/libmemcached-0.32/tests/r/memrm.res
262
+ - ext/libmemcached-0.32/tests/r/memslap.res
263
+ - ext/libmemcached-0.32/tests/r/memstat.res
264
+ - ext/libmemcached-0.32/tests/server.c
265
+ - ext/libmemcached-0.32/tests/server.h
266
+ - ext/libmemcached-0.32/tests/start.c
267
+ - ext/libmemcached-0.32/tests/t/memcat.test
268
+ - ext/libmemcached-0.32/tests/t/memcp.test
269
+ - ext/libmemcached-0.32/tests/t/memrm.test
270
+ - ext/libmemcached-0.32/tests/t/memslap.test
271
+ - ext/libmemcached-0.32/tests/t/memstat.test
272
+ - ext/libmemcached-0.32/tests/test.c
273
+ - ext/libmemcached-0.32/tests/test.h
274
+ - ext/libmemcached-0.32/tests/udp.c
275
+ - ext/rlibmemcached.i
276
+ - ext/rlibmemcached_wrap.c
277
+ - lib/memcached.rb
278
+ - lib/memcached/auth.rb
279
+ - lib/memcached/behaviors.rb
280
+ - lib/memcached/exceptions.rb
281
+ - lib/memcached/experimental.rb
282
+ - lib/memcached/marshal_codec.rb
283
+ - lib/memcached/memcached.rb
284
+ - lib/memcached/rails.rb
285
+ - memcached.gemspec
286
+ - test/profile/benchmark.rb
287
+ - test/profile/c_profiler.rb
288
+ - test/profile/exercise.rb
289
+ - test/profile/rb_profiler.rb
290
+ - test/profile/valgrind.rb
291
+ - test/setup.rb
292
+ - test/teardown.rb
293
+ - test/test_helper.rb
294
+ - test/unit/binding_test.rb
295
+ - test/unit/memcached_experimental_test.rb
296
+ - test/unit/memcached_test.rb
297
+ - test/unit/rails_test.rb
298
+ homepage: http://evan.github.com/evan/memcached/
299
+ licenses:
300
+ - Academic Free License 3.0 (AFL-3.0)
301
+ metadata: {}
302
+ post_install_message:
303
+ rdoc_options:
304
+ - --line-numbers
305
+ - --inline-source
306
+ - --title
307
+ - Memcached
308
+ - --main
309
+ - README.rdoc
310
+ - --exclude=ext/bin
311
+ - --exclude=ext/libmemcached-.*/(clients|tests)
312
+ require_paths:
313
+ - lib
314
+ - ext
315
+ required_ruby_version: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - '>='
318
+ - !ruby/object:Gem::Version
319
+ version: '0'
320
+ required_rubygems_version: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - '>='
323
+ - !ruby/object:Gem::Version
324
+ version: '1.2'
325
+ requirements: []
326
+ rubyforge_project: evan
327
+ rubygems_version: 2.6.0
328
+ signing_key:
329
+ specification_version: 4
330
+ summary: An interface to the libmemcached C client.
331
+ test_files:
332
+ - test/test_helper.rb
333
+ - test/unit/binding_test.rb
334
+ - test/unit/memcached_experimental_test.rb
335
+ - test/unit/memcached_test.rb
336
+ - test/unit/rails_test.rb