+/* LibMemcached
+ * Copyright (C) 2006-2009 Brian Aker
+ * All rights reserved.
+ *
+ * Use and distribution licensed under the BSD license. See
+ * the COPYING file in the parent directory for full text.
+ *
+ * Summary:
+ *
+ */
+
/*
Startup, and shutdown the memcached servers.
*/
#define TEST_PORT_BASE MEMCACHED_DEFAULT_PORT+10
+
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
-#include <memcached.h>
+#include <signal.h>
+#include <libmemcached/memcached.h>
#include <unistd.h>
#include "server.h"
int count;
int status;
- if (construct->udp)
- sprintf(buffer, "memcached -d -P /tmp/%umemc.pid -t 1 -U %u", x, x+ TEST_PORT_BASE);
+ sprintf(buffer, "/tmp/%umemc.pid", x);
+ if (access(buffer, F_OK) == 0)
+ {
+ FILE *fp= fopen(buffer, "r");
+ remove(buffer);
+
+ if (fp != NULL)
+ {
+ if (fgets(buffer, sizeof(buffer), fp) != NULL)
+ {
+ pid_t pid = (pid_t)atol(buffer);
+ if (pid != 0)
+ kill(pid, SIGTERM);
+ }
+
+ fclose(fp);
+ }
+ }
+
+ if (x == 0)
+ {
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -m 128",
+ MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
+ }
else
- sprintf(buffer, "memcached -d -P /tmp/%umemc.pid -t 1 -p %u", x, x+ TEST_PORT_BASE);
+ {
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u",
+ MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
+ }
+ fprintf(stderr, "STARTING SERVER: %s\n", buffer);
status= system(buffer);
- WATCHPOINT_ASSERT(status == 0);
count= sprintf(end_ptr, "localhost:%u,", x + TEST_PORT_BASE);
end_ptr+= count;
}
assert(construct->servers);
- srandom(time(NULL));
+ srandom((unsigned int)time(NULL));
for (x= 0; x < memcached_server_list_count(construct->servers); x++)
{
{
char buffer[1024]; /* Nothing special for number */
sprintf(buffer, "cat /tmp/%umemc.pid | xargs kill", x);
- system(buffer);
-
+ /* We have to check the return value of this or the compiler will yell */
+ int sys_ret= system(buffer);
+ assert(sys_ret != -1);
sprintf(buffer, "/tmp/%umemc.pid", x);
unlink(buffer);
}