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,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
3
|
+
*
|
|
4
|
+
* Use and distribution licensed under the BSD license. See
|
|
5
|
+
* the COPYING file in the parent directory for full text.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
LIBTEST_API
|
|
11
|
+
void create_core(void);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
2
|
+
*
|
|
3
|
+
* Use and distribution licensed under the BSD license. See
|
|
4
|
+
* the COPYING file in the parent directory for full text.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
enum test_return_t {
|
|
10
|
+
TEST_SUCCESS= 0, /* Backwards compatibility */
|
|
11
|
+
TEST_FAILURE,
|
|
12
|
+
TEST_MEMORY_ALLOCATION_FAILURE,
|
|
13
|
+
TEST_SKIPPED,
|
|
14
|
+
TEST_FATAL // Collection should not be continued
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#define test_failed(__test_return_t) ((__test_return_t) != TEST_SUCCESS)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* uTest Framework
|
|
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
|
+
#pragma once
|
|
39
|
+
|
|
40
|
+
#ifdef __cplusplus
|
|
41
|
+
extern "C" {
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
LIBTEST_INTERNAL_API
|
|
45
|
+
void push_failed_test(const char *collection, const char *test);
|
|
46
|
+
|
|
47
|
+
LIBTEST_INTERNAL_API
|
|
48
|
+
void print_failed_test(void);
|
|
49
|
+
|
|
50
|
+
#ifdef __cplusplus
|
|
51
|
+
}
|
|
52
|
+
#endif
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
2
|
+
*
|
|
3
|
+
* Use and distribution licensed under the BSD license. See
|
|
4
|
+
* the COPYING file in the parent directory for full text.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#include <libtest/common.h>
|
|
8
|
+
|
|
9
|
+
test_return_t Framework::destroy(void* arg)
|
|
10
|
+
{
|
|
11
|
+
if (_destroy)
|
|
12
|
+
{
|
|
13
|
+
return _destroy(arg);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return TEST_SUCCESS;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
test_return_t Framework::Item::flush(void* arg, test_st* run)
|
|
20
|
+
{
|
|
21
|
+
if (run->requires_flush and _flush)
|
|
22
|
+
{
|
|
23
|
+
return _flush(arg);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return TEST_SUCCESS;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
test_return_t Framework::on_error(const test_return_t rc, void* arg)
|
|
30
|
+
{
|
|
31
|
+
if (_on_error and test_failed(_on_error(rc, arg)))
|
|
32
|
+
{
|
|
33
|
+
return TEST_FAILURE;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return TEST_SUCCESS;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
test_return_t Framework::startup(void* arg)
|
|
40
|
+
{
|
|
41
|
+
if (collection_startup)
|
|
42
|
+
{
|
|
43
|
+
return collection_startup(arg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return TEST_SUCCESS;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
test_return_t Framework::Item::startup(void* arg)
|
|
50
|
+
{
|
|
51
|
+
if (_startup)
|
|
52
|
+
{
|
|
53
|
+
return _startup(arg);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return TEST_SUCCESS;
|
|
57
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
2
|
+
*
|
|
3
|
+
* Use and distribution licensed under the BSD license. See
|
|
4
|
+
* the COPYING file in the parent directory for full text.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
Framework is the structure which is passed to the test implementation to be filled.
|
|
11
|
+
This must be implemented in order for the test framework to load the tests. We call
|
|
12
|
+
get_world() in order to fill this structure.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
struct Framework {
|
|
16
|
+
collection_st *collections;
|
|
17
|
+
|
|
18
|
+
/* These methods are called outside of any collection call. */
|
|
19
|
+
test_callback_create_fn *_create;
|
|
20
|
+
test_callback_fn *_destroy;
|
|
21
|
+
|
|
22
|
+
void* create(test_return_t* arg)
|
|
23
|
+
{
|
|
24
|
+
if (_create)
|
|
25
|
+
{
|
|
26
|
+
return _create(arg);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return NULL;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
test_return_t destroy(void*);
|
|
33
|
+
|
|
34
|
+
/* This is called a the beginning of any collection run. */
|
|
35
|
+
test_callback_fn *collection_startup;
|
|
36
|
+
|
|
37
|
+
test_return_t startup(void*);
|
|
38
|
+
|
|
39
|
+
/* This is called a the end of any collection run. */
|
|
40
|
+
test_callback_fn *collection_shutdown;
|
|
41
|
+
|
|
42
|
+
test_return_t shutdown(void* arg)
|
|
43
|
+
{
|
|
44
|
+
if (collection_shutdown)
|
|
45
|
+
{
|
|
46
|
+
return collection_shutdown(arg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return TEST_SUCCESS;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
These are run before/after the test. If implemented. Their execution is not controlled
|
|
54
|
+
by the test.
|
|
55
|
+
*/
|
|
56
|
+
struct Item {
|
|
57
|
+
/* This is called a the beginning of any run. */
|
|
58
|
+
test_callback_fn *_startup;
|
|
59
|
+
|
|
60
|
+
test_return_t startup(void*);
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
This called on a test if the test requires a flush call (the bool is
|
|
64
|
+
from test_st)
|
|
65
|
+
*/
|
|
66
|
+
test_callback_fn *_flush;
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
Run before and after the runnner is executed.
|
|
70
|
+
*/
|
|
71
|
+
test_callback_fn *pre_run;
|
|
72
|
+
test_callback_fn *post_run;
|
|
73
|
+
|
|
74
|
+
Item() :
|
|
75
|
+
_startup(NULL),
|
|
76
|
+
_flush(NULL),
|
|
77
|
+
pre_run(NULL),
|
|
78
|
+
post_run(NULL)
|
|
79
|
+
{ }
|
|
80
|
+
|
|
81
|
+
test_return_t flush(void* arg, test_st* run);
|
|
82
|
+
|
|
83
|
+
void set_pre(test_callback_fn *arg)
|
|
84
|
+
{
|
|
85
|
+
pre_run= arg;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
void set_post(test_callback_fn *arg)
|
|
89
|
+
{
|
|
90
|
+
pre_run= arg;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
test_return_t pre(void *arg)
|
|
94
|
+
{
|
|
95
|
+
if (pre_run)
|
|
96
|
+
{
|
|
97
|
+
return pre_run(arg);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return TEST_SUCCESS;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
test_return_t post(void *arg)
|
|
104
|
+
{
|
|
105
|
+
if (post_run)
|
|
106
|
+
{
|
|
107
|
+
return post_run(arg);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return TEST_SUCCESS;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
} item;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
If an error occurs during the test, this is called.
|
|
117
|
+
*/
|
|
118
|
+
test_callback_error_fn *_on_error;
|
|
119
|
+
|
|
120
|
+
test_return_t on_error(const enum test_return_t, void *);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
Runner represents the callers for the tests. If not implemented we will use
|
|
124
|
+
a set of default implementations.
|
|
125
|
+
*/
|
|
126
|
+
Runner *runner;
|
|
127
|
+
|
|
128
|
+
Framework();
|
|
129
|
+
|
|
130
|
+
virtual ~Framework()
|
|
131
|
+
{ }
|
|
132
|
+
|
|
133
|
+
Framework(const Framework&);
|
|
134
|
+
|
|
135
|
+
private:
|
|
136
|
+
Framework& operator=(const Framework&);
|
|
137
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
3
|
+
*
|
|
4
|
+
* Use and distribution licensed under the BSD license. See
|
|
5
|
+
* the COPYING file in the parent directory for full text.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#ifdef __cplusplus
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
/* How we make all of this work :) */
|
|
15
|
+
LIBTEST_API
|
|
16
|
+
void get_world(Framework *world);
|
|
17
|
+
|
|
18
|
+
#ifdef __cplusplus
|
|
19
|
+
}
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# vim:ft=automake
|
|
2
|
+
# Copyright (C) 2011 Data Differential (http://datadifferential.com/)
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# Use and distribution licensed under the BSD license. See
|
|
6
|
+
# the COPYING file in the parent directory for full text.
|
|
7
|
+
#
|
|
8
|
+
# included from Top Level Makefile.am
|
|
9
|
+
# All paths should be given relative to the root
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
LIBUTEST_TMP = ${abs_top_builddir}/tests/var/tmp/
|
|
13
|
+
|
|
14
|
+
CLEANFILES+= \
|
|
15
|
+
tests/var/log/* \
|
|
16
|
+
tests/var/tmp/*
|
|
17
|
+
|
|
18
|
+
noinst_HEADERS+= \
|
|
19
|
+
libtest/callbacks.h \
|
|
20
|
+
libtest/collection.h \
|
|
21
|
+
libtest/common.h \
|
|
22
|
+
libtest/core.h \
|
|
23
|
+
libtest/error.h \
|
|
24
|
+
libtest/failed.h \
|
|
25
|
+
libtest/framework.h \
|
|
26
|
+
libtest/get.h \
|
|
27
|
+
libtest/runner.h \
|
|
28
|
+
libtest/server.h \
|
|
29
|
+
libtest/stats.h \
|
|
30
|
+
libtest/strerror.h \
|
|
31
|
+
libtest/test.h \
|
|
32
|
+
libtest/test.hpp \
|
|
33
|
+
libtest/visibility.h
|
|
34
|
+
|
|
35
|
+
noinst_LTLIBRARIES+= libtest/libserver.la
|
|
36
|
+
libtest_libserver_la_SOURCES= libtest/server.c
|
|
37
|
+
|
|
38
|
+
noinst_LTLIBRARIES+= libtest/libtest.la
|
|
39
|
+
libtest_libtest_la_SOURCES=\
|
|
40
|
+
libtest/framework.cc \
|
|
41
|
+
libtest/test.cc
|
|
42
|
+
libtest_libtest_la_CFLAGS= ${AM_CFLAGS} ${NO_CONVERSION} -DBUILDING_LIBTEST
|
|
43
|
+
libtest_libtest_la_CPPFLAGS= ${AM_CPPFLAGS}
|
|
44
|
+
|
|
45
|
+
tests/var: tests/var/log tests/var/tmp
|
|
46
|
+
$(mkdir_p) tests/var
|
|
47
|
+
|
|
48
|
+
tests/var/log:
|
|
49
|
+
$(mkdir_p) tests/var/log
|
|
50
|
+
|
|
51
|
+
tests/var/tmp:
|
|
52
|
+
$(mkdir_p) tests/var/tmp
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* uTest Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
2
|
+
*
|
|
3
|
+
* Use and distribution licensed under the BSD license. See
|
|
4
|
+
* the COPYING file in the parent directory for full text.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
Structure which houses the actual callers for the test cases contained in
|
|
12
|
+
the collections.
|
|
13
|
+
*/
|
|
14
|
+
struct Runner {
|
|
15
|
+
test_callback_runner_fn *pre;
|
|
16
|
+
test_callback_runner_fn *run;
|
|
17
|
+
test_callback_runner_fn *post;
|
|
18
|
+
};
|
|
19
|
+
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
|
|
2
|
+
*
|
|
3
|
+
* Libmemcached library
|
|
4
|
+
*
|
|
5
|
+
* Copyright (C) 2011 Data Differential, http://datadifferential.com/
|
|
6
|
+
* Copyright (C) 2006-2009 Brian Aker 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
|
+
|
|
39
|
+
/*
|
|
40
|
+
Startup, and shutdown the memcached servers.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
#define TEST_PORT_BASE MEMCACHED_DEFAULT_PORT+10
|
|
44
|
+
|
|
45
|
+
#include <config.h>
|
|
46
|
+
|
|
47
|
+
#include <iso646.h>
|
|
48
|
+
|
|
49
|
+
#include <assert.h>
|
|
50
|
+
#include <limits.h>
|
|
51
|
+
#include <signal.h>
|
|
52
|
+
#include <stdio.h>
|
|
53
|
+
#include <stdlib.h>
|
|
54
|
+
#include <string.h>
|
|
55
|
+
#include <sys/time.h>
|
|
56
|
+
#include <time.h>
|
|
57
|
+
#include <unistd.h>
|
|
58
|
+
#include <errno.h>
|
|
59
|
+
|
|
60
|
+
#include <libmemcached/memcached.h>
|
|
61
|
+
#include <libmemcached/util.h>
|
|
62
|
+
|
|
63
|
+
#include <libtest/server.h>
|
|
64
|
+
|
|
65
|
+
static struct timespec global_sleep_value= { .tv_sec= 0, .tv_nsec= 50000 };
|
|
66
|
+
|
|
67
|
+
static void global_sleep(void)
|
|
68
|
+
{
|
|
69
|
+
#ifdef WIN32
|
|
70
|
+
sleep(1);
|
|
71
|
+
#else
|
|
72
|
+
nanosleep(&global_sleep_value, NULL);
|
|
73
|
+
#endif
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static bool wait_for_file(const char *filename)
|
|
77
|
+
{
|
|
78
|
+
uint32_t timeout= 6;
|
|
79
|
+
uint32_t waited;
|
|
80
|
+
uint32_t this_wait;
|
|
81
|
+
uint32_t retry;
|
|
82
|
+
|
|
83
|
+
for (waited= 0, retry= 1; ; retry++, waited+= this_wait)
|
|
84
|
+
{
|
|
85
|
+
if ((! access(filename, R_OK)) || (waited >= timeout))
|
|
86
|
+
{
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
this_wait= retry * retry / 3 + 1;
|
|
91
|
+
sleep(this_wait);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
static void kill_file(const char *file_buffer)
|
|
98
|
+
{
|
|
99
|
+
FILE *fp;
|
|
100
|
+
|
|
101
|
+
while ((fp= fopen(file_buffer, "r")))
|
|
102
|
+
{
|
|
103
|
+
char pid_buffer[1024];
|
|
104
|
+
|
|
105
|
+
if (fgets(pid_buffer, sizeof(pid_buffer), fp) != NULL)
|
|
106
|
+
{
|
|
107
|
+
pid_t pid= (pid_t)atoi(pid_buffer);
|
|
108
|
+
if (pid != 0)
|
|
109
|
+
{
|
|
110
|
+
if (kill(pid, SIGTERM) == -1)
|
|
111
|
+
{
|
|
112
|
+
remove(file_buffer); // If this happens we may be dealing with a dead server that left its pid file.
|
|
113
|
+
}
|
|
114
|
+
else
|
|
115
|
+
{
|
|
116
|
+
uint32_t counter= 3;
|
|
117
|
+
while ((kill(pid, 0) == 0) && --counter)
|
|
118
|
+
{
|
|
119
|
+
global_sleep();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
global_sleep();
|
|
126
|
+
|
|
127
|
+
fclose(fp);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
void server_startup(server_startup_st *construct)
|
|
132
|
+
{
|
|
133
|
+
if ((construct->server_list= getenv("MEMCACHED_SERVERS")))
|
|
134
|
+
{
|
|
135
|
+
printf("servers %s\n", construct->server_list);
|
|
136
|
+
construct->servers= memcached_servers_parse(construct->server_list);
|
|
137
|
+
construct->server_list= NULL;
|
|
138
|
+
construct->count= 0;
|
|
139
|
+
}
|
|
140
|
+
else
|
|
141
|
+
{
|
|
142
|
+
{
|
|
143
|
+
char server_string_buffer[8096];
|
|
144
|
+
char *end_ptr;
|
|
145
|
+
end_ptr= server_string_buffer;
|
|
146
|
+
|
|
147
|
+
uint32_t port_base= 0;
|
|
148
|
+
for (uint32_t x= 0; x < construct->count; x++)
|
|
149
|
+
{
|
|
150
|
+
int status;
|
|
151
|
+
|
|
152
|
+
snprintf(construct->pid_file[x], FILENAME_MAX, "/tmp/memcached.pidXXXXXX");
|
|
153
|
+
int fd;
|
|
154
|
+
if ((fd= mkstemp(construct->pid_file[x])) == -1)
|
|
155
|
+
{
|
|
156
|
+
perror("mkstemp");
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
close(fd);
|
|
160
|
+
|
|
161
|
+
{
|
|
162
|
+
char *var;
|
|
163
|
+
char variable_buffer[1024];
|
|
164
|
+
|
|
165
|
+
snprintf(variable_buffer, sizeof(variable_buffer), "LIBMEMCACHED_PORT_%u", x);
|
|
166
|
+
|
|
167
|
+
if ((var= getenv(variable_buffer)))
|
|
168
|
+
{
|
|
169
|
+
construct->port[x]= (in_port_t)atoi(var);
|
|
170
|
+
}
|
|
171
|
+
else
|
|
172
|
+
{
|
|
173
|
+
do {
|
|
174
|
+
construct->port[x]= (in_port_t)(x + TEST_PORT_BASE + port_base);
|
|
175
|
+
|
|
176
|
+
if (libmemcached_util_ping("localhost", construct->port[x], NULL))
|
|
177
|
+
{
|
|
178
|
+
if (libmemcached_util_flush("localhost", construct->port[x], NULL))
|
|
179
|
+
{
|
|
180
|
+
fprintf(stderr, "Found server on port %d, flushed it!\n", (int)construct->port[x]);
|
|
181
|
+
construct->is_used[x]= true;
|
|
182
|
+
} // If we can flush it, we will just use it
|
|
183
|
+
else
|
|
184
|
+
{
|
|
185
|
+
fprintf(stderr, "Found server on port %d, could not flush it, so trying next port.\n", (int)construct->port[x]);
|
|
186
|
+
port_base++;
|
|
187
|
+
construct->port[x]= 0;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} while (construct->port[x] == 0);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
char buffer[FILENAME_MAX];
|
|
195
|
+
if (x == 0)
|
|
196
|
+
{
|
|
197
|
+
snprintf(buffer, sizeof(buffer), "%s -d -P %s -t 1 -p %u -U %u -m 128",
|
|
198
|
+
MEMCACHED_BINARY, construct->pid_file[x], construct->port[x], construct->port[x]);
|
|
199
|
+
}
|
|
200
|
+
else
|
|
201
|
+
{
|
|
202
|
+
snprintf(buffer, sizeof(buffer), "%s -d -P %s -t 1 -p %u -U %u",
|
|
203
|
+
MEMCACHED_BINARY, construct->pid_file[x], construct->port[x], construct->port[x]);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (construct->is_used[x])
|
|
207
|
+
{
|
|
208
|
+
fprintf(stderr, "USING SERVER: %s\n", buffer);
|
|
209
|
+
}
|
|
210
|
+
else
|
|
211
|
+
{
|
|
212
|
+
if (libmemcached_util_ping("localhost", construct->port[x], NULL))
|
|
213
|
+
{
|
|
214
|
+
fprintf(stderr, "Server on port %u already exists\n", construct->port[x]);
|
|
215
|
+
}
|
|
216
|
+
else
|
|
217
|
+
{
|
|
218
|
+
status= system(buffer);
|
|
219
|
+
fprintf(stderr, "STARTING SERVER: %s status:%d\n", buffer, status);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
int count;
|
|
224
|
+
size_t remaining_length= sizeof(server_string_buffer) - (size_t)(end_ptr -server_string_buffer);
|
|
225
|
+
count= snprintf(end_ptr, remaining_length, "localhost:%u,", construct->port[x]);
|
|
226
|
+
|
|
227
|
+
if ((size_t)count >= remaining_length || count < 0)
|
|
228
|
+
{
|
|
229
|
+
fprintf(stderr, "server names grew to be larger then buffer allowed\n");
|
|
230
|
+
abort();
|
|
231
|
+
}
|
|
232
|
+
end_ptr+= count;
|
|
233
|
+
}
|
|
234
|
+
*end_ptr= 0;
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
for (uint32_t x= 0; x < construct->count; x++)
|
|
238
|
+
{
|
|
239
|
+
if (! wait_for_file(construct->pid_file[x]))
|
|
240
|
+
{
|
|
241
|
+
abort();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
for (uint32_t x= 0; x < construct->count; x++)
|
|
246
|
+
{
|
|
247
|
+
uint32_t counter= 3000; // Absurd, just to catch run away process
|
|
248
|
+
|
|
249
|
+
if (construct->is_used[x])
|
|
250
|
+
continue;
|
|
251
|
+
|
|
252
|
+
while (construct->pids[x] <= 0 && --counter)
|
|
253
|
+
{
|
|
254
|
+
FILE *file= fopen(construct->pid_file[x], "r");
|
|
255
|
+
if (file)
|
|
256
|
+
{
|
|
257
|
+
char pid_buffer[1024];
|
|
258
|
+
char *found= fgets(pid_buffer, sizeof(pid_buffer), file);
|
|
259
|
+
|
|
260
|
+
if (found)
|
|
261
|
+
{
|
|
262
|
+
construct->pids[x]= atoi(pid_buffer);
|
|
263
|
+
fclose(file);
|
|
264
|
+
|
|
265
|
+
if (construct->pids[x] > 0)
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
fclose(file);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
switch (errno)
|
|
272
|
+
{
|
|
273
|
+
default:
|
|
274
|
+
fprintf(stderr, "Could not open pid file %s -> fopen(%s) -> %s:%d\n", construct->pid_file[x], strerror(errno), __FILE__, __LINE__);
|
|
275
|
+
abort();
|
|
276
|
+
|
|
277
|
+
case ENOENT:
|
|
278
|
+
case EINTR:
|
|
279
|
+
case EACCES:
|
|
280
|
+
case EINPROGRESS:
|
|
281
|
+
break;
|
|
282
|
+
|
|
283
|
+
case ENOTCONN:
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Safety 3rd, check to see if the file has gone away
|
|
288
|
+
if (! wait_for_file(construct->pid_file[x]))
|
|
289
|
+
{
|
|
290
|
+
abort();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
bool was_started= false;
|
|
295
|
+
if (construct->pids[x] > 0)
|
|
296
|
+
{
|
|
297
|
+
counter= 30;
|
|
298
|
+
while (--counter)
|
|
299
|
+
{
|
|
300
|
+
if (kill(construct->pids[x], 0) == 0)
|
|
301
|
+
{
|
|
302
|
+
was_started= true;
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
global_sleep();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (was_started == false)
|
|
310
|
+
{
|
|
311
|
+
fprintf(stderr, "Failed to open buffer %s(%d)\n", construct->pid_file[x], construct->pids[x]);
|
|
312
|
+
for (uint32_t y= 0; y < construct->count; y++)
|
|
313
|
+
{
|
|
314
|
+
if (construct->pids[y] > 0)
|
|
315
|
+
kill(construct->pids[y], SIGTERM);
|
|
316
|
+
}
|
|
317
|
+
abort();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
construct->server_list= strdup(server_string_buffer);
|
|
322
|
+
}
|
|
323
|
+
printf("servers %s\n", construct->server_list);
|
|
324
|
+
construct->servers= memcached_servers_parse(construct->server_list);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
assert(construct->servers);
|
|
328
|
+
|
|
329
|
+
srandom((unsigned int)time(NULL));
|
|
330
|
+
|
|
331
|
+
for (uint32_t x= 0; x < memcached_server_list_count(construct->servers); x++)
|
|
332
|
+
{
|
|
333
|
+
printf("\t%s : %d\n", memcached_server_name(&construct->servers[x]), memcached_server_port(&construct->servers[x]));
|
|
334
|
+
assert(construct->servers[x].fd == -1);
|
|
335
|
+
assert(construct->servers[x].cursor_active == 0);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
printf("\n");
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
void server_shutdown(server_startup_st *construct)
|
|
342
|
+
{
|
|
343
|
+
if (construct->server_list)
|
|
344
|
+
{
|
|
345
|
+
for (uint32_t x= 0; x < construct->count; x++)
|
|
346
|
+
{
|
|
347
|
+
if (construct->is_used[x])
|
|
348
|
+
continue;
|
|
349
|
+
|
|
350
|
+
kill_file(construct->pid_file[x]);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
free(construct->server_list);
|
|
354
|
+
}
|
|
355
|
+
}
|