jenkins-promote-staging-trunk-libmemcached-16
authorContinuous Integration <ci@tangent.org>
Fri, 4 May 2012 04:28:41 +0000 (21:28 -0700)
committerContinuous Integration <ci@tangent.org>
Fri, 4 May 2012 04:28:41 +0000 (21:28 -0700)
176 files changed:
.bzrignore
ChangeLog
docs/libmemcached_configuration.rst
docs/man/hashkit_clone.3
docs/man/hashkit_crc32.3
docs/man/hashkit_create.3
docs/man/hashkit_fnv1_32.3
docs/man/hashkit_fnv1_64.3
docs/man/hashkit_fnv1a_32.3
docs/man/hashkit_fnv1a_64.3
docs/man/hashkit_free.3
docs/man/hashkit_functions.3
docs/man/hashkit_hsieh.3
docs/man/hashkit_is_allocated.3
docs/man/hashkit_jenkins.3
docs/man/hashkit_md5.3
docs/man/hashkit_murmur.3
docs/man/hashkit_value.3
docs/man/libhashkit.3
docs/man/libmemcached.3
docs/man/libmemcached_check_configuration.3
docs/man/libmemcached_configuration.3
docs/man/libmemcached_examples.3
docs/man/libmemcachedutil.3
docs/man/memaslap.1
docs/man/memcached.3
docs/man/memcached_add.3
docs/man/memcached_add_by_key.3
docs/man/memcached_analyze.3
docs/man/memcached_append.3
docs/man/memcached_append_by_key.3
docs/man/memcached_auto.3
docs/man/memcached_behavior.3
docs/man/memcached_behavior_get.3
docs/man/memcached_behavior_set.3
docs/man/memcached_callback.3
docs/man/memcached_callback_get.3
docs/man/memcached_callback_set.3
docs/man/memcached_cas.3
docs/man/memcached_cas_by_key.3
docs/man/memcached_clone.3
docs/man/memcached_create.3
docs/man/memcached_decrement.3
docs/man/memcached_decrement_with_initial.3
docs/man/memcached_delete.3
docs/man/memcached_delete_by_key.3
docs/man/memcached_destroy_sasl_auth_data.3
docs/man/memcached_dump.3
docs/man/memcached_exist.3
docs/man/memcached_exist_by_key.3
docs/man/memcached_fetch.3
docs/man/memcached_fetch_execute.3
docs/man/memcached_fetch_result.3
docs/man/memcached_flush.3
docs/man/memcached_flush_buffers.3
docs/man/memcached_free.3
docs/man/memcached_generate_hash.3
docs/man/memcached_generate_hash_value.3
docs/man/memcached_get.3
docs/man/memcached_get_by_key.3
docs/man/memcached_get_memory_allocators.3
docs/man/memcached_get_sasl_callbacks.3
docs/man/memcached_get_user_data.3
docs/man/memcached_increment.3
docs/man/memcached_increment_with_initial.3
docs/man/memcached_last_error_message.3
docs/man/memcached_lib_version.3
docs/man/memcached_memory_allocators.3
docs/man/memcached_mget.3
docs/man/memcached_mget_by_key.3
docs/man/memcached_mget_execute.3
docs/man/memcached_mget_execute_by_key.3
docs/man/memcached_pool.3
docs/man/memcached_pool_behavior_get.3
docs/man/memcached_pool_behavior_set.3
docs/man/memcached_pool_create.3
docs/man/memcached_pool_destroy.3
docs/man/memcached_pool_fetch.3
docs/man/memcached_pool_pop.3
docs/man/memcached_pool_push.3
docs/man/memcached_pool_release.3
docs/man/memcached_pool_st.3
docs/man/memcached_prepend.3
docs/man/memcached_prepend_by_key.3
docs/man/memcached_quit.3
docs/man/memcached_replace.3
docs/man/memcached_replace_by_key.3
docs/man/memcached_result_cas.3
docs/man/memcached_result_create.3
docs/man/memcached_result_flags.3
docs/man/memcached_result_free.3
docs/man/memcached_result_key_length.3
docs/man/memcached_result_key_value.3
docs/man/memcached_result_length.3
docs/man/memcached_result_st.3
docs/man/memcached_result_value.3
docs/man/memcached_return_t.3
docs/man/memcached_sasl.3
docs/man/memcached_sasl_set_auth_data.3
docs/man/memcached_server_add.3
docs/man/memcached_server_add_unix_socket.3
docs/man/memcached_server_count.3
docs/man/memcached_server_cursor.3
docs/man/memcached_server_list.3
docs/man/memcached_server_list_append.3
docs/man/memcached_server_list_count.3
docs/man/memcached_server_list_free.3
docs/man/memcached_server_push.3
docs/man/memcached_server_st.3
docs/man/memcached_servers.3
docs/man/memcached_servers_parse.3
docs/man/memcached_servers_reset.3
docs/man/memcached_set.3
docs/man/memcached_set_by_key.3
docs/man/memcached_set_memory_allocators.3
docs/man/memcached_set_memory_allocators_context.3
docs/man/memcached_set_sasl_callbacks.3
docs/man/memcached_set_user_data.3
docs/man/memcached_stat.3
docs/man/memcached_stat_execute.3
docs/man/memcached_stat_get_keys.3
docs/man/memcached_stat_get_value.3
docs/man/memcached_stat_servername.3
docs/man/memcached_stats.3
docs/man/memcached_strerror.3
docs/man/memcached_touch.3
docs/man/memcached_touch_by_key.3
docs/man/memcached_user_data.3
docs/man/memcached_verbosity.3
docs/man/memcached_version.3
docs/man/memcapable.1
docs/man/memcat.1
docs/man/memcp.1
docs/man/memdump.1
docs/man/memerror.1
docs/man/memflush.1
docs/man/memrm.1
docs/man/memslap.1
docs/man/memstat.1
docs/memcached_create.rst
libmemcached-1.0/memcached.h
libmemcached/memcached.cc
libtest/collection.cc [new file with mode: 0644]
libtest/collection.h
libtest/common.h
libtest/core.cc
libtest/fatal.cc
libtest/fatal.hpp
libtest/framework.cc
libtest/framework.h
libtest/include.am
libtest/main.cc
libtest/port.cc
libtest/server.cc
libtest/server_container.cc
libtest/server_container.h
libtest/stats.h [deleted file]
libtest/stream.cc [new file with mode: 0644]
libtest/stream.h
libtest/test.hpp
libtest/timer.cc [new file with mode: 0644]
libtest/timer.hpp [new file with mode: 0644]
m4/bottom.m4
m4/pandora_canonical.m4
tests/cycle.cc
tests/failure.cc
tests/include.am
tests/libmemcached-1.0/all_tests.cc
tests/libmemcached-1.0/all_tests_socket.cc
tests/libmemcached-1.0/include.am
tests/libmemcached-1.0/parser.cc
tests/libmemcached-1.0/parser.h [new file with mode: 0644]
tests/parser.am [new file with mode: 0644]
tests/parser.cc [new file with mode: 0644]
tests/parser.h [deleted file]
tests/runner.h

index 10a4347121d30c93d5e68009ee707550611ec4df..2ce25562b280e2666a29ccf2d20d225ba95ec145 100644 (file)
@@ -148,3 +148,4 @@ memcached/.git
 memcached/.gitignore
 memcached/memcached
 memcached/memcached.spec
+tests/parser
index d0c8d139eba72c30c08ed8186c52f384b025b236..62a3351edc3b21a65ffaced34f674e0dac3472c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+1.0.8
+* Added support for setting options via ENV variable LIBMEMCACHED
+
 1.0.7 Sat Apr 28 00:48:29 PDT 2012
 * Add API call for exist calls.
 * Update all license files to be BSD.
index 8cd48ce2ed061fc2078ac4bb311c15fa2bfa041b..2f3da9d44b991ae3e5a4035afd7776940bbf9815 100644 (file)
@@ -8,7 +8,9 @@ Configuring Libmemcached
 SYNOPSIS 
 --------
 
-#include <libmemcached/memcached.h>
+#include <libmemcached-1.0/memcached.h>
+
+.. envvar:: LIBMEMCACHED
 
 .. c:function:: memcached_st *memcached(const char *string, size_t string_length)
 
index addf1a644a5f9680c03a907f0875c95694bdb663..e1d92d9ab3db92a0a3e46d91e944ec76b2cb5d00 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_CLONE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_CLONE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_clone \- libhashkit Documentation
 .
index 5f1c50003f9fd085f081f49b41f8e70273470c0d..1eb4e9a00f09144b3d18c8d6678de2bc577dd27f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_CRC32" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_CRC32" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_crc32 \- libhashkit Documentation
 .
index 2834dca840d73f08fcf25d5e603296e46a8e6bbd..9b26a58e42815eb8cd09f640b90e888607a39156 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_CREATE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_CREATE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_create \- libhashkit Documentation
 .
index 35978ee8f0892c45ed4648d513985158bd5a52c9..5a603949d2b7f35c114452fc257ab8629b8345f2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FNV1_32" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FNV1_32" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_fnv1_32 \- libhashkit Documentation
 .
index 721927e396da42172dd92a4f5b419e668ee03e4e..41c841dbe231d77c3e0bacabd6111f4e699d54a7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FNV1_64" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FNV1_64" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_fnv1_64 \- libhashkit Documentation
 .
index bfa3e2b4f6312f2cd74f49c253aad9cee1fe30a6..97fa939a96f6f08392c067721e567a5c9d07a40d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FNV1A_32" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FNV1A_32" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_fnv1a_32 \- libhashkit Documentation
 .
index 176af940ef2f132ff7a68a5645d50544ce760e56..6592addd4685dc59ee24072ab5956b40fecffdb0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FNV1A_64" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FNV1A_64" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_fnv1a_64 \- libhashkit Documentation
 .
index a0d6b6c5bd96d9e3df485421769c948fb1c4effb..91846553dbde8f0cc4d3f430894d0bfa8477a618 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FREE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FREE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_free \- libhashkit Documentation
 .
index 72bcd5d975c5a4bd90ce39d66b0ea391d69c9359..496614fc8f60898a7b4bc0dbfa3556837a1e857e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_FUNCTIONS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_FUNCTIONS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_functions \- libhashkit Documentation
 .
index d9e0c6bf9773619aed6c546a25785678fe21c6af..7a3d7dd16decbd5747fae08343db0ed6fa66c711 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_HSIEH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_HSIEH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_hsieh \- libhashkit Documentation
 .
index 89c67a508864f505bd31f6e540d2e6d8a69a3fca..6e02720db693be22f9e1a2df79b8d0de32cbe22c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_IS_ALLOCATED" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_IS_ALLOCATED" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_is_allocated \- libhashkit Documentation
 .
index f897cfac836ccf0b1af03e1d80be1c82adae46bb..5d6019c1acf28f20396d6f2331b81050c7e2839f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_JENKINS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_JENKINS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_jenkins \- libhashkit Documentation
 .
index 472f55da230f4bbdce8994085953ff19928d1395..b8841e5e51022336c8d2f9ae5791d84d8d250dc3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_MD5" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_MD5" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_md5 \- libhashkit Documentation
 .
index e089c4cb4c373d9811907cc17bb9b7f566479342..0bc07862b028da53f19ae9f71060bcf8670ff76f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_MURMUR" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_MURMUR" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_murmur \- libhashkit Documentation
 .
index 98f4fc7383e90b7eb7b1e02c2c411c51f092276a..dabdd5e300d5762ceb3101aca6814e9c215f85cc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "HASHKIT_VALUE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "HASHKIT_VALUE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 hashkit_value \- libhashkit Documentation
 .
index 8478d43f5c3977064282936b95b6f4c1f9c1041a..78bf2bde6c8c9f6ab9c1826c410355a32df7eb30 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBHASHKIT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBHASHKIT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libhashkit \- libhashkit Documentation
 .
index e18d9def1bd08578f3c74d4f62bc0572b9fd3e8f..c42517b6b861302ee5ac84c64f7a54eefce9f28c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBMEMCACHED" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBMEMCACHED" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libmemcached \- Introducing the C Client Library for memcached
 .
index 127be704c6c558e3dc79e4858a85f43880dac032..3cc79f5eee5d796970e75f8adc4474a415dbd46c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libmemcached_check_configuration \- libmemcached Documentation
 .
@@ -32,7 +32,11 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .
 .SH SYNOPSIS
 .sp
-#include <libmemcached/memcached.h>
+#include <libmemcached\-1.0/memcached.h>
+.INDENT 0.0
+.TP
+.B LIBMEMCACHED
+.UNINDENT
 .INDENT 0.0
 .TP
 .B memcached_st *memcached(const char\fI\ *string\fP, size_t\fI\ string_length\fP)
index 91ed6d18a182936729d9b64b2fedc8397d74327b..866a5c2ce5a0e077fde5624c8a4710273fbc2daa 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBMEMCACHED_CONFIGURATION" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBMEMCACHED_CONFIGURATION" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libmemcached_configuration \- libmemcached Documentation
 .
@@ -32,7 +32,11 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .
 .SH SYNOPSIS
 .sp
-#include <libmemcached/memcached.h>
+#include <libmemcached\-1.0/memcached.h>
+.INDENT 0.0
+.TP
+.B LIBMEMCACHED
+.UNINDENT
 .INDENT 0.0
 .TP
 .B memcached_st *memcached(const char\fI\ *string\fP, size_t\fI\ string_length\fP)
