镜像来自
https://github.com/rspamd/rspamd.git
synced 2024-08-13 14:12:38 +02:00
86 line
1.9 KiB
C
86 line
1.9 KiB
C
#include "../src/config.h"
|
|
#include "../src/main.h"
|
|
#include "../src/cfg_file.h"
|
|
#include "../src/memcached.h"
|
|
#include "tests.h"
|
|
|
|
static const 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:
|
|
if (error != OK) {
|
|
msg_warn ("Connect failed, skipping test");
|
|
memc_close_ctx (ctx);
|
|
tv.tv_sec = 0;
|
|
tv.tv_usec = 0;
|
|
event_loopexit (&tv);
|
|
}
|
|
msg_debug ("Connect ok");
|
|
memc_set (ctx, ctx->param, 60);
|
|
break;
|
|
case CMD_READ:
|
|
g_assert (error == OK);
|
|
g_assert (!memcmp(ctx->param->buf, buf, ctx->param->bufsize));
|
|
msg_debug ("Read ok");
|
|
memc_close_ctx (ctx);
|
|
tv.tv_sec = 0;
|
|
tv.tv_usec = 0;
|
|
event_loopexit (&tv);
|
|
break;
|
|
case CMD_WRITE:
|
|
if (error != OK) {
|
|
msg_warn ("Connect failed, skipping test");
|
|
memc_close_ctx (ctx);
|
|
tv.tv_sec = 0;
|
|
tv.tv_usec = 0;
|
|
event_loopexit (&tv);
|
|
}
|
|
msg_debug ("Write ok");
|
|
ctx->param->buf = g_malloc (sizeof (buf));
|
|
bzero (ctx->param->buf, sizeof (buf));
|
|
memc_get (ctx, ctx->param);
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
}
|
|
|
|
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;
|
|
rspamd_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);
|
|
}
|
|
|