couchbase-memcached 1.2.8
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.
- data.tar.gz.sig +2 -0
- data/BENCHMARKS +134 -0
- data/CHANGELOG +127 -0
- data/LICENSE +184 -0
- data/Manifest +535 -0
- data/README +118 -0
- data/Rakefile +83 -0
- data/TODO +4 -0
- data/couchbase-memcached.gemspec +33 -0
- data/ext/extconf-make.rb +25 -0
- data/ext/extconf.rb +91 -0
- data/ext/libmemcached-0.50/AUTHORS +11 -0
- data/ext/libmemcached-0.50/COPYING +33 -0
- data/ext/libmemcached-0.50/ChangeLog +392 -0
- data/ext/libmemcached-0.50/Makefile.am +114 -0
- data/ext/libmemcached-0.50/Makefile.in +4232 -0
- data/ext/libmemcached-0.50/NEWS +1 -0
- data/ext/libmemcached-0.50/README +43 -0
- data/ext/libmemcached-0.50/README.FIRST +31 -0
- data/ext/libmemcached-0.50/README.win32 +25 -0
- data/ext/libmemcached-0.50/THANKS +14 -0
- data/ext/libmemcached-0.50/TODO +11 -0
- data/ext/libmemcached-0.50/aclocal.m4 +1077 -0
- data/ext/libmemcached-0.50/clients/client_options.h +45 -0
- data/ext/libmemcached-0.50/clients/execute.cc +131 -0
- data/ext/libmemcached-0.50/clients/execute.h +30 -0
- data/ext/libmemcached-0.50/clients/generator.cc +96 -0
- data/ext/libmemcached-0.50/clients/generator.h +36 -0
- data/ext/libmemcached-0.50/clients/include.am +116 -0
- data/ext/libmemcached-0.50/clients/memaslap.c +908 -0
- data/ext/libmemcached-0.50/clients/memcapable.cc +2094 -0
- data/ext/libmemcached-0.50/clients/memcat.cc +242 -0
- data/ext/libmemcached-0.50/clients/memcp.cc +317 -0
- data/ext/libmemcached-0.50/clients/memdump.cc +183 -0
- data/ext/libmemcached-0.50/clients/memerror.cc +102 -0
- data/ext/libmemcached-0.50/clients/memflush.cc +154 -0
- data/ext/libmemcached-0.50/clients/memparse.cc +68 -0
- data/ext/libmemcached-0.50/clients/memrm.cc +177 -0
- data/ext/libmemcached-0.50/clients/memslap.cc +495 -0
- data/ext/libmemcached-0.50/clients/memstat.cc +349 -0
- data/ext/libmemcached-0.50/clients/ms_atomic.h +69 -0
- data/ext/libmemcached-0.50/clients/ms_conn.c +3413 -0
- data/ext/libmemcached-0.50/clients/ms_conn.h +241 -0
- data/ext/libmemcached-0.50/clients/ms_memslap.h +132 -0
- data/ext/libmemcached-0.50/clients/ms_setting.c +1068 -0
- data/ext/libmemcached-0.50/clients/ms_setting.h +181 -0
- data/ext/libmemcached-0.50/clients/ms_sigsegv.c +126 -0
- data/ext/libmemcached-0.50/clients/ms_sigsegv.h +34 -0
- data/ext/libmemcached-0.50/clients/ms_stats.c +307 -0
- data/ext/libmemcached-0.50/clients/ms_stats.h +69 -0
- data/ext/libmemcached-0.50/clients/ms_task.c +1114 -0
- data/ext/libmemcached-0.50/clients/ms_task.h +94 -0
- data/ext/libmemcached-0.50/clients/ms_thread.c +351 -0
- data/ext/libmemcached-0.50/clients/ms_thread.h +78 -0
- data/ext/libmemcached-0.50/clients/utilities.cc +231 -0
- data/ext/libmemcached-0.50/clients/utilities.h +64 -0
- data/ext/libmemcached-0.50/config.h.in +647 -0
- data/ext/libmemcached-0.50/config/autorun.sh +126 -0
- data/ext/libmemcached-0.50/config/compile +143 -0
- data/ext/libmemcached-0.50/config/config.guess +1517 -0
- data/ext/libmemcached-0.50/config/config.rpath +666 -0
- data/ext/libmemcached-0.50/config/config.sub +1760 -0
- data/ext/libmemcached-0.50/config/depcomp +630 -0
- data/ext/libmemcached-0.50/config/install-sh +520 -0
- data/ext/libmemcached-0.50/config/ltmain.sh +9642 -0
- data/ext/libmemcached-0.50/config/missing +376 -0
- data/ext/libmemcached-0.50/config/pandora-plugin +752 -0
- data/ext/libmemcached-0.50/config/uncrustify.cfg +1112 -0
- data/ext/libmemcached-0.50/configure +27103 -0
- data/ext/libmemcached-0.50/configure.ac +186 -0
- data/ext/libmemcached-0.50/docs/conf.py.in +354 -0
- data/ext/libmemcached-0.50/docs/include.am +240 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_clone.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_crc32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_create.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_free.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_functions.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_hsieh.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3 +88 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_jenkins.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_md5.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_murmur.3 +105 -0
- data/ext/libmemcached-0.50/docs/man/hashkit_value.3 +66 -0
- data/ext/libmemcached-0.50/docs/man/libhashkit.3 +57 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached.3 +208 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_configuration.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/libmemcached_examples.3 +144 -0
- data/ext/libmemcached-0.50/docs/man/libmemcachedutil.3 +68 -0
- data/ext/libmemcached-0.50/docs/man/memaslap.1 +1222 -0
- data/ext/libmemcached-0.50/docs/man/memcached.3 +293 -0
- data/ext/libmemcached-0.50/docs/man/memcached_add.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_add_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_analyze.3 +77 -0
- data/ext/libmemcached-0.50/docs/man/memcached_append.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_append_by_key.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_behavior_get.3 +333 -0
- data/ext/libmemcached-0.50/docs/man/memcached_behavior_set.3 +333 -0
- data/ext/libmemcached-0.50/docs/man/memcached_callback_get.3 +159 -0
- data/ext/libmemcached-0.50/docs/man/memcached_callback_set.3 +159 -0
- data/ext/libmemcached-0.50/docs/man/memcached_cas.3 +91 -0
- data/ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3 +91 -0
- data/ext/libmemcached-0.50/docs/man/memcached_clone.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_create.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_decrement.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_delete.3 +83 -0
- data/ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3 +83 -0
- data/ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_dump.3 +77 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_fetch_result.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3 +72 -0
- data/ext/libmemcached-0.50/docs/man/memcached_free.3 +99 -0
- data/ext/libmemcached-0.50/docs/man/memcached_generate_hash.3 +85 -0
- data/ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3 +85 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_get_user_data.3 +79 -0
- data/ext/libmemcached-0.50/docs/man/memcached_increment.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3 +124 -0
- data/ext/libmemcached-0.50/docs/man/memcached_lib_version.3 +76 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_execute.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3 +174 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_create.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_pop.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_push.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_pool_st.3 +139 -0
- data/ext/libmemcached-0.50/docs/man/memcached_prepend.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_quit.3 +74 -0
- data/ext/libmemcached-0.50/docs/man/memcached_replace.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_add.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_count.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_cursor.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_append.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_count.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_list_free.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_server_push.3 +141 -0
- data/ext/libmemcached-0.50/docs/man/memcached_servers_parse.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_by_key.3 +132 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3 +111 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3 +95 -0
- data/ext/libmemcached-0.50/docs/man/memcached_set_user_data.3 +79 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_execute.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_stat_servername.3 +116 -0
- data/ext/libmemcached-0.50/docs/man/memcached_strerror.3 +69 -0
- data/ext/libmemcached-0.50/docs/man/memcached_verbosity.3 +66 -0
- data/ext/libmemcached-0.50/docs/man/memcached_version.3 +76 -0
- data/ext/libmemcached-0.50/docs/man/memcapable.1 +92 -0
- data/ext/libmemcached-0.50/docs/man/memcat.1 +71 -0
- data/ext/libmemcached-0.50/docs/man/memcp.1 +77 -0
- data/ext/libmemcached-0.50/docs/man/memdump.1 +66 -0
- data/ext/libmemcached-0.50/docs/man/memerror.1 +65 -0
- data/ext/libmemcached-0.50/docs/man/memflush.1 +73 -0
- data/ext/libmemcached-0.50/docs/man/memrm.1 +72 -0
- data/ext/libmemcached-0.50/docs/man/memslap.1 +59 -0
- data/ext/libmemcached-0.50/docs/man/memstat.1 +70 -0
- data/ext/libmemcached-0.50/example/include.am +24 -0
- data/ext/libmemcached-0.50/example/interface_v0.c +594 -0
- data/ext/libmemcached-0.50/example/interface_v1.c +411 -0
- data/ext/libmemcached-0.50/example/memcached_light.c +474 -0
- data/ext/libmemcached-0.50/example/memcached_light.h +7 -0
- data/ext/libmemcached-0.50/example/storage.c +172 -0
- data/ext/libmemcached-0.50/example/storage.h +27 -0
- data/ext/libmemcached-0.50/example/storage_innodb.c +535 -0
- data/ext/libmemcached-0.50/libhashkit/algorithm.cc +69 -0
- data/ext/libmemcached-0.50/libhashkit/algorithm.h +96 -0
- data/ext/libmemcached-0.50/libhashkit/behavior.cc +9 -0
- data/ext/libmemcached-0.50/libhashkit/behavior.h +26 -0
- data/ext/libmemcached-0.50/libhashkit/common.h +33 -0
- data/ext/libmemcached-0.50/libhashkit/configure.h.in +19 -0
- data/ext/libmemcached-0.50/libhashkit/crc32.cc +86 -0
- data/ext/libmemcached-0.50/libhashkit/digest.cc +62 -0
- data/ext/libmemcached-0.50/libhashkit/digest.h +30 -0
- data/ext/libmemcached-0.50/libhashkit/fnv.cc +75 -0
- data/ext/libmemcached-0.50/libhashkit/function.cc +156 -0
- data/ext/libmemcached-0.50/libhashkit/function.h +44 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.cc +100 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.h +95 -0
- data/ext/libmemcached-0.50/libhashkit/hashkit.hpp +97 -0
- data/ext/libmemcached-0.50/libhashkit/hsieh.cc +70 -0
- data/ext/libmemcached-0.50/libhashkit/include.am +69 -0
- data/ext/libmemcached-0.50/libhashkit/jenkins.cc +214 -0
- data/ext/libmemcached-0.50/libhashkit/ketama.cc +164 -0
- data/ext/libmemcached-0.50/libhashkit/md5.cc +367 -0
- data/ext/libmemcached-0.50/libhashkit/murmur.cc +77 -0
- data/ext/libmemcached-0.50/libhashkit/one_at_a_time.cc +34 -0
- data/ext/libmemcached-0.50/libhashkit/str_algorithm.cc +58 -0
- data/ext/libmemcached-0.50/libhashkit/str_algorithm.h +48 -0
- data/ext/libmemcached-0.50/libhashkit/strerror.cc +25 -0
- data/ext/libmemcached-0.50/libhashkit/strerror.h +23 -0
- data/ext/libmemcached-0.50/libhashkit/types.h +90 -0
- data/ext/libmemcached-0.50/libhashkit/visibility.h +48 -0
- data/ext/libmemcached-0.50/libmemcached/allocators.cc +119 -0
- data/ext/libmemcached-0.50/libmemcached/allocators.h +87 -0
- data/ext/libmemcached-0.50/libmemcached/analyze.cc +110 -0
- data/ext/libmemcached-0.50/libmemcached/analyze.h +66 -0
- data/ext/libmemcached-0.50/libmemcached/array.c +128 -0
- data/ext/libmemcached-0.50/libmemcached/array.h +75 -0
- data/ext/libmemcached-0.50/libmemcached/auto.cc +383 -0
- data/ext/libmemcached-0.50/libmemcached/auto.h +111 -0
- data/ext/libmemcached-0.50/libmemcached/basic_string.h +55 -0
- data/ext/libmemcached-0.50/libmemcached/behavior.cc +590 -0
- data/ext/libmemcached-0.50/libmemcached/behavior.h +86 -0
- data/ext/libmemcached-0.50/libmemcached/byteorder.cc +90 -0
- data/ext/libmemcached-0.50/libmemcached/byteorder.h +52 -0
- data/ext/libmemcached-0.50/libmemcached/callback.cc +160 -0
- data/ext/libmemcached-0.50/libmemcached/callback.h +61 -0
- data/ext/libmemcached-0.50/libmemcached/common.h +182 -0
- data/ext/libmemcached-0.50/libmemcached/configure.h.in +52 -0
- data/ext/libmemcached-0.50/libmemcached/connect.cc +626 -0
- data/ext/libmemcached-0.50/libmemcached/constants.h +167 -0
- data/ext/libmemcached-0.50/libmemcached/delete.cc +266 -0
- data/ext/libmemcached-0.50/libmemcached/delete.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/do.cc +100 -0
- data/ext/libmemcached-0.50/libmemcached/do.hpp +49 -0
- data/ext/libmemcached-0.50/libmemcached/dump.cc +107 -0
- data/ext/libmemcached-0.50/libmemcached/dump.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/error.cc +419 -0
- data/ext/libmemcached-0.50/libmemcached/error.h +61 -0
- data/ext/libmemcached-0.50/libmemcached/error.hpp +87 -0
- data/ext/libmemcached-0.50/libmemcached/exception.hpp +63 -0
- data/ext/libmemcached-0.50/libmemcached/fetch.cc +267 -0
- data/ext/libmemcached-0.50/libmemcached/fetch.h +53 -0
- data/ext/libmemcached-0.50/libmemcached/flush.cc +149 -0
- data/ext/libmemcached-0.50/libmemcached/flush.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/flush_buffers.cc +66 -0
- data/ext/libmemcached-0.50/libmemcached/flush_buffers.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/get.cc +842 -0
- data/ext/libmemcached-0.50/libmemcached/get.h +135 -0
- data/ext/libmemcached-0.50/libmemcached/hash.cc +178 -0
- data/ext/libmemcached-0.50/libmemcached/hash.h +68 -0
- data/ext/libmemcached-0.50/libmemcached/hosts.cc +516 -0
- data/ext/libmemcached-0.50/libmemcached/include.am +183 -0
- data/ext/libmemcached-0.50/libmemcached/initialize_query.cc +70 -0
- data/ext/libmemcached-0.50/libmemcached/initialize_query.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/internal.h +46 -0
- data/ext/libmemcached-0.50/libmemcached/io.cc +920 -0
- data/ext/libmemcached-0.50/libmemcached/io.h +119 -0
- data/ext/libmemcached-0.50/libmemcached/is.h +48 -0
- data/ext/libmemcached-0.50/libmemcached/key.cc +23 -0
- data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.d +30 -0
- data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.h +118 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.cc +437 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.h +214 -0
- data/ext/libmemcached-0.50/libmemcached/memcached.hpp +799 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/README.txt +7 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h +726 -0
- data/ext/libmemcached-0.50/libmemcached/memcached/vbucket.h +26 -0
- data/ext/libmemcached-0.50/libmemcached/memcached_util.h +44 -0
- data/ext/libmemcached-0.50/libmemcached/memory.h +79 -0
- data/ext/libmemcached-0.50/libmemcached/options.cc +178 -0
- data/ext/libmemcached-0.50/libmemcached/options.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/options.hpp +56 -0
- data/ext/libmemcached-0.50/libmemcached/options/context.h +151 -0
- data/ext/libmemcached-0.50/libmemcached/options/include.am +19 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.am +0 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.cc +2324 -0
- data/ext/libmemcached-0.50/libmemcached/options/parser.h +122 -0
- data/ext/libmemcached-0.50/libmemcached/options/scanner.cc +3203 -0
- data/ext/libmemcached-0.50/libmemcached/options/scanner.h +479 -0
- data/ext/libmemcached-0.50/libmemcached/options/server.h +60 -0
- data/ext/libmemcached-0.50/libmemcached/options/symbol.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/parse.cc +110 -0
- data/ext/libmemcached-0.50/libmemcached/parse.h +23 -0
- data/ext/libmemcached-0.50/libmemcached/platform.h +56 -0
- data/ext/libmemcached-0.50/libmemcached/prefix_key.cc +65 -0
- data/ext/libmemcached-0.50/libmemcached/prefix_key.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c +963 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h +40 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c +1121 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h +47 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/cache.c +149 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/cache.h +116 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/callback.h +418 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/common.h +163 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/include.am +26 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/pedantic.c +202 -0
- data/ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c +365 -0
- data/ext/libmemcached-0.50/libmemcached/protocol_handler.h +215 -0
- data/ext/libmemcached-0.50/libmemcached/purge.cc +90 -0
- data/ext/libmemcached-0.50/libmemcached/quit.cc +139 -0
- data/ext/libmemcached-0.50/libmemcached/quit.h +55 -0
- data/ext/libmemcached-0.50/libmemcached/response.cc +619 -0
- data/ext/libmemcached-0.50/libmemcached/response.h +57 -0
- data/ext/libmemcached-0.50/libmemcached/result.cc +173 -0
- data/ext/libmemcached-0.50/libmemcached/result.h +100 -0
- data/ext/libmemcached-0.50/libmemcached/return.h +98 -0
- data/ext/libmemcached-0.50/libmemcached/sasl.c +408 -0
- data/ext/libmemcached-0.50/libmemcached/sasl.h +86 -0
- data/ext/libmemcached-0.50/libmemcached/server.cc +351 -0
- data/ext/libmemcached-0.50/libmemcached/server.h +169 -0
- data/ext/libmemcached-0.50/libmemcached/server_list.cc +88 -0
- data/ext/libmemcached-0.50/libmemcached/server_list.h +77 -0
- data/ext/libmemcached-0.50/libmemcached/stats.cc +623 -0
- data/ext/libmemcached-0.50/libmemcached/stats.h +96 -0
- data/ext/libmemcached-0.50/libmemcached/storage.cc +567 -0
- data/ext/libmemcached-0.50/libmemcached/storage.h +133 -0
- data/ext/libmemcached-0.50/libmemcached/strerror.cc +189 -0
- data/ext/libmemcached-0.50/libmemcached/strerror.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/string.cc +253 -0
- data/ext/libmemcached-0.50/libmemcached/string.h +121 -0
- data/ext/libmemcached-0.50/libmemcached/touch.cc +106 -0
- data/ext/libmemcached-0.50/libmemcached/touch.h +59 -0
- data/ext/libmemcached-0.50/libmemcached/types.h +117 -0
- data/ext/libmemcached-0.50/libmemcached/util.h +40 -0
- data/ext/libmemcached-0.50/libmemcached/util/flush.cc +61 -0
- data/ext/libmemcached-0.50/libmemcached/util/flush.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/util/include.am +34 -0
- data/ext/libmemcached-0.50/libmemcached/util/ping.cc +62 -0
- data/ext/libmemcached-0.50/libmemcached/util/ping.h +49 -0
- data/ext/libmemcached-0.50/libmemcached/util/pool.cc +392 -0
- data/ext/libmemcached-0.50/libmemcached/util/pool.h +78 -0
- data/ext/libmemcached-0.50/libmemcached/util/version.cc +87 -0
- data/ext/libmemcached-0.50/libmemcached/util/version.h +53 -0
- data/ext/libmemcached-0.50/libmemcached/verbosity.cc +97 -0
- data/ext/libmemcached-0.50/libmemcached/verbosity.h +50 -0
- data/ext/libmemcached-0.50/libmemcached/version.cc +214 -0
- data/ext/libmemcached-0.50/libmemcached/version.h +52 -0
- data/ext/libmemcached-0.50/libmemcached/virtual_bucket.c +118 -0
- data/ext/libmemcached-0.50/libmemcached/virtual_bucket.h +59 -0
- data/ext/libmemcached-0.50/libmemcached/visibility.h +51 -0
- data/ext/libmemcached-0.50/libmemcached/watchpoint.h +110 -0
- data/ext/libmemcached-0.50/libtest/callbacks.h +21 -0
- data/ext/libmemcached-0.50/libtest/collection.h +19 -0
- data/ext/libmemcached-0.50/libtest/common.h +50 -0
- data/ext/libmemcached-0.50/libtest/core.h +11 -0
- data/ext/libmemcached-0.50/libtest/error.h +18 -0
- data/ext/libmemcached-0.50/libtest/failed.h +52 -0
- data/ext/libmemcached-0.50/libtest/framework.cc +57 -0
- data/ext/libmemcached-0.50/libtest/framework.h +137 -0
- data/ext/libmemcached-0.50/libtest/get.h +22 -0
- data/ext/libmemcached-0.50/libtest/include.am +52 -0
- data/ext/libmemcached-0.50/libtest/runner.h +19 -0
- data/ext/libmemcached-0.50/libtest/server.c +355 -0
- data/ext/libmemcached-0.50/libtest/server.h +43 -0
- data/ext/libmemcached-0.50/libtest/stats.h +30 -0
- data/ext/libmemcached-0.50/libtest/strerror.h +14 -0
- data/ext/libmemcached-0.50/libtest/test.cc +319 -0
- data/ext/libmemcached-0.50/libtest/test.h +162 -0
- data/ext/libmemcached-0.50/libtest/test.hpp +46 -0
- data/ext/libmemcached-0.50/libtest/visibility.h +69 -0
- data/ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4 +83 -0
- data/ext/libmemcached-0.50/m4/acx_pthread.m4 +271 -0
- data/ext/libmemcached-0.50/m4/byteorder.m4 +19 -0
- data/ext/libmemcached-0.50/m4/deprecated.m4 +17 -0
- data/ext/libmemcached-0.50/m4/eagain.m4 +28 -0
- data/ext/libmemcached-0.50/m4/enable_utillib.m4 +16 -0
- data/ext/libmemcached-0.50/m4/gettext.m4 +379 -0
- data/ext/libmemcached-0.50/m4/hsieh.m4 +18 -0
- data/ext/libmemcached-0.50/m4/iconv.m4 +214 -0
- data/ext/libmemcached-0.50/m4/lib-ld.m4 +110 -0
- data/ext/libmemcached-0.50/m4/lib-link.m4 +767 -0
- data/ext/libmemcached-0.50/m4/lib-prefix.m4 +221 -0
- data/ext/libmemcached-0.50/m4/libtool.m4 +7851 -0
- data/ext/libmemcached-0.50/m4/ltoptions.m4 +369 -0
- data/ext/libmemcached-0.50/m4/ltsugar.m4 +123 -0
- data/ext/libmemcached-0.50/m4/ltversion.m4 +23 -0
- data/ext/libmemcached-0.50/m4/lt~obsolete.m4 +98 -0
- data/ext/libmemcached-0.50/m4/memaslap.m4 +9 -0
- data/ext/libmemcached-0.50/m4/memcached.m4 +31 -0
- data/ext/libmemcached-0.50/m4/murmur.m4 +18 -0
- data/ext/libmemcached-0.50/m4/pandora_64bit.m4 +60 -0
- data/ext/libmemcached-0.50/m4/pandora_bison.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_canonical.m4 +418 -0
- data/ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4 +23 -0
- data/ext/libmemcached-0.50/m4/pandora_cinttypes.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_clock_gettime.m4 +15 -0
- data/ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4 +103 -0
- data/ext/libmemcached-0.50/m4/pandora_cstdint.m4 +38 -0
- data/ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4 +27 -0
- data/ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4 +60 -0
- data/ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_extensions.m4 +16 -0
- data/ext/libmemcached-0.50/m4/pandora_fdatasync.m4 +25 -0
- data/ext/libmemcached-0.50/m4/pandora_flex.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4 +66 -0
- data/ext/libmemcached-0.50/m4/pandora_have_boost.m4 +93 -0
- data/ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_have_innodb.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libaio.m4 +56 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libavahi.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libbdb.m4 +40 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4 +46 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4 +49 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4 +45 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libcurl.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libdl.m4 +51 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4 +61 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libevent.m4 +66 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libgearman.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libgtest.m4 +47 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4 +43 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4 +42 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4 +64 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libldap.m4 +73 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4 +106 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4 +146 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4 +80 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpcre.m4 +73 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpq.m4 +46 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4 +42 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4 +54 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libuuid.m4 +55 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4 +40 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libxml2.m4 +52 -0
- data/ext/libmemcached-0.50/m4/pandora_have_libz.m4 +51 -0
- data/ext/libmemcached-0.50/m4/pandora_have_protobuf.m4 +82 -0
- data/ext/libmemcached-0.50/m4/pandora_have_sasl.m4 +133 -0
- data/ext/libmemcached-0.50/m4/pandora_have_thrift.m4 +45 -0
- data/ext/libmemcached-0.50/m4/pandora_header_assert.m4 +23 -0
- data/ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4 +83 -0
- data/ext/libmemcached-0.50/m4/pandora_intltool.m4 +225 -0
- data/ext/libmemcached-0.50/m4/pandora_libtool.m4 +25 -0
- data/ext/libmemcached-0.50/m4/pandora_optimize.m4 +75 -0
- data/ext/libmemcached-0.50/m4/pandora_platform.m4 +117 -0
- data/ext/libmemcached-0.50/m4/pandora_plugins.m4 +62 -0
- data/ext/libmemcached-0.50/m4/pandora_print_callstack.m4 +61 -0
- data/ext/libmemcached-0.50/m4/pandora_pthread.m4 +258 -0
- data/ext/libmemcached-0.50/m4/pandora_python3_devel.m4 +236 -0
- data/ext/libmemcached-0.50/m4/pandora_run_cpplint.m4 +8 -0
- data/ext/libmemcached-0.50/m4/pandora_sasl.m4 +133 -0
- data/ext/libmemcached-0.50/m4/pandora_shared_ptr.m4 +59 -0
- data/ext/libmemcached-0.50/m4/pandora_stack_direction.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_stl_hash.m4 +94 -0
- data/ext/libmemcached-0.50/m4/pandora_swig.m4 +39 -0
- data/ext/libmemcached-0.50/m4/pandora_use_pipe.m4 +36 -0
- data/ext/libmemcached-0.50/m4/pandora_vc_build.m4 +168 -0
- data/ext/libmemcached-0.50/m4/pandora_version.m4 +11 -0
- data/ext/libmemcached-0.50/m4/pandora_visibility.m4 +75 -0
- data/ext/libmemcached-0.50/m4/pandora_warnings.m4 +447 -0
- data/ext/libmemcached-0.50/m4/pandora_with_gettext.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_with_lua.m4 +55 -0
- data/ext/libmemcached-0.50/m4/pandora_with_memcached.m4 +41 -0
- data/ext/libmemcached-0.50/m4/pandora_with_perl.m4 +81 -0
- data/ext/libmemcached-0.50/m4/pandora_with_php.m4 +56 -0
- data/ext/libmemcached-0.50/m4/pandora_with_python.m4 +37 -0
- data/ext/libmemcached-0.50/m4/pandora_with_python3.m4 +44 -0
- data/ext/libmemcached-0.50/m4/pandora_with_r.m4 +33 -0
- data/ext/libmemcached-0.50/m4/pandora_with_ruby.m4 +79 -0
- data/ext/libmemcached-0.50/m4/pandora_with_valgrind.m4 +17 -0
- data/ext/libmemcached-0.50/m4/pkg.m4 +157 -0
- data/ext/libmemcached-0.50/m4/po.m4 +449 -0
- data/ext/libmemcached-0.50/m4/progtest.m4 +92 -0
- data/ext/libmemcached-0.50/m4/protocol_binary.m4 +36 -0
- data/ext/libmemcached-0.50/m4/setsockopt.m4 +73 -0
- data/ext/libmemcached-0.50/m4/socket_send_flags.m4 +66 -0
- data/ext/libmemcached-0.50/poll/include.am +8 -0
- data/ext/libmemcached-0.50/poll/poll.c +77 -0
- data/ext/libmemcached-0.50/poll/poll.h +45 -0
- data/ext/libmemcached-0.50/support/include.am +11 -0
- data/ext/libmemcached-0.50/support/libmemcached-fc.spec.in +105 -0
- data/ext/libmemcached-0.50/support/libmemcached.pc.in +10 -0
- data/ext/libmemcached-0.50/support/libmemcached.spec.in +281 -0
- data/ext/libmemcached-0.50/support/set_benchmark.sh +5 -0
- data/ext/libmemcached-0.50/tests/atomsmasher.cc +295 -0
- data/ext/libmemcached-0.50/tests/basic.cc +134 -0
- data/ext/libmemcached-0.50/tests/basic.h +66 -0
- data/ext/libmemcached-0.50/tests/cpp_example.cc +195 -0
- data/ext/libmemcached-0.50/tests/deprecated.cc +72 -0
- data/ext/libmemcached-0.50/tests/deprecated.h +49 -0
- data/ext/libmemcached-0.50/tests/error_conditions.cc +63 -0
- data/ext/libmemcached-0.50/tests/error_conditions.h +48 -0
- data/ext/libmemcached-0.50/tests/hash_plus.cc +225 -0
- data/ext/libmemcached-0.50/tests/hash_results.h +127 -0
- data/ext/libmemcached-0.50/tests/hashkit_functions.cc +619 -0
- data/ext/libmemcached-0.50/tests/include.am +342 -0
- data/ext/libmemcached-0.50/tests/ketama_test_cases.h +121 -0
- data/ext/libmemcached-0.50/tests/ketama_test_cases_spy.h +118 -0
- data/ext/libmemcached-0.50/tests/libmemcached_world.h +205 -0
- data/ext/libmemcached-0.50/tests/mem_functions.cc +6648 -0
- data/ext/libmemcached-0.50/tests/mem_udp.cc +510 -0
- data/ext/libmemcached-0.50/tests/output_plus.res +5 -0
- data/ext/libmemcached-0.50/tests/parser.cc +599 -0
- data/ext/libmemcached-0.50/tests/parser.h +109 -0
- data/ext/libmemcached-0.50/tests/plus.cpp +240 -0
- data/ext/libmemcached-0.50/tests/pool.cc +78 -0
- data/ext/libmemcached-0.50/tests/pool.h +49 -0
- data/ext/libmemcached-0.50/tests/print.cc +58 -0
- data/ext/libmemcached-0.50/tests/print.h +51 -0
- data/ext/libmemcached-0.50/tests/replication.cc +333 -0
- data/ext/libmemcached-0.50/tests/replication.h +64 -0
- data/ext/libmemcached-0.50/tests/start.cc +29 -0
- data/ext/libmemcached-0.50/tests/string.cc +174 -0
- data/ext/libmemcached-0.50/tests/string.h +67 -0
- data/ext/libmemcached-0.50/tests/virtual_buckets.cc +143 -0
- data/ext/libmemcached-0.50/tests/virtual_buckets.h +51 -0
- data/ext/libmemcached-0.50/win32/include.am +11 -0
- data/ext/libmemcached-0.50/win32/wrappers.h +55 -0
- data/ext/rlibmemcached.i +263 -0
- data/ext/rlibmemcached_wrap.c +16732 -0
- data/lib/memcached.rb +32 -0
- data/lib/memcached/auth.rb +16 -0
- data/lib/memcached/behaviors.rb +77 -0
- data/lib/memcached/exceptions.rb +84 -0
- data/lib/memcached/experimental.rb +48 -0
- data/lib/memcached/memcached.rb +660 -0
- data/lib/memcached/rails.rb +133 -0
- data/test/profile/benchmark.rb +245 -0
- data/test/profile/c_profiler.rb +14 -0
- data/test/profile/exercise.rb +185 -0
- data/test/profile/rb_profiler.rb +21 -0
- data/test/profile/valgrind.rb +10 -0
- data/test/setup.rb +30 -0
- data/test/teardown.rb +0 -0
- data/test/test_helper.rb +19 -0
- data/test/unit/binding_test.rb +8 -0
- data/test/unit/memcached_experimental_test.rb +274 -0
- data/test/unit/memcached_test.rb +1293 -0
- data/test/unit/rails_test.rb +122 -0
- metadata +650 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* Libmemcached Client and Server
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are
|
|
10
|
+
* met:
|
|
11
|
+
*
|
|
12
|
+
* * Redistributions of source code must retain the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer.
|
|
14
|
+
*
|
|
15
|
+
* * Redistributions in binary form must reproduce the above
|
|
16
|
+
* copyright notice, this list of conditions and the following disclaimer
|
|
17
|
+
* in the documentation and/or other materials provided with the
|
|
18
|
+
* distribution.
|
|
19
|
+
*
|
|
20
|
+
* * The names of its contributors may not be used to endorse or
|
|
21
|
+
* promote products derived from this software without specific prior
|
|
22
|
+
* written permission.
|
|
23
|
+
*
|
|
24
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
25
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
26
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
27
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
28
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
29
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
30
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
31
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
32
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
33
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
34
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#include <libtest/common.h>
|
|
39
|
+
|
|
40
|
+
#include <vector>
|
|
41
|
+
#include <iostream>
|
|
42
|
+
#include <string>
|
|
43
|
+
#include <cerrno>
|
|
44
|
+
#include <cassert>
|
|
45
|
+
|
|
46
|
+
#define BUILDING_LIBMEMCACHED
|
|
47
|
+
// !NEVER use common.h, always use memcached.h in your own apps
|
|
48
|
+
#include <libmemcached/common.h>
|
|
49
|
+
#include <libmemcached/util.h>
|
|
50
|
+
|
|
51
|
+
#include <tests/parser.h>
|
|
52
|
+
#include <tests/print.h>
|
|
53
|
+
|
|
54
|
+
enum scanner_type_t
|
|
55
|
+
{
|
|
56
|
+
NIL,
|
|
57
|
+
UNSIGNED,
|
|
58
|
+
SIGNED,
|
|
59
|
+
ARRAY
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
struct scanner_string_st {
|
|
64
|
+
const char *c_str;
|
|
65
|
+
size_t size;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
static inline scanner_string_st scanner_string(const char *arg, size_t arg_size)
|
|
69
|
+
{
|
|
70
|
+
scanner_string_st local= { arg, arg_size };
|
|
71
|
+
return local;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#define make_scanner_string(X) scanner_string((X), static_cast<size_t>(sizeof(X) - 1))
|
|
75
|
+
|
|
76
|
+
static struct scanner_string_st scanner_string_null= { 0, 0};
|
|
77
|
+
|
|
78
|
+
struct scanner_variable_t {
|
|
79
|
+
enum scanner_type_t type;
|
|
80
|
+
struct scanner_string_st option;
|
|
81
|
+
struct scanner_string_st result;
|
|
82
|
+
test_return_t (*check_func)(memcached_st *memc, const scanner_string_st &hostname);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// Check and make sure the first host is what we expect it to be
|
|
86
|
+
static test_return_t __check_host(memcached_st *memc, const scanner_string_st &hostname)
|
|
87
|
+
{
|
|
88
|
+
memcached_server_instance_st instance=
|
|
89
|
+
memcached_server_instance_by_position(memc, 0);
|
|
90
|
+
|
|
91
|
+
test_true(instance);
|
|
92
|
+
|
|
93
|
+
const char *first_hostname = memcached_server_name(instance);
|
|
94
|
+
test_true(first_hostname);
|
|
95
|
+
test_strcmp(first_hostname, hostname.c_str);
|
|
96
|
+
|
|
97
|
+
return TEST_SUCCESS;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Check and make sure the prefix_key is what we expect it to be
|
|
101
|
+
static test_return_t __check_prefix_key(memcached_st *memc, const scanner_string_st &hostname)
|
|
102
|
+
{
|
|
103
|
+
memcached_server_instance_st instance=
|
|
104
|
+
memcached_server_instance_by_position(memc, 0);
|
|
105
|
+
|
|
106
|
+
test_true(instance);
|
|
107
|
+
|
|
108
|
+
const char *first_hostname = memcached_server_name(instance);
|
|
109
|
+
test_true(first_hostname);
|
|
110
|
+
test_strcmp(first_hostname, hostname.c_str);
|
|
111
|
+
|
|
112
|
+
return TEST_SUCCESS;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
static test_return_t __check_IO_MSG_WATERMARK(memcached_st *memc, const scanner_string_st &value)
|
|
116
|
+
{
|
|
117
|
+
uint64_t value_number;
|
|
118
|
+
|
|
119
|
+
value_number= atoll(value.c_str);
|
|
120
|
+
|
|
121
|
+
test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK) == value_number);
|
|
122
|
+
return TEST_SUCCESS;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
static test_return_t __check_REMOVE_FAILED_SERVERS(memcached_st *memc, const scanner_string_st &)
|
|
126
|
+
{
|
|
127
|
+
test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS));
|
|
128
|
+
return TEST_SUCCESS;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
static test_return_t __check_NOREPLY(memcached_st *memc, const scanner_string_st &)
|
|
132
|
+
{
|
|
133
|
+
test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NOREPLY));
|
|
134
|
+
return TEST_SUCCESS;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static test_return_t __check_VERIFY_KEY(memcached_st *memc, const scanner_string_st &)
|
|
138
|
+
{
|
|
139
|
+
test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_VERIFY_KEY));
|
|
140
|
+
return TEST_SUCCESS;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static test_return_t __check_distribution_RANDOM(memcached_st *memc, const scanner_string_st &)
|
|
144
|
+
{
|
|
145
|
+
test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION) == MEMCACHED_DISTRIBUTION_RANDOM);
|
|
146
|
+
return TEST_SUCCESS;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
scanner_variable_t test_server_strings[]= {
|
|
150
|
+
{ ARRAY, make_scanner_string("--server=localhost"), make_scanner_string("localhost"), __check_host },
|
|
151
|
+
{ ARRAY, make_scanner_string("--server=10.0.2.1"), make_scanner_string("10.0.2.1"), __check_host },
|
|
152
|
+
{ ARRAY, make_scanner_string("--server=example.com"), make_scanner_string("example.com"), __check_host },
|
|
153
|
+
{ ARRAY, make_scanner_string("--server=localhost:30"), make_scanner_string("localhost"), __check_host },
|
|
154
|
+
{ ARRAY, make_scanner_string("--server=10.0.2.1:20"), make_scanner_string("10.0.2.1"), __check_host },
|
|
155
|
+
{ ARRAY, make_scanner_string("--server=example.com:1024"), make_scanner_string("example.com"), __check_host },
|
|
156
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL }
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
scanner_variable_t test_server_strings_with_weights[]= {
|
|
160
|
+
{ ARRAY, make_scanner_string("--server=10.0.2.1:30/?40"), make_scanner_string("10.0.2.1"), __check_host },
|
|
161
|
+
{ ARRAY, make_scanner_string("--server=example.com:1024/?30"), make_scanner_string("example.com"), __check_host },
|
|
162
|
+
{ ARRAY, make_scanner_string("--server=10.0.2.1/?20"), make_scanner_string("10.0.2.1"), __check_host },
|
|
163
|
+
{ ARRAY, make_scanner_string("--server=example.com/?10"), make_scanner_string("example.com"), __check_host },
|
|
164
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL }
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
scanner_variable_t bad_test_strings[]= {
|
|
168
|
+
{ ARRAY, make_scanner_string("-servers=localhost:11221,localhost:11222,localhost:11223,localhost:11224,localhost:11225"), scanner_string_null, NULL },
|
|
169
|
+
{ ARRAY, make_scanner_string("-- servers=a.example.com:81,localhost:82,b.example.com"), scanner_string_null, NULL },
|
|
170
|
+
{ ARRAY, make_scanner_string("--servers=localhost:+80"), scanner_string_null, NULL},
|
|
171
|
+
{ ARRAY, make_scanner_string("--servers=localhost.com."), scanner_string_null, NULL},
|
|
172
|
+
{ ARRAY, make_scanner_string("--server=localhost.com."), scanner_string_null, NULL},
|
|
173
|
+
{ ARRAY, make_scanner_string("--server=localhost.com.:80"), scanner_string_null, NULL},
|
|
174
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
scanner_variable_t test_number_options[]= {
|
|
178
|
+
{ ARRAY, make_scanner_string("--CONNECT-TIMEOUT=456"), scanner_string_null, NULL },
|
|
179
|
+
{ ARRAY, make_scanner_string("--IO-BYTES-WATERMARK=456"), scanner_string_null, NULL },
|
|
180
|
+
{ ARRAY, make_scanner_string("--IO-KEY-PREFETCH=456"), scanner_string_null, NULL },
|
|
181
|
+
{ ARRAY, make_scanner_string("--IO-MSG-WATERMARK=456"), make_scanner_string("456"), __check_IO_MSG_WATERMARK },
|
|
182
|
+
{ ARRAY, make_scanner_string("--NUMBER-OF-REPLICAS=456"), scanner_string_null, NULL },
|
|
183
|
+
{ ARRAY, make_scanner_string("--POLL-TIMEOUT=456"), scanner_string_null, NULL },
|
|
184
|
+
{ ARRAY, make_scanner_string("--RCV-TIMEOUT=456"), scanner_string_null, NULL },
|
|
185
|
+
{ ARRAY, make_scanner_string("--REMOVE-FAILED-SERVERS=3"), scanner_string_null, __check_REMOVE_FAILED_SERVERS },
|
|
186
|
+
{ ARRAY, make_scanner_string("--RETRY-TIMEOUT=456"), scanner_string_null, NULL },
|
|
187
|
+
{ ARRAY, make_scanner_string("--SND-TIMEOUT=456"), scanner_string_null, NULL },
|
|
188
|
+
{ ARRAY, make_scanner_string("--SOCKET-RECV-SIZE=456"), scanner_string_null, NULL },
|
|
189
|
+
{ ARRAY, make_scanner_string("--SOCKET-SEND-SIZE=456"), scanner_string_null, NULL },
|
|
190
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
scanner_variable_t test_boolean_options[]= {
|
|
194
|
+
{ ARRAY, make_scanner_string("--BINARY-PROTOCOL"), scanner_string_null, NULL },
|
|
195
|
+
{ ARRAY, make_scanner_string("--BUFFER-REQUESTS"), scanner_string_null, NULL },
|
|
196
|
+
{ ARRAY, make_scanner_string("--HASH-WITH-NAMESPACE"), scanner_string_null, NULL },
|
|
197
|
+
{ ARRAY, make_scanner_string("--NOREPLY"), scanner_string_null, __check_NOREPLY },
|
|
198
|
+
{ ARRAY, make_scanner_string("--RANDOMIZE-REPLICA-READ"), scanner_string_null, NULL },
|
|
199
|
+
{ ARRAY, make_scanner_string("--SORT-HOSTS"), scanner_string_null, NULL },
|
|
200
|
+
{ ARRAY, make_scanner_string("--SUPPORT-CAS"), scanner_string_null, NULL },
|
|
201
|
+
{ ARRAY, make_scanner_string("--TCP-NODELAY"), scanner_string_null, NULL },
|
|
202
|
+
{ ARRAY, make_scanner_string("--TCP-KEEPALIVE"), scanner_string_null, NULL },
|
|
203
|
+
{ ARRAY, make_scanner_string("--TCP-KEEPIDLE"), scanner_string_null, NULL },
|
|
204
|
+
{ ARRAY, make_scanner_string("--USE-UDP"), scanner_string_null, NULL },
|
|
205
|
+
{ ARRAY, make_scanner_string("--VERIFY-KEY"), scanner_string_null, __check_VERIFY_KEY },
|
|
206
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
scanner_variable_t prefix_key_strings[]= {
|
|
210
|
+
{ ARRAY, make_scanner_string("--NAMESPACE=foo"), make_scanner_string("foo"), __check_prefix_key },
|
|
211
|
+
{ ARRAY, make_scanner_string("--NAMESPACE=\"foo\""), make_scanner_string("foo"), __check_prefix_key },
|
|
212
|
+
{ ARRAY, make_scanner_string("--NAMESPACE=\"This_is_a_very_long_key\""), make_scanner_string("This_is_a_very_long_key"), __check_prefix_key },
|
|
213
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
scanner_variable_t distribution_strings[]= {
|
|
217
|
+
{ ARRAY, make_scanner_string("--DISTRIBUTION=consistent"), scanner_string_null, NULL },
|
|
218
|
+
{ ARRAY, make_scanner_string("--DISTRIBUTION=consistent,CRC"), scanner_string_null, NULL },
|
|
219
|
+
{ ARRAY, make_scanner_string("--DISTRIBUTION=consistent,MD5"), scanner_string_null, NULL },
|
|
220
|
+
{ ARRAY, make_scanner_string("--DISTRIBUTION=random"), scanner_string_null, __check_distribution_RANDOM },
|
|
221
|
+
{ ARRAY, make_scanner_string("--DISTRIBUTION=modula"), scanner_string_null, NULL },
|
|
222
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
scanner_variable_t hash_strings[]= {
|
|
226
|
+
{ ARRAY, make_scanner_string("--HASH=CRC"), scanner_string_null, NULL },
|
|
227
|
+
{ ARRAY, make_scanner_string("--HASH=FNV1A_32"), scanner_string_null, NULL },
|
|
228
|
+
{ ARRAY, make_scanner_string("--HASH=FNV1A_64"), scanner_string_null, NULL },
|
|
229
|
+
{ ARRAY, make_scanner_string("--HASH=FNV1_32"), scanner_string_null, NULL },
|
|
230
|
+
{ ARRAY, make_scanner_string("--HASH=FNV1_64"), scanner_string_null, NULL },
|
|
231
|
+
{ ARRAY, make_scanner_string("--HASH=JENKINS"), scanner_string_null, NULL },
|
|
232
|
+
{ ARRAY, make_scanner_string("--HASH=MD5"), scanner_string_null, NULL },
|
|
233
|
+
{ ARRAY, make_scanner_string("--HASH=MURMUR"), scanner_string_null, NULL },
|
|
234
|
+
{ NIL, scanner_string_null, scanner_string_null, NULL}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
static test_return_t _test_option(scanner_variable_t *scanner, bool test_true= true)
|
|
239
|
+
{
|
|
240
|
+
(void)test_true;
|
|
241
|
+
|
|
242
|
+
for (scanner_variable_t *ptr= scanner; ptr->type != NIL; ptr++)
|
|
243
|
+
{
|
|
244
|
+
memcached_st *memc;
|
|
245
|
+
memc= memcached(ptr->option.c_str, ptr->option.size);
|
|
246
|
+
if (test_true)
|
|
247
|
+
{
|
|
248
|
+
if (not memc)
|
|
249
|
+
{
|
|
250
|
+
char buffer[2048];
|
|
251
|
+
memcached_return_t rc= libmemcached_check_configuration(ptr->option.c_str, ptr->option.size, buffer, sizeof(buffer));
|
|
252
|
+
std::cerr << "About error for " << memcached_strerror(NULL, rc) << " : " << buffer << std::endl;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
test_true(memc);
|
|
256
|
+
|
|
257
|
+
if (ptr->check_func)
|
|
258
|
+
{
|
|
259
|
+
test_return_t test_rc= (*ptr->check_func)(memc, ptr->result);
|
|
260
|
+
if (test_rc != TEST_SUCCESS)
|
|
261
|
+
{
|
|
262
|
+
memcached_free(memc);
|
|
263
|
+
return test_rc;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
memcached_free(memc);
|
|
268
|
+
}
|
|
269
|
+
else
|
|
270
|
+
{
|
|
271
|
+
test_false_with(memc, ptr->option.c_str);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return TEST_SUCCESS;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
test_return_t server_test(memcached_st *)
|
|
279
|
+
{
|
|
280
|
+
return _test_option(test_server_strings);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
test_return_t server_with_weight_test(memcached_st *)
|
|
284
|
+
{
|
|
285
|
+
return _test_option(test_server_strings_with_weights);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
test_return_t servers_bad_test(memcached_st *)
|
|
289
|
+
{
|
|
290
|
+
test_return_t rc;
|
|
291
|
+
if ((rc= _test_option(bad_test_strings, false)) != TEST_SUCCESS)
|
|
292
|
+
{
|
|
293
|
+
return rc;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return TEST_SUCCESS;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
test_return_t parser_number_options_test(memcached_st*)
|
|
300
|
+
{
|
|
301
|
+
return _test_option(test_number_options);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
test_return_t parser_boolean_options_test(memcached_st*)
|
|
305
|
+
{
|
|
306
|
+
return _test_option(test_boolean_options);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
test_return_t behavior_parser_test(memcached_st*)
|
|
310
|
+
{
|
|
311
|
+
return TEST_SUCCESS;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
test_return_t parser_hash_test(memcached_st*)
|
|
315
|
+
{
|
|
316
|
+
return _test_option(hash_strings);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
test_return_t parser_distribution_test(memcached_st*)
|
|
320
|
+
{
|
|
321
|
+
return _test_option(distribution_strings);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
test_return_t parser_key_prefix_test(memcached_st*)
|
|
325
|
+
{
|
|
326
|
+
return _test_option(distribution_strings);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
#define SUPPORT_EXAMPLE_CNF "support/example.cnf"
|
|
330
|
+
|
|
331
|
+
test_return_t memcached_create_with_options_with_filename(memcached_st*)
|
|
332
|
+
{
|
|
333
|
+
if (access(SUPPORT_EXAMPLE_CNF, R_OK))
|
|
334
|
+
return TEST_SKIPPED;
|
|
335
|
+
|
|
336
|
+
memcached_st *memc_ptr;
|
|
337
|
+
memc_ptr= memcached(test_literal_param("--CONFIGURE-FILE=\"support/example.cnf\""));
|
|
338
|
+
test_true_got(memc_ptr, "memcached() failed");
|
|
339
|
+
test_strcmp(SUPPORT_EXAMPLE_CNF, memcached_array_string(memc_ptr->configure.filename));
|
|
340
|
+
memcached_free(memc_ptr);
|
|
341
|
+
|
|
342
|
+
return TEST_SUCCESS;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
test_return_t libmemcached_check_configuration_with_filename_test(memcached_st*)
|
|
346
|
+
{
|
|
347
|
+
if (access(SUPPORT_EXAMPLE_CNF, R_OK))
|
|
348
|
+
return TEST_SKIPPED;
|
|
349
|
+
|
|
350
|
+
memcached_return_t rc;
|
|
351
|
+
char buffer[BUFSIZ];
|
|
352
|
+
|
|
353
|
+
rc= libmemcached_check_configuration(test_literal_param("--CONFIGURE-FILE=\"support/example.cnf\""), buffer, sizeof(buffer));
|
|
354
|
+
test_true_got(rc == MEMCACHED_SUCCESS, (rc == MEMCACHED_ERRNO) ? strerror(errno) : memcached_strerror(NULL, rc));
|
|
355
|
+
|
|
356
|
+
rc= libmemcached_check_configuration(test_literal_param("--CONFIGURE-FILE=support/example.cnf"), buffer, sizeof(buffer));
|
|
357
|
+
test_false_with(rc == MEMCACHED_SUCCESS, memcached_strerror(NULL, rc));
|
|
358
|
+
|
|
359
|
+
rc= libmemcached_check_configuration(test_literal_param("--CONFIGURE-FILE=\"bad-path/example.cnf\""), buffer, sizeof(buffer));
|
|
360
|
+
test_true_got(rc == MEMCACHED_ERRNO, memcached_strerror(NULL, rc));
|
|
361
|
+
|
|
362
|
+
return TEST_SUCCESS;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
test_return_t libmemcached_check_configuration_test(memcached_st*)
|
|
366
|
+
{
|
|
367
|
+
memcached_return_t rc;
|
|
368
|
+
char buffer[BUFSIZ];
|
|
369
|
+
|
|
370
|
+
rc= libmemcached_check_configuration(test_literal_param("--server=localhost"), buffer, sizeof(buffer));
|
|
371
|
+
test_true_got(rc == MEMCACHED_SUCCESS, buffer);
|
|
372
|
+
|
|
373
|
+
rc= libmemcached_check_configuration(test_literal_param("--dude=localhost"), buffer, sizeof(buffer));
|
|
374
|
+
test_false_with(rc == MEMCACHED_SUCCESS, buffer);
|
|
375
|
+
test_true(rc == MEMCACHED_PARSE_ERROR);
|
|
376
|
+
|
|
377
|
+
return TEST_SUCCESS;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
test_return_t memcached_create_with_options_test(memcached_st*)
|
|
381
|
+
{
|
|
382
|
+
memcached_st *memc_ptr;
|
|
383
|
+
memc_ptr= memcached(test_literal_param("--server=localhost"));
|
|
384
|
+
test_true_got(memc_ptr, memcached_last_error_message(memc_ptr));
|
|
385
|
+
memcached_free(memc_ptr);
|
|
386
|
+
|
|
387
|
+
memc_ptr= memcached(test_literal_param("--dude=localhost"));
|
|
388
|
+
test_false_with(memc_ptr, memcached_last_error_message(memc_ptr));
|
|
389
|
+
|
|
390
|
+
return TEST_SUCCESS;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
test_return_t test_include_keyword(memcached_st*)
|
|
394
|
+
{
|
|
395
|
+
if (access(SUPPORT_EXAMPLE_CNF, R_OK))
|
|
396
|
+
return TEST_SKIPPED;
|
|
397
|
+
|
|
398
|
+
char buffer[BUFSIZ];
|
|
399
|
+
memcached_return_t rc;
|
|
400
|
+
rc= libmemcached_check_configuration(test_literal_param("INCLUDE \"support/example.cnf\""), buffer, sizeof(buffer));
|
|
401
|
+
test_true_got(rc == MEMCACHED_SUCCESS, buffer);
|
|
402
|
+
|
|
403
|
+
return TEST_SUCCESS;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
test_return_t test_end_keyword(memcached_st*)
|
|
407
|
+
{
|
|
408
|
+
char buffer[BUFSIZ];
|
|
409
|
+
memcached_return_t rc;
|
|
410
|
+
rc= libmemcached_check_configuration(test_literal_param("--server=localhost END bad keywords"), buffer, sizeof(buffer));
|
|
411
|
+
test_true_got(rc == MEMCACHED_SUCCESS, buffer);
|
|
412
|
+
|
|
413
|
+
return TEST_SUCCESS;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
test_return_t test_reset_keyword(memcached_st*)
|
|
417
|
+
{
|
|
418
|
+
char buffer[BUFSIZ];
|
|
419
|
+
memcached_return_t rc;
|
|
420
|
+
rc= libmemcached_check_configuration(test_literal_param("--server=localhost reset --server=bad.com"), buffer, sizeof(buffer));
|
|
421
|
+
test_true_got(rc == MEMCACHED_SUCCESS, buffer);
|
|
422
|
+
|
|
423
|
+
return TEST_SUCCESS;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
test_return_t test_error_keyword(memcached_st*)
|
|
427
|
+
{
|
|
428
|
+
char buffer[BUFSIZ];
|
|
429
|
+
memcached_return_t rc;
|
|
430
|
+
rc= libmemcached_check_configuration(test_literal_param("--server=localhost ERROR --server=bad.com"), buffer, sizeof(buffer));
|
|
431
|
+
test_true_got(rc != MEMCACHED_SUCCESS, buffer);
|
|
432
|
+
|
|
433
|
+
return TEST_SUCCESS;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
#define RANDOM_STRINGS 100
|
|
437
|
+
test_return_t random_statement_build_test(memcached_st*)
|
|
438
|
+
{
|
|
439
|
+
std::vector<scanner_string_st *> option_list;
|
|
440
|
+
|
|
441
|
+
for (scanner_variable_t *ptr= test_server_strings; ptr->type != NIL; ptr++)
|
|
442
|
+
option_list.push_back(&ptr->option);
|
|
443
|
+
|
|
444
|
+
for (scanner_variable_t *ptr= test_number_options; ptr->type != NIL; ptr++)
|
|
445
|
+
option_list.push_back(&ptr->option);
|
|
446
|
+
|
|
447
|
+
for (scanner_variable_t *ptr= test_boolean_options; ptr->type != NIL; ptr++)
|
|
448
|
+
option_list.push_back(&ptr->option);
|
|
449
|
+
|
|
450
|
+
for (scanner_variable_t *ptr= prefix_key_strings; ptr->type != NIL; ptr++)
|
|
451
|
+
option_list.push_back(&ptr->option);
|
|
452
|
+
|
|
453
|
+
for (scanner_variable_t *ptr= distribution_strings; ptr->type != NIL; ptr++)
|
|
454
|
+
option_list.push_back(&ptr->option);
|
|
455
|
+
|
|
456
|
+
for (scanner_variable_t *ptr= hash_strings; ptr->type != NIL; ptr++)
|
|
457
|
+
option_list.push_back(&ptr->option);
|
|
458
|
+
|
|
459
|
+
for (uint32_t x= 0; x < RANDOM_STRINGS; x++)
|
|
460
|
+
{
|
|
461
|
+
std::string random_options;
|
|
462
|
+
|
|
463
|
+
uint32_t number_of= random() % option_list.size();
|
|
464
|
+
for (uint32_t options= 0; options < number_of; options++)
|
|
465
|
+
{
|
|
466
|
+
random_options+= option_list[random() % option_list.size()]->c_str;
|
|
467
|
+
random_options+= " ";
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
memcached_st *memc_ptr= memcached(random_options.c_str(), random_options.size() -1);
|
|
471
|
+
if (not memc_ptr)
|
|
472
|
+
{
|
|
473
|
+
switch (errno)
|
|
474
|
+
{
|
|
475
|
+
case EINVAL:
|
|
476
|
+
#if 0 // Testing framework is not smart enough for this just yet.
|
|
477
|
+
{
|
|
478
|
+
// We will try to find the specific error
|
|
479
|
+
char buffer[2048];
|
|
480
|
+
memcached_return_t rc= libmemcached_check_configuration(random_options.c_str(), random_options.size(), buffer, sizeof(buffer));
|
|
481
|
+
test_true_got(rc != MEMCACHED_SUCCESS, "memcached_create_with_options() failed whiled libmemcached_check_configuration() was successful");
|
|
482
|
+
std::cerr << "Error occured on " << random_options.c_str() << " : " << buffer << std::endl;
|
|
483
|
+
return TEST_FAILURE;
|
|
484
|
+
}
|
|
485
|
+
#endif
|
|
486
|
+
break;
|
|
487
|
+
case ENOMEM:
|
|
488
|
+
std::cerr << "Failed to allocate memory for memcached_create_with_options()" << std::endl;
|
|
489
|
+
memcached_free(memc_ptr);
|
|
490
|
+
return TEST_FAILURE;
|
|
491
|
+
default:
|
|
492
|
+
std::cerr << "Unknown error from memcached_create_with_options?!!" << std::endl;
|
|
493
|
+
memcached_free(memc_ptr);
|
|
494
|
+
return TEST_FAILURE;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
memcached_free(memc_ptr);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
return TEST_SUCCESS;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
static memcached_return_t dump_server_information(const memcached_st *,
|
|
504
|
+
const memcached_server_st *instance,
|
|
505
|
+
void *)
|
|
506
|
+
{
|
|
507
|
+
if (strcmp(memcached_server_name(instance), "localhost"))
|
|
508
|
+
{
|
|
509
|
+
assert(not memcached_server_name(instance));
|
|
510
|
+
return MEMCACHED_FAILURE;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
if (memcached_server_port(instance) < 8888 or memcached_server_port(instance) > 8892)
|
|
514
|
+
{
|
|
515
|
+
assert(not memcached_server_port(instance));
|
|
516
|
+
return MEMCACHED_FAILURE;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
if (instance->weight > 5 or instance->weight < 2)
|
|
520
|
+
{
|
|
521
|
+
assert(not instance->weight);
|
|
522
|
+
return MEMCACHED_FAILURE;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
return MEMCACHED_SUCCESS;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
test_return_t test_hostname_port_weight(memcached_st *)
|
|
530
|
+
{
|
|
531
|
+
const char *server_string= "--server=localhost:8888/?2 --server=localhost:8889/?3 --server=localhost:8890/?4 --server=localhost:8891/?5 --server=localhost:8892/?3";
|
|
532
|
+
char buffer[BUFSIZ];
|
|
533
|
+
|
|
534
|
+
memcached_return_t rc;
|
|
535
|
+
test_compare_got(MEMCACHED_SUCCESS,
|
|
536
|
+
rc= libmemcached_check_configuration(server_string, strlen(server_string), buffer, sizeof(buffer)),
|
|
537
|
+
memcached_strerror(NULL, rc));
|
|
538
|
+
|
|
539
|
+
memcached_st *memc= memcached(server_string, strlen(server_string));
|
|
540
|
+
test_true(memc);
|
|
541
|
+
|
|
542
|
+
memcached_server_fn callbacks[]= { dump_server_information };
|
|
543
|
+
test_true(memcached_success(memcached_server_cursor(memc, callbacks, NULL, 1)));
|
|
544
|
+
|
|
545
|
+
memcached_free(memc);
|
|
546
|
+
|
|
547
|
+
return TEST_SUCCESS;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/*
|
|
551
|
+
By setting the timeout value to zero, we force poll() to return immediatly.
|
|
552
|
+
*/
|
|
553
|
+
test_return_t regression_bug_71231153_connect(memcached_st *)
|
|
554
|
+
{
|
|
555
|
+
if (libmemcached_util_ping("10.0.2.252", 0, NULL)) // If for whatever reason someone has a host at this address, skip
|
|
556
|
+
return TEST_SKIPPED;
|
|
557
|
+
|
|
558
|
+
{ // Test the connect-timeout, on a bad host we should get MEMCACHED_CONNECTION_FAILURE
|
|
559
|
+
memcached_st *memc= memcached(memcached_literal_param("--SERVER=10.0.2.252 --CONNECT-TIMEOUT=0"));
|
|
560
|
+
test_true(memc);
|
|
561
|
+
test_compare(0, memc->connect_timeout);
|
|
562
|
+
test_compare(MEMCACHED_DEFAULT_TIMEOUT, memc->poll_timeout);
|
|
563
|
+
|
|
564
|
+
memcached_return_t rc;
|
|
565
|
+
size_t value_len;
|
|
566
|
+
char *value= memcached_get(memc, memcached_literal_param("test"), &value_len, NULL, &rc);
|
|
567
|
+
test_false(value);
|
|
568
|
+
test_compare(0, value_len);
|
|
569
|
+
test_compare_got(MEMCACHED_TIMEOUT, rc, memcached_strerror(NULL, rc));
|
|
570
|
+
|
|
571
|
+
memcached_free(memc);
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
return TEST_SUCCESS;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
test_return_t regression_bug_71231153_poll(memcached_st *)
|
|
578
|
+
{
|
|
579
|
+
if (libmemcached_util_ping("10.0.2.252", 0, NULL)) // If for whatever reason someone has a host at this address, skip
|
|
580
|
+
return TEST_SKIPPED;
|
|
581
|
+
|
|
582
|
+
{ // Test the poll timeout, on a bad host we should get MEMCACHED_CONNECTION_FAILURE
|
|
583
|
+
memcached_st *memc= memcached(memcached_literal_param("--SERVER=10.0.2.252 --POLL-TIMEOUT=0"));
|
|
584
|
+
test_true(memc);
|
|
585
|
+
test_compare(MEMCACHED_DEFAULT_CONNECT_TIMEOUT, memc->connect_timeout);
|
|
586
|
+
test_compare(0, memc->poll_timeout);
|
|
587
|
+
|
|
588
|
+
memcached_return_t rc;
|
|
589
|
+
size_t value_len;
|
|
590
|
+
char *value= memcached_get(memc, memcached_literal_param("test"), &value_len, NULL, &rc);
|
|
591
|
+
test_false(value);
|
|
592
|
+
test_compare(0, value_len);
|
|
593
|
+
test_compare_got(MEMCACHED_TIMEOUT, rc, memcached_strerror(NULL, rc));
|
|
594
|
+
|
|
595
|
+
memcached_free(memc);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
return TEST_SUCCESS;
|
|
599
|
+
}
|