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,16 +0,0 @@
1
- class Memcached
2
- def destroy_credentials
3
- if options[:credentials] != nil
4
- check_return_code(Lib.memcached_destroy_sasl_auth_data(@struct))
5
- end
6
- end
7
-
8
- def set_credentials
9
- # If credentials aren't provided, try to get them from the environment
10
- if options[:credentials] != nil
11
- username, password = options[:credentials]
12
- check_return_code(Lib.memcached_set_sasl_auth_data(@struct, username, password))
13
- end
14
- end
15
- end
16
-
@@ -1,280 +0,0 @@
1
- Bundler.require(:benchmark)
2
-
3
- HERE = File.dirname(__FILE__)
4
- $LOAD_PATH << "#{HERE}/../../lib/"
5
- UNIX_SOCKET_NAME = File.join(ENV['TMPDIR']||'/tmp','memcached')
6
- JRUBY = defined?(JRUBY_VERSION)
7
-
8
- require 'ffi/times' if JRUBY
9
- require 'memcached'
10
- require 'benchmark'
11
- require 'rubygems'
12
- require 'ruby-debug' if ENV['DEBUG'] && !JRUBY
13
- if ENV['PROFILE']
14
- require 'ruby-prof'
15
- require 'fileutils'
16
- FileUtils.mkdir_p 'profiles'
17
- end
18
- begin; require 'memory'; rescue LoadError; end
19
-
20
-
21
- puts `uname -a`
22
- puts `ruby -v`
23
- puts `env | egrep '^RUBY'`
24
- puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
25
-
26
- [
27
- ["memcached"],
28
- ["remix-stash", "remix/stash"],
29
- [JRUBY ? "jruby-memcache-client" : "memcache-client", "memcache"],
30
- ["kgio"], ["dalli"]
31
- ].each do |gem_name, requirement|
32
- begin
33
- require requirement || gem_name
34
- gem gem_name
35
- puts "Loaded #{gem_name} #{Gem.loaded_specs[gem_name].version.to_s rescue nil}"
36
- rescue LoadError
37
- end
38
- end
39
-
40
- class Remix::Stash
41
- # Remix::Stash API doesn't let you set servers
42
- @@clusters = {:default => Remix::Stash::Cluster.new(['127.0.0.1:43042', '127.0.0.1:43043'])}
43
- end
44
-
45
- class Dalli::ClientCompat < Dalli::Client
46
- def set(*args)
47
- super(*args[0..2])
48
- end
49
- def get(*args)
50
- super(args.first)
51
- end
52
- def get_multi(*args)
53
- super(args.first)
54
- end
55
- def append(*args)
56
- super
57
- rescue Dalli::DalliError
58
- end
59
- def prepend(*args)
60
- super
61
- rescue Dalli::DalliError
62
- end
63
- def exist?(key)
64
- !get(key).nil?
65
- end
66
- end
67
-
68
- class Bench
69
-
70
- def initialize(loops = nil, stack_depth = nil)
71
- @loops = (loops || 50000).to_i
72
- @stack_depth = (stack_depth || 0).to_i
73
-
74
- puts "PID is #{Process.pid}"
75
- puts "Loops is #{@loops}"
76
- puts "Stack depth is #{@stack_depth}"
77
-
78
- @m_value = Marshal.dump(
79
- @small_value = ["testing"])
80
- @m_large_value = Marshal.dump(
81
- @large_value = [{"test" => "1", "test2" => "2", Object.new => "3", 4 => 4, "test5" => 2**65}] * 2048)
82
-
83
- puts "Small value size is: #{@m_value.size} bytes"
84
- puts "Large value size is: #{@m_large_value.size} bytes"
85
-
86
- @keys = [
87
- @k1 = "Short",
88
- @k2 = "Sym1-2-3::45" * 8,
89
- @k3 = "Long" * 40,
90
- @k4 = "Medium" * 8,
91
- @k5 = "Medium2" * 8,
92
- @k6 = "Long3" * 40]
93
-
94
- reset_servers
95
- reset_clients
96
-
97
- Benchmark.bm(36) do |x|
98
- @benchmark = x
99
- end
100
- end
101
-
102
- def run(level = @stack_depth)
103
- level > 0 ? run(level - 1) : run_without_recursion
104
- end
105
-
106
- private
107
-
108
- def reset_servers
109
- system("ruby #{HERE}/../setup.rb")
110
- sleep(1)
111
- end
112
-
113
- def reset_clients
114
- # Other clients
115
- @clients = {
116
- "mclient:ascii" => MemCache.new(['127.0.0.1:43042', '127.0.0.1:43043']),
117
- "stash:bin" => Remix::Stash.new(:root),
118
- "dalli:bin" => Dalli::ClientCompat.new(['127.0.0.1:43042', '127.0.0.1:43043'], :marshal => false, :threadsafe => false)}
119
-
120
- # Us
121
- @clients.merge!({
122
- "libm:ascii" => Memcached::Rails.new(
123
- ['127.0.0.1:43042', '127.0.0.1:43043'],
124
- :buffer_requests => false, :no_block => false, :namespace => "namespace"),
125
- "libm:ascii:pipeline" => Memcached::Rails.new(
126
- ['127.0.0.1:43042', '127.0.0.1:43043'],
127
- :no_block => true, :buffer_requests => true, :noreply => true, :namespace => "namespace"),
128
- "libm:ascii:udp" => Memcached::Rails.new(
129
- ["#{UNIX_SOCKET_NAME}0", "#{UNIX_SOCKET_NAME}1"],
130
- :buffer_requests => false, :no_block => false, :namespace => "namespace"),
131
- "libm:bin" => Memcached::Rails.new(
132
- ['127.0.0.1:43042', '127.0.0.1:43043'],
133
- :buffer_requests => false, :no_block => false, :namespace => "namespace", :binary_protocol => true),
134
- "libm:bin:buffer" => Memcached::Rails.new(
135
- ['127.0.0.1:43042', '127.0.0.1:43043'],
136
- :no_block => true, :buffer_requests => true, :namespace => "namespace", :binary_protocol => true)})
137
- end
138
-
139
- def benchmark_clients(test_name, populate_keys = true)
140
- return if ENV["TEST"] and !test_name.include?(ENV["TEST"])
141
-
142
- @clients.keys.sort.each do |client_name|
143
- next if ENV["CLIENT"] and !client_name.include?(ENV["CLIENT"])
144
- next if client_name == "stash" and test_name == "set-large" # Don't let stash break the world
145
-
146
- client = @clients[client_name]
147
- begin
148
- if populate_keys
149
- client.set @k1, @m_value, 0, true
150
- client.set @k2, @m_value, 0, true
151
- client.set @k3, @m_value, 0, true
152
- else
153
- client.delete @k1
154
- client.delete @k2
155
- client.delete @k3
156
- end
157
-
158
- # Force any JITs to run
159
- 10003.times { yield client }
160
-
161
- GC.disable if !JRUBY
162
- RubyProf.start if ENV['PROFILE']
163
- @benchmark.report("#{test_name}: #{client_name}") { @loops.times { yield client } }
164
- if ENV['PROFILE']
165
- prof = RubyProf::MultiPrinter.new(RubyProf.stop)
166
- prof.print(:path => 'profiles', :profile => "#{test_name}-#{client_name.gsub(':','-')}")
167
- end
168
- rescue Exception => e
169
- puts "#{test_name}: #{client_name} => #{e.inspect}" if ENV["DEBUG"]
170
- reset_clients
171
- end
172
- GC.enable if !JRUBY
173
- end
174
- puts
175
- end
176
-
177
- def benchmark_hashes(hashes, test_name)
178
- hashes.each do |hash_name, int|
179
- @m = Memcached::Rails.new(:hash => hash_name)
180
- @benchmark.report("#{test_name}:#{hash_name}") do
181
- (@loops * 5).times { yield int }
182
- end
183
- end
184
- end
185
-
186
- def run_without_recursion
187
- benchmark_clients("set") do |c|
188
- c.set @k1, @m_value, 0, true
189
- c.set @k2, @m_value, 0, true
190
- c.set @k3, @m_value, 0, true
191
- end
192
-
193
- benchmark_clients("get") do |c|
194
- c.get @k1, true
195
- c.get @k2, true
196
- c.get @k3, true
197
- end
198
-
199
- benchmark_clients("get-multi") do |c|
200
- c.get_multi @keys, true
201
- end
202
-
203
- benchmark_clients("append") do |c|
204
- c.append @k1, @m_value
205
- c.append @k2, @m_value
206
- c.append @k3, @m_value
207
- end
208
-
209
- benchmark_clients("prepend") do |c|
210
- c.prepend @k1, @m_value
211
- c.prepend @k2, @m_value
212
- c.prepend @k3, @m_value
213
- end
214
-
215
- benchmark_clients("delete") do |c|
216
- c.delete @k1
217
- c.delete @k2
218
- c.delete @k3
219
- end
220
-
221
- benchmark_clients("exist") do |c|
222
- c.exist? @k1
223
- c.exist? @k2
224
- c.exist? @k3
225
- end
226
-
227
- benchmark_clients("get-missing", false) do |c|
228
- c.get @k1
229
- c.get @k2
230
- c.get @k3
231
- end
232
-
233
- benchmark_clients("append-missing", false) do |c|
234
- c.append @k1, @m_value
235
- c.append @k2, @m_value
236
- c.append @k3, @m_value
237
- end
238
-
239
- benchmark_clients("prepend-missing", false) do |c|
240
- c.prepend @k1, @m_value
241
- c.prepend @k2, @m_value
242
- c.prepend @k3, @m_value
243
- end
244
-
245
- benchmark_clients("exist-missing", false) do |c|
246
- c.exist? @k1
247
- c.exist? @k2
248
- c.exist? @k3
249
- end
250
-
251
- benchmark_clients("set-large") do |c|
252
- c.set @k1, @m_large_value, 0, true
253
- c.set @k2, @m_large_value, 0, true
254
- c.set @k3, @m_large_value, 0, true
255
- end
256
-
257
- benchmark_clients("get-large") do |c|
258
- c.get @k1, true
259
- c.get @k2, true
260
- c.get @k3, true
261
- end
262
-
263
- if defined?(Memcached) && !ENV['TEST'] && !ENV['CLIENT']
264
- benchmark_hashes(Memcached::HASH_VALUES, "hash") do |i|
265
- Rlibmemcached.memcached_generate_hash_rvalue(@k1, i)
266
- Rlibmemcached.memcached_generate_hash_rvalue(@k2, i)
267
- Rlibmemcached.memcached_generate_hash_rvalue(@k3, i)
268
- Rlibmemcached.memcached_generate_hash_rvalue(@k4, i)
269
- Rlibmemcached.memcached_generate_hash_rvalue(@k5, i)
270
- Rlibmemcached.memcached_generate_hash_rvalue(@k6, i)
271
- end
272
- end
273
- end
274
- end
275
-
276
- Bench.new(ENV["LOOPS"], ENV["STACK_DEPTH"]).run
277
-
278
- Process.memory.each do |key, value|
279
- puts "#{key}: #{value/1024.0}M"
280
- end if Process.respond_to? :memory
@@ -1,14 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../setup"
2
-
3
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib/"
4
- require 'memcached'
5
-
6
- profile = "/tmp/memcached_#{Memcached::VERSION}_c"
7
-
8
- system("env CPUPROFILE_FREQUENCY=500 CPUPROFILE=#{profile}.out DYLD_INSERT_LIBRARIES=/opt/local/lib/libprofiler.dylib ruby -r#{File.dirname(__FILE__)}/exercise -e \"Worker.new('mixed', 200000).work\"")
9
-
10
- ruby = `which ruby`.chomp
11
-
12
- system("pprof --nodefraction=0.0000001 --text #{ruby} #{profile}.out")
13
- system("pprof --nodefraction=0.0000001 --pdf #{ruby} #{profile}.out > #{profile}.pdf")
14
- system("open #{profile}.pdf")
@@ -1,185 +0,0 @@
1
-
2
- require "#{File.dirname(__FILE__)}/../setup"
3
-
4
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib/"
5
- require 'memcached'
6
- require 'rubygems'
7
- require 'ostruct'
8
-
9
- GC.copy_on_write_friendly = true if GC.respond_to?("copy_on_write_friendly=")
10
-
11
- class Worker
12
- def initialize(method_name, iterations, with_memory = 'false')
13
- @method = method_name || 'mixed'
14
- @i = (iterations || 10000).to_i
15
- @with_memory = with_memory
16
-
17
- puts "*** Running #{@method.inspect} test for #{@i} loops. ***"
18
-
19
- @key1 = "key1--------------------------------"
20
- @key2 = "key2--------------------------------"
21
- @key3 = "key3--------------------------------"
22
-
23
- @value = OpenStruct.new(
24
- :a => 1, :b => 2, "array" => [1, 2, 3], "hash" => {:badger => 1}
25
- )
26
- @marshalled = Marshal.dump(@value)
27
-
28
- @opts = [
29
- ['localhost:43042', 'localhost:43043', 'localhost:43044'],
30
- {
31
- :buffer_requests => true,
32
- :no_block => true,
33
- :noreply => false,
34
- :namespace => "namespace"
35
- }
36
- ]
37
- @cache = Memcached::Rails.new(*@opts)
38
-
39
- @cache.set @key1, @value
40
- end
41
-
42
- def work
43
- case @method
44
- when "set"
45
- @i.times do
46
- @cache.set @key1, @value
47
- end
48
- when "get"
49
- @i.times do
50
- @cache.get @key1
51
- end
52
- when "delete"
53
- @i.times do
54
- @cache.set @key1, @value
55
- @cache.delete @key1
56
- end
57
- when "delete-miss"
58
- @i.times do
59
- @cache.delete @key1
60
- end
61
- when "get-miss"
62
- @i.times do
63
- @cache.get @key2
64
- end
65
- when "get-increasing"
66
- one_k = "x"*1024
67
- @i.times do |i|
68
- @cache.set @key1, one_k*(i+1), 0, false
69
- @cache.get @key1, false
70
- end
71
- when "get-miss-increasing"
72
- @i.times do |i|
73
- @cache.delete @key2
74
- @cache.get @key2
75
- end
76
- when "add"
77
- @i.times do
78
- @cache.delete @key1
79
- @cache.add @key1, @value
80
- end
81
- when "add-present"
82
- @cache.set @key1, @value
83
- @i.times do
84
- @cache.add @key1, @value
85
- end
86
- when "mixed"
87
- @i.times do
88
- @cache.set @key1, @value
89
- @cache.set @key2, @value
90
- @cache.get @key1
91
- @cache.get @key3
92
- @cache.get [@key1, @key2, @key3]
93
- @cache.prepend @key1, @marshalled
94
- @cache.prepend @key2, @marshalled
95
- @cache.delete @key1
96
- @cache.delete @key2
97
- end
98
- when "everything"
99
- @i.times do
100
- @cache.set @key1, @value
101
- @cache.set @key2, @value
102
- @cache.get @key1
103
- @cache.get @key3
104
- @cache.get [@key1, @key2, @key3]
105
- @cache.prepend @key1, @marshalled
106
- @cache.prepend @key2, @marshalled
107
- @cache.delete @key1
108
- @cache.delete @key2
109
- @cache.prepend @key1, @marshalled
110
- @cache.prepend @key2, @marshalled
111
- @cache.get @key1
112
- @cache.get @key3
113
- cache = Memcached::Rails.new(*@opts)
114
- cache = @cache.clone
115
- servers = @cache.servers
116
- server = @cache.server_by_key(@key1)
117
- @cache.stats
118
- end
119
- @i.times do
120
- @cache.reset
121
- end
122
- system("killall -9 memcached")
123
- @i.times do
124
- @cache.set @key1, @value rescue nil
125
- @cache.get @key3 rescue nil
126
- @cache.delete @key2 rescue nil
127
- end
128
- when "stats"
129
- @cache.stats
130
- when "multiget"
131
- @i.times do
132
- @cache.get([@key1, @key2, @key3])
133
- end
134
- when "clone"
135
- @i.times do
136
- cache = @cache.clone
137
- end
138
- when "reset"
139
- @i.times do
140
- @cache.reset
141
- end
142
- when "servers"
143
- @i.times do
144
- @cache.servers
145
- end
146
- when "server_by_key"
147
- @i.times do
148
- @cache.server_by_key(@key1)
149
- end
150
- when "server_error"
151
- @i.times do
152
- begin
153
- @cache.set @key1, "I'm big" * 1000000
154
- rescue
155
- end
156
- end
157
- else
158
- raise "No such method"
159
- end
160
-
161
- @cache = nil
162
-
163
- if @with_memory == "true"
164
- puts "*** Garbage collect. ***"
165
- 10.times do
166
- GC.start
167
- sleep 0.1
168
- end
169
-
170
- sts, server_sts, clients = 0, 0, 0
171
- ObjectSpace.each_object(Memcached) { clients += 1 }
172
- ObjectSpace.each_object(Rlibmemcached::MemcachedSt) { sts += 1 }
173
- ObjectSpace.each_object(Rlibmemcached::MemcachedServerSt) { server_sts += 1 }
174
- puts "*** memcached_st structs: #{sts} ***"
175
- puts "*** memcached_server_st structs: #{server_sts} ***"
176
- puts "*** Memcached instances: #{clients} ***"
177
-
178
- begin;
179
- require 'memory'
180
- Process.memory.each { |key, value| puts "#{key}: #{value/1024.0}M" }
181
- rescue LoadError
182
- end
183
- end
184
- end
185
- end
@@ -1,21 +0,0 @@
1
-
2
- require "#{File.dirname(__FILE__)}/../setup"
3
-
4
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../../lib/"
5
-
6
- ENV['CPUPROFILE_FREQUENCY'] = '500'
7
- require 'memcached'
8
- require 'rubygems'
9
- require 'perftools'
10
- require "#{HERE}/profile/exercise"
11
-
12
- profile = "/tmp/memcached_#{Memcached::VERSION}_rb"
13
- worker = Worker.new('mixed', 200000)
14
-
15
- PerfTools::CpuProfiler.start("#{profile}.out") do
16
- worker.work
17
- end
18
-
19
- system("pprof.rb --nodefraction=0.0000001 --text #{profile}.out")
20
- system("pprof.rb --nodefraction=0.0000001 --edgefraction=0.0000001 --pdf #{profile}.out > #{profile}.pdf")
21
- system("open #{profile}.pdf")
@@ -1,10 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../setup"
2
-
3
- COMMAND = "--dsymutil=yes ruby -r#{File.dirname(__FILE__)}/exercise.rb -e \"Worker.new(ENV['TEST'] || 'everything', (ENV['LOOPS'] || 50).to_i, 'true').work\""
4
-
5
- case ENV["TOOL"]
6
- when nil, "memcheck":
7
- exec("valgrind --tool=memcheck --error-limit=no --undef-value-errors=no --leak-check=full --show-reachable=no --num-callers=15 --track-fds=yes --workaround-gcc296-bugs=yes --leak-resolution=med --max-stackframe=7304328 #{COMMAND}")
8
- when "massif":
9
- exec("valgrind --tool=massif --time-unit=B #{COMMAND}")
10
- end
data/test/setup.rb DELETED
@@ -1,30 +0,0 @@
1
-
2
- unless defined? UNIX_SOCKET_NAME
3
- HERE = File.dirname(__FILE__)
4
- UNIX_SOCKET_NAME = File.join(ENV['TMPDIR']||'/tmp','memcached')
5
-
6
- # Kill memcached
7
- system("killall -9 memcached")
8
-
9
- # Start memcached
10
- verbosity = (ENV['DEBUG'] ? "-vv" : "")
11
- log = "/tmp/memcached.log"
12
- memcached = ENV['MEMCACHED_COMMAND'] || 'memcached'
13
- system ">#{log}"
14
-
15
- # TCP memcached
16
- (43042..43046).each do |port|
17
- cmd = "#{memcached} #{verbosity} -U 0 -p #{port} >> #{log} 2>&1 &"
18
- raise "'#{cmd}' failed to start" unless system(cmd)
19
- end
20
- # UDP memcached
21
- (43052..43053).each do |port|
22
- cmd = "#{memcached} #{verbosity} -U #{port} -p 0 >> #{log} 2>&1 &"
23
- raise "'#{cmd}' failed to start" unless system(cmd)
24
- end
25
- # Domain socket memcached
26
- (0..1).each do |i|
27
- cmd = "#{memcached} -M -s #{UNIX_SOCKET_NAME}#{i} #{verbosity} >> #{log} 2>&1 &"
28
- raise "'#{cmd}' failed to start" unless system(cmd)
29
- end
30
- end
data/test/teardown.rb DELETED
File without changes
data/test/test_helper.rb DELETED
@@ -1,18 +0,0 @@
1
- $LOAD_PATH << "#{File.dirname(__FILE__)}/../lib"
2
-
3
- require 'socket'
4
- require 'benchmark'
5
-
6
- require 'rubygems'
7
- require 'ruby-debug' if ENV['DEBUG']
8
- require 'memcached'
9
-
10
- require 'test/unit'
11
- require 'test/unit/assertions'
12
- require 'mocha/test_unit'
13
- require 'ostruct'
14
-
15
- UNIX_SOCKET_NAME = File.join(ENV['TMPDIR']||'/tmp','memcached') unless defined? UNIX_SOCKET_NAME
16
-
17
- class GenericClass
18
- end
@@ -1,8 +0,0 @@
1
-
2
- require File.expand_path("#{File.dirname(__FILE__)}/../test_helper")
3
-
4
- class BindingTest < Test::Unit::TestCase
5
- def test_libmemcached_loaded
6
- assert_nothing_raised { Rlibmemcached }
7
- end
8
- end