vinted-memcached 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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