From 4ad814a6c631883bbb55ae3db2f8806c63f31c9a Mon Sep 17 00:00:00 2001 From: "cebka@mailsupport.rambler.ru" Date: Tue, 16 Sep 2008 18:42:02 +0400 Subject: * Write test case for async memcached library * Fix memcached async library to pass test :) --- test/Makefile.in | 4 +-- test/rspamd_memcached_test.c | 85 ++++++++++++++++++++++++++++++++++++++++++++ test/rspamd_test_suite.c | 3 +- test/tests.h | 3 ++ 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 test/rspamd_memcached_test.c (limited to 'test') diff --git a/test/Makefile.in b/test/Makefile.in index 1d46e2e2f..ddd298c7c 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -2,8 +2,8 @@ all: rspamd_test_suite -rspamd_test_suite: $(OBJECTS) ../url.o ../util.o - $(CC) $(PTHREAD_LDFLAGS) $(LDFLAGS) $(OBJECTS) ../url.o ../util.o $(LIBS) -o rspamd_test_suite +rspamd_test_suite: $(OBJECTS) ../url.o ../util.o ../memcached.o + $(CC) $(PTHREAD_LDFLAGS) $(LDFLAGS) $(OBJECTS) ../url.o ../util.o ../memcached.o $(LIBS) -o rspamd_test_suite run_test: rspamd_test_suite gtester --verbose -k -o=rspamd_test.xml ./rspamd_test_suite diff --git a/test/rspamd_memcached_test.c b/test/rspamd_memcached_test.c new file mode 100644 index 000000000..1993c756e --- /dev/null +++ b/test/rspamd_memcached_test.c @@ -0,0 +1,85 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../config.h" +#include "../main.h" +#include "../cfg_file.h" +#include "../memcached.h" +#include "tests.h" + +u_char *buf = "test"; + +static void +memcached_callback (memcached_ctx_t *ctx, memc_error_t error, void *data) +{ + struct timeval tv; + + switch (ctx->op) { + case CMD_CONNECT: + g_assert (error == OK); + msg_debug ("Connect ok"); + memc_set (ctx, ctx->param, 60); + break; + case CMD_READ: + g_assert (error == OK); + g_assert (!strcmp(ctx->param->buf, buf)); + msg_debug ("Read ok"); + memc_close_ctx (ctx); + tv.tv_sec = 0; + tv.tv_usec = 0; + event_loopexit (&tv); + break; + case CMD_WRITE: + g_assert (error == OK); + msg_debug ("Write ok"); + ctx->param->buf = g_malloc (sizeof (buf)); + bzero (ctx->param->buf, sizeof (buf)); + memc_get (ctx, ctx->param); + break; + } +} + +void +rspamd_memcached_test_func () +{ + memcached_ctx_t *ctx; + memcached_param_t *param; + struct in_addr addr; + + ctx = g_malloc (sizeof (memcached_ctx_t)); + param = g_malloc (sizeof (memcached_param_t)); + bzero (ctx, sizeof (memcached_ctx_t)); + bzero (param, sizeof (memcached_param_t)); + + event_init (); + + ctx->callback = memcached_callback; + ctx->callback_data = (void *)param; + ctx->protocol = TCP_TEXT; + inet_aton ("127.0.0.1", &addr); + memcpy (&ctx->addr, &addr, sizeof (struct in_addr)); + ctx->port = htons (11211); + ctx->timeout.tv_sec = 1; + ctx->timeout.tv_usec = 0; + ctx->sock = -1; + ctx->options = MEMC_OPT_DEBUG; + strlcpy (param->key, buf, sizeof (param->key)); + param->buf = buf; + param->bufsize = strlen (buf); + ctx->param = param; + g_assert (memc_init_ctx (ctx) != -1); + + event_loop (0); +} + diff --git a/test/rspamd_test_suite.c b/test/rspamd_test_suite.c index 7b699f40b..09db78496 100644 --- a/test/rspamd_test_suite.c +++ b/test/rspamd_test_suite.c @@ -21,8 +21,7 @@ main (int argc, char **argv) g_test_init (&argc, &argv, NULL); g_test_add_func ("/rspamd/url", rspamd_url_test_func); + g_test_add_func ("/rspamd/memcached", rspamd_memcached_test_func); g_test_run (); - - g_mem_profile (); } diff --git a/test/tests.h b/test/tests.h index c0e1858a2..85e111b2b 100644 --- a/test/tests.h +++ b/test/tests.h @@ -8,4 +8,7 @@ /* URL parser test */ void rspamd_url_test_func (); +/* Memceched library test */ +void rspamd_memcached_test_func (); + #endif -- cgit v1.2.3