index b739e1b87b7fe73e31168c363644516bc35fff9e..0e7013b1b1be7536e778232a9193816e2978849c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBMEMCACHED_EXAMPLES" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBMEMCACHED_EXAMPLES" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libmemcached_examples \- libmemcached Documentation
 .
index db9dd66881acb5737ffb0a22b456aa296ec080f8..a93559f588fecfdc76bbfd8ccb7b390c315ee518 100644 (file)
@@ -1,4 +1,4 @@
-.TH "LIBMEMCACHEDUTIL" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "LIBMEMCACHEDUTIL" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 libmemcachedutil \- libmemcached Documentation
 .
index 741a973bd145f47cba4902d9f895b53d5ad6a52c..64692a27b2b5a4f0eedd8b0e417b2fb3f21dfd81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMASLAP" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMASLAP" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memaslap \- libmemcached Documentation
 .
index 389d39491cc11928a217dc09af4a58036438a7df..c44ca806dd85294c0fd452a355632047f18c3433 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached \- libmemcached Documentation
 .
@@ -32,7 +32,11 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .
 .SH SYNOPSIS
 .sp
-#include <libmemcached/memcached.h>
+#include <libmemcached\-1.0/memcached.h>
+.INDENT 0.0
+.TP
+.B LIBMEMCACHED
+.UNINDENT
 .INDENT 0.0
 .TP
 .B memcached_st *memcached(const char\fI\ *string\fP, size_t\fI\ string_length\fP)
index 1460d82bf6eb9f7a7c361a2cf53c301e645e2c9a..b7376f3c32d0cda2f269c9e1faf4c016f59d157a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_ADD" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_ADD" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_add \- Storing and Replacing Data
 .
index db8ca1e07b25c43c01bc4732a6da0a508bbbc3a6..fc2e8e95a8781eb4b736b63419a0d1b5894ec0ee 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_ADD_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_ADD_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_add_by_key \- Storing and Replacing Data
 .
index 695f88c14d36e21582712b7bbd52d130a9de6135..2c00c30aa96ccc583aa68d8be96e1cb6acdc1cf2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_ANALYZE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_ANALYZE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_analyze \- libmemcached Documentation
 .
index 3c31222e9c9f2ae98956199bfc17d5f95b60f45a..e55a6b0c36a15717857f580c1e3b57df6f21d79f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_APPEND" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_APPEND" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_append \- Appending to or Prepending to data on the server
 .
index c7f8e9a0f7ffbe909569ac6b7ed5b0d78d6ad07b..f9db3490ab5054b8326c323357997739f21b577d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_APPEND_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_APPEND_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_append_by_key \- Appending to or Prepending to data on the server
 .
index be2e0eb67ca9fa88dfa761488e8c3de820d50640..06cb342f84f05eab312634416718630d94e88da3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_AUTO" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_AUTO" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_auto \- Incrementing and Decrementing Values
 .
index 13a33ac203033172d0baa9bd4896397e51d4ba4e..bf9bf13dc716a26532f494441439d574a465ff8c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_BEHAVIOR" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_behavior \- libmemcached Documentation
 .
index 9abf3b68241df2af420d72d781a4697e6a6f8d3e..0d0f3a51aead48ed6e20c147a635462583ee9fda 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_BEHAVIOR_GET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR_GET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_behavior_get \- libmemcached Documentation
 .
index 4c20758a9f4af1100311cddb071473a659e1558d..d819902875b57466dd267e277240bb06b3b865d3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_BEHAVIOR_SET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR_SET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_behavior_set \- libmemcached Documentation
 .
index 9ffe321e383cd42599e05cab14596083658c717f..6b46c3fc8a32b7a351537b16f46a260cbdb3201b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CALLBACK" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CALLBACK" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_callback \- libmemcached Documentation
 .
index 394d074ed917280f57ecfcd6769010f75aed2cfa..a1ab8020cd338f04dfa7300fc4c1b407e7f43cfc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CALLBACK_GET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CALLBACK_GET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_callback_get \- libmemcached Documentation
 .
index 02f587ed51c78b3a209dbbd91415d9e9e8a2d755..6d88ffd70b6cfd404c848826454d8a4c8d8429bf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CALLBACK_SET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CALLBACK_SET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_callback_set \- libmemcached Documentation
 .
index cbf207592036736b14e24a073ed2ed52ce9e4e11..fd4cbdc065489f07bb04b83d61fc0a4212f5a04b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CAS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CAS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_cas \- Working with data on the server in an atomic fashion
 .
index c6d077109ab3ad1a5f6acf3a278c4e48e9a25251..2492b7415146612283aa01115356b937ffed4584 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CAS_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CAS_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_cas_by_key \- Storing and Replacing Data
 .
index b0d803a18a6bd3e013d9f487c3c90124f195bfc2..552ff7dcb55d9f9ade719521b030a9dbef6e04e1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CLONE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CLONE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_clone \- libmemcached Documentation
 .
@@ -64,8 +64,7 @@ communicate with the server. You should either pass a statically declared
 a NULL. If a NULL passed in then a structure is allocated for you.
 .sp
 Please note, when you write new application use
-\fBmemcached()\fP over
-\fI\%memcached_create()\fP.
+\fBmemcached()\fP over \fI\%memcached_create()\fP.
 .sp
 \fI\%memcached_clone()\fP is similar to \fI\%memcached_create()\fP but
 it copies the defaults and list of servers from the source
index 9bde3df5a80d73e2c9fcb721840454e9a8caa2b9..26d7c2db2b903d545c32a43122c15d7a2d610401 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_CREATE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_CREATE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_create \- libmemcached Documentation
 .
@@ -64,8 +64,7 @@ communicate with the server. You should either pass a statically declared
 a NULL. If a NULL passed in then a structure is allocated for you.
 .sp
 Please note, when you write new application use
-\fBmemcached()\fP over
-\fI\%memcached_create()\fP.
+\fBmemcached()\fP over \fI\%memcached_create()\fP.
 .sp
 \fI\%memcached_clone()\fP is similar to \fI\%memcached_create()\fP but
 it copies the defaults and list of servers from the source
index 90d2169c325b5717cc7a243fa3f35b22c5dbbed1..c9e8c6587d372c4bd99efc093ce3085c0d6b6876 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DECREMENT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DECREMENT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_decrement \- Incrementing and Decrementing Values
 .
index bbc158278420d98e60743866ff73aa4fdf354a14..ae28e6b2c7cb8f7a473ce3d261ede83421854b57 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_decrement_with_initial \- Incrementing and Decrementing Values
 .
index fdf6f159a5753c60edc205b32b20db34f6e60750..3a6cf573348bc4a24ce109ea35315b325208a497 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DELETE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DELETE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_delete \- libmemcached Documentation
 .
index 6f805dcd2efadb021658e2ef9205b692e4db2544..0911921b9a208f592213522daa47bec40703a44a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DELETE_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DELETE_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_delete_by_key \- libmemcached Documentation
 .
index 6eea91c911f1f66ce7398fa6473d757b607dd1e5..f391fd612c9a16c1fc42c0efbb8c3457235f8a12 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_destroy_sasl_auth_data \- libmemcached Documentation
 .
index 65e9a2c889e0ce177691f09002623a9468e02f5a..ba8b15f34df002c59ba1af005cdb60d87b10ce9f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_DUMP" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_DUMP" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_dump \- libmemcached Documentation
 .
index 16a45e7359e0c5b177eeead203149d96b34dddc1..2da32a39e1d3e8063a8974fa974c6c06e3307f4b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_EXIST" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_EXIST" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_exist \- libmemcached Documentation
 .
index c6e06f59779a9472aa48cfa01ae4b214a3f2eb05..7baa3712f2ca95b48b1ea6cadb41960fe6cb8827 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_EXIST_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_EXIST_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_exist_by_key \- libmemcached Documentation
 .
index a7eac5420948295e4de5d4c4a0e5d69621d95ae9..2aa75d1fb13fd0de5e56d70a2a1cb624abd94352 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FETCH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FETCH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_fetch \- Retrieving data from the server
 .
index fa65efc901ced5992c4a8e44e6fea880a6727960..076bb3ac9194dc8d673f85af06527119588cadbf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FETCH_EXECUTE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FETCH_EXECUTE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_fetch_execute \- Retrieving data from the server
 .
index 6a3e3a94f8a675a79430340e406c312e4699a783..b081204b556623d2607177de0a532a1268541969 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FETCH_RESULT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FETCH_RESULT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_fetch_result \- Retrieving data from the server
 .
index c25193d082866ba3f07feb30e2420323acd282de..1536387cf2723c557870926a5bac1ef99d117c53 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FLUSH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FLUSH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_flush \- libmemcached Documentation
 .
index 9d0245daa6d396f4ac859d5e8bd6978ffaaab0d0..a28497abaa6b502a674066da1c2b1b222203aa4b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FLUSH_BUFFERS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FLUSH_BUFFERS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_flush_buffers \- libmemcached Documentation
 .
index 8e41091c79ffdc18c537e12a299c6a3796a28e90..0cbd25fd3fdcbc0b735b6e95473ff10239feda37 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_FREE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_FREE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_free \- libmemcached Documentation
 .
@@ -64,8 +64,7 @@ communicate with the server. You should either pass a statically declared
 a NULL. If a NULL passed in then a structure is allocated for you.
 .sp
 Please note, when you write new application use
-\fBmemcached()\fP over
-\fI\%memcached_create()\fP.
+\fBmemcached()\fP over \fI\%memcached_create()\fP.
 .sp
 \fI\%memcached_clone()\fP is similar to \fI\%memcached_create()\fP but
 it copies the defaults and list of servers from the source
index ee214b5b1ea3026ecba08dc3c4bcb2931834e393..c62fe98832a789cc9868912f9788d856eac2c727 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GENERATE_HASH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GENERATE_HASH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_generate_hash \- Generating hash values directly
 .
index 910637939200c914f8a555265d535f0d23eea82c..656669940800f167e02bb7a7bed9ac34750e3b7c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_generate_hash_value \- Generating hash values directly
 .
index 4c201f976579946229c0b8897422ee4ce72466d6..32cce22479449284a06f4848ad3b127e5504a748 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_get \- Retrieving data from the server
 .
index fa82124faa2f5628201512f8dd413b421a7b47e7..29d98d2b8130f9e62b8f71075ce5664b157b9bb8 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GET_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GET_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_get_by_key \- Retrieving data from the server
 .
index 1a3fd60ab74d3602adac93c0cf2b479a5cc108ca..465398b9703e3825bf3648b4bdcfe8bc896a78c7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_get_memory_allocators \- libmemcached Documentation
 .
index 862775ee501aea085b15b01700b9d3ad8cb2282f..0a44798772c0925abee73dbb8b1142fda2995cb1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_get_sasl_callbacks \- libmemcached Documentation
 .
index 9ab93ba15c9f51b6141620e2413fa869ab6dc19a..018693cfeea642bf01ab4587ace956ec8f410215 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_GET_USER_DATA" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_GET_USER_DATA" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_get_user_data \- libmemcached Documentation
 .
index d0e8574f4f935df64e19d778b21bbc49d0910f48..ca7f67d2f6a9b2033521f4a71da49b2788927252 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_INCREMENT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_INCREMENT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_increment \- Incrementing and Decrementing Values
 .
index 893669cecf37c2df5dd7ef1272d4435437a46581..edcd659ffd2d7d982855923d77138ade0f234e01 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_increment_with_initial \- Incrementing and Decrementing Values
 .
index 42a2588ed209236223d65ee4a4ce33f2c0c6b92c..d21e9c106aac686bb3427ba7bc61ac64e1210f3d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_last_error_message \- libmemcached Documentation
 .
index 204b5046b3b13870b383787e606c1ed21b4cd437..39d03fb322d34ccd538c65176ec078235d42177f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_LIB_VERSION" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_LIB_VERSION" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_lib_version \- libmemcached Documentation
 .
index 45e921d368ee6212f5def30dcfc7cf06235c6b06..c7265a5f8568f25e60fc7be090e237fa58e92f73 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_memory_allocators \- libmemcached Documentation
 .
index a626105063936aee659e710691f59af9e3d4fc29..bf43a3f72c5ccad9c22ba3e6a4d5621a40788170 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_MGET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_MGET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_mget \- Retrieving data from the server
 .
index 3fb69f6d6e5a5f7be8568436e97f780e6cd88c7b..d3da64b9ecaa59d4281f945798b640a99c45732e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_MGET_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_MGET_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_mget_by_key \- Retrieving data from the server
 .
index 494354bf45f2fa0a40a86d122d1e3885cbdf0c22..f13c913477883185e8e36c1e5c45689f4a38b38b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_MGET_EXECUTE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_MGET_EXECUTE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_mget_execute \- Retrieving data from the server
 .
index 7cf5473ec8c2e7a95b85a458c0dc5083957d518c..efe3cdbf46140cc0bba65fe509fde20aaad3e7cf 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_mget_execute_by_key \- Retrieving data from the server
 .
index 61415372b6214aff5564e2fb84548a80a3b7f5f4..cea7e403d1ddae0f8c6cf6edf5b382a8bb37a123 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool \- libmemcached Documentation
 .
index ca1b90ac160d3b044f2b3495978f3039c8c51bb5..b07fa1a644cedd110fc7896ac71cf46c4047acb2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_behavior_get \- libmemcached Documentation
 .
index 665f71c67792e9c833b5ac608fac20142ea40fc5..a2a31d0167e1f7c3a93c3c3980c5342fa5bb0238 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_behavior_set \- libmemcached Documentation
 .
index 7bc45f05ac7d96e68cf57186cee547aae23861ce..030c5a936846fa685b720517e45babaea08929dd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_CREATE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_CREATE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_create \- libmemcached Documentation
 .
index a5c623641c6bf5f23bd77cafa7ed9e02cef3b6df..09c554ae9533571145734f2eb840ead9b63ef6f0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_DESTROY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_DESTROY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_destroy \- libmemcached Documentation
 .
index ff409c8492782568be6dc936959773e18ff7fb2c..b8812ae5ffb55fffd9f9222b70932542aa7ab3e3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_FETCH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_FETCH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_fetch \- libmemcached Documentation
 .
index a2bbb22d3e3ce6f14d8b5ef77d0006e9ef22f191..60d4c32f5ed47f4e50ef1e8e6180e53ebb77edb0 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_POP" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_POP" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_pop \- libmemcached Documentation
 .
index 5aa8ff0fac51e34e9240cbdfd66d270f67770791..1630be8c6f06f56d92c09373baf9f036cdf75889 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_PUSH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_PUSH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_push \- libmemcached Documentation
 .
index a97592780e6bd5b60fe9d1d0103cddd237d55814..aff2cc766b41bc7cdec84214957e1b3972a8b0ba 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_RELEASE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_RELEASE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_release \- libmemcached Documentation
 .
index b4ddff1aa7576d149f0b4f8d82f1e1b98ff274ff..11a5b338a435f6fb81a5b321c52e1060f0d715af 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_POOL_ST" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_POOL_ST" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_pool_st \- libmemcached Documentation
 .
index 65fe1509d05779169e9a0392549d78a7e2b632c9..e96c540130ed0f5a0c798a2561472c5ec7e7119a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_PREPEND" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_PREPEND" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_prepend \- Appending to or Prepending to data on the server
 .
index a2eb0c9fd02a2be4bf8d723c43190c8989c3baaa..092eefdeeb22c9c86e92352041548ac0939c9978 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_PREPEND_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_PREPEND_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_prepend_by_key \- Appending to or Prepending to data on the server
 .
index 8656e3cc52f45c84b576be40f467924c79fec636..23e71e2b4378eee7ab55f81854aa263e5af9d56f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_QUIT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_QUIT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_quit \- libmemcached Documentation
 .
index 761facc5774a3e162b1da082f163162f38cfcfa5..684e78e6b007c8a617c4ceda35793720ee1f19ba 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_REPLACE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_REPLACE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_replace \- Storing and Replacing Data
 .
index 627554d188a960d805a73f7ef390dea1b2d4392f..73ddc4eaa714f10fe3fe93bc57227114cb706b7d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_REPLACE_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_REPLACE_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_replace_by_key \- Storing and Replacing Data
 .
index 5fa23f0290b6465c76109787d5d470b68e7c3bdc..da33a6c8fd702e93f7e786736c366b5447cbe59f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_CAS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_CAS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_cas \- Working with result sets
 .
index ab798b5d9c05d9661544f5a3a1f610f0f5099ca5..411f8a1f3ef25e835969c04532658556299b61bc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_CREATE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_CREATE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_create \- Working with result sets
 .
index 6abaf877db8d2d27a2a451e95dd1d4d06b8028f6..a4d1a93a5cc3dc716ec1bfc60e1357af20a95e06 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_FLAGS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_FLAGS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_flags \- Working with result sets
 .
index 71cff37833db407fd9b138a12425a7b2f4b29f1d..a6e9af782183f20d0e71764a7f0dbc1c50d9f18e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_FREE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_FREE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_free \- Working with result sets
 .
index ce2282540b7d2d4c3e656554ecc8d60df7012625..68d774a29072410cd3adf97c5bae2c9b73e63a1a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_key_length \- Working with result sets
 .
index 086d818bd0641eae3c2a04400718be0fd70ae485..cc6faf137ade5494fa301a160aa93203834b004e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_key_value \- Working with result sets
 .
index 3b608709ae1f8d2410b1a3c8404b62a1739386d5..1ca809a57db30019e8c40dafb8f19da20b357c81 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_LENGTH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_LENGTH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_length \- Working with result sets
 .
index 89f34d06026e82ad355a7a882e9615e2ae6df534..420f215635e9cf20843d062606f2781198e884d2 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_ST" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_ST" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_st \- Working with result sets
 .
index 95218eefa64eb4e5a14e67689fffa674e79c5988..2637a6a85b0d619333c5726a71f4547f4d991e75 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RESULT_VALUE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RESULT_VALUE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_result_value \- Working with result sets
 .
index 0cfd7d9ed9e79d92608801cdf4aa714b22d2ee99..39f8eb3110d802992a93c5d0fded38556982b0a7 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_RETURN_T" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_RETURN_T" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_return_t \- Return type values 
 .
index 359b2af71c1f7381add821f912329d52211f4759..a4729ca979ec64a66514d806afcb7e34e621bb5a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SASL" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SASL" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_sasl \- libmemcached Documentation
 .
index 9b3111dd36fe891ace6fcd1e9593859debf17bba..51e8235bafdcebb2f2204eb9db42e7f823e37405 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_sasl_set_auth_data \- libmemcached Documentation
 .
index 06291d9f37e59c6722b2d952a4dff2643c489165..4b0be904fc32e2652cb135116ede20cef2a60849 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_ADD" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_ADD" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_add \- libmemcached Documentation
 .
index 8e8627eb782b9a4eeb4886e83e7c59841014d633..774989c5c087505bf6cd1cb76c002bf79dc92965 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_add_unix_socket \- libmemcached Documentation
 .
index 1223ab113ff478d11ac8cfaaf625eef03a8e1d4f..a276e24fb5da23f6d7ca53765a474adf5940f1ed 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_COUNT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_COUNT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_count \- libmemcached Documentation
 .
index 9ce49cb2435c6b0b09c05e07f47231a5220fc3d9..df6ed956d05af325d53e72b4ce2ea35c3e74df3d 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_CURSOR" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_CURSOR" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_cursor \- libmemcached Documentation
 .
index 5c09ddcce21448a3212d5e655452658effa032c1..38221e43f57aeda6ec980e5c194b316660e8af7a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_LIST" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_list \- libmemcached Documentation
 .
index b27bad9b6c29bc03f9de8857278818d2790adddb..70b471744021fd6327510020f9470bbe34355de5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_list_append \- libmemcached Documentation
 .
index fba97399d070f42bab38bb74752589a7d95a5640..816a639fcc23f8b928891e2dc25db481fc389b84 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_list_count \- libmemcached Documentation
 .
index 3245fd33075651da64012acb7ce73ccfd69c64fa..c8811c2efa1d2afaddceb00ef10f7133a461e80f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_LIST_FREE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_FREE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_list_free \- libmemcached Documentation
 .
index c797abc3c54f4ba8291c55b25061876d58cde7ca..4e0c9588afa7519cc8ca4c0a971b3ee789dad1cc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_PUSH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_PUSH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_push \- libmemcached Documentation
 .
index cdae4edb5d2a155487246ad12ce9fd33ac8509d0..4173b317dc1865f2b15f013f9e2805b917190afd 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVER_ST" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVER_ST" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_server_st \- libmemcached Documentation
 .
index c44bb770cb1b113edb58294bd6876c8abd199971..eb0ce7c9c73449e8fa28321d029045115b7b4d65 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVERS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVERS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_servers \- libmemcached Documentation
 .
index 3474b7eccb47e443beb468d764cf9d3b220f9e98..20646d75b4c1c5e5efe053d0e180ea9cef7c5d5e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVERS_PARSE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVERS_PARSE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_servers_parse \- libmemcached Documentation
 .
index 5339c280671c2ba8f3576ab5b17257e971e63ed5..0dded8d3eec09533e0fdb297506facfb1c82198f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SERVERS_RESET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SERVERS_RESET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_servers_reset \- libmemcached Documentation
 .
@@ -64,8 +64,7 @@ communicate with the server. You should either pass a statically declared
 a NULL. If a NULL passed in then a structure is allocated for you.
 .sp
 Please note, when you write new application use
-\fBmemcached()\fP over
-\fI\%memcached_create()\fP.
+\fBmemcached()\fP over \fI\%memcached_create()\fP.
 .sp
 \fI\%memcached_clone()\fP is similar to \fI\%memcached_create()\fP but
 it copies the defaults and list of servers from the source
index b85eb3cd196fb24136a4ae6267f1e573cfb4672f..1843f86329798a67d3d8f6b811a631fcff98d822 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set \- Storing and Replacing Data
 .
index 5c3938172e8547c52600c5e7d56e7186fcafda44..7f56e97fce863c76e8acbc820f1885f91708be5b 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set_by_key \- Storing and Replacing Data
 .
index d36fb9bacc3d97b0158cd215b3e63423df08393d..e9f5348f6000342168679a01fe0eaf7cd3911b92 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set_memory_allocators \- libmemcached Documentation
 .
index 0f9818c4c50d1b15a0bd54f938e54a9f61f7b2f0..c80903e09fda069555b5f1b23c1b1e3a1c855cf6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set_memory_allocators_context \- libmemcached Documentation
 .
index abe09acbc08df5a95430a3e4e91c99ddcfcecea9..93ec2b0f8312a3554c2f17fb581639758b5f177e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set_sasl_callbacks \- libmemcached Documentation
 .
index 66aaed832c2495b2135655aded209ea5bff65f2f..c1c4105e8ab98758c9cdeab9200d742aa3c77115 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_SET_USER_DATA" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_SET_USER_DATA" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_set_user_data \- libmemcached Documentation
 .
index 1decb490ea06e15c4b917ab9fa42ccbf606b9ea4..ebd11ef33d622aebfbd4f565610f0b669c6376a9 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STAT" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STAT" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stat \- libmemcached Documentation
 .
index 607d6f16764fdc59e099311c68cb946f5e860673..9ae7efc8dd22c6cbb578bb5e8dcc005bf16423fc 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STAT_EXECUTE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STAT_EXECUTE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stat_execute \- libmemcached Documentation
 .
index 9dbbeb7ee4b02f7dccb9a60880f004fb9aab6988..b757aa0885dd5d05ff838ec045aeff320cec0dc6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STAT_GET_KEYS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STAT_GET_KEYS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stat_get_keys \- libmemcached Documentation
 .
index 0db8ffddc3dd1dc6247725088bc3fea1208af0f1..43f1e34b924354719a15b4c45decc046f0e13342 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STAT_GET_VALUE" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STAT_GET_VALUE" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stat_get_value \- libmemcached Documentation
 .
index afb5a566ba3a6768b876e889bfc84247c1a3514e..398e1fde585f934ccc197b00d7d17cdb926e0473 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STAT_SERVERNAME" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STAT_SERVERNAME" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stat_servername \- libmemcached Documentation
 .
index 2983aa3c3a7ed292e8d0c5d56b083d33070e3c05..b76e9e28b69265c2b81d7664e735f792ed14f35e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STATS" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STATS" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_stats \- libmemcached Documentation
 .
index e0e97d3c11aef54ded77901cfa0f4454ff5fe169..3de5bd762153aaf1361b67c0489d48674aed0c80 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_STRERROR" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_STRERROR" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_strerror \- libmemcached Documentation
 .
index 2e07928deb468467c713ede0e563270405462855..e14b6a05a6d73c735c11e563f8f97c5446f322c5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_TOUCH" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_TOUCH" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_touch \- libmemcached Documentation
 .
index 51bd1e2f2510fb9cf82cb6090576061ef5a1d257..6156d672955c5296ae452993ad40113d79fbf24a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_TOUCH_BY_KEY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_TOUCH_BY_KEY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_touch_by_key \- libmemcached Documentation
 .
index 182fbb7a7bfe6c94f57b517b0c13ef507be1c721..4f0ce55c5a1c88a9eae7136679cb79c0c4204838 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_USER_DATA" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_USER_DATA" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_user_data \- libmemcached Documentation
 .
index 357d288551ba20d839469f372e9825f75eb4f0da..b1d790631b7577bf19f7e2f0766f720aeb76ed04 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_VERBOSITY" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_VERBOSITY" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_verbosity \- libmemcached Documentation
 .
index 31e231298e2a0683044f34603ecbaa6f435c94bd..a7e71c8145ac5c81209c9d690f14a17501f26bf3 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCACHED_VERSION" "3" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCACHED_VERSION" "3" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcached_version \- libmemcached Documentation
 .
index 2ff5bc2bff0673ab4f0b089eaa0353a63d62490c..e84c002a302177800d306f6f75e789d65758d40f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCAPABLE" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCAPABLE" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcapable \- libmemcached Documentation
 .
index f63f5e62c521b3addc87bcaea322856689a3286a..fc11b9128658937182060259ca15cd5c0828b022 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCAT" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCAT" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcat \- libmemcached Documentation
 .
index f2c45f5593c3d8a28d101fa205ab6ec6dc4ab563..ebce8b1909a8d20fbaea81191f745767cd23bc7e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMCP" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMCP" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memcp \- libmemcached Documentation
 .
index c350b71b6ae35e117a1b22eedb55891764948dbc..cf83ee62273a3b83fb8f23865d0834a0d8f6557f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMDUMP" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMDUMP" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memdump \- libmemcached Documentation
 .
index 69542c69fb09af6405fed9a37ab66225b0504b9e..10492eeeea5cca08ddce2e2f4496b3db0c3a4d6a 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMERROR" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMERROR" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memerror \- libmemcached Documentation
 .
index c45c63464fd400461a5c9cf16b6765920347a028..d25050f938de151c5880d349ca5613f4e7e999b5 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMFLUSH" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMFLUSH" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memflush \- libmemcached Documentation
 .
index 737e9a1cc5438d02a9745a81843b2fb43767421b..b9dd5f80d02f0b588b282bde17a5d5cb4d4fb985 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMRM" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMRM" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memrm \- libmemcached Documentation
 .
index 8441275e9dba2909f08813efb30fdb73d440b4f0..11305e709cf6c0ed04fd7c21ff3fc24085cb6a74 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMSLAP" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMSLAP" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memslap \- libmemcached Documentation
 .
index e5b48e9db8c13479328c9c10a82de0e5c76bddcf..e9cd7f8ffd47271f496834ab1bca547fa4d63186 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MEMSTAT" "1" "April 28, 2012" "1.0.7" "libmemcached"
+.TH "MEMSTAT" "1" "May 03, 2012" "1.0.7" "libmemcached"
 .SH NAME
 memstat \- libmemcached Documentation
 .
index 5eaaee03b016143965c7c746e6832101ece75f49..ae851ba99ceebf9d4e269f57a7e8159d5bae2e8d 100644 (file)
@@ -32,8 +32,7 @@ communicate with the server. You should either pass a statically declared
 a NULL. If a NULL passed in then a structure is allocated for you.
 
 Please note, when you write new application use 
-:c:func:`memcached` over 
-:c:func:`memcached_create`.
+:c:func:`memcached` over :c:func:`memcached_create`.
 
 :c:func:`memcached_clone` is similar to :c:func:`memcached_create` but 
 it copies the defaults and list of servers from the source 
index da8ac7e35de85f7aa683a9ac0a4df10e722d639e..fa9661528002e9f3712ace1f0679065d678c9213 100644 (file)
 
 #pragma once
 
-#include <inttypes.h>
+/* This seems to be required for older compilers @note http://stackoverflow.com/questions/8132399/how-to-printf-uint64-t  */
+#define __STDC_FORMAT_MACROS
 
 #ifdef __cplusplus
-#include <cstddef>
-#include <cstdlib>
+#  include <tr1/cinttypes>
+#  include <cstddef>
+#  include <cstdlib>
 #else
-#include <stddef.h>
-#include <stdlib.h>
+#  include <inttypes.h>
+#  include <stddef.h>
+#  include <stdlib.h>
+#  include <stdbool.h>
 #endif
 
 #include <sys/types.h>
 
-
-#if !defined(__cplusplus)
-# include <stdbool.h>
-#endif
-
 #include <libmemcached-1.0/visibility.h>
 #include <libmemcached-1.0/configure.h>
 #include <libmemcached-1.0/platform.h>
index 2eb91281e42176f3e72e096f3021df1f938a03e5..2bcf6fa894afb72cce638da244c5984fba636739 100644 (file)
@@ -208,30 +208,49 @@ memcached_st *memcached_create(memcached_st *ptr)
 
 memcached_st *memcached(const char *string, size_t length)
 {
-  memcached_st *self= memcached_create(NULL);
-  if (self == NULL)
+  if (length == 0 and string)
+  {
+    return NULL;
+  }
+
+  if (length and string == NULL)
   {
     return NULL;
   }
 
   if (length == 0)
   {
-    return self;
+    if (bool(getenv("LIBMEMCACHED")))
+    {
+      string= getenv("LIBMEMCACHED");
+      length= string ? strlen(string) : 0;
+    }
+  }
+
+  memcached_st *memc= memcached_create(NULL);
+  if (memc == NULL)
+  {
+    return NULL;
+  }
+
+  if (length == 0 or string == NULL)
+  {
+    return memc;
   }
 
-  memcached_return_t rc= memcached_parse_configuration(self, string, length);
-  if (memcached_success(rc) and memcached_parse_filename(self))
+  memcached_return_t rc= memcached_parse_configuration(memc, string, length);
+  if (memcached_success(rc) and memcached_parse_filename(memc))
   {
-    rc= memcached_parse_configure_file(*self, memcached_parse_filename(self), memcached_parse_filename_length(self));
+    rc= memcached_parse_configure_file(*memc, memcached_parse_filename(memc), memcached_parse_filename_length(memc));
   }
     
   if (memcached_failed(rc))
   {
-    memcached_free(self);
+    memcached_free(memc);
     return NULL;
   }
 
-  return self;
+  return memc;
 }
 
 memcached_return_t memcached_reset(memcached_st *ptr)
diff --git a/libtest/collection.cc b/libtest/collection.cc
new file mode 100644 (file)
index 0000000..c6fec1e
--- /dev/null
@@ -0,0 +1,179 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ *
+ *  Data Differential YATL (i.e. libtest)  library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <config.h>
+
+#include <libtest/common.h>
+
+static test_return_t runner_code(Framework* frame,
+                                 test_st* run, 
+                                 libtest::Timer& _timer)
+{ // Runner Code
+
+  assert(frame->runner());
+  assert(run->test_fn);
+
+  test_return_t return_code;
+  try 
+  {
+    _timer.reset();
+    return_code= frame->runner()->run(run->test_fn, frame->creators_ptr());
+  }
+  // Special case where check for the testing of the exception
+  // system.
+  catch (libtest::fatal &e)
+  {
+    if (libtest::fatal::is_disabled())
+    {
+      libtest::fatal::increment_disabled_counter();
+      return_code= TEST_SUCCESS;
+    }
+    else
+    {
+      throw;
+    }
+  }
+
+  _timer.sample();
+
+  return return_code;
+}
+
+namespace libtest {
+
+Collection::Collection(Framework* frame_arg,
+                       collection_st* arg) :
+  _name(arg->name),
+  _pre(arg->pre),
+  _post(arg->post),
+  _tests(arg->tests),
+  _frame(frame_arg),
+  _success(0),
+  _skipped(0),
+  _failed(0),
+  _total(0)
+{
+  fatal_assert(arg);
+}
+
+test_return_t Collection::exec()
+{
+  Out << "Collection: " << _name;
+
+  if (test_success(_frame->runner()->pre(_pre, _frame->creators_ptr())))
+  {
+    for (test_st *run= _tests; run->name; run++)
+    {
+      long int load_time= 0;
+
+      if (_frame->match(run->name))
+      {
+        continue;
+      }
+      _total++;
+
+      test_return_t return_code;
+      try 
+      {
+        if (run->requires_flush)
+        {
+          if (test_failed(_frame->runner()->flush(_frame->creators_ptr())))
+          {
+            Error << "frame->runner()->flush(creators_ptr)";
+            _skipped++;
+            continue;
+          }
+        }
+
+        return_code= runner_code(_frame, run, _timer);
+      }
+      catch (libtest::fatal &e)
+      {
+        Error << "Fatal exception was thrown: " << e.what();
+        return_code= TEST_FAILURE;
+        _failed++;
+        throw;
+      }
+
+      switch (return_code)
+      {
+      case TEST_SUCCESS:
+        Out << "\tTesting " 
+          << run->name
+          <<  "\t\t\t\t\t" 
+          << _timer 
+          << " [ " << test_strerror(return_code) << " ]";
+        _success++;
+        break;
+
+      case TEST_FAILURE:
+        _failed++;
+        Out << "\tTesting " << run->name <<  "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]";
+        break;
+
+      case TEST_SKIPPED:
+        _skipped++;
+        Out << "\tTesting " << run->name <<  "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]";
+        break;
+
+      default:
+        fatal_message("invalid return code");
+      }
+#if 0
+      @TODO add code here to allow for a collection to define a method to reset to allow tests to continue.
+#endif
+    }
+
+    (void) _frame->runner()->post(_post, _frame->creators_ptr());
+  }
+
+  if (_failed == 0 and _skipped == 0 and _success)
+  {
+    return TEST_SUCCESS;
+  }
+
+  if (_failed)
+  {
+    return TEST_FAILURE;
+  }
+
+  fatal_assert(_skipped or _success == 0);
+
+  return TEST_SKIPPED;
+}
+
+} // namespace libtest
+
index 044acf036b4db7c6fca3d5494f5f6992117c1ab5..91c76a6d7f9084558a892f2c3779855af2c51471 100644 (file)
 
 #pragma once
 
+#include <libtest/timer.hpp>
+
+class Framework;
+
 /**
   A structure which describes a collection of test cases.
 */
@@ -46,4 +50,50 @@ struct collection_st {
   struct test_st *tests;
 };
 
+namespace libtest {
+
+class Collection {
+public:
+  Collection(Framework*, collection_st*);
+
+  test_return_t exec();
+
+  const char* name()
+  {
+    return _name;
+  }
+
+  uint32_t success()
+  {
+    return _success;
+  }
+
+  uint32_t skipped()
+  {
+    return _skipped;
+  }
+
+  uint32_t failed()
+  {
+    return _failed;
+  }
+
+  uint32_t total()
+  {
+    return _total;
+  }
+
+private:
+  const char *_name;
+  test_callback_fn *_pre;
+  test_callback_fn *_post;
+  struct test_st *_tests;
+  Framework* _frame;
+  uint32_t _success;
+  uint32_t _skipped;
+  uint32_t _failed;
+  uint32_t _total;
+  libtest::Timer _timer;
+};
 
+} // namespace libtest
index a9221916a6139f3ef34e9dc6dc2b361a35b2f4a4..777d21c3cfd85fb0d2ecb136512c9b878aba911a 100644 (file)
@@ -76,6 +76,5 @@
 
 #include <libtest/libtool.hpp>
 #include <libtest/killpid.h>
-#include <libtest/stats.h>
 #include <libtest/signal.h>
 
index 1663bf476c2301a05384bcb6b5fa653ca826e4c6..fba81c03f4ce4c0720bf98d507b0a3d23ace8ecb 100644 (file)
@@ -45,7 +45,7 @@ void create_core(void)
 #ifdef TARGET_OS_OSX 
   return;
 #endif
-  if (getenv("LIBMEMCACHED_NO_COREDUMP") == NULL)
+  if (getenv("YATL_COREDUMP"))
   {
     pid_t pid= fork();
 
index 75e276d549aca4ff1bf139a7f6214a3ca9b10f61..9ab3292f3c0a4bec0d0ac14440e0972204e9d7e4 100644 (file)
 
 namespace libtest {
 
-fatal::fatal(const char *file, int line, const char *func, const char *format, ...) :
-  std::runtime_error(func)
+fatal::fatal(const char *file_arg, int line_arg, const char *func_arg, const char *format, ...) :
+  std::runtime_error(func_arg),
+  _file(file_arg),
+  _line(line_arg),
+  _func(func_arg)
   {
     va_list args;
     va_start(args, format);
     char last_error[BUFSIZ];
-    (void)vsnprintf(last_error, sizeof(last_error), format, args);
+    int last_error_length= vsnprintf(last_error, sizeof(last_error), format, args);
     va_end(args);
 
-    snprintf(_error_message, sizeof(_error_message), "%s:%d FATAL:%s (%s)", file, int(line), last_error, func);
+    strncpy(_mesg, last_error, sizeof(_mesg));
+
+    snprintf(_error_message, sizeof(_error_message), "%s:%d FATAL:%s (%s)", _file, int(_line), last_error, _func);
   }
 
 static bool _disabled= false;
index bc288afeb767cf72498ee86348364dc830c5039f..54f672b652a8808973de15800def96a430e8d009 100644 (file)
@@ -56,6 +56,11 @@ public:
     return _error_message;
   }
 
+  const char* mesg() const throw()
+  {
+    return _error_message;
+  }
+
   // The following are just for unittesting the exception class
   static bool is_disabled();
   static void disable();
@@ -63,8 +68,27 @@ public:
   static uint32_t disabled_counter();
   static void increment_disabled_counter();
 
+  int line()
+  {
+    return _line;
+  }
+
+  const char*  file()
+  {
+    return _file;
+  }
+
+  const char* func()
+  {
+    return _func;
+  }
+
 private:
   char _error_message[BUFSIZ];
+  char _mesg[BUFSIZ];
+  int _line;
+  const char*  _file;
+  const char* _func;
 };
 
 class disconnected : std::runtime_error
index 3bab5f0ad3f414f702529f1994c842a4847a746f..eb0f4120de3982eacdc485d3a5e487f37a7461bf 100644 (file)
  */
 
 #include <config.h>
+
 #include <libtest/common.h>
+#include <libtest/collection.h>
+#include <libtest/signal.h>
+
+#include <fnmatch.h>
 #include <iostream>
 
 using namespace libtest;
 
-Framework::Framework() :
+Framework::Framework(libtest::SignalThread& signal,
+                     const std::string& only_run_arg,
+                     const std::string& wildcard_arg) :
   collections(NULL),
+  _total(0),
+  _success(0),
+  _skipped(0),
+  _failed(0),
   _create(NULL),
   _destroy(NULL),
   _runner(NULL),
   _socket(false),
-  _creators_ptr(NULL)
+  _creators_ptr(NULL),
+  _signal(signal),
+  _only_run(only_run_arg),
+  _wildcard(wildcard_arg)
 {
+  get_world(this);
+
+  for (collection_st *next= collections; next and next->name; next++)
+  {
+    _collection.push_back(new Collection(this, next));
+  }
 }
 
 Framework::~Framework()
@@ -60,6 +80,122 @@ Framework::~Framework()
   _servers.shutdown();
 
   delete _runner;
+
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end();
+       iter++)
+  {
+    delete *iter;
+  }
+  _collection.clear();
+}
+
+bool Framework::match(const char* arg)
+{
+  if (_wildcard.empty() == false and fnmatch(_wildcard.c_str(), arg, 0))
+  {
+    return true;
+  }
+
+  return false;
+}
+
+void Framework::exec()
+{
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end() and (_signal.is_shutdown() == false);
+       iter++)
+  {
+    if (_only_run.empty() == false and
+        fnmatch(_only_run.c_str(), (*iter)->name(), 0))
+    {
+      continue;
+    }
+
+    _total++;
+
+    try {
+      switch ((*iter)->exec())
+      {
+      case TEST_FAILURE:
+        _failed++;
+        break;
+
+      case TEST_SKIPPED:
+        _skipped++;
+        break;
+
+        // exec() can return SUCCESS, but that doesn't mean that some tests did
+        // not fail or get skipped.
+      case TEST_SUCCESS:
+        _success++;
+        break;
+      }
+    }
+    catch (libtest::fatal& e)
+    {
+      stream::cerr(e.file(), e.line(), e.func()) << e.mesg();
+    }
+    catch (libtest::disconnected& e)
+    {
+      Error << "Unhandled disconnection occurred:" << e.what();
+      throw;
+    }
+
+    Outn();
+  }
+}
+
+uint32_t Framework::sum_total()
+{
+  uint32_t count= 0;
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end();
+       iter++)
+  {
+    count+= (*iter)->total();
+  }
+
+  return count;
+}
+
+uint32_t Framework::sum_success()
+{
+  uint32_t count= 0;
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end();
+       iter++)
+  {
+    count+= (*iter)->success();
+  }
+
+  return count;
+}
+
+uint32_t Framework::sum_skipped()
+{
+  uint32_t count= 0;
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end();
+       iter++)
+  {
+    count+= (*iter)->skipped();
+  }
+
+  return count;
+}
+
+uint32_t Framework::sum_failed()
+{
+  uint32_t count= 0;
+  for (std::vector<Collection*>::iterator iter= _collection.begin();
+       iter != _collection.end();
+       iter++)
+  {
+    count+= (*iter)->failed();
+  }
+
+  return count;
 }
 
 libtest::Runner *Framework::runner()
@@ -73,13 +209,13 @@ libtest::Runner *Framework::runner()
   return _runner;
 }
 
-void* Framework::create(test_return_t& arg)
+test_return_t Framework::create()
 {
-  arg= TEST_SUCCESS;
+  test_return_t rc= TEST_SUCCESS;
   if (_create)
   {
-    return _creators_ptr= _create(_servers, arg);
+    _creators_ptr= _create(_servers, rc);
   }
 
-  return NULL;
+  return rc;
 }
index 00959c1829e457fb3518648b2c5c4c6c28c1e1a1..45cd6533c1f78fb413617aab8c62cbf69221b655 100644 (file)
 
 #pragma once
 
+#include <libtest/signal.h>
+
 /**
   Framework is the structure which is passed to the test implementation to be filled.
   This must be implemented in order for the test framework to load the tests. We call
   get_world() in order to fill this structure.
 */
 
+#include <vector>
+
 class Framework {
 public:
   collection_st *collections;
@@ -51,7 +55,7 @@ public:
   test_callback_destroy_fn *_destroy;
 
 public:
-  void* create(test_return_t& arg);
+  test_return_t create();
 
   /**
     If an error occurs during the test, this is called.
@@ -93,17 +97,74 @@ public:
 
   libtest::Runner *runner();
 
+  void exec();
 
-  Framework();
+  libtest::Collection& collection();
+
+  Framework(libtest::SignalThread&, const std::string&);
 
   virtual ~Framework();
 
-  Framework(const Framework&);
+  Framework(libtest::SignalThread&,
+            const std::string&,
+            const std::string&);
+
+  bool match(const char* arg);
+
+  void *creators_ptr()
+  {
+    return _creators_ptr;
+  }
+
+  libtest::SignalThread& signal()
+  {
+    return _signal;
+  }
+
+  uint32_t sum_total();
+  uint32_t sum_success();
+  uint32_t sum_skipped();
+  uint32_t sum_failed();
+
+  size_t size() 
+  {
+    return _collection.size();
+  }
+
+  uint32_t total() const
+  {
+    return _total;
+  }
+
+  uint32_t success() const
+  {
+    return _success;
+  }
+
+  uint32_t skipped() const
+  {
+    return _skipped;
+  }
+
+  uint32_t failed() const
+  {
+    return _failed;
+  }
 
 private:
   Framework& operator=(const Framework&);
+
+  uint32_t _total;
+  uint32_t _success;
+  uint32_t _skipped;
+  uint32_t _failed;
+
   libtest::server_startup_st _servers;
   bool _socket;
   void *_creators_ptr;
   unsigned long int _servers_to_run;
+  std::vector<libtest::Collection*> _collection;
+  libtest::SignalThread& _signal;
+  std::string _only_run;
+  std::string _wildcard;
 };
index 7b47fb114367d8af8c8cd0e9c742652f76e4a414..7e9be22da54672e5814bb197dc304a9bbec4ab4a 100644 (file)
@@ -42,6 +42,7 @@ CLEANFILES+= \
 distclean-libtest-check:
        -rm -rf tmp_chroot
 
+noinst_HEADERS+= libtest/timer.hpp
 noinst_HEADERS+= \
                 libtest/binaries.h \
                 libtest/cpu.hpp \
@@ -73,7 +74,6 @@ noinst_HEADERS+= \
                 libtest/server_container.h \
                 libtest/signal.h \
                 libtest/socket.hpp \
-                libtest/stats.h \
                 libtest/stream.h \
                 libtest/strerror.h \
                 libtest/string.hpp \
@@ -94,6 +94,7 @@ libtest_libtest_la_SOURCES=
 libtest_libtest_la_SOURCES+= libtest/binaries.cc 
 libtest_libtest_la_SOURCES+= libtest/cmdline.cc 
 libtest_libtest_la_SOURCES+= libtest/comparison.cc 
+libtest_libtest_la_SOURCES+= libtest/collection.cc 
 libtest_libtest_la_SOURCES+= libtest/core.cc 
 libtest_libtest_la_SOURCES+= libtest/cpu.cc 
 libtest_libtest_la_SOURCES+= libtest/dream.cc 
@@ -112,7 +113,9 @@ libtest_libtest_la_SOURCES+= libtest/server.cc
 libtest_libtest_la_SOURCES+= libtest/server_container.cc 
 libtest_libtest_la_SOURCES+= libtest/signal.cc 
 libtest_libtest_la_SOURCES+= libtest/socket.cc 
+libtest_libtest_la_SOURCES+= libtest/stream.cc 
 libtest_libtest_la_SOURCES+= libtest/strerror.cc 
+libtest_libtest_la_SOURCES+= libtest/timer.cc 
 libtest_libtest_la_SOURCES+= libtest/tmpfile.cc 
 libtest_libtest_la_SOURCES+= libtest/vchar.cc
 
index 0926dc6486568a35948b4060245fa60a53602372..3ae8ff988ebe14e0662dd9cd49b99ee582dab703 100644 (file)
 
 using namespace libtest;
 
-static void stats_print(Stats *stats)
+static void stats_print(Framework *frame)
 {
-  if (stats->collection_failed == 0 and stats->collection_success == 0)
+  if (frame->failed() == 0 and frame->success() == 0)
   {
     return;
   }
 
-  Out << "\tTotal Collections\t\t\t\t" << stats->collection_total;
-  Out << "\tFailed Collections\t\t\t\t" << stats->collection_failed;
-  Out << "\tSkipped Collections\t\t\t\t" << stats->collection_skipped;
-  Out << "\tSucceeded Collections\t\t\t\t" << stats->collection_success;
   Outn();
-  Out << "Total\t\t\t\t" << stats->total;
-  Out << "\tFailed\t\t\t" << stats->failed;
-  Out << "\tSkipped\t\t\t" << stats->skipped;
-  Out << "\tSucceeded\t\t" << stats->success;
-}
-
-static long int timedif(struct timeval a, struct timeval b)
-{
-  long us, s;
-
-  us = (long)(a.tv_usec - b.tv_usec);
-  us /= 1000;
-  s = (long)(a.tv_sec - b.tv_sec);
-  s *= 1000;
-  return s + us;
-}
-
-static test_return_t runner_code(Framework* frame,
-                                 test_st* run, 
-                                 void* creators_ptr, 
-                                 long int& load_time)
-{ // Runner Code
-
-  struct timeval start_time, end_time;
-
-  gettimeofday(&start_time, NULL);
-  assert(frame->runner());
-  assert(run->test_fn);
-
-  test_return_t return_code;
-  try 
-  {
-    return_code= frame->runner()->run(run->test_fn, creators_ptr);
-  }
-  // Special case where check for the testing of the exception
-  // system.
-  catch (libtest::fatal &e)
-  {
-    if (fatal::is_disabled())
-    {
-      fatal::increment_disabled_counter();
-      return_code= TEST_SUCCESS;
-    }
-    else
-    {
-      throw;
-    }
-  }
-
-  gettimeofday(&end_time, NULL);
-  load_time= timedif(end_time, start_time);
-
-  return return_code;
+  Out << "Collections\t\t\t\t\t" << frame->total();
+  Out << "\tFailed\t\t\t\t\t" << frame->failed();
+  Out << "\tSkipped\t\t\t\t\t" << frame->skipped();
+  Out << "\tSucceeded\t\t\t\t" << frame->success();
+  Outn();
+  Out << "Tests\t\t\t\t\t" << frame->sum_total();
+  Out << "\tFailed\t\t\t\t" << frame->sum_failed();
+  Out << "\tSkipped\t\t\t\t" << frame->sum_skipped();
+  Out << "\tSucceeded\t\t\t" << frame->sum_success();
 }
 
 #include <getopt.h>
@@ -134,6 +86,7 @@ int main(int argc, char *argv[])
   unsigned long int opt_repeat= 1; // Run all tests once
   bool opt_quiet= false;
   std::string collection_to_run;
+  std::string wildcard;
 
   // Options parsing
   {
@@ -142,6 +95,7 @@ int main(int argc, char *argv[])
       OPT_LIBYATL_MATCH_COLLECTION,
       OPT_LIBYATL_MASSIVE,
       OPT_LIBYATL_QUIET,
+      OPT_LIBYATL_MATCH_WILDCARD,
       OPT_LIBYATL_REPEAT
     };
 
@@ -151,6 +105,7 @@ int main(int argc, char *argv[])
       { "quiet", no_argument, NULL, OPT_LIBYATL_QUIET },
       { "repeat", no_argument, NULL, OPT_LIBYATL_REPEAT },
       { "collection", required_argument, NULL, OPT_LIBYATL_MATCH_COLLECTION },
+      { "wildcard", required_argument, NULL, OPT_LIBYATL_MATCH_WILDCARD },
       { "massive", no_argument, NULL, OPT_LIBYATL_MASSIVE },
       { 0, 0, 0, 0 }
     };
@@ -181,6 +136,10 @@ int main(int argc, char *argv[])
         collection_to_run= optarg;
         break;
 
+      case OPT_LIBYATL_MATCH_WILDCARD:
+        wildcard= optarg;
+        break;
+
       case OPT_LIBYATL_MASSIVE:
         opt_massive= true;
         break;
@@ -247,6 +206,24 @@ int main(int argc, char *argv[])
     return EXIT_FAILURE;
   }
 
+  if (getenv("YATL_COLLECTION_TO_RUN"))
+  {
+    if (strlen(getenv("YATL_COLLECTION_TO_RUN")))
+    {
+      collection_to_run= getenv("YATL_COLLECTION_TO_RUN");
+    }
+  }
+
+  if (collection_to_run.compare("none") == 0)
+  {
+    return EXIT_SUCCESS;
+  }
+
+  if (collection_to_run.empty() == false)
+  {
+    Out << "Only testing " <<  collection_to_run;
+  }
+
   int exit_code;
 
   try 
@@ -254,8 +231,6 @@ int main(int argc, char *argv[])
     do
     {
       exit_code= EXIT_SUCCESS;
-      std::auto_ptr<Framework> frame(new Framework);
-
       fatal_assert(sigignore(SIGPIPE) == 0);
 
       libtest::SignalThread signal;
@@ -265,182 +240,26 @@ int main(int argc, char *argv[])
         return EXIT_FAILURE;
       }
 
-      Stats stats;
-
-      get_world(frame.get());
-
-      test_return_t error;
-      void *creators_ptr= frame->create(error);
-
-      switch (error)
-      {
-      case TEST_SUCCESS:
-        break;
-
-      case TEST_SKIPPED:
-        Out << "SKIP " << argv[0];
-        return EXIT_SUCCESS;
-
-      case TEST_FAILURE:
-        return EXIT_FAILURE;
-      }
-
-      if (getenv("YATL_COLLECTION_TO_RUN"))
-      {
-        if (strlen(getenv("YATL_COLLECTION_TO_RUN")))
-        {
-          collection_to_run= getenv("YATL_COLLECTION_TO_RUN");
-        }
-      }
-
-      if (collection_to_run.compare("none") == 0)
-      {
-        return EXIT_SUCCESS;
-      }
-
-      if (collection_to_run.empty() == false)
-      {
-        Out << "Only testing " <<  collection_to_run;
-      }
-
-      char *wildcard= NULL;
-      if (argc == 3)
-      {
-        wildcard= argv[2];
-      }
+      std::auto_ptr<Framework> frame(new Framework(signal, collection_to_run, wildcard));
 
-      for (collection_st *next= frame->collections; next and next->name and (not signal.is_shutdown()); next++)
+      // Run create(), bail on error.
       {
-        if (collection_to_run.empty() == false and fnmatch(collection_to_run.c_str(), next->name, 0))
-        {
-          continue;
-        }
-
-        stats.collection_total++;
-
-        bool failed= false;
-        bool skipped= false;
-        test_return_t collection_rc;
-        if (test_success(collection_rc= frame->runner()->pre(next->pre, creators_ptr)))
-        {
-          Out << "Collection: " << next->name;
-
-          for (test_st *run= next->tests; run->name; run++)
-          {
-            long int load_time= 0;
-
-            if (wildcard && fnmatch(wildcard, run->name, 0))
-            {
-              continue;
-            }
-
-            test_return_t return_code;
-            try 
-            {
-              if (run->requires_flush)
-              {
-                if (test_failed(frame->runner()->flush(creators_ptr)))
-                {
-                  Error << "frame->runner()->flush(creators_ptr)";
-                  continue;
-                }
-              }
-
-              return_code= runner_code(frame.get(), run, creators_ptr, load_time);
-
-              if (return_code == TEST_SKIPPED)
-              { }
-              else if (return_code == TEST_FAILURE)
-              {
-#if 0
-                Error << " frame->runner()->run(failure)";
-                signal.set_shutdown(SHUTDOWN_GRACEFUL);
-#endif
-              }
-
-            }
-            catch (libtest::fatal &e)
-            {
-              Error << "Fatal exception was thrown: " << e.what();
-              return_code= TEST_FAILURE;
-              throw;
-            }
-            catch (std::exception &e)
-            {
-              Error << "Exception was thrown: " << e.what();
-              return_code= TEST_FAILURE;
-              throw;
-            }
-            catch (...)
-            {
-              Error << "Unknown exception occurred";
-              return_code= TEST_FAILURE;
-              throw;
-            }
-
-            stats.total++;
-
-            switch (return_code)
-            {
-            case TEST_SUCCESS:
-              Out << "\tTesting " << run->name <<  "\t\t\t\t\t" << load_time / 1000 << "." << load_time % 1000 << "[ " << test_strerror(return_code) << " ]";
-              stats.success++;
-              break;
-
-            case TEST_FAILURE:
-              stats.failed++;
-              failed= true;
-              Out << "\tTesting " << run->name <<  "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]";
-              break;
-
-            case TEST_SKIPPED:
-              stats.skipped++;
-              skipped= true;
-              Out << "\tTesting " << run->name <<  "\t\t\t\t\t" << "[ " << test_strerror(return_code) << " ]";
-              break;
-
-            default:
-              fatal_message("invalid return code");
-            }
-#if 0
-            @TODO add code here to allow for a collection to define a method to reset to allow tests to continue.
-#endif
-          }
-
-          (void) frame->runner()->post(next->post, creators_ptr);
-        }
-        else if (collection_rc == TEST_FAILURE)
-        {
-          Out << next->name << " [ failed ]";
-          failed= true;
-#if 0
-          signal.set_shutdown(SHUTDOWN_GRACEFUL);
-#endif
-        }
-        else if (collection_rc == TEST_SKIPPED)
+        switch (frame->create())
         {
-          Out << next->name << " [ skipping ]";
-          skipped= true;
-        }
-
-        if (failed == false and skipped == false)
-        {
-          stats.collection_success++;
-        }
+        case TEST_SUCCESS:
+          break;
 
-        if (failed)
-        {
-          stats.collection_failed++;
-        }
+        case TEST_SKIPPED:
+          Out << "SKIP " << argv[0];
+          return EXIT_SUCCESS;
 
-        if (skipped)
-        {
-          stats.collection_skipped++;
+        case TEST_FAILURE:
+          return EXIT_FAILURE;
         }
-
-        Outn();
       }
 
+      frame->exec();
+
       if (signal.is_shutdown() == false)
       {
         signal.set_shutdown(SHUTDOWN_GRACEFUL);
@@ -452,21 +271,21 @@ int main(int argc, char *argv[])
         Out << "Tests were aborted.";
         exit_code= EXIT_FAILURE;
       }
-      else if (stats.collection_failed)
+      else if (frame->failed())
       {
         Out << "Some test failed.";
         exit_code= EXIT_FAILURE;
       }
-      else if (stats.collection_skipped and stats.collection_failed and stats.collection_success)
+      else if (frame->skipped() and frame->failed() and frame->success())
       {
         Out << "Some tests were skipped.";
       }
-      else if (stats.collection_success and (stats.collection_failed == 0))
+      else if (frame->success() and (frame->failed() == 0))
       {
         Out << "All tests completed successfully.";
       }
 
-      stats_print(&stats);
+      stats_print(frame.get());
 
       Outn(); // Generate a blank to break up the messages if make check/test has been run
     } while (exit_code == EXIT_SUCCESS and --opt_repeat);
@@ -474,18 +293,22 @@ int main(int argc, char *argv[])
   catch (libtest::fatal& e)
   {
     std::cerr << e.what() << std::endl;
+    exit_code= EXIT_FAILURE;
   }
   catch (libtest::disconnected& e)
   {
     std::cerr << "Unhandled disconnection occurred:" << e.what() << std::endl;
+    exit_code= EXIT_FAILURE;
   }
   catch (std::exception& e)
   {
     std::cerr << e.what() << std::endl;
+    exit_code= EXIT_FAILURE;
   }
   catch (...)
   {
     std::cerr << "Unknown exception halted execution." << std::endl;
+    exit_code= EXIT_FAILURE;
   }
 
   return exit_code;
index 3ef6bd70f1f33ae53a99d94a67d810cb0452ed29..9f9a5bfeede83d9053a1504b2f44cc70bc5e1ab5 100644 (file)
@@ -52,7 +52,6 @@
 
 #include <signal.h>
 
-#include <libtest/stats.h>
 #include <libtest/signal.h>
 
 #ifndef __INTEL_COMPILER
index 726a01ba61f015637ae3d0f082892f0348491db5..31c58094fa86e10bbbb3cc418491bb7c54783a4c 100644 (file)
@@ -164,7 +164,9 @@ bool Server::start()
   // If we find that we already have a pid then kill it.
   if (has_pid() == true)
   {
+#if 0
     fatal_message("has_pid() failed, programer error");
+#endif
   }
 
   // This needs more work.
@@ -262,28 +264,29 @@ bool Server::start()
       if (kill_file(pid_file()) == false)
       {
         throw libtest::fatal(LIBYATL_DEFAULT_PARAM,
-                             "Failed to kill off server, waited: %u after startup occurred, when pinging failed: %s stderr:%s",
+                             "Failed to kill off server, waited: %u after startup occurred, when pinging failed: %.*s stderr:%.*s",
                              this_wait,
-                             pid_file().c_str(),
-                             _app.stderr_c_str());
+                             int(_running.size()), _running.c_str(),
+                             int(_app.stderr_result_length()), _app.stderr_c_str());
       }
 
       throw libtest::fatal(LIBYATL_DEFAULT_PARAM, 
-                           "Failed native ping(), pid: %d is alive: %s waited: %u server started, having pid_file. exec: %s stderr:%s",
+                           "Failed native ping(), pid: %d is alive: %s waited: %u server started, having pid_file. exec: %.*s stderr:%.*s",
                            int(_app.pid()),
                            _app.check() ? "true" : "false",
-                           this_wait, _running.c_str(), 
-                           _app.stderr_c_str());
+                           this_wait,
+                           int(_running.size()), _running.c_str(),
+                           int(_app.stderr_result_length()), _app.stderr_c_str());
     }
     else
     {
       throw libtest::fatal(LIBYATL_DEFAULT_PARAM,
-                           "Failed native ping(), pid: %d is alive: %s waited: %u server started. exec: %s stderr:%s",
+                           "Failed native ping(), pid: %d is alive: %s waited: %u server started. exec: %.*s stderr:%.*s",
                            int(_app.pid()),
                            _app.check() ? "true" : "false",
                            this_wait,
-                           _running.c_str(),
-                           _app.stderr_c_str());
+                           int(_running.size()), _running.c_str(),
+                           int(_app.stderr_result_length()), _app.stderr_c_str());
     }
     _running.clear();
     return false;
index 3315b3bb5a6243a7cdc36929450b1f8d965c62de..f658e6ff83e54c9d4537c8f05cff936ba1e59e95 100644 (file)
@@ -91,13 +91,14 @@ Server* server_startup_st::pop_server()
   return tmp;
 }
 
-bool server_startup_st::shutdown(uint32_t number_of_host)
+// host_to_shutdown => host number to shutdown in array
+bool server_startup_st::shutdown(uint32_t host_to_shutdown)
 {
-  if (servers.size() > number_of_host)
+  if (servers.size() > host_to_shutdown)
   {
-    Server* tmp= servers[number_of_host];
+    Server* tmp= servers[host_to_shutdown];
 
-    if (tmp and tmp->has_pid() and tmp->kill() == false)
+    if (tmp and tmp->kill() == false)
     { }
     else
     {
@@ -108,7 +109,7 @@ bool server_startup_st::shutdown(uint32_t number_of_host)
   return false;
 }
 
-void server_startup_st::shutdown_and_remove()
+void server_startup_st::clear()
 {
   for (std::vector<Server *>::iterator iter= servers.begin(); iter != servers.end(); iter++)
   {
@@ -166,7 +167,7 @@ server_startup_st::server_startup_st() :
 
 server_startup_st::~server_startup_st()
 {
-  shutdown_and_remove();
+  clear();
 }
 
 bool server_startup_st::validate()
index 0a78c4f5345e94d2b6274ea4028097ce0a9d4ffd..b358e28dd93bbff7ce9cd40d47da10c42de9ac73 100644 (file)
@@ -112,7 +112,9 @@ public:
   }
 
 
-  void shutdown_and_remove();
+  // Just remove everything after shutdown
+  void clear();
+
   bool shutdown();
   bool shutdown(uint32_t number_of_host);
 
diff --git a/libtest/stats.h b/libtest/stats.h
deleted file mode 100644 (file)
index 592e9c8..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
- *
- *  Data Differential YATL (i.e. libtest)  library
- *
- *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are
- *  met:
- *
- *      * Redistributions of source code must retain the above copyright
- *  notice, this list of conditions and the following disclaimer.
- *
- *      * Redistributions in binary form must reproduce the above
- *  copyright notice, this list of conditions and the following disclaimer
- *  in the documentation and/or other materials provided with the
- *  distribution.
- *
- *      * The names of its contributors may not be used to endorse or
- *  promote products derived from this software without specific prior
- *  written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#pragma once
-
-struct Stats {
-  int32_t collection_success;
-  int32_t collection_skipped;
-  int32_t collection_failed;
-  int32_t collection_total;
-
-  uint32_t success;
-  uint32_t skipped;
-  uint32_t failed;
-  uint32_t total;
-
-  Stats() :
-    collection_success(0),
-    collection_skipped(0),
-    collection_failed(0),
-    collection_total(0),
-    success(0),
-    skipped(0),
-    failed(0),
-    total(0)
-  { }
-};
-
diff --git a/libtest/stream.cc b/libtest/stream.cc
new file mode 100644 (file)
index 0000000..a9d769f
--- /dev/null
@@ -0,0 +1,64 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ *
+ *  Data Differential YATL (i.e. libtest)  library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <config.h>
+#include <libtest/stream.h>
+
+namespace libtest {
+namespace stream {
+
+namespace detail {
+
+} // namespace detail
+
+make_cerr::make_cerr(const char* filename, int line_number, const char* func) :
+  log(std::cerr, filename, line_number, func)
+{ }
+
+cerr::cerr(const char* filename, int line_number, const char* func) :
+  log(std::cout, filename, line_number, func)
+  { }
+
+clog::clog(const char* filename, int line_number, const char* func) :
+  log(std::clog, filename, line_number, func)
+  { }
+
+cout::cout(const char* filename, int line_number, const char* func) :
+  log(std::cout, filename, line_number, func)
+  { }
+
+} // namespace stream
+} // namespace libtest
index 1555d98dc776b653e3be7830155c6171ec0f561d..9917b94df253ed0ae103e834bf0e0ae26e7f3040 100644 (file)
@@ -48,58 +48,66 @@ namespace stream {
 namespace detail {
 
 template<class Ch, class Tr, class A>
-  class cerr {
+  class channel {
   private:
 
   public:
     typedef std::basic_ostringstream<Ch, Tr, A> stream_buffer;
 
   public:
-    void operator()(const stream_buffer &s)
+    void operator()(const stream_buffer& s, std::ostream& _out,
+                    const char* filename, int line_number, const char* func)
     {
-      std::cerr << s.str() << std::endl;
-    }
-  };
-
-template<class Ch, class Tr, class A>
-  class make_cerr {
-  private:
-
-  public:
-    typedef std::basic_ostringstream<Ch, Tr, A> stream_buffer;
-
-  public:
-    void operator()(const stream_buffer &s)
-    {
-      std::cerr << std::endl << s.str() << std::endl;
-    }
-  };
-
-template<class Ch, class Tr, class A>
-  class cout {
-  private:
-
-  public:
-    typedef std::basic_ostringstream<Ch, Tr, A> stream_buffer;
-
-  public:
-    void operator()(const stream_buffer &s)
-    {
-      std::cout << s.str() << std::endl;
+      if (filename)
+      {
+        _out
+          << filename 
+          << ":" 
+          << line_number 
+          << ": in " 
+          << func << "() "
+          << s.str()
+          << std::endl;
+      }
+      else
+      {
+        _out
+          << s.str()
+          << std::endl;
+      }
     }
   };
 
 template<class Ch, class Tr, class A>
-  class clog {
+  class channelln {
   private:
 
   public:
     typedef std::basic_ostringstream<Ch, Tr, A> stream_buffer;
 
   public:
-    void operator()(const stream_buffer &s)
+    void operator()(const stream_buffer& s, std::ostream& _out,
+                    const char* filename, int line_number, const char* func)
     {
-      std::cerr<< s.str() << std::endl;
+      if (filename)
+      {
+        _out
+          << std::endl
+          << filename 
+          << ":" 
+          << line_number 
+          << ": in " 
+          << func << "() "
+          << s.str()
+          << std::endl;
+      }
+      else
+      {
+        _out
+          << std::endl
+          << s.str()
+          << std::endl;
+      }
     }
   };
 
@@ -107,37 +115,30 @@ template<template <class Ch, class Tr, class A> class OutputPolicy, class Ch = c
   class log {
   private:
     typedef OutputPolicy<Ch, Tr, A> output_policy;
+
+  private:
+    std::ostream& _out;
     const char *_filename;
     int _line_number;
     const char *_func;
 
   public:
-    log() :
-      _filename(NULL),
-      _line_number(0)
+    log(std::ostream& out_arg, const char* filename, int line_number, const char* func) :
+      _out(out_arg),
+      _filename(filename),
+      _line_number(line_number),
+      _func(func)
     { }
 
-    void set_filename(const char *filename, int line_number, const char *func)
-    {
-      _filename= filename;
-      _line_number= line_number;
-      _func= func;
-    }
-
     ~log()
     {
-      output_policy()(arg);
+      output_policy()(arg, _out, _filename, _line_number, _func);
     }
 
   public:
     template<class T>
       log &operator<<(const T &x)
       {
-        if (_filename)
-        {
-          arg << _filename << ":" << _line_number << ": in " << _func << "() ";
-          _filename= NULL;
-        }
         arg << x;
         return *this;
       }
@@ -145,34 +146,26 @@ template<template <class Ch, class Tr, class A> class OutputPolicy, class Ch = c
   private:
     typename output_policy::stream_buffer arg;
   };
-}
+} // namespace detail
 
-class make_cerr : public detail::log<detail::make_cerr> {
+class make_cerr : public detail::log<detail::channelln> {
 public:
-  make_cerr(const char *filename, int line_number, const char *func)
-  {
-    set_filename(filename, line_number, func);
-  }
+  make_cerr(const char* filename, int line_number, const char* func);
 };
 
-class cerr : public detail::log<detail::cerr> {
+class cerr : public detail::log<detail::channel> {
 public:
-  cerr(const char *filename, int line_number, const char *func)
-  {
-    set_filename(filename, line_number, func);
-  }
+  cerr(const char* filename, int line_number, const char* func);
 };
 
-class clog : public detail::log<detail::clog> {
+class clog : public detail::log<detail::channel> {
 public:
-  clog(const char *, int, const char*)
-  { }
+  clog(const char* filename, int line_number, const char* func);
 };
 
-class cout : public detail::log<detail::cout> {
+class cout : public detail::log<detail::channel> {
 public:
-  cout(const char *, int, const char *)
-  { }
+  cout(const char* filename, int line_number, const char* func);
 };
 
 
index c269e54185fe892d4c318b52d555a8198dca8d20..53db247a7ebc8d8c46d2a64ee18a9dc1afe3c701 100644 (file)
@@ -51,6 +51,7 @@
 #include <libtest/has.hpp>
 #include <libtest/error.h>
 #include <libtest/strerror.h>
+#include <libtest/timer.hpp>
 #include <libtest/stream.h>
 #include <libtest/comparison.hpp>
 #include <libtest/server.h>
 #include <libtest/port.h>
 #include <libtest/is_local.hpp>
 #include <libtest/socket.hpp>
-#include <libtest/stats.h>
 #include <libtest/collection.h>
 #include <libtest/framework.h>
 #include <libtest/get.h>
-#include <libtest/stream.h>
 #include <libtest/cmdline.h>
 #include <libtest/string.hpp>
 #include <libtest/binaries.h>
diff --git a/libtest/timer.cc b/libtest/timer.cc
new file mode 100644 (file)
index 0000000..0a8d69b
--- /dev/null
@@ -0,0 +1,55 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ *
+ *  Data Differential YATL (i.e. libtest)  library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <config.h>
+#include <libtest/timer.hpp>
+#include <ctime>
+
+namespace libtest {
+
+std::ostream& operator<<(std::ostream& output, const libtest::Timer& arg)
+{
+  struct timespec temp;
+  arg.difference(temp);
+
+  output << temp.tv_sec;
+  output << ":";
+  output << temp.tv_nsec;
+
+  return output;
+}
+
+} // namespace libtest
diff --git a/libtest/timer.hpp b/libtest/timer.hpp
new file mode 100644 (file)
index 0000000..37da32f
--- /dev/null
@@ -0,0 +1,113 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ *
+ *  Data Differential YATL (i.e. libtest)  library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#pragma once
+
+#include <ctime>
+#include <ostream>
+
+#ifdef __MACH__
+#  include <mach/clock.h>
+#  include <mach/mach.h>
+#else
+#  include <sys/time.h>
+#endif
+
+
+namespace libtest {
+
+class Timer {
+public:
+
+  Timer()
+  {
+    _begin.tv_sec= 0;
+    _begin.tv_nsec= 0;
+    _end.tv_sec= 0;
+    _end.tv_nsec= 0;
+  }
+
+  void reset()
+  {
+    _end.tv_sec= 0;
+    _end.tv_nsec= 0;
+    _time(_begin);
+  }
+
+  void sample()
+  {
+    _time(_end);
+  }
+
+  void difference(struct timespec& arg) const
+  {
+    if ((_end.tv_nsec -_begin.tv_nsec) < 0)
+    {
+      arg.tv_sec= _end.tv_sec -_begin.tv_sec-1;
+      arg.tv_nsec= 1000000000 +_end.tv_nsec -_begin.tv_nsec;
+
+    }
+    else
+    {
+      arg.tv_sec= _end.tv_sec -_begin.tv_sec;
+      arg.tv_nsec= _end.tv_nsec -_begin.tv_nsec;
+    }
+  }
+
+private:
+  void _time(struct timespec& ts)
+  {
+#ifdef __MACH__ // OSX lacks clock_gettime()
+    clock_serv_t _clock_serv;
+    mach_timespec_t _mach_timespec;
+    host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &_clock_serv);
+    clock_get_time(_clock_serv, &_mach_timespec);
+    mach_port_deallocate(mach_task_self(), _clock_serv);
+    ts.tv_sec= _mach_timespec.tv_sec;
+    ts.tv_nsec= _mach_timespec.tv_nsec;
+#else
+    clock_gettime(CLOCK_REALTIME, &ts);
+#endif
+  }
+
+private:
+  struct timespec _begin;
+  struct timespec _end;
+};
+
+std::ostream& operator<<(std::ostream& output, const libtest::Timer& arg);
+
+} // namespace libtest
index 9f99d428b6a68c787e484a37cad192f978439b75..303aaf7a6cc7d614c0088362f4a85ddbeb5333fc 100644 (file)
@@ -12,12 +12,12 @@ AH_TOP([
 
 AH_BOTTOM([
 
+#define __STDC_FORMAT_MACROS
 #if defined(__cplusplus) 
-#include CSTDINT_H 
-#include CINTTYPES_H 
+#  include CINTTYPES_H 
 #else 
-#include <stdint.h> 
-#include <inttypes.h> 
+#  include <inttypes.h> 
 #endif
 
 #if !defined(HAVE_ULONG) && !defined(__USE_MISC)
index c18ee3f2ac4327e1c4828f96e1a5cf1fe8822198..81d46149ec69595708f364a723f941906f8f1649 100644 (file)
@@ -206,13 +206,6 @@ AC_DEFUN([PANDORA_CANONICAL_TARGET],[
   AM_CONDITIONAL(HAVE_SPHINX,[test "x${SPHINXBUILD}" != "x:"])
   AM_CONDITIONAL(HAVE_RECENT_SPHINX,[test "x${ac_cv_recent_sphinx}" = "xyes"])
 
-  AS_IF([test "x${gl_LIBOBJS}" != "x"],[
-    AS_IF([test "$GCC" = "yes"],[
-      AM_CPPFLAGS="-isystem \${top_srcdir}/gnulib -isystem \${top_builddir}/gnulib ${AM_CPPFLAGS}"
-    ],[
-    AM_CPPFLAGS="-I\${top_srcdir}/gnulib -I\${top_builddir}/gnulib ${AM_CPPFLAGS}"
-    ])
-  ])
   m4_if(m4_substr(m4_esyscmd(test -d src && echo 0),0,1),0,[
     AM_CPPFLAGS="-I\$(top_srcdir)/src -I\$(top_builddir)/src ${AM_CPPFLAGS}"
   ],[
index ac087f4f2e6f47c28e24c426b4231ff02a63cf24..788d7e67bf88bd7ac8eb9d09d89cbc1aa776a8c7 100644 (file)
@@ -70,7 +70,7 @@ static test_return_t server_startup_multiple_TEST(void *obj)
 static test_return_t shutdown_and_remove_TEST(void *obj)
 {
   server_startup_st *servers= (server_startup_st*)obj;
-  servers->shutdown_and_remove();
+  servers->clear();
 
   return TEST_SUCCESS;
 }
@@ -106,7 +106,7 @@ static test_return_t validate_sanity_INIT(void *object)
 static test_return_t collection_FINAL(void *object)
 {
   server_startup_st *servers= (server_startup_st*)object;
-  servers->shutdown_and_remove();
+  servers->clear();
 
   return TEST_SUCCESS;
 }
index cfee6cb7783da3142a950ff957a403841368ea0f..d31518ee137d8f2151bda7ece605451ea4a43c5c 100644 (file)
@@ -152,7 +152,7 @@ static test_return_t MEMCACHED_SERVER_TEMPORARILY_DISABLED_to_success_TEST(memca
 
   memcached_return_t ret;
   do {
-    sleep(3);
+    libtest::dream(3, 0);
     ret= memcached_set(memc, test_literal_param("foo"), NULL, 0, time_t(0), uint32_t(0));
   } while (ret == MEMCACHED_SERVER_TEMPORARILY_DISABLED);
 
@@ -175,7 +175,7 @@ static test_return_t MEMCACHED_SERVER_MARKED_DEAD_TEST(memcached_st *memc)
   test_compare(MEMCACHED_SERVER_TEMPORARILY_DISABLED, ret);
 
   do {
-    sleep(3);
+    libtest::dream(3, 0);
     ret= memcached_set(memc, test_literal_param("foo"), NULL, 0, time_t(0), uint32_t(0));
   } while (ret == MEMCACHED_SERVER_TEMPORARILY_DISABLED or ret == MEMCACHED_SUCCESS);
 
@@ -207,7 +207,7 @@ collection_st collection[] ={
   { 0, 0, 0, 0 }
 };
 
-#include "libmemcached_world.h"
+#include "tests/libmemcached_world.h"
 
 void get_world(Framework *world)
 {
index 165b79b8e78d9d813a256b988d07a15f9959d021..8063be75cb15909498fe36d612b5b6cdf27d4bbf 100644 (file)
@@ -41,6 +41,8 @@ noinst_PROGRAMS+= tests/cycle
 
 include tests/libmemcached-1.0/include.am
 
+include tests/parser.am
+
 tests_failure_SOURCES=
 tests_failure_SOURCES+= tests/failure.cc
 tests_failure_SOURCES+= clients/execute.cc
@@ -56,12 +58,23 @@ tests_failure_LDADD= $(tests_failure_DEPENDENCIES)
 check_PROGRAMS+= tests/failure
 noinst_PROGRAMS+= tests/failure
 
-tests_testhashkit_SOURCES = tests/hashkit_functions.cc
-tests_testhashkit_DEPENDENCIES = libtest/libtest.la libhashkit/libhashkit.la $(TESTS_LDADDS)
-tests_testhashkit_LDADD = $(tests_testhashkit_DEPENDENCIES)
+test-failure: tests/failure
+       @tests/failure
+
+gdb-failure: tests/failure
+       @$(DEBUG_COMMAND) tests/failure
+
+
+tests_testhashkit_SOURCES= tests/hashkit_functions.cc
+tests_testhashkit_DEPENDENCIES= libtest/libtest.la libhashkit/libhashkit.la $(TESTS_LDADDS)
+tests_testhashkit_LDADD= $(tests_testhashkit_DEPENDENCIES)
 check_PROGRAMS+= tests/testhashkit
 noinst_PROGRAMS+= tests/testhashkit
 
+test-hash: tests/testhashkit
+       @tests/testhashkit
+
+
 tests_hash_plus_SOURCES= tests/hash_plus.cc
 tests_hash_plus_CXXFLAGS= $(AM_CXXFLAGS) $(NO_EFF_CXX)
 tests_hash_plus_DEPENDENCIES= $(tests_testhashkit_DEPENDENCIES)
@@ -88,9 +101,6 @@ test-atom: tests/atomsmasher
 test-plus: tests/testplus
        @tests/testplus
 
-test-hash: tests/testhashkit
-       @tests/testhashkit
-
 test-hashplus: tests/hash_plus
        @tests/hash_plus
 
@@ -124,9 +134,6 @@ gdb-hashplus: tests/hash_plus
 gdb-cycle: tests/cycle
        @$(DEBUG_COMMAND) tests/cycle
 
-gdb-failure: tests/failure
-       @$(DEBUG_COMMAND) tests/failure
-
 valgrind-cycle: tests/cycle
        $(VALGRIND_COMMAND) tests/cycle
 
index c9536da11ec8818275c5c9338c6d1d108083d047..e5a6d2bf279477f821f6ab3ad9e1104c0b4da6a3 100644 (file)
 #include "tests/exist.h"
 #include "tests/ketama.h"
 #include "tests/namespace.h"
-#include "tests/parser.h"
 #include "tests/libmemcached-1.0/dump.h"
 #include "tests/libmemcached-1.0/generate.h"
 #include "tests/libmemcached-1.0/haldenbrand.h"
+#include "tests/libmemcached-1.0/parser.h"
 #include "tests/libmemcached-1.0/stat.h"
 #include "tests/touch.h"
 #include "tests/callbacks.h"
index 983f38aa212e4151baad6fdd16b45c7dff92df4c..cdc7b211703c73cd1b3cb69339be9831838b34c9 100644 (file)
@@ -45,7 +45,7 @@
 #include "tests/exist.h"
 #include "tests/ketama.h"
 #include "tests/namespace.h"
-#include "tests/parser.h"
+#include "tests/libmemcached-1.0/parser.h"
 #include "tests/libmemcached-1.0/dump.h"
 #include "tests/libmemcached-1.0/generate.h"
 #include "tests/libmemcached-1.0/haldenbrand.h"
index 5201653a0420a27f4f483f82c88926a32f95e4b1..02dc26a7922ae59c605a6ca5a37d3090deeafac0 100644 (file)
@@ -20,16 +20,16 @@ noinst_HEADERS+= tests/ketama_test_cases_spy.h
 noinst_HEADERS+= tests/libmemcached-1.0/all_tests.h
 noinst_HEADERS+= tests/libmemcached-1.0/callback_counter.h
 noinst_HEADERS+= tests/libmemcached-1.0/dump.h
+noinst_HEADERS+= tests/libmemcached-1.0/encoding_key.h
 noinst_HEADERS+= tests/libmemcached-1.0/fetch_all_results.h
 noinst_HEADERS+= tests/libmemcached-1.0/generate.h
-noinst_HEADERS+= tests/libmemcached-1.0/encoding_key.h
 noinst_HEADERS+= tests/libmemcached-1.0/haldenbrand.h
 noinst_HEADERS+= tests/libmemcached-1.0/mem_functions.h
 noinst_HEADERS+= tests/libmemcached-1.0/memcached_get.h
+noinst_HEADERS+= tests/libmemcached-1.0/parser.h
 noinst_HEADERS+= tests/libmemcached-1.0/setup_and_teardowns.h
 noinst_HEADERS+= tests/libmemcached-1.0/stat.h
 noinst_HEADERS+= tests/namespace.h
-noinst_HEADERS+= tests/parser.h
 noinst_HEADERS+= tests/pool.h
 noinst_HEADERS+= tests/print.h
 noinst_HEADERS+= tests/replication.h
index b8b4f47af080f237b75e31ae4c720396d62fbc5c..3afc12baa42228b93b31e8ee300d89fba81a72de 100644 (file)
@@ -47,7 +47,7 @@ using namespace libtest;
 #include <libmemcached/memcached.h>
 #include <libmemcached/util.h>
 
-#include <tests/parser.h>
+#include <tests/libmemcached-1.0/parser.h>
 #include <tests/print.h>
 
 enum scanner_type_t
@@ -639,7 +639,6 @@ static memcached_return_t dump_server_information(const memcached_st *,
   return MEMCACHED_SUCCESS;
 }
 
-
 test_return_t test_hostname_port_weight(memcached_st *)
 {
   const char *server_string= "--server=localhost:8888/?2 --server=localhost:8889/?3 --server=localhost:8890/?4 --server=localhost:8891/?5 --server=localhost:8892/?3";
diff --git a/tests/libmemcached-1.0/parser.h b/tests/libmemcached-1.0/parser.h
new file mode 100644 (file)
index 0000000..a58bba2
--- /dev/null
@@ -0,0 +1,118 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  Libmemcached
+ *
+ *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+test_return_t memcached_NULL_string_TEST(memcached_st*);
+test_return_t memcached_zero_string_length_TEST(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t server_test(memcached_st *memc);
+
+LIBTEST_LOCAL
+test_return_t servers_bad_test(memcached_st *memc);
+
+LIBTEST_LOCAL
+test_return_t behavior_parser_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t parser_number_options_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t parser_distribution_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t parser_hash_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t parser_boolean_options_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t parser_key_prefix_test(memcached_st*);
+
+LIBTEST_LOCAL
+  test_return_t libmemcached_check_configuration_test(memcached_st*);
+
+LIBTEST_LOCAL
+  test_return_t memcached_create_with_options_test(memcached_st*);
+
+LIBTEST_LOCAL
+  test_return_t memcached_create_with_options_with_filename(memcached_st*);
+
+LIBTEST_LOCAL
+  test_return_t libmemcached_check_configuration_with_filename_test(memcached_st*);
+
+LIBTEST_LOCAL
+  test_return_t random_statement_build_test(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t test_include_keyword(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t test_end_keyword(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t test_reset_keyword(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t test_error_keyword(memcached_st*);
+
+LIBTEST_LOCAL
+test_return_t server_with_weight_test(memcached_st *);
+
+LIBTEST_LOCAL
+test_return_t test_hostname_port_weight(memcached_st *);
+
+LIBTEST_LOCAL
+test_return_t regression_bug_71231153_connect(memcached_st *);
+
+LIBTEST_LOCAL
+test_return_t regression_bug_71231153_poll(memcached_st *);
+
+LIBTEST_LOCAL
+test_return_t test_parse_socket(memcached_st *);
+
+LIBTEST_LOCAL
+test_return_t test_namespace_keyword(memcached_st*);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/tests/parser.am b/tests/parser.am
new file mode 100644 (file)
index 0000000..25ab3db
--- /dev/null
@@ -0,0 +1,30 @@
+# vim:ft=automake
+# Copyright (C) 2012 Data Differential
+# All rights reserved.
+#
+# Use and distribution licensed under the BSD license.  See
+# the COPYING file in the parent directory for full text.
+#
+# included from Top Level Makefile.am
+# All paths should be given relative to the root
+
+noinst_HEADERS+= tests/libmemcached-1.0/parser.h
+
+tests_parser_SOURCES=
+tests_parser_CXXFLAGS=
+tests_parser_DEPENDENCIES=
+tests_parser_LDADD=
+
+tests_parser_SOURCES+= tests/parser.cc
+
+tests_parser_CXXFLAGS+= $(AM_CXXFLAGS) $(NO_EFF_CXX)
+tests_parser_DEPENDENCIES+= $(TESTS_LDADDS)
+tests_parser_LDADD+= $(tests_parser_DEPENDENCIES)
+check_PROGRAMS+= tests/parser
+noinst_PROGRAMS+= tests/parser
+
+test-parser: tests/parser
+       @tests/parser
+
+valgrind-parser: tests/parser
+       $(VALGRIND_COMMAND) tests/parser
diff --git a/tests/parser.cc b/tests/parser.cc
new file mode 100644 (file)
index 0000000..740a9c1
--- /dev/null
@@ -0,0 +1,131 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  Libmemcached library
+ *
+ *  Copyright (C) 2012 Data Differential, http://datadifferential.com/
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <config.h>
+
+/*
+  C++ interface test
+*/
+#include <libmemcached-1.0/memcached.hpp>
+#include <libtest/test.hpp>
+
+using namespace libtest;
+
+static test_return_t memcached_NULL_string_TEST(void*)
+{
+  test_null(memcached(NULL, 75));
+  return TEST_SUCCESS;
+}
+
+static test_return_t memcached_zero_string_length_TEST(void*)
+{
+  test_null(memcached("value", 0));
+  return TEST_SUCCESS;
+}
+
+static test_return_t putenv_localhost_quoted_TEST(void*)
+{
+  char set_env[1024];
+
+  snprintf(set_env, sizeof(set_env), "LIBMEMCACHED=\"--server=localhost\"");
+  test_zero(putenv(set_env));
+  test_null(memcached(NULL, 0));
+
+  return TEST_SUCCESS;
+}
+
+static test_return_t putenv_NULL_TEST(void*)
+{
+  char set_env[1024];
+
+  snprintf(set_env, sizeof(set_env), "LIBMEMCACHED");
+  test_zero(putenv(set_env));
+  memcached_st *memc= memcached(NULL, 0);
+  test_true(memc);
+
+  memcached_free(memc);
+
+  return TEST_SUCCESS;
+}
+
+static test_return_t putenv_NULL_TEST2(void*)
+{
+  char set_env[1024];
+
+  snprintf(set_env, sizeof(set_env), "LIBMEMCACHED=");
+  test_zero(putenv(set_env));
+  memcached_st *memc= memcached(NULL, 0);
+  test_true(memc);
+
+  memcached_free(memc);
+
+  return TEST_SUCCESS;
+}
+
+static test_return_t putenv_localhost_TEST(void*)
+{
+  char set_env[1024];
+
+  snprintf(set_env, sizeof(set_env), "LIBMEMCACHED=--server=localhost");
+  test_zero(putenv(set_env));
+  memcached_st *memc= memcached(NULL, 0);
+  test_true(memc);
+
+  memcached_free(memc);
+
+  return TEST_SUCCESS;
+}
+
+test_st memcached_TESTS[] ={
+  {"memcached(NULL, 75)", false, (test_callback_fn*)memcached_NULL_string_TEST },
+  {"memcached(\"value\", 0)", false, (test_callback_fn*)memcached_zero_string_length_TEST },
+  {"putenv(LIBMEMCACHED=--server=localhost)", false, (test_callback_fn*)putenv_localhost_TEST },
+  {"putenv(LIBMEMCACHED)", false, (test_callback_fn*)putenv_NULL_TEST },
+  {"putenv(LIBMEMCACHED=)", false, (test_callback_fn*)putenv_NULL_TEST2 },
+  {"putenv(LIBMEMCACHED=--server=\"localhost\")", false, (test_callback_fn*)putenv_localhost_quoted_TEST },
+  {0, 0, 0}
+};
+
+collection_st collection[] ={
+  {"memcached()", 0, 0, memcached_TESTS},
+  {0, 0, 0, 0}
+};
+
+void get_world(Framework *world)
+{
+  world->collections= collection;
+}
+
diff --git a/tests/parser.h b/tests/parser.h
deleted file mode 100644 (file)
index 73356da..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
- * 
- *  Libmemcached
- *
- *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
- *  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are
- *  met:
- *
- *      * Redistributions of source code must retain the above copyright
- *  notice, this list of conditions and the following disclaimer.
- *
- *      * Redistributions in binary form must reproduce the above
- *  copyright notice, this list of conditions and the following disclaimer
- *  in the documentation and/or other materials provided with the
- *  distribution.
- *
- *      * The names of its contributors may not be used to endorse or
- *  promote products derived from this software without specific prior
- *  written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LIBTEST_LOCAL
-test_return_t server_test(memcached_st *memc);
-
-LIBTEST_LOCAL
-test_return_t servers_bad_test(memcached_st *memc);
-
-LIBTEST_LOCAL
-test_return_t behavior_parser_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t parser_number_options_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t parser_distribution_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t parser_hash_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t parser_boolean_options_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t parser_key_prefix_test(memcached_st*);
-
-LIBTEST_LOCAL
-  test_return_t libmemcached_check_configuration_test(memcached_st*);
-
-LIBTEST_LOCAL
-  test_return_t memcached_create_with_options_test(memcached_st*);
-
-LIBTEST_LOCAL
-  test_return_t memcached_create_with_options_with_filename(memcached_st*);
-
-LIBTEST_LOCAL
-  test_return_t libmemcached_check_configuration_with_filename_test(memcached_st*);
-
-LIBTEST_LOCAL
-  test_return_t random_statement_build_test(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t test_include_keyword(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t test_end_keyword(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t test_reset_keyword(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t test_error_keyword(memcached_st*);
-
-LIBTEST_LOCAL
-test_return_t server_with_weight_test(memcached_st *);
-
-LIBTEST_LOCAL
-test_return_t test_hostname_port_weight(memcached_st *);
-
-LIBTEST_LOCAL
-test_return_t regression_bug_71231153_connect(memcached_st *);
-
-LIBTEST_LOCAL
-test_return_t regression_bug_71231153_poll(memcached_st *);
-
-LIBTEST_LOCAL
-test_return_t test_parse_socket(memcached_st *);
-
-LIBTEST_LOCAL
-test_return_t test_namespace_keyword(memcached_st*);
-
-#ifdef __cplusplus
-}
-#endif
index 577f09ba95835b8710c7604a1b85232ae33729aa..fcce6e2f38bd099108801e383ccbbe574fd24ed6 100644 (file)
@@ -113,7 +113,9 @@ private:
       test_null(container->parent());
       container->parent(memcached(container->construct.option_string().c_str(), container->construct.option_string().size()));
       test_true(container->parent());
+#if 0
       test_compare(MEMCACHED_SUCCESS, memcached_version(container->parent()));
+#endif
 
       if (container->construct.sasl())
       {