summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Norbye <trond.norbye@gmail.com>2011-04-02 19:14:20 +0200
committerTrond Norbye <trond.norbye@gmail.com>2011-04-02 19:14:20 +0200
commit0e1d11678cd12a55ba7a1d9063bbade3e6d6a44c (patch)
tree7290df5a68841c94e64e02d2dbbc86110900ec86
parent979d98229623432571c0100e19ebe76a9d3d67a2 (diff)
downloadmemcached-0e1d11678cd12a55ba7a1d9063bbade3e6d6a44c.tar.gz
Added a blackhole logger to use during testing
-rw-r--r--Makefile.am7
-rw-r--r--extensions/loggers/blackhole_logger.c42
-rw-r--r--programs/testapp.c7
-rw-r--r--t/lib/MemcachedTest.pm2
4 files changed, 57 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index 2c447e0..45cabca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,6 +28,7 @@ pkglib_LTLIBRARIES = libmemcached_utilities.la \
basic_engine_testsuite.la \
default_engine.la \
example_protocol.la \
+ blackhole_logger.la \
stdin_term_handler.la
if BUILD_SYSLOG_LOGGER
@@ -185,6 +186,12 @@ example_protocol_la_SOURCES= extensions/protocol/example_protocol.c \
extensions/protocol_extension.h
example_protocol_la_LDFLAGS= -avoid-version -shared -module -no-undefined
+# A logger just ignoring the output
+blackhole_logger_la_CPPFLAGS = $(CPPFLAGS) -I$(top_srcdir)/extensions
+blackhole_logger_la_SOURCES = extensions/loggers/blackhole_logger.c \
+ extensions/protocol_extension.h
+blackhole_logger_la_LDFLAGS = -avoid-version -shared -module -no-undefined
+
# A logger using syslog
syslog_logger_la_CPPFLAGS = $(CPPFLAGS) -I$(top_srcdir)/extensions
syslog_logger_la_SOURCES = extensions/loggers/syslog_logger.c \
diff --git a/extensions/loggers/blackhole_logger.c b/extensions/loggers/blackhole_logger.c
new file mode 100644
index 0000000..8b8b9cc
--- /dev/null
+++ b/extensions/loggers/blackhole_logger.c
@@ -0,0 +1,42 @@
+/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+#include "config.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <memcached/extension.h>
+#include <memcached/engine.h>
+#include "protocol_extension.h"
+
+static const char *get_name(void) {
+ return "blackhole";
+}
+
+static void logger_log(EXTENSION_LOG_LEVEL severity,
+ const void* client_cookie,
+ const char *fmt, ...)
+{
+ (void)severity;
+ (void)client_cookie;
+ (void)fmt;
+}
+
+static EXTENSION_LOGGER_DESCRIPTOR descriptor = {
+ .get_name = get_name,
+ .log = logger_log
+};
+
+MEMCACHED_PUBLIC_API
+EXTENSION_ERROR_CODE memcached_extensions_initialize(const char *config,
+ GET_SERVER_API get_server_api) {
+ (void)config;
+
+ SERVER_HANDLE_V1 *sapi = get_server_api();
+ if (sapi == NULL) {
+ return EXTENSION_FATAL;
+ }
+
+ if (!sapi->extension->register_extension(EXTENSION_LOGGER, &descriptor)) {
+ return EXTENSION_FATAL;
+ }
+
+ return EXTENSION_SUCCESS;
+}
diff --git a/programs/testapp.c b/programs/testapp.c
index af3b084..5a159eb 100644
--- a/programs/testapp.c
+++ b/programs/testapp.c
@@ -330,6 +330,11 @@ static pid_t start_server(in_port_t *port_out, bool daemon, int timeout) {
strcat(engine, "/.libs/default_engine.so");
assert(strlen(engine) < sizeof(engine));
+ char blackhole[1024];
+ assert(getcwd(blackhole, sizeof(blackhole)));
+ strcat(blackhole, "/.libs/blackhole_logger.so");
+
+
#ifdef __sun
/* I want to name the corefiles differently so that they don't
overwrite each other
@@ -359,6 +364,8 @@ static pid_t start_server(in_port_t *port_out, bool daemon, int timeout) {
argv[arg++] = "./memcached";
argv[arg++] = "-E";
argv[arg++] = engine;
+ argv[arg++] = "-X";
+ argv[arg++] = blackhole;
argv[arg++] = "-p";
argv[arg++] = "-1";
argv[arg++] = "-U";
diff --git a/t/lib/MemcachedTest.pm b/t/lib/MemcachedTest.pm
index 5674e10..0aca537 100644
--- a/t/lib/MemcachedTest.pm
+++ b/t/lib/MemcachedTest.pm
@@ -172,7 +172,7 @@ sub new_memcached {
if ($< == 0) {
$args .= " -u root";
}
- $args .= " -E $builddir/.libs/default_engine.so";
+ $args .= " -E $builddir/.libs/default_engine.so -X $builddir/.libs/blackhole_logger.so";
my $childpid = fork();