1
/* Gearman server and library
2
* Copyright (C) 2008 Brian Aker, Eric Day
5
* Use and distribution licensed under the BSD license. See
6
* the COPYING file in the parent directory for full text.
11
* @brief Blob slap worker utility
14
#include "benchmark.h"
16
static void *worker_fn(gearman_job_st *job, void *cb_arg, size_t *result_size,
17
gearman_return_t *ret_ptr);
19
static void usage(char *name);
21
int main(int argc, char *argv[])
23
gearman_benchmark_st benchmark;
30
gearman_worker_st worker;
32
benchmark_init(&benchmark);
34
if (gearman_worker_create(&worker) == NULL)
36
fprintf(stderr, "Memory allocation failure on worker creation\n");
40
while ((c = getopt(argc, argv, "c:f:h:p:v")) != EOF)
50
ret= gearman_worker_add_function(&worker, function, 0, worker_fn,
52
if (ret != GEARMAN_SUCCESS)
54
fprintf(stderr, "%s\n", gearman_worker_error(&worker));
61
ret= gearman_worker_add_server(&worker, host, port);
62
if (ret != GEARMAN_SUCCESS)
64
fprintf(stderr, "%s\n", gearman_worker_error(&worker));
83
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
85
fprintf(stderr, "signal:%d\n", errno);
91
ret= gearman_worker_add_server(&worker, NULL, port);
92
if (ret != GEARMAN_SUCCESS)
94
fprintf(stderr, "%s\n", gearman_worker_error(&worker));
101
ret= gearman_worker_add_function(&worker,
102
GEARMAN_BENCHMARK_DEFAULT_FUNCTION, 0,
103
worker_fn, &benchmark);
104
if (ret != GEARMAN_SUCCESS)
106
fprintf(stderr, "%s\n", gearman_worker_error(&worker));
113
ret= gearman_worker_work(&worker);
114
if (ret != GEARMAN_SUCCESS)
116
fprintf(stderr, "%s\n", gearman_worker_error(&worker));
128
gearman_worker_free(&worker);
133
static void *worker_fn(gearman_job_st *job, void *cb_arg, size_t *result_size,
134
gearman_return_t *ret_ptr)
136
gearman_benchmark_st *benchmark= (gearman_benchmark_st *)cb_arg;
140
if (benchmark->verbose > 0)
141
benchmark_check_time(benchmark);
143
if (benchmark->verbose > 1)
145
printf("Job=%s (%zu)\n", gearman_job_handle(job),
146
gearman_job_workload_size(job));
149
*ret_ptr= GEARMAN_SUCCESS;
153
static void usage(char *name)
155
printf("\nusage: %s\n"
156
"\t[-c count] [-f function] [-h <host>] [-p <port>] [-v]\n\n", name);
157
printf("\t-c <count> - number of jobs to run before exiting\n");
158
printf("\t-f <function> - function name for tasks, can specify many\n"
160
GEARMAN_BENCHMARK_DEFAULT_FUNCTION);
161
printf("\t-h <host> - job server host, can specify many\n");
162
printf("\t-p <port> - job server port\n");
163
printf("\t-v - increase verbose level\n");