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.
- checksums.yaml +4 -4
- data/.github/workflows/build_release_pipeline.yaml +53 -0
- data/.gitignore +33 -0
- data/BENCHMARKS +130 -126
- data/CHANGELOG +1 -6
- data/Gemfile +8 -1
- data/Gemfile.lock +25 -38
- data/README.md +144 -0
- data/Rakefile +21 -93
- data/ext/rlibmemcached/extconf.rb +76 -0
- data/ext/{rlibmemcached.i → rlibmemcached/rlibmemcached.i} +48 -69
- data/ext/{rlibmemcached_wrap.c → rlibmemcached/rlibmemcached_wrap.c} +146 -320
- data/lib/memcached/exceptions.rb +1 -12
- data/lib/memcached/experimental.rb +1 -33
- data/lib/memcached/memcached.rb +41 -34
- data/lib/memcached/version.rb +1 -1
- data/lib/memcached.rb +9 -4
- data/memcached.gemspec +0 -0
- data/memcached.pem +21 -0
- data/vendor/libmemcached-0.32/config/config.guess +1815 -0
- data/vendor/libmemcached-0.32/config/config.sub +2354 -0
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_connect.c +23 -13
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.c +18 -13
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_purge.c +1 -1
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.c +16 -25
- metadata +195 -249
- data/Manifest +0 -209
- data/README.rdoc +0 -124
- data/ext/extconf-make.rb +0 -25
- data/ext/extconf.rb +0 -78
- data/ext/libmemcached-0.32/config/config.guess +0 -1561
- data/ext/libmemcached-0.32/config/config.sub +0 -1686
- data/lib/memcached/auth.rb +0 -16
- data/test/profile/benchmark.rb +0 -280
- data/test/profile/c_profiler.rb +0 -14
- data/test/profile/exercise.rb +0 -185
- data/test/profile/rb_profiler.rb +0 -21
- data/test/profile/valgrind.rb +0 -10
- data/test/setup.rb +0 -30
- data/test/teardown.rb +0 -0
- data/test/test_helper.rb +0 -18
- data/test/unit/binding_test.rb +0 -8
- data/test/unit/memcached_experimental_test.rb +0 -272
- data/test/unit/memcached_test.rb +0 -1487
- data/test/unit/rails_test.rb +0 -330
- /data/{ext → vendor}/libmemcached-0.32/AUTHORS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/COPYING +0 -0
- /data/{ext → vendor}/libmemcached-0.32/ChangeLog +0 -0
- /data/{ext → vendor}/libmemcached-0.32/INSTALL +0 -0
- /data/{ext → vendor}/libmemcached-0.32/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/NEWS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/README +0 -0
- /data/{ext → vendor}/libmemcached-0.32/THANKS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/TODO +0 -0
- /data/{ext → vendor}/libmemcached-0.32/aclocal.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/client_options.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/execute.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/execute.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/generator.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/generator.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memcat.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memcp.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memdump.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memerror.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memflush.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memrm.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memslap.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memstat.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/utilities.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/utilities.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/compile +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/config.rpath +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/depcomp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/install-sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/ltmain.sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/missing +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config.h.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/configure +0 -0
- /data/{ext → vendor}/libmemcached-0.32/configure.ac +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/byteorder.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/common.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/crc.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/hsieh_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/jenkins_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached.ver +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.d +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/md5.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/README.txt +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.hpp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_allocators.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_analyze.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_auto.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_behavior.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_callback.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_configure.h.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_constants.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_do.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_dump.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_fetch.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hosts.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_internal.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_key.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_parse.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_pool.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_quit.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_response.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_stats.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_strerror.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_types.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_util.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_verbosity.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_version.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_watchpoint.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/murmur_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/visibility.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/memcached_pool.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/acx_pthread.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/byteorder.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/deprecated.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/enable_utillib.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/extensions.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/hsieh.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/lib-prefix.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/libtool.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltoptions.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltsugar.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltversion.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/lt~obsolete.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/memcached.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_64bit.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_canonical.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_sasl.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_header_assert.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_libtool.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_optimize.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_shared_ptr.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_vc_build.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_warnings.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pod2man.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/protocol_binary.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/setsockopt.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/visibility.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached-fc.spec.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.pc.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/set_benchmark.sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/atomsmasher.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/function.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/ketama_test_cases.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output.cmp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output2.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/plus.cpp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memcat.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memcp.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memrm.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memslap.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memstat.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/server.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/server.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/start.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memcat.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memcp.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memrm.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memslap.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memstat.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/test.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/test.h +0 -0
- /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
|