vinted-memcached 1.8.4 → 1.8.6

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 (213) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_release_pipeline.yaml +53 -0
  3. data/.gitignore +33 -0
  4. data/BENCHMARKS +130 -126
  5. data/CHANGELOG +1 -6
  6. data/Gemfile +8 -1
  7. data/Gemfile.lock +25 -38
  8. data/README.md +144 -0
  9. data/Rakefile +21 -93
  10. data/ext/rlibmemcached/extconf.rb +76 -0
  11. data/ext/{rlibmemcached.i → rlibmemcached/rlibmemcached.i} +48 -69
  12. data/ext/{rlibmemcached_wrap.c → rlibmemcached/rlibmemcached_wrap.c} +146 -320
  13. data/lib/memcached/exceptions.rb +1 -12
  14. data/lib/memcached/experimental.rb +1 -33
  15. data/lib/memcached/memcached.rb +41 -34
  16. data/lib/memcached/version.rb +1 -1
  17. data/lib/memcached.rb +9 -4
  18. data/memcached.gemspec +0 -0
  19. data/memcached.pem +21 -0
  20. data/vendor/libmemcached-0.32/config/config.guess +1815 -0
  21. data/vendor/libmemcached-0.32/config/config.sub +2354 -0
  22. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_connect.c +23 -13
  23. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.c +18 -13
  24. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_purge.c +1 -1
  25. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.c +16 -25
  26. metadata +195 -249
  27. data/Manifest +0 -209
  28. data/README.rdoc +0 -124
  29. data/ext/extconf-make.rb +0 -25
  30. data/ext/extconf.rb +0 -78
  31. data/ext/libmemcached-0.32/config/config.guess +0 -1561
  32. data/ext/libmemcached-0.32/config/config.sub +0 -1686
  33. data/lib/memcached/auth.rb +0 -16
  34. data/test/profile/benchmark.rb +0 -280
  35. data/test/profile/c_profiler.rb +0 -14
  36. data/test/profile/exercise.rb +0 -185
  37. data/test/profile/rb_profiler.rb +0 -21
  38. data/test/profile/valgrind.rb +0 -10
  39. data/test/setup.rb +0 -30
  40. data/test/teardown.rb +0 -0
  41. data/test/test_helper.rb +0 -18
  42. data/test/unit/binding_test.rb +0 -8
  43. data/test/unit/memcached_experimental_test.rb +0 -272
  44. data/test/unit/memcached_test.rb +0 -1487
  45. data/test/unit/rails_test.rb +0 -330
  46. /data/{ext → vendor}/libmemcached-0.32/AUTHORS +0 -0
  47. /data/{ext → vendor}/libmemcached-0.32/COPYING +0 -0
  48. /data/{ext → vendor}/libmemcached-0.32/ChangeLog +0 -0
  49. /data/{ext → vendor}/libmemcached-0.32/INSTALL +0 -0
  50. /data/{ext → vendor}/libmemcached-0.32/Makefile.am +0 -0
  51. /data/{ext → vendor}/libmemcached-0.32/Makefile.in +0 -0
  52. /data/{ext → vendor}/libmemcached-0.32/NEWS +0 -0
  53. /data/{ext → vendor}/libmemcached-0.32/README +0 -0
  54. /data/{ext → vendor}/libmemcached-0.32/THANKS +0 -0
  55. /data/{ext → vendor}/libmemcached-0.32/TODO +0 -0
  56. /data/{ext → vendor}/libmemcached-0.32/aclocal.m4 +0 -0
  57. /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.am +0 -0
  58. /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.in +0 -0
  59. /data/{ext → vendor}/libmemcached-0.32/clients/client_options.h +0 -0
  60. /data/{ext → vendor}/libmemcached-0.32/clients/execute.c +0 -0
  61. /data/{ext → vendor}/libmemcached-0.32/clients/execute.h +0 -0
  62. /data/{ext → vendor}/libmemcached-0.32/clients/generator.c +0 -0
  63. /data/{ext → vendor}/libmemcached-0.32/clients/generator.h +0 -0
  64. /data/{ext → vendor}/libmemcached-0.32/clients/memcat.c +0 -0
  65. /data/{ext → vendor}/libmemcached-0.32/clients/memcp.c +0 -0
  66. /data/{ext → vendor}/libmemcached-0.32/clients/memdump.c +0 -0
  67. /data/{ext → vendor}/libmemcached-0.32/clients/memerror.c +0 -0
  68. /data/{ext → vendor}/libmemcached-0.32/clients/memflush.c +0 -0
  69. /data/{ext → vendor}/libmemcached-0.32/clients/memrm.c +0 -0
  70. /data/{ext → vendor}/libmemcached-0.32/clients/memslap.c +0 -0
  71. /data/{ext → vendor}/libmemcached-0.32/clients/memstat.c +0 -0
  72. /data/{ext → vendor}/libmemcached-0.32/clients/utilities.c +0 -0
  73. /data/{ext → vendor}/libmemcached-0.32/clients/utilities.h +0 -0
  74. /data/{ext → vendor}/libmemcached-0.32/config/compile +0 -0
  75. /data/{ext → vendor}/libmemcached-0.32/config/config.rpath +0 -0
  76. /data/{ext → vendor}/libmemcached-0.32/config/depcomp +0 -0
  77. /data/{ext → vendor}/libmemcached-0.32/config/install-sh +0 -0
  78. /data/{ext → vendor}/libmemcached-0.32/config/ltmain.sh +0 -0
  79. /data/{ext → vendor}/libmemcached-0.32/config/missing +0 -0
  80. /data/{ext → vendor}/libmemcached-0.32/config.h.in +0 -0
  81. /data/{ext → vendor}/libmemcached-0.32/configure +0 -0
  82. /data/{ext → vendor}/libmemcached-0.32/configure.ac +0 -0
  83. /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.am +0 -0
  84. /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.in +0 -0
  85. /data/{ext → vendor}/libmemcached-0.32/libmemcached/byteorder.c +0 -0
  86. /data/{ext → vendor}/libmemcached-0.32/libmemcached/common.h +0 -0
  87. /data/{ext → vendor}/libmemcached-0.32/libmemcached/crc.c +0 -0
  88. /data/{ext → vendor}/libmemcached-0.32/libmemcached/hsieh_hash.c +0 -0
  89. /data/{ext → vendor}/libmemcached-0.32/libmemcached/jenkins_hash.c +0 -0
  90. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached.ver +0 -0
  91. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.d +0 -0
  92. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.h +0 -0
  93. /data/{ext → vendor}/libmemcached-0.32/libmemcached/md5.c +0 -0
  94. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/README.txt +0 -0
  95. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +0 -0
  96. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.c +0 -0
  97. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.h +0 -0
  98. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.hpp +0 -0
  99. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_allocators.c +0 -0
  100. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_analyze.c +0 -0
  101. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_auto.c +0 -0
  102. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_behavior.c +0 -0
  103. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_callback.c +0 -0
  104. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_configure.h.in +0 -0
  105. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_constants.h +0 -0
  106. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  107. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_do.c +0 -0
  108. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_dump.c +0 -0
  109. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.c +0 -0
  110. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.h +0 -0
  111. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_fetch.c +0 -0
  112. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush.c +0 -0
  113. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +0 -0
  114. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.c +0 -0
  115. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.h +0 -0
  116. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hash.c +0 -0
  117. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hosts.c +0 -0
  118. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_internal.h +0 -0
  119. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.h +0 -0
  120. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_key.c +0 -0
  121. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_parse.c +0 -0
  122. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_pool.h +0 -0
  123. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_quit.c +0 -0
  124. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_response.c +0 -0
  125. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.c +0 -0
  126. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.h +0 -0
  127. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.c +0 -0
  128. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.h +0 -0
  129. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.c +0 -0
  130. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.h +0 -0
  131. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_stats.c +0 -0
  132. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.h +0 -0
  133. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_strerror.c +0 -0
  134. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.c +0 -0
  135. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.h +0 -0
  136. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.c +0 -0
  137. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.h +0 -0
  138. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_types.h +0 -0
  139. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_util.h +0 -0
  140. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_verbosity.c +0 -0
  141. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_version.c +0 -0
  142. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_watchpoint.h +0 -0
  143. /data/{ext → vendor}/libmemcached-0.32/libmemcached/murmur_hash.c +0 -0
  144. /data/{ext → vendor}/libmemcached-0.32/libmemcached/visibility.h +0 -0
  145. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.am +0 -0
  146. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.in +0 -0
  147. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +0 -0
  148. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/memcached_pool.c +0 -0
  149. /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +0 -0
  150. /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +0 -0
  151. /data/{ext → vendor}/libmemcached-0.32/m4/acx_pthread.m4 +0 -0
  152. /data/{ext → vendor}/libmemcached-0.32/m4/byteorder.m4 +0 -0
  153. /data/{ext → vendor}/libmemcached-0.32/m4/deprecated.m4 +0 -0
  154. /data/{ext → vendor}/libmemcached-0.32/m4/enable_utillib.m4 +0 -0
  155. /data/{ext → vendor}/libmemcached-0.32/m4/extensions.m4 +0 -0
  156. /data/{ext → vendor}/libmemcached-0.32/m4/hsieh.m4 +0 -0
  157. /data/{ext → vendor}/libmemcached-0.32/m4/lib-prefix.m4 +0 -0
  158. /data/{ext → vendor}/libmemcached-0.32/m4/libtool.m4 +0 -0
  159. /data/{ext → vendor}/libmemcached-0.32/m4/ltoptions.m4 +0 -0
  160. /data/{ext → vendor}/libmemcached-0.32/m4/ltsugar.m4 +0 -0
  161. /data/{ext → vendor}/libmemcached-0.32/m4/ltversion.m4 +0 -0
  162. /data/{ext → vendor}/libmemcached-0.32/m4/lt~obsolete.m4 +0 -0
  163. /data/{ext → vendor}/libmemcached-0.32/m4/memcached.m4 +0 -0
  164. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_64bit.m4 +0 -0
  165. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_canonical.m4 +0 -0
  166. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +0 -0
  167. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +0 -0
  168. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +0 -0
  169. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +0 -0
  170. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +0 -0
  171. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_sasl.m4 +0 -0
  172. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_header_assert.m4 +0 -0
  173. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_libtool.m4 +0 -0
  174. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_optimize.m4 +0 -0
  175. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_shared_ptr.m4 +0 -0
  176. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_vc_build.m4 +0 -0
  177. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_warnings.m4 +0 -0
  178. /data/{ext → vendor}/libmemcached-0.32/m4/pod2man.m4 +0 -0
  179. /data/{ext → vendor}/libmemcached-0.32/m4/protocol_binary.m4 +0 -0
  180. /data/{ext → vendor}/libmemcached-0.32/m4/setsockopt.m4 +0 -0
  181. /data/{ext → vendor}/libmemcached-0.32/m4/visibility.m4 +0 -0
  182. /data/{ext → vendor}/libmemcached-0.32/support/Makefile.am +0 -0
  183. /data/{ext → vendor}/libmemcached-0.32/support/Makefile.in +0 -0
  184. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached-fc.spec.in +0 -0
  185. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.pc.in +0 -0
  186. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec +0 -0
  187. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec.in +0 -0
  188. /data/{ext → vendor}/libmemcached-0.32/support/set_benchmark.sh +0 -0
  189. /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.am +0 -0
  190. /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.in +0 -0
  191. /data/{ext → vendor}/libmemcached-0.32/tests/atomsmasher.c +0 -0
  192. /data/{ext → vendor}/libmemcached-0.32/tests/function.c +0 -0
  193. /data/{ext → vendor}/libmemcached-0.32/tests/ketama_test_cases.h +0 -0
  194. /data/{ext → vendor}/libmemcached-0.32/tests/output.cmp +0 -0
  195. /data/{ext → vendor}/libmemcached-0.32/tests/output.res +0 -0
  196. /data/{ext → vendor}/libmemcached-0.32/tests/output2.res +0 -0
  197. /data/{ext → vendor}/libmemcached-0.32/tests/plus.cpp +0 -0
  198. /data/{ext → vendor}/libmemcached-0.32/tests/r/memcat.res +0 -0
  199. /data/{ext → vendor}/libmemcached-0.32/tests/r/memcp.res +0 -0
  200. /data/{ext → vendor}/libmemcached-0.32/tests/r/memrm.res +0 -0
  201. /data/{ext → vendor}/libmemcached-0.32/tests/r/memslap.res +0 -0
  202. /data/{ext → vendor}/libmemcached-0.32/tests/r/memstat.res +0 -0
  203. /data/{ext → vendor}/libmemcached-0.32/tests/server.c +0 -0
  204. /data/{ext → vendor}/libmemcached-0.32/tests/server.h +0 -0
  205. /data/{ext → vendor}/libmemcached-0.32/tests/start.c +0 -0
  206. /data/{ext → vendor}/libmemcached-0.32/tests/t/memcat.test +0 -0
  207. /data/{ext → vendor}/libmemcached-0.32/tests/t/memcp.test +0 -0
  208. /data/{ext → vendor}/libmemcached-0.32/tests/t/memrm.test +0 -0
  209. /data/{ext → vendor}/libmemcached-0.32/tests/t/memslap.test +0 -0
  210. /data/{ext → vendor}/libmemcached-0.32/tests/t/memstat.test +0 -0
  211. /data/{ext → vendor}/libmemcached-0.32/tests/test.c +0 -0
  212. /data/{ext → vendor}/libmemcached-0.32/tests/test.h +0 -0
  213. /data/{ext → vendor}/libmemcached-0.32/tests/udp.c +0 -0
@@ -1,272 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
2
-
3
- class MemcachedExperimentalTest < Test::Unit::TestCase
4
-
5
- def setup
6
- @servers = ['localhost:43042', 'localhost:43043', "#{UNIX_SOCKET_NAME}0"]
7
-
8
- # Maximum allowed prefix key size for :hash_with_prefix_key_key => false
9
- @prefix_key = 'prefix_key_'
10
-
11
- @options = {
12
- :prefix_key => @prefix_key,
13
- :hash => :default,
14
- :distribution => :modula}
15
- @cache = Memcached.new(@servers, @options)
16
-
17
- @experimental_options = {
18
- :prefix_key => @prefix_key,
19
- :hash => :default,
20
- :distribution => :modula,
21
- :experimental_features => true}
22
- @experimental_cache = Memcached.new(@servers, @experimental_options)
23
-
24
- @experimental_cas_options = {
25
- :prefix_key => @prefix_key,
26
- :support_cas => true,
27
- :experimental_features => true}
28
- @experimental_cas_cache = Memcached.new(@servers, @experimental_cas_options)
29
-
30
- @experimental_binary_protocol_options = {
31
- :prefix_key => @prefix_key,
32
- :hash => :default,
33
- :distribution => :modula,
34
- :experimental_features => true,
35
- # binary_protocol does not work -- test_get, test_get, test_append, and test_missing_append will fail when it is set to true.
36
- :binary_protocol => true}
37
- @experimental_binary_protocol_cache = Memcached.new(@servers, @experimental_binary_protocol_options)
38
-
39
- @value = OpenStruct.new(:a => 1, :b => 2, :c => GenericClass)
40
- end
41
-
42
- def server_get_len_capable
43
- begin
44
- value = "foobar"
45
- @experimental_cache.set key, value, 0, false
46
- @experimental_cache.get_len 1, key
47
- yield
48
- rescue Memcached::ProtocolError
49
- # Skip tests when the server does not support the experimental get_len command.
50
- end
51
- end
52
-
53
- def server_touch_capable
54
- @experimental_binary_protocol_cache.set(key, 'touchval')
55
- @experimental_binary_protocol_cache.touch(key)
56
- yield
57
- rescue Memcached::ProtocolError
58
- # Skip tests when the server does not support the experimental touch command
59
- end
60
-
61
- def test_get_len
62
- server_get_len_capable do
63
- value = "foobar"
64
- @experimental_cache.set key, value, 0, false
65
- result = @experimental_cache.get_len 1, key
66
- assert_equal result.size, 1
67
- assert_equal result, value[0..0]
68
-
69
- result = @experimental_cache.get_len 2, key
70
- assert_equal result.size, 2
71
- assert_equal result, value[0..1]
72
-
73
- result = @experimental_cache.get_len 5, key
74
- assert_equal result.size, 5
75
- assert_equal result, value[0..4]
76
-
77
- result = @experimental_cache.get_len 6, key
78
- assert_equal result.size, 6
79
- assert_equal result, value
80
-
81
- result = @experimental_cache.get_len 32, key
82
- assert_equal result.size, 6
83
- assert_equal result, value
84
- end
85
- end
86
-
87
- def test_get_len_0_failure
88
- server_get_len_capable do
89
- value = "Test that we cannot get 0 bytes with a get_len call."
90
- @experimental_cache.set key, value, 0, false
91
- assert_raises(Memcached::Failure) do
92
- result = @experimental_cache.get_len 0, key
93
- end
94
- end
95
- end
96
-
97
- def test_get_len_large
98
- server_get_len_capable do
99
- value = "Test that we can get the first 20 bytes of a string"
100
- @experimental_cache.set key, value, 0, false
101
- result = @experimental_cache.get_len 20, key
102
- assert_equal result.size, 20
103
- assert_equal result, value[0..19]
104
- end
105
- end
106
-
107
- def test_get_len_packed
108
- server_get_len_capable do
109
- value = [1, 2, 3, 4].pack("Q*")
110
- @experimental_cache.set key, value, 0, false
111
- result = @experimental_cache.get_len 8, key
112
- assert_equal [1], result.unpack("Q*")
113
- end
114
- end
115
-
116
- # get_len is not supported when using the binary protocol.
117
- # Make sure the single get variant fails appropriately.
118
- def test_get_len_binary
119
- server_get_len_capable do
120
- @experimental_binary_protocol_cache.set key, @value
121
- assert_raises(Memcached::ActionNotSupported) do
122
- result = @experimental_binary_protocol_cache.get_len 2, key
123
- end
124
- end
125
- end
126
-
127
- # Retrieve the first 64 bits of the values for multiple keys.
128
- def test_get_len_multi_packed
129
- server_get_len_capable do
130
- key_1 = "get_len_1"
131
- value_1 = [1, 2, 3].pack("Q*")
132
- key_2 = "get_len_missing"
133
- key_3 = "get_len_2"
134
- value_3 = [5, 6, 4].pack("Q*")
135
- keys = [key_1, key_2, key_3]
136
- @experimental_cache.set key_1, value_1, 0, false
137
- @experimental_cache.set key_3, value_3, 0, false
138
- assert_equal(
139
- {key_1=>value_1[0..7], key_3=>value_3[0..7]},
140
- @experimental_cache.get_len(8, keys)
141
- )
142
- end
143
- end
144
-
145
- # Test that the entire value is passed back when the length specified
146
- # is larger than any of the values (e.g., 32 in the case below).
147
- def test_get_len_multi_packed_full
148
- server_get_len_capable do
149
- key_1 = "get_len_1"
150
- value_1 = [1, 2, 3].pack("Q*")
151
- key_2 = "get_len_missing"
152
- key_3 = "get_len_2"
153
- value_3 = [5, 6, 4].pack("Q*")
154
- keys = [key_1, key_2, key_3]
155
- @experimental_cache.set key_1, value_1, 0, false
156
- @experimental_cache.set key_3, value_3, 0, false
157
- assert_equal(
158
- {key_1=>value_1, key_3=>value_3},
159
- @experimental_cache.get_len(32, keys)
160
- )
161
- end
162
- end
163
-
164
- # get_len is not supported when using the binary protocol.
165
- # Test that the multi get variant fails appropriately.
166
- def test_get_len_multi_packed_binary
167
- server_get_len_capable do
168
- key_1 = "get_len_1"
169
- value_1 = [1, 2, 3].pack("Q*")
170
- key_2 = "get_len_2"
171
- value_2 = [5, 6, 4].pack("Q*")
172
- keys = [key_1, key_2]
173
- @experimental_binary_protocol_cache.set key_1, value_1, 0, false
174
- @experimental_binary_protocol_cache.set key_2, value_2, 0, false
175
- assert_raises(Memcached::ActionNotSupported) do
176
- result = @experimental_binary_protocol_cache.get_len 2, keys
177
- end
178
- end
179
- end
180
-
181
- def test_get_len_multi_completely_missing
182
- server_get_len_capable do
183
- @experimental_cache.delete "#{key}_1" rescue nil
184
- @experimental_cache.delete "#{key}_2" rescue nil
185
- assert_equal(
186
- {},
187
- @experimental_cache.get_len(1, ["#{key}_1", "#{key}_2"])
188
- )
189
- end
190
- end
191
-
192
- def test_get_len_failure
193
- server_get_len_capable do
194
- value = "Test that we cannot use get_len without setting the :experimental_features config."
195
- assert_raises(NoMethodError) do
196
- result = @cache.get_len 10, key
197
- end
198
- end
199
- end
200
-
201
- def test_cas
202
- server_get_len_capable do
203
- # Get the first three chars of the value back.
204
- @experimental_cas_cache.set(key, "foo_bar", 0, false)
205
- assert_equal "foo", @experimental_cas_cache.get_len(3, key)
206
- assert_equal "foo_bar", @experimental_cas_cache.get_len(7, key)
207
- end
208
- end
209
-
210
- # Touch command
211
-
212
- def test_touch_capability
213
- server_touch_capable do
214
- @experimental_binary_protocol_cache.set(key, "value", 10)
215
- assert_nothing_raised do
216
- @experimental_binary_protocol_cache.touch(key, 20)
217
- end
218
- assert_raises(Memcached::ActionNotSupported) do
219
- @experimental_cache.touch(key, 10)
220
- end
221
- end
222
- end
223
-
224
- def test_touch_missing_key
225
- server_touch_capable do
226
- @experimental_binary_protocol_cache.delete key rescue nil
227
- assert_raises(Memcached::NotFound) do
228
- @experimental_binary_protocol_cache.touch(key, 10)
229
- end
230
- end
231
- end
232
-
233
- def test_touch
234
- server_touch_capable do
235
- @experimental_binary_protocol_cache.set key, @value, 2
236
- assert_equal @value, @experimental_binary_protocol_cache.get(key)
237
- sleep(1)
238
- assert_equal @value, @experimental_binary_protocol_cache.get(key)
239
- @experimental_binary_protocol_cache.touch(key, 3)
240
- sleep(2)
241
- assert_equal @value, @experimental_binary_protocol_cache.get(key)
242
- sleep(2)
243
- assert_raises(Memcached::NotFound) do
244
- @experimental_binary_protocol_cache.get(key)
245
- end
246
- end
247
- end
248
-
249
- # Memory cleanup
250
-
251
- def test_reset
252
- original_struct = @cache.instance_variable_get("@struct")
253
- assert_nothing_raised do
254
- @cache.reset
255
- end
256
- assert_not_equal original_struct,
257
- @cache.instance_variable_get("@struct")
258
- end
259
-
260
- private
261
-
262
- def key
263
- caller.first[/.*[` ](.*)'/, 1] # '
264
- end
265
-
266
- def stub_server(port)
267
- socket = TCPServer.new('127.0.0.1', port)
268
- Thread.new { socket.accept }
269
- socket
270
- end
271
-
272
- end