Merge lp:~brianaker/gearmand/fixes-for-ssl-builds into lp:gearmand

Proposed by Brian Aker
Status: Merged
Merged at revision: 824
Proposed branch: lp:~brianaker/gearmand/fixes-for-ssl-builds
Merge into: lp:gearmand
Diff against target: 1207 lines (+334/-232)
26 files modified
libgearman-1.0/constants.h (+2/-1)
libgearman-server/connection.cc (+13/-10)
libgearman-server/connection.h (+2/-2)
libgearman-server/gearmand.cc (+13/-18)
libgearman-server/gearmand_thread.cc (+4/-10)
libgearman-server/io.cc (+40/-44)
libgearman-server/io.h (+5/-3)
libgearman-server/plugins/protocol/gear/protocol.cc (+26/-3)
libgearman-server/server.cc (+5/-2)
libgearman-server/struct/gearmand_thread.h (+6/-1)
libgearman-server/thread.cc (+5/-8)
libgearman/check.h (+5/-0)
libgearman/client.cc (+26/-30)
libgearman/client.hpp (+3/-3)
libgearman/function/function_v2.cc (+2/-1)
libgearman/interface/universal.hpp (+4/-0)
libgearman/interface/worker.hpp (+5/-0)
libgearman/job.cc (+19/-2)
libgearman/strcommand.h (+8/-0)
libgearman/universal.cc (+7/-0)
libgearman/worker.cc (+87/-71)
libgearman/worker.hpp (+21/-0)
tests/libgearman-1.0/gearman_execute_partition.cc (+8/-8)
tests/protocol.cc (+3/-0)
tests/start_worker.cc (+10/-9)
tests/workers/v2/split.cc (+5/-6)
To merge this branch: bzr merge lp:~brianaker/gearmand/fixes-for-ssl-builds
Reviewer Review Type Date Requested Status
Tangent Trunk Pending
Review via email: mp+174109@code.launchpad.net
To post a comment you must log in.
824. By Brian Aker

OSX build fixes.

825. By Brian Aker

Additional OSX fix.

826. By Brian Aker

Fix additional OSX warnings.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'libgearman-1.0/constants.h'
--- libgearman-1.0/constants.h 2013-06-05 21:59:31 +0000
+++ libgearman-1.0/constants.h 2013-07-11 21:18:03 +0000
@@ -133,7 +133,8 @@
133 GEARMAN_WORKER_TIMEOUT_RETURN= (1 << 8),133 GEARMAN_WORKER_TIMEOUT_RETURN= (1 << 8),
134 GEARMAN_WORKER_GRAB_ALL= (1 << 9),134 GEARMAN_WORKER_GRAB_ALL= (1 << 9),
135 GEARMAN_WORKER_SSL= (1 << 10),135 GEARMAN_WORKER_SSL= (1 << 10),
136 GEARMAN_WORKER_MAX= (1 << 11)136 GEARMAN_WORKER_IDENTIFIER= (1 << 11),
137 GEARMAN_WORKER_MAX= (1 << 12)
137} gearman_worker_options_t;138} gearman_worker_options_t;
138139
139/* Types. */140/* Types. */
140141
=== modified file 'libgearman-server/connection.cc'
--- libgearman-server/connection.cc 2013-06-26 23:50:02 +0000
+++ libgearman-server/connection.cc 2013-07-11 21:18:03 +0000
@@ -47,7 +47,8 @@
4747
48#include <string.h>48#include <string.h>
49#include <errno.h>49#include <errno.h>
50#include <assert.h>50#include <cassert>
51#include <algorithm>
5152
52static gearman_server_con_st * _server_con_create(gearman_server_thread_st *thread, gearmand_con_st *dcon,53static gearman_server_con_st * _server_con_create(gearman_server_thread_st *thread, gearmand_con_st *dcon,
53 gearmand_error_t& ret);54 gearmand_error_t& ret);
@@ -313,16 +314,18 @@
313 return con->id;314 return con->id;
314}315}
315316
316void gearman_server_con_set_id(gearman_server_con_st *con, char *id,317void gearman_server_con_set_id(gearman_server_con_st *con,
317 size_t size)318 const char *id,
319 const size_t size)
318{320{
319 if (size >= GEARMAND_SERVER_CON_ID_SIZE)321 size_t min_size= std::min(size, size_t(GEARMAND_SERVER_CON_ID_SIZE -1));
320 {322
321 size= GEARMAND_SERVER_CON_ID_SIZE - 1;323 memcpy(con->id, id, min_size);
322 }324 con->id[min_size]= 0;
323325
324 memcpy(con->id, id, size);326 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
325 con->id[size]= 0;327 "identifier set to %.*s",
328 min_size, con->id);
326}329}
327330
328void gearman_server_con_free_worker(gearman_server_con_st *con,331void gearman_server_con_free_worker(gearman_server_con_st *con,
329332
=== modified file 'libgearman-server/connection.h'
--- libgearman-server/connection.h 2013-06-26 23:50:02 +0000
+++ libgearman-server/connection.h 2013-07-11 21:18:03 +0000
@@ -111,8 +111,8 @@
111 * Set client id.111 * Set client id.
112 */112 */
113GEARMAN_API113GEARMAN_API
114void gearman_server_con_set_id(gearman_server_con_st *con, char *id,114void gearman_server_con_set_id(gearman_server_con_st *con, const char *id,
115 size_t size);115 const size_t size);
116116
117/**117/**
118 * Free server worker struction with name for a server connection.118 * Free server worker struction with name for a server connection.
119119
=== modified file 'libgearman-server/gearmand.cc'
--- libgearman-server/gearmand.cc 2013-07-07 00:16:26 +0000
+++ libgearman-server/gearmand.cc 2013-07-11 21:18:03 +0000
@@ -861,15 +861,7 @@
861 Gearmand()->ret= gearmand_perror(local_error, "accept");861 Gearmand()->ret= gearmand_perror(local_error, "accept");
862 return;862 return;
863 }863 }
864 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "accept() %d", fd);864 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "accept() fd:%d", fd);
865
866 {
867 int flags= 1;
868 if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &flags, sizeof(flags)) == -1)
869 {
870 gearmand_perror(errno, "setsockopt(SO_KEEPALIVE)");
871 }
872 }
873865
874 /* 866 /*
875 Since this is numeric, it should never fail. Even if it did we don't want to really error from it.867 Since this is numeric, it should never fail. Even if it did we don't want to really error from it.
@@ -887,6 +879,14 @@
887879
888 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Accepted connection from %s:%s", host, port_str);880 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Accepted connection from %s:%s", host, port_str);
889881
882 {
883 int flags= 1;
884 if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &flags, sizeof(flags)) == -1)
885 {
886 gearmand_log_perror(GEARMAN_DEFAULT_LOG_PARAM, errno, "%s:%s setsockopt(SO_KEEPALIVE)", host, port_str);
887 }
888 }
889
890 gearmand_error_t ret= gearmand_con_create(Gearmand(), fd, host, port_str, port);890 gearmand_error_t ret= gearmand_con_create(Gearmand(), fd, host, port_str, port);
891 if (ret == GEARMAND_MEMORY_ALLOCATION_FAILURE)891 if (ret == GEARMAND_MEMORY_ALLOCATION_FAILURE)
892 {892 {
@@ -915,15 +915,10 @@
915 return gearmand_fatal_perror(errno, "pipe(gearmand->wakeup_fd)");915 return gearmand_fatal_perror(errno, "pipe(gearmand->wakeup_fd)");
916 }916 }
917917
918 int returned_flags;918 gearmand_error_t local_ret;
919 if ((returned_flags= fcntl(gearmand->wakeup_fd[0], F_GETFL, 0)) == -1)919 if ((local_ret= gearmand_sockfd_nonblock(gearmand->wakeup_fd[0])))
920 {920 {
921 return gearmand_fatal_perror(errno, "fcntl:F_GETFL");921 return local_ret;
922 }
923
924 if (fcntl(gearmand->wakeup_fd[0], F_SETFL, returned_flags | O_NONBLOCK) == -1)
925 {
926 return gearmand_fatal_perror(errno, "fcntl(F_SETFL)");
927 }922 }
928#endif923#endif
929924
930925
=== modified file 'libgearman-server/gearmand_thread.cc'
--- libgearman-server/gearmand_thread.cc 2013-07-10 10:54:09 +0000
+++ libgearman-server/gearmand_thread.cc 2013-07-11 21:18:03 +0000
@@ -505,16 +505,10 @@
505 return gearmand_perror(errno, "pipe");505 return gearmand_perror(errno, "pipe");
506 }506 }
507507
508 int ret= fcntl(thread->wakeup_fd[0], F_GETFL, 0);508 gearmand_error_t local_ret;
509 if (ret == -1)509 if ((local_ret= gearmand_sockfd_nonblock(thread->gearmand().wakeup_fd[0])))
510 {510 {
511 return gearmand_perror(errno, "fcntl(F_GETFL)");511 return local_ret;
512 }
513
514 ret= fcntl(thread->wakeup_fd[0], F_SETFL, ret | O_NONBLOCK);
515 if (ret == -1)
516 {
517 return gearmand_perror(errno, "fcntl(F_SETFL)");
518 }512 }
519#endif513#endif
520514
521515
=== modified file 'libgearman-server/io.cc'
--- libgearman-server/io.cc 2013-07-07 22:07:57 +0000
+++ libgearman-server/io.cc 2013-07-11 21:18:03 +0000
@@ -146,10 +146,7 @@
146 if (read_size == 0)146 if (read_size == 0)
147 {147 {
148 ret= GEARMAND_LOST_CONNECTION;148 ret= GEARMAND_LOST_CONNECTION;
149 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, 149 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Peer connection has called close()");
150 "Peer connection has called close() %s:%s",
151 connection->host(),
152 connection->port());
153 _connection_close(connection);150 _connection_close(connection);
154 return 0;151 return 0;
155 }152 }
@@ -177,10 +174,7 @@
177 case EHOSTDOWN:174 case EHOSTDOWN:
178 {175 {
179 ret= GEARMAND_LOST_CONNECTION;176 ret= GEARMAND_LOST_CONNECTION;
180 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, 177 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Peer connection has called close()");
181 "Peer connection has called close() %s:%s",
182 connection->host(),
183 connection->port());
184 _connection_close(connection);178 _connection_close(connection);
185 return 0;179 return 0;
186 }180 }
@@ -300,9 +294,7 @@
300 char errorString[80];294 char errorString[80];
301 CyaSSL_ERR_error_string(err, errorString);295 CyaSSL_ERR_error_string(err, errorString);
302 _connection_close(connection);296 _connection_close(connection);
303 return gearmand_log_gerror(GEARMAN_DEFAULT_LOG_PARAM, GEARMAND_LOST_CONNECTION, "%s:%s SSL failure(%s)",297 return gearmand_log_gerror(GEARMAN_DEFAULT_LOG_PARAM, GEARMAND_LOST_CONNECTION, "SSL failure(%s)",
304 connection->host(),
305 connection->port(),
306 errorString);298 errorString);
307 }299 }
308 }300 }
@@ -317,10 +309,8 @@
317 if (write_size == 0) // detect infinite loop?309 if (write_size == 0) // detect infinite loop?
318 {310 {
319 ++loop_counter;311 ++loop_counter;
320 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "send() sent zero bytes of %u to peer %s:%s",312 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "send() sent zero bytes of %u",
321 uint32_t(connection->send_buffer_size),313 uint32_t(connection->send_buffer_size));
322 connection->host(),
323 connection->port());
324314
325 if (loop_counter > 5)315 if (loop_counter > 5)
326 {316 {
@@ -366,10 +356,8 @@
366 return GEARMAND_ERRNO;356 return GEARMAND_ERRNO;
367 }357 }
368358
369 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "send() %u bytes to peer %s:%s",359 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "send() %u bytes to peer",
370 uint32_t(write_size),360 uint32_t(write_size));
371 connection->host(),
372 connection->port());
373361
374 connection->send_buffer_size-= static_cast<size_t>(write_size);362 connection->send_buffer_size-= static_cast<size_t>(write_size);
375 if (connection->send_state == gearmand_io_st::GEARMAND_CON_SEND_UNIVERSAL_FLUSH_DATA)363 if (connection->send_state == gearmand_io_st::GEARMAND_CON_SEND_UNIVERSAL_FLUSH_DATA)
@@ -775,9 +763,7 @@
775 }763 }
776 return ret;764 return ret;
777 }765 }
778 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "%s:%s read %lu bytes",766 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "read %lu bytes",
779 connection->host(),
780 connection->port(),
781 (unsigned long)recv_size);767 (unsigned long)recv_size);
782768
783 connection->recv_buffer_size+= recv_size;769 connection->recv_buffer_size+= recv_size;
@@ -901,7 +887,6 @@
901887
902static gearmand_error_t _io_setsockopt(gearmand_io_st &connection)888static gearmand_error_t _io_setsockopt(gearmand_io_st &connection)
903{889{
904 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "setsockopt() fd:%d", connection.fd);
905 {890 {
906 int setting= 1;891 int setting= 1;
907 if (setsockopt(connection.fd, IPPROTO_TCP, TCP_NODELAY, &setting, (socklen_t)sizeof(int)) and errno != EOPNOTSUPP)892 if (setsockopt(connection.fd, IPPROTO_TCP, TCP_NODELAY, &setting, (socklen_t)sizeof(int)) and errno != EOPNOTSUPP)
@@ -969,28 +954,39 @@
969954
970 if (SOCK_NONBLOCK == 0)955 if (SOCK_NONBLOCK == 0)
971 {956 {
972 int flags;957 gearmand_error_t local_ret;
958 if ((local_ret= gearmand_sockfd_nonblock(connection.fd)))
959 {
960 return local_ret;
961 }
962 }
963
964 return GEARMAND_SUCCESS;
965}
966
967gearmand_error_t gearmand_sockfd_nonblock(const int& sockfd)
968{
969 int flags;
970 do
971 {
972 flags= fcntl(sockfd, F_GETFL, 0);
973 } while (flags == -1 and (errno == EINTR or errno == EAGAIN));
974
975 if (flags == -1)
976 {
977 return gearmand_perror(errno, "fcntl(F_GETFL)");
978 }
979 else if ((flags & O_NONBLOCK) == 0)
980 {
981 int retval;
973 do982 do
974 {983 {
975 flags= fcntl(connection.fd, F_GETFL, 0);984 retval= fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
976 } while (flags == -1 and (errno == EINTR or errno == EAGAIN));985 } while (retval == -1 and (errno == EINTR or errno == EAGAIN));
977986
978 if (flags == -1)987 if (retval == -1)
979 {988 {
980 return gearmand_perror(errno, "fcntl(F_GETFL)");989 return gearmand_perror(errno, "fcntl(F_SETFL)");
981 }
982 else if ((flags & O_NONBLOCK) == 0)
983 {
984 int retval;
985 do
986 {
987 retval= fcntl(connection.fd, F_SETFL, flags | O_NONBLOCK);
988 } while (retval == -1 and (errno == EINTR or errno == EAGAIN));
989
990 if (retval == -1)
991 {
992 return gearmand_perror(errno, "fcntl(F_SETFL)");
993 }
994 }990 }
995 }991 }
996992
@@ -1016,7 +1012,7 @@
1016 }1012 }
1017 else1013 else
1018 {1014 {
1019 gearmand_warning("gearmand_sockfd_close() called with an invalid socket");1015 gearmand_debug("gearmand_sockfd_close() called with an invalid socket, this was probably ok");
1020 }1016 }
1021}1017}
10221018
10231019
=== modified file 'libgearman-server/io.h'
--- libgearman-server/io.h 2013-03-09 22:03:25 +0000
+++ libgearman-server/io.h 2013-07-11 21:18:03 +0000
@@ -131,9 +131,11 @@
131 */131 */
132gearmand_error_t gearmand_io_set_revents(gearman_server_con_st *connection, short revents);132gearmand_error_t gearmand_io_set_revents(gearman_server_con_st *connection, short revents);
133133
134void gearmand_sockfd_close(int& sockfd);134void gearmand_sockfd_close(int&);
135135
136void gearmand_pipe_close(int& sockfd);136void gearmand_pipe_close(int&);
137
138gearmand_error_t gearmand_sockfd_nonblock(const int&);
137139
138/** @} */140/** @} */
139141
140142
=== modified file 'libgearman-server/plugins/protocol/gear/protocol.cc'
--- libgearman-server/plugins/protocol/gear/protocol.cc 2013-07-10 10:54:09 +0000
+++ libgearman-server/plugins/protocol/gear/protocol.cc 2013-07-11 21:18:03 +0000
@@ -47,6 +47,7 @@
47#include <libgearman-server/common.h>47#include <libgearman-server/common.h>
48#include <libgearman/strcommand.h>48#include <libgearman/strcommand.h>
49#include <libgearman-server/packet.h>49#include <libgearman-server/packet.h>
50#include "libgearman/strcommand.h"
5051
51#include <cstdio>52#include <cstdio>
52#include <cstdlib>53#include <cstdlib>
@@ -103,9 +104,9 @@
103 return false;104 return false;
104 }105 }
105106
106 void notify(gearman_server_con_st *)107 void notify(gearman_server_con_st* connection)
107 {108 {
108 gearmand_info("Gear connection disconnected");109 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Gear connection disconnected: %s:%s", connection->host(), connection->port());
109 }110 }
110111
111 size_t unpack(gearmand_packet_st *packet,112 size_t unpack(gearmand_packet_st *packet,
@@ -257,6 +258,24 @@
257 int(packet->arg_size[0]),258 int(packet->arg_size[0]),
258 packet->arg[0]);259 packet->arg[0]);
259 }260 }
261 else if (packet->command == GEARMAN_COMMAND_WORK_EXCEPTION)
262 {
263 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
264 "GEAR gearmand_command_t: %s handle: %.*s exception: %.*s",
265 gearman_strcommand(packet->command),
266 int(packet->arg_size[0]),
267 packet->arg[0],
268 int(packet->data_size),
269 packet->data);
270 }
271 else if (packet->command == GEARMAN_COMMAND_SET_CLIENT_ID)
272 {
273 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
274 "GEAR gearmand_command_t: %s identifier: %.*s",
275 gearman_strcommand(packet->command),
276 int(packet->arg_size[0]),
277 packet->arg[0]);
278 }
260 else279 else
261 {280 {
262 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,281 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
@@ -353,9 +372,13 @@
353 cyassl_error_buffer, cyassl_error);372 cyassl_error_buffer, cyassl_error);
354 }373 }
355 }374 }
356 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "GearSSL connection made: %d", connection->con.fd);375 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "GearSSL connection made: %s:%s", connection->host(), connection->port());
357 }376 }
377 else
358#endif378#endif
379 {
380 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "Gear connection made: %s:%s", connection->host(), connection->port());
381 }
359382
360 connection->set_protocol(&gear_context);383 connection->set_protocol(&gear_context);
361384
362385
=== modified file 'libgearman-server/server.cc'
--- libgearman-server/server.cc 2013-07-10 10:54:09 +0000
+++ libgearman-server/server.cc 2013-07-11 21:18:03 +0000
@@ -545,7 +545,7 @@
545 long timeout= strtol(strtol_buffer, &endptr, 10);545 long timeout= strtol(strtol_buffer, &endptr, 10);
546 if (timeout == LONG_MIN or timeout == LONG_MAX or errno != 0)546 if (timeout == LONG_MIN or timeout == LONG_MAX or errno != 0)
547 {547 {
548 return gearmand_log_perror(GEARMAN_DEFAULT_LOG_PARAM, errno, "GEARMAN_COMMAND_CAN_DO_TIMEOUT:strtol");548 return gearmand_log_perror(GEARMAN_DEFAULT_LOG_PARAM, errno, "GEARMAN_COMMAND_CAN_DO_TIMEOUT:strtol: %s", strtol_buffer);
549 }549 }
550550
551 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "Registering function: %.*s with timeout %dl",551 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "Registering function: %.*s with timeout %dl",
@@ -1042,7 +1042,10 @@
1042 }1042 }
1043 else if (command == GEARMAN_COMMAND_WORK_EXCEPTION)1043 else if (command == GEARMAN_COMMAND_WORK_EXCEPTION)
1044 {1044 {
1045 gearmand_debug("Sending GEARMAN_COMMAND_WORK_EXCEPTION");1045 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
1046 "%s:%s GEARMAN_COMMAND_WORK_EXCEPTION: %.*s",
1047 server_client->con->host(), server_client->con->port(),
1048 int(packet->data_size), packet->data);
1046 }1049 }
10471050
1048 uint8_t *data;1051 uint8_t *data;
10491052
=== modified file 'libgearman-server/struct/gearmand_thread.h'
--- libgearman-server/struct/gearmand_thread.h 2013-07-06 10:56:43 +0000
+++ libgearman-server/struct/gearmand_thread.h 2013-07-11 21:18:03 +0000
@@ -37,7 +37,7 @@
3737
38#pragma once38#pragma once
3939
40class gearmand_st;40struct gearmand_st;
4141
42struct gearmand_thread_st42struct gearmand_thread_st
43{43{
@@ -61,4 +61,9 @@
61 pthread_mutex_t lock;61 pthread_mutex_t lock;
6262
63 gearmand_thread_st(gearmand_st&);63 gearmand_thread_st(gearmand_st&);
64
65 gearmand_st& gearmand()
66 {
67 return _gearmand;
68 }
64};69};
6570
=== modified file 'libgearman-server/thread.cc'
--- libgearman-server/thread.cc 2013-07-06 20:11:54 +0000
+++ libgearman-server/thread.cc 2013-07-11 21:18:03 +0000
@@ -45,6 +45,7 @@
45#include "libgearman-server/common.h"45#include "libgearman-server/common.h"
4646
47#include <libgearman/command.h>47#include <libgearman/command.h>
48#include "libgearman/strcommand.h"
4849
49#ifdef __cplusplus50#ifdef __cplusplus
50# include <cassert>51# include <cassert>
@@ -308,10 +309,8 @@
308 }309 }
309310
310 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,311 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
311 "Received %s %s:%u",312 "Received %s",
312 gearmand_strcommand(&con->packet->packet),313 gearmand_strcommand(&con->packet->packet));
313 con->_host == NULL ? "-" : con->_host,
314 con->_port == NULL ? "-" : con->_port);
315314
316 /* We read a complete packet. */315 /* We read a complete packet. */
317 if (Server->flags.threaded)316 if (Server->flags.threaded)
@@ -355,10 +354,8 @@
355 }354 }
356355
357 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, 356 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
358 "Sent %s to %s:%d",357 "Sent %s",
359 gearman_command_info(con->io_packet_list->packet.command)->name,358 gearman_strcommand(con->io_packet_list->packet.command));
360 con->_host == NULL ? "-" : con->_host,
361 con->_port == NULL ? "-" : con->_port);
362359
363 gearman_server_io_packet_remove(con);360 gearman_server_io_packet_remove(con);
364 }361 }
365362
=== modified file 'libgearman/check.h'
--- libgearman/check.h 2013-07-10 10:54:09 +0000
+++ libgearman/check.h 2013-07-11 21:18:03 +0000
@@ -65,6 +65,11 @@
65 {65 {
66 }66 }
6767
68 const gearman_string_t& option() const
69 {
70 return _option;
71 }
72
68 gearman_return_t success(gearman_connection_st* con);73 gearman_return_t success(gearman_connection_st* con);
6974
70private:75private:
7176
=== modified file 'libgearman/client.cc'
--- libgearman/client.cc 2013-07-10 10:54:09 +0000
+++ libgearman/client.cc 2013-07-11 21:18:03 +0000
@@ -1744,36 +1744,32 @@
17441744
1745gearman_return_t gearman_client_run_block_tasks(Client* client, gearman_task_st* exit_task)1745gearman_return_t gearman_client_run_block_tasks(Client* client, gearman_task_st* exit_task)
1746{1746{
1747 {1747 if (client->task_list == NULL) // We are immediatly successful if all tasks are completed
1748 if (client->task_list == NULL) // We are immediatly successful if all tasks are completed1748 {
1749 {1749 return GEARMAN_SUCCESS;
1750 return GEARMAN_SUCCESS;1750 }
1751 }1751
17521752 gearman_return_t rc;
1753 gearman_return_t rc;1753 {
1754 {1754 PUSH_BLOCKING(client->universal);
1755 PUSH_BLOCKING(client->universal);1755
17561756 rc= _client_run_tasks(client->shell(), exit_task);
1757 rc= _client_run_tasks(client->shell(), exit_task);1757 }
1758 }1758
17591759 if (gearman_failed(rc))
1760 if (gearman_failed(rc))1760 {
1761 {1761 if (rc == GEARMAN_COULD_NOT_CONNECT)
1762 if (rc == GEARMAN_COULD_NOT_CONNECT)1762 {
1763 {1763 gearman_reset(client->universal);
1764 gearman_reset(client->universal);1764 }
1765 }1765
17661766 if (client->universal.error_code() != rc and rc != GEARMAN_COULD_NOT_CONNECT)
1767 if (client->universal.error_code() != rc and rc != GEARMAN_COULD_NOT_CONNECT)1767 {
1768 {1768 assert(client->universal.error_code() == rc);
1769 assert(client->universal.error_code() == rc);1769 }
1770 }1770 }
1771 }1771
17721772 return rc;
1773 return rc;
1774 }
1775
1776 return GEARMAN_INVALID_ARGUMENT;
1777}1773}
17781774
1779/*1775/*
17801776
=== modified file 'libgearman/client.hpp'
--- libgearman/client.hpp 2013-07-08 09:58:12 +0000
+++ libgearman/client.hpp 2013-07-11 21:18:03 +0000
@@ -47,7 +47,7 @@
4747
48namespace {48namespace {
4949
50inline void all_PRINTER(const char *line, gearman_verbose_t verbose, void*)50inline void all_client_PRINTER(const char *line, gearman_verbose_t verbose, void*)
51{51{
52 fprintf(stderr, "%s:%d %s(%s)\n", __FILE__, __LINE__, gearman_verbose_name(verbose), line);52 fprintf(stderr, "%s:%d %s(%s)\n", __FILE__, __LINE__, gearman_verbose_name(verbose), line);
53}53}
@@ -67,7 +67,6 @@
67 throw std::runtime_error("gearman_client_create() failed");67 throw std::runtime_error("gearman_client_create() failed");
68 }68 }
69 enable_logging();69 enable_logging();
70
71 enable_ssl();70 enable_ssl();
72 }71 }
7372
@@ -95,6 +94,7 @@
9594
96 gearman_client_add_server(_client, "localhost", arg);95 gearman_client_add_server(_client, "localhost", arg);
9796
97 enable_logging();
98 enable_ssl();98 enable_ssl();
99 }99 }
100100
@@ -117,7 +117,7 @@
117 { 117 {
118 if (getenv("YATL_CLIENT_LOGGING"))118 if (getenv("YATL_CLIENT_LOGGING"))
119 {119 {
120 gearman_log_fn *func= all_PRINTER;120 gearman_log_fn *func= all_client_PRINTER;
121 gearman_client_set_log_fn(_client, func, NULL, GEARMAN_VERBOSE_ERROR);121 gearman_client_set_log_fn(_client, func, NULL, GEARMAN_VERBOSE_ERROR);
122 }122 }
123 }123 }
124124
=== modified file 'libgearman/function/function_v2.cc'
--- libgearman/function/function_v2.cc 2013-07-05 22:06:45 +0000
+++ libgearman/function/function_v2.cc 2013-07-11 21:18:03 +0000
@@ -59,6 +59,7 @@
59 job->_error_code= GEARMAN_SUCCESS;59 job->_error_code= GEARMAN_SUCCESS;
60 return GEARMAN_FUNCTION_SHUTDOWN;60 return GEARMAN_FUNCTION_SHUTDOWN;
6161
62 case GEARMAN_WORK_EXCEPTION:
62 case GEARMAN_FATAL:63 case GEARMAN_FATAL:
63 job->_error_code= GEARMAN_FATAL;64 job->_error_code= GEARMAN_FATAL;
64 return GEARMAN_FUNCTION_FATAL;65 return GEARMAN_FUNCTION_FATAL;
@@ -91,7 +92,6 @@
91 case GEARMAN_WORK_DATA:92 case GEARMAN_WORK_DATA:
92 case GEARMAN_WORK_WARNING:93 case GEARMAN_WORK_WARNING:
93 case GEARMAN_WORK_STATUS:94 case GEARMAN_WORK_STATUS:
94 case GEARMAN_WORK_EXCEPTION:
95 case GEARMAN_NOT_CONNECTED:95 case GEARMAN_NOT_CONNECTED:
96 case GEARMAN_COULD_NOT_CONNECT:96 case GEARMAN_COULD_NOT_CONNECT:
97 case GEARMAN_SEND_IN_PROGRESS:97 case GEARMAN_SEND_IN_PROGRESS:
@@ -123,5 +123,6 @@
123 break;123 break;
124 }124 }
125125
126 gearman_gerror(job->universal(), GEARMAN_INVALID_ARGUMENT);
126 return GEARMAN_FUNCTION_INVALID_ARGUMENT;127 return GEARMAN_FUNCTION_INVALID_ARGUMENT;
127}128}
128129
=== modified file 'libgearman/interface/universal.hpp'
--- libgearman/interface/universal.hpp 2013-07-08 09:58:12 +0000
+++ libgearman/interface/universal.hpp 2013-07-11 21:18:03 +0000
@@ -265,6 +265,10 @@
265 ~gearman_universal_st();265 ~gearman_universal_st();
266266
267 void identifier(const char *identifier_, const size_t identifier_size_);267 void identifier(const char *identifier_, const size_t identifier_size_);
268 bool has_identifier() const
269 {
270 return _identifier;
271 }
268};272};
269273
270static inline bool gearman_universal_is_non_blocking(gearman_universal_st &self)274static inline bool gearman_universal_is_non_blocking(gearman_universal_st &self)
271275
=== modified file 'libgearman/interface/worker.hpp'
--- libgearman/interface/worker.hpp 2013-07-05 22:06:45 +0000
+++ libgearman/interface/worker.hpp 2013-07-11 21:18:03 +0000
@@ -127,6 +127,11 @@
127 universal.options._ssl= ssl_;127 universal.options._ssl= ssl_;
128 }128 }
129129
130 bool has_identifier() const
131 {
132 return universal.has_identifier();
133 }
134
130 const char* error() const135 const char* error() const
131 {136 {
132 return universal.error();137 return universal.error();
133138
=== modified file 'libgearman/job.cc'
--- libgearman/job.cc 2013-07-08 00:50:39 +0000
+++ libgearman/job.cc 2013-07-11 21:18:03 +0000
@@ -68,6 +68,16 @@
68 gearman_string_append(reducer_function, gearman_string_param(reducer_function_name));68 gearman_string_append(reducer_function, gearman_string_param(reducer_function_name));
69 }69 }
7070
71 const char* name() const
72 {
73 if (reducer_function)
74 {
75 return reducer_function->c_str();
76 }
77
78 return "__UNKNOWN";
79 }
80
71 ~gearman_job_reducer_st() 81 ~gearman_job_reducer_st()
72 {82 {
73 gearman_client_free(client);83 gearman_client_free(client);
@@ -79,7 +89,8 @@
79 client= gearman_client_create(NULL);89 client= gearman_client_create(NULL);
80 if (client)90 if (client)
81 {91 {
8292 gearman_universal_clone(client->impl()->universal, universal, false);
93#if 0
83 if (universal._namespace)94 if (universal._namespace)
84 {95 {
85 gearman_client_set_namespace(client, 96 gearman_client_set_namespace(client,
@@ -94,6 +105,7 @@
94 return false;105 return false;
95 }106 }
96 }107 }
108#endif
97109
98 return true;110 return true;
99 }111 }
@@ -415,7 +427,7 @@
415 gearman_return_t rc= job->reducer->complete();427 gearman_return_t rc= job->reducer->complete();
416 if (gearman_failed(rc))428 if (gearman_failed(rc))
417 {429 {
418 return gearman_error(job->universal(), rc, "The reducer's complete() returned an error");430 return gearman_universal_set_error(job->universal(), rc, GEARMAN_AT, "%s couldn't call complete()", job->reducer->name());
419 }431 }
420432
421 const gearman_vector_st *reduced_value= job->reducer->result.string();433 const gearman_vector_st *reduced_value= job->reducer->result.string();
@@ -472,6 +484,11 @@
472{484{
473 if (job)485 if (job)
474 {486 {
487 if (exception == NULL or exception_size == 0)
488 {
489 return gearman_error(job->universal(), GEARMAN_INVALID_ARGUMENT, "No exception was provided");
490 }
491
475 if (job->finished() == false)492 if (job->finished() == false)
476 {493 {
477 if (job->options.work_in_use == false)494 if (job->options.work_in_use == false)
478495
=== modified file 'libgearman/strcommand.h'
--- libgearman/strcommand.h 2012-03-31 06:09:14 +0000
+++ libgearman/strcommand.h 2013-07-11 21:18:03 +0000
@@ -37,4 +37,12 @@
3737
38#pragma once38#pragma once
3939
40#ifdef __cplusplus
41extern "C" {
42#endif
43
40const char *gearman_strcommand(gearman_command_t command);44const char *gearman_strcommand(gearman_command_t command);
45
46#ifdef __cplusplus
47}
48#endif
4149
=== modified file 'libgearman/universal.cc'
--- libgearman/universal.cc 2013-07-10 10:54:09 +0000
+++ libgearman/universal.cc 2013-07-11 21:18:03 +0000
@@ -105,6 +105,8 @@
105105
106 (void)gearman_universal_set_option(destination, GEARMAN_UNIVERSAL_NON_BLOCKING, source.options.non_blocking);106 (void)gearman_universal_set_option(destination, GEARMAN_UNIVERSAL_NON_BLOCKING, source.options.non_blocking);
107107
108 destination.ssl(source.ssl());
109
108 destination.timeout= source.timeout;110 destination.timeout= source.timeout;
109111
110 destination._namespace= gearman_string_clone(source._namespace);112 destination._namespace= gearman_string_clone(source._namespace);
@@ -374,6 +376,11 @@
374 return gearman_gerror(universal, GEARMAN_SHUTDOWN);376 return gearman_gerror(universal, GEARMAN_SHUTDOWN);
375 }377 }
376378
379 if (read_length == -1)
380 {
381 gearman_perror(universal, "read() from shutdown pipe");
382 }
383
377#if 0384#if 0
378 perror("shudown read");385 perror("shudown read");
379#endif386#endif
380387
=== modified file 'libgearman/worker.cc'
--- libgearman/worker.cc 2013-07-08 00:50:39 +0000
+++ libgearman/worker.cc 2013-07-11 21:18:03 +0000
@@ -39,6 +39,7 @@
39#include "gear_config.h"39#include "gear_config.h"
4040
41#include <libgearman/common.h>41#include <libgearman/common.h>
42#include "libgearman/uuid.hpp"
42#include <libgearman/function/base.hpp>43#include <libgearman/function/base.hpp>
43#include <libgearman/function/make.hpp>44#include <libgearman/function/make.hpp>
4445
@@ -258,6 +259,8 @@
258 options|= int(GEARMAN_WORKER_TIMEOUT_RETURN);259 options|= int(GEARMAN_WORKER_TIMEOUT_RETURN);
259 if (worker->ssl())260 if (worker->ssl())
260 options|= int(GEARMAN_WORKER_SSL);261 options|= int(GEARMAN_WORKER_SSL);
262 if (worker->has_identifier())
263 options|= int(GEARMAN_WORKER_IDENTIFIER);
261264
262 return gearman_worker_options_t(options);265 return gearman_worker_options_t(options);
263 }266 }
@@ -276,6 +279,7 @@
276 GEARMAN_WORKER_GRAB_ALL,279 GEARMAN_WORKER_GRAB_ALL,
277 GEARMAN_WORKER_TIMEOUT_RETURN,280 GEARMAN_WORKER_TIMEOUT_RETURN,
278 GEARMAN_WORKER_SSL,281 GEARMAN_WORKER_SSL,
282 GEARMAN_WORKER_IDENTIFIER,
279 GEARMAN_WORKER_MAX283 GEARMAN_WORKER_MAX
280 };284 };
281285
@@ -333,6 +337,14 @@
333 {337 {
334 worker->ssl(true);338 worker->ssl(true);
335 }339 }
340
341 if (options & GEARMAN_WORKER_IDENTIFIER)
342 {
343 char uuid_buffer[GEARMAN_MAX_IDENTIFIER];
344 size_t length= GEARMAN_MAX_IDENTIFIER;
345 safe_uuid_generate(uuid_buffer, length);
346 worker->universal.identifier(uuid_buffer, length);
347 }
336 }348 }
337}349}
338350
@@ -369,9 +381,9 @@
369 worker->options.grab_all= false;381 worker->options.grab_all= false;
370 }382 }
371383
372 if (options & GEARMAN_WORKER_SSL)384 if (options & GEARMAN_WORKER_IDENTIFIER)
373 {385 {
374 worker->ssl(false);386 worker->universal.identifier(NULL, 0);
375 }387 }
376 }388 }
377}389}
@@ -1240,77 +1252,73 @@
1240 uint32_t timeout,1252 uint32_t timeout,
1241 void *context)1253 void *context)
1242{1254{
1255 const void *args[2];
1256 size_t args_size[2];
1257
1258 if (function_length == 0 or function_name == NULL or function_length > GEARMAN_FUNCTION_MAX_SIZE)
1243 {1259 {
1244 const void *args[2];1260 if (function_length > GEARMAN_FUNCTION_MAX_SIZE)
1245 size_t args_size[2];1261 {
12461262 gearman_error(worker->universal, GEARMAN_INVALID_ARGUMENT, "function name longer then GEARMAN_MAX_FUNCTION_SIZE");
1247 if (function_length == 0 or function_name == NULL or function_length > GEARMAN_FUNCTION_MAX_SIZE)1263 }
1248 {
1249 if (function_length > GEARMAN_FUNCTION_MAX_SIZE)
1250 {
1251 gearman_error(worker->universal, GEARMAN_INVALID_ARGUMENT, "function name longer then GEARMAN_MAX_FUNCTION_SIZE");
1252 }
1253 else
1254 {
1255 gearman_error(worker->universal, GEARMAN_INVALID_ARGUMENT, "invalid function");
1256 }
1257
1258 return GEARMAN_INVALID_ARGUMENT;
1259 }
1260
1261 _worker_function_st *function= make(worker->universal._namespace, function_name, function_length, function_arg, context);
1262 if (function == NULL)
1263 {
1264 gearman_perror(worker->universal, "_worker_function_st::new()");
1265 return GEARMAN_MEMORY_ALLOCATION_FAILURE;
1266 }
1267
1268 gearman_return_t ret;
1269 if (timeout > 0)
1270 {
1271 char timeout_buffer[11];
1272 snprintf(timeout_buffer, sizeof(timeout_buffer), "%u", timeout);
1273 args[0]= function->name();
1274 args_size[0]= function->length() + 1;
1275 args[1]= timeout_buffer;
1276 args_size[1]= strlen(timeout_buffer);
1277 ret= gearman_packet_create_args(worker->universal, function->packet(),
1278 GEARMAN_MAGIC_REQUEST,
1279 GEARMAN_COMMAND_CAN_DO_TIMEOUT,
1280 args, args_size, 2);
1281 }
1282 else1264 else
1283 {1265 {
1284 args[0]= function->name();1266 gearman_error(worker->universal, GEARMAN_INVALID_ARGUMENT, "invalid function");
1285 args_size[0]= function->length();1267 }
1286 ret= gearman_packet_create_args(worker->universal, function->packet(),1268
1287 GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CAN_DO,1269 return GEARMAN_INVALID_ARGUMENT;
1288 args, args_size, 1);1270 }
1289 }1271
12901272 _worker_function_st *function= make(worker->universal._namespace, function_name, function_length, function_arg, context);
1291 if (gearman_failed(ret))1273 if (function == NULL)
1292 {1274 {
1293 delete function;1275 gearman_perror(worker->universal, "_worker_function_st::new()");
12941276 return GEARMAN_MEMORY_ALLOCATION_FAILURE;
1295 return ret;1277 }
1296 }1278
12971279 gearman_return_t ret;
1298 if (worker->function_list)1280 if (timeout > 0)
1299 {1281 {
1300 worker->function_list->prev= function;1282 char timeout_buffer[11];
1301 }1283 snprintf(timeout_buffer, sizeof(timeout_buffer), "%u", timeout);
13021284 args[0]= function->name();
1303 function->next= worker->function_list;1285 args_size[0]= function->length() + 1;
1304 function->prev= NULL;1286 args[1]= timeout_buffer;
1305 worker->function_list= function;1287 args_size[1]= strlen(timeout_buffer);
1306 worker->function_count++;1288 ret= gearman_packet_create_args(worker->universal, function->packet(),
13071289 GEARMAN_MAGIC_REQUEST,
1308 worker->options.change= true;1290 GEARMAN_COMMAND_CAN_DO_TIMEOUT,
13091291 args, args_size, 2);
1310 return GEARMAN_SUCCESS;1292 }
1311 }1293 else
13121294 {
1313 return GEARMAN_INVALID_ARGUMENT;1295 args[0]= function->name();
1296 args_size[0]= function->length();
1297 ret= gearman_packet_create_args(worker->universal, function->packet(),
1298 GEARMAN_MAGIC_REQUEST, GEARMAN_COMMAND_CAN_DO,
1299 args, args_size, 1);
1300 }
1301
1302 if (gearman_failed(ret))
1303 {
1304 delete function;
1305
1306 return ret;
1307 }
1308
1309 if (worker->function_list)
1310 {
1311 worker->function_list->prev= function;
1312 }
1313
1314 function->next= worker->function_list;
1315 function->prev= NULL;
1316 worker->function_list= function;
1317 worker->function_count++;
1318
1319 worker->options.change= true;
1320
1321 return GEARMAN_SUCCESS;
1314}1322}
13151323
1316static void _worker_function_free(Worker* worker,1324static void _worker_function_free(Worker* worker,
@@ -1354,8 +1362,16 @@
1354{1362{
1355 if (worker_shell and worker_shell->impl())1363 if (worker_shell and worker_shell->impl())
1356 {1364 {
1365 Worker* worker= worker_shell->impl();
1357 gearman_string_t option= { option_arg, option_arg_size };1366 gearman_string_t option= { option_arg, option_arg_size };
1358 return gearman_request_option(worker_shell->impl()->universal, option);1367
1368 if (gearman_success(gearman_server_option(worker->universal, option)))
1369 {
1370 if (gearman_request_option(worker->universal, option))
1371 {
1372 return true;
1373 }
1374 }
1359 }1375 }
13601376
1361 return false;1377 return false;
13621378
=== modified file 'libgearman/worker.hpp'
--- libgearman/worker.hpp 2013-07-06 00:33:10 +0000
+++ libgearman/worker.hpp 2013-07-11 21:18:03 +0000
@@ -43,6 +43,15 @@
4343
44#include <stdexcept>44#include <stdexcept>
4545
46namespace {
47
48inline void all_worker_PRINTER(const char *line, gearman_verbose_t verbose, void*)
49{
50 fprintf(stderr, "%s:%d WORKER %s(%s)\n", __FILE__, __LINE__, gearman_verbose_name(verbose), line);
51}
52
53}
54
46namespace org { namespace gearmand { namespace libgearman {55namespace org { namespace gearmand { namespace libgearman {
4756
48class Worker {57class Worker {
@@ -55,6 +64,7 @@
55 {64 {
56 throw std::runtime_error("gearman_worker_create() failed");65 throw std::runtime_error("gearman_worker_create() failed");
57 }66 }
67 enable_logging();
5868
59 enable_ssl();69 enable_ssl();
60 }70 }
@@ -67,6 +77,8 @@
67 {77 {
68 throw std::runtime_error("gearman_worker_create() failed");78 throw std::runtime_error("gearman_worker_create() failed");
69 }79 }
80 enable_logging();
81
70 gearman_worker_add_server(_worker, "localhost", arg);82 gearman_worker_add_server(_worker, "localhost", arg);
7183
72 enable_ssl();84 enable_ssl();
@@ -87,6 +99,15 @@
87 gearman_worker_free(_worker);99 gearman_worker_free(_worker);
88 }100 }
89101
102 void enable_logging()
103 {
104 if (getenv("YATL_WORKER_LOGGING"))
105 {
106 gearman_log_fn *func= all_worker_PRINTER;
107 gearman_worker_set_log_fn(_worker, func, NULL, GEARMAN_VERBOSE_ERROR);
108 }
109 }
110
90 void enable_ssl()111 void enable_ssl()
91 { 112 {
92 if (getenv("GEARMAND_CA_CERTIFICATE"))113 if (getenv("GEARMAND_CA_CERTIFICATE"))
93114
=== modified file 'tests/libgearman-1.0/gearman_execute_partition.cc'
--- tests/libgearman-1.0/gearman_execute_partition.cc 2013-07-10 10:54:09 +0000
+++ tests/libgearman-1.0/gearman_execute_partition.cc 2013-07-11 21:18:03 +0000
@@ -55,7 +55,7 @@
55#pragma GCC diagnostic ignored "-Wold-style-cast"55#pragma GCC diagnostic ignored "-Wold-style-cast"
56#endif56#endif
5757
58#define WORKER_FUNCTION_NAME "client_test"58#define WORKER_FUNCTION_NAME "partition_client_test"
59#define WORKER_SPLIT_FUNCTION_NAME "split_worker"59#define WORKER_SPLIT_FUNCTION_NAME "split_worker"
6060
61test_return_t partition_SETUP(void *object)61test_return_t partition_SETUP(void *object)
@@ -105,7 +105,7 @@
105105
106 // Test client as NULL106 // Test client as NULL
107 gearman_task_st *task= gearman_execute_by_partition(NULL,107 gearman_task_st *task= gearman_execute_by_partition(NULL,
108 test_literal_param("split_worker"),108 test_literal_param(WORKER_SPLIT_FUNCTION_NAME),
109 test_literal_param(WORKER_FUNCTION_NAME),109 test_literal_param(WORKER_FUNCTION_NAME),
110 NULL, 0, // unique110 NULL, 0, // unique
111 NULL,111 NULL,
@@ -141,7 +141,7 @@
141 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt"));141 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt"));
142142
143 gearman_task_st *task= gearman_execute_by_partition(client,143 gearman_task_st *task= gearman_execute_by_partition(client,
144 test_literal_param("split_worker"),144 test_literal_param(WORKER_SPLIT_FUNCTION_NAME),
145 test_literal_param(WORKER_FUNCTION_NAME),145 test_literal_param(WORKER_FUNCTION_NAME),
146 NULL, 0, // unique146 NULL, 0, // unique
147 NULL,147 NULL,
@@ -151,7 +151,7 @@
151 gearman_result_st *result= gearman_task_result(task);151 gearman_result_st *result= gearman_task_result(task);
152 ASSERT_TRUE(result);152 ASSERT_TRUE(result);
153 const char *value= gearman_result_value(result);153 const char *value= gearman_result_value(result);
154 test_truth(value);154 ASSERT_TRUE(value);
155 ASSERT_EQ(18UL, gearman_result_size(result));155 ASSERT_EQ(18UL, gearman_result_size(result));
156156
157 gearman_task_free(task);157 gearman_task_free(task);
@@ -171,14 +171,14 @@
171 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt mapper_fail"));171 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt mapper_fail"));
172172
173 gearman_task_st *task= gearman_execute_by_partition(client,173 gearman_task_st *task= gearman_execute_by_partition(client,
174 test_literal_param("split_worker"),174 test_literal_param(WORKER_SPLIT_FUNCTION_NAME),
175 gearman_string_param_cstr(worker_function),175 gearman_string_param_cstr(worker_function),
176 NULL, 0, // unique176 NULL, 0, // unique
177 NULL,177 NULL,
178 &workload, 0);178 &workload, 0);
179 test_true(task);179 test_true(task);
180180
181 ASSERT_EQ(GEARMAN_WORK_FAIL, gearman_task_return(task));181 ASSERT_EQ(GEARMAN_WORK_EXCEPTION, gearman_task_return(task));
182182
183 gearman_task_free(task);183 gearman_task_free(task);
184 gearman_client_task_free_all(client);184 gearman_client_task_free_all(client);
@@ -196,7 +196,7 @@
196 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt fail"));196 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt fail"));
197197
198 gearman_task_st *task= gearman_execute_by_partition(client,198 gearman_task_st *task= gearman_execute_by_partition(client,
199 test_literal_param("split_worker"),199 test_literal_param(WORKER_SPLIT_FUNCTION_NAME),
200 gearman_string_param_cstr(worker_function),200 gearman_string_param_cstr(worker_function),
201 NULL, 0, // unique201 NULL, 0, // unique
202 NULL,202 NULL,
@@ -224,7 +224,7 @@
224 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt"));224 gearman_argument_t workload= gearman_argument_make(0, 0, test_literal_param("this dog does not hunt"));
225225
226 gearman_task_st *task= gearman_execute(client,226 gearman_task_st *task= gearman_execute(client,
227 test_literal_param("split_worker"),227 test_literal_param(WORKER_SPLIT_FUNCTION_NAME),
228 NULL, 0, // unique228 NULL, 0, // unique
229 NULL,229 NULL,
230 &workload, 0);230 &workload, 0);
231231
=== modified file 'tests/protocol.cc'
--- tests/protocol.cc 2013-06-27 22:23:44 +0000
+++ tests/protocol.cc 2013-07-11 21:18:03 +0000
@@ -70,6 +70,7 @@
7070
71 gearman_universal_st universal;71 gearman_universal_st universal;
72 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);72 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);
73 universal.ssl(libtest::is_ssl());
7374
74 gearman_packet_st message;75 gearman_packet_st message;
7576
@@ -111,6 +112,7 @@
111112
112 gearman_universal_st universal;113 gearman_universal_st universal;
113 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);114 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);
115 universal.ssl(libtest::is_ssl());
114116
115 gearman_packet_st message;117 gearman_packet_st message;
116118
@@ -152,6 +154,7 @@
152154
153 gearman_universal_st universal;155 gearman_universal_st universal;
154 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);156 gearman_set_log_fn(universal, error_logger, NULL, GEARMAN_VERBOSE_ERROR);
157 universal.ssl(libtest::is_ssl());
155158
156 gearman_packet_st message;159 gearman_packet_st message;
157160
158161
=== modified file 'tests/start_worker.cc'
--- tests/start_worker.cc 2013-05-07 09:50:42 +0000
+++ tests/start_worker.cc 2013-07-11 21:18:03 +0000
@@ -165,16 +165,9 @@
165 gearman_worker_set_namespace(&worker, context->namespace_key.c_str(), context->namespace_key.length());165 gearman_worker_set_namespace(&worker, context->namespace_key.c_str(), context->namespace_key.length());
166 }166 }
167167
168 // Check for a working server by "asking" it for an option168 // Set worker id
169 {169 {
170 size_t count= 5;170 if (gearman_failed(gearman_worker_set_identifier(&worker, gearman_literal_param("start_worker"))))
171 bool success= false;
172 while (--count and success == false)
173 {
174 success= gearman_worker_set_server_option(&worker, test_literal_param("exceptions"));
175 }
176
177 if (success == false)
178 {171 {
179 Out << "gearman_worker_set_server_option() failed";172 Out << "gearman_worker_set_server_option() failed";
180 context->fail();173 context->fail();
@@ -182,6 +175,14 @@
182 }175 }
183 }176 }
184177
178 // Check for a working server by pinging it with echo
179 if (gearman_failed(gearman_worker_echo(&worker, gearman_literal_param("start_worker"))))
180 {
181 Out << "gearman_worker_set_server_option() failed";
182 context->fail();
183 return;
184 }
185
185 if (gearman_failed(gearman_worker_define_function(&worker,186 if (gearman_failed(gearman_worker_define_function(&worker,
186 context->function_name.c_str(), context->function_name.length(),187 context->function_name.c_str(), context->function_name.length(),
187 context->worker_fn,188 context->worker_fn,
188189
=== modified file 'tests/workers/v2/split.cc'
--- tests/workers/v2/split.cc 2012-10-29 20:00:10 +0000
+++ tests/workers/v2/split.cc 2013-07-11 21:18:03 +0000
@@ -62,16 +62,16 @@
62 {62 {
63 if (int(workload[x]) == 0 or int(workload[x]) == int(' '))63 if (int(workload[x]) == 0 or int(workload[x]) == int(' '))
64 {64 {
65 if ((workload +x -chunk_begin) == 11 and not memcmp(chunk_begin, test_literal_param("mapper_fail")))65 if ((workload +x -chunk_begin) == 11 and memcmp(chunk_begin, test_literal_param("mapper_fail") == 0))
66 {66 {
67 return GEARMAN_FAIL;67 return gearman_job_send_exception(job, test_literal_param("Error occured on purpose"));
68 }68 }
6969
70 // NULL Chunk70 // NULL Chunk
71 gearman_return_t rc= gearman_job_send_data(job, chunk_begin, workload +x -chunk_begin);71 gearman_return_t rc= gearman_job_send_data(job, chunk_begin, workload +x -chunk_begin);
72 if (gearman_failed(rc))72 if (gearman_failed(rc))
73 {73 {
74 return GEARMAN_FAIL;74 return gearman_job_send_exception(job, test_literal_param("gearman_job_send_data() failed"));
75 }75 }
7676
77 chunk_begin= workload +x +1;77 chunk_begin= workload +x +1;
@@ -82,16 +82,15 @@
82 {82 {
83 if ((size_t(workload +workload_size) -size_t(chunk_begin) ) == 11 and not memcmp(chunk_begin, test_literal_param("mapper_fail")))83 if ((size_t(workload +workload_size) -size_t(chunk_begin) ) == 11 and not memcmp(chunk_begin, test_literal_param("mapper_fail")))
84 {84 {
85 return GEARMAN_FAIL;85 return gearman_job_send_exception(job, test_literal_param("Error occured on purpose"));
86 }86 }
8787
88 gearman_return_t rc= gearman_job_send_data(job, chunk_begin, size_t(workload +workload_size) -size_t(chunk_begin));88 gearman_return_t rc= gearman_job_send_data(job, chunk_begin, size_t(workload +workload_size) -size_t(chunk_begin));
89 if (gearman_failed(rc))89 if (gearman_failed(rc))
90 {90 {
91 return GEARMAN_FAIL;91 return gearman_job_send_exception(job, test_literal_param("gearman_job_send_data() failed"));
92 }92 }
93 }93 }
9494
95 return GEARMAN_SUCCESS;95 return GEARMAN_SUCCESS;
96}96}
97

Subscribers

People subscribed via source and target branches

to all changes: