Merge lp:~brianaker/gearmand/current-osx-fixes into lp:gearmand
- current-osx-fixes
- Merge into 1.2
Proposed by
Brian Aker
Status: | Needs review |
---|---|
Proposed branch: | lp:~brianaker/gearmand/current-osx-fixes |
Merge into: | lp:gearmand |
Diff against target: |
635 lines (+150/-38) 21 files modified
.bzrignore (+1/-0) configure.ac (+2/-0) libgearman/check.cc (+6/-0) libgearman/client.cc (+3/-3) libgearman/command.cc (+8/-0) libgearman/error_code.cc (+5/-0) libgearman/job.cc (+2/-0) libtest/collection.cc (+12/-0) libtest/collection.h (+2/-0) libtest/framework.cc (+10/-0) libtest/framework.h (+3/-1) libtest/include.am (+4/-2) libtest/lite.h (+28/-0) libtest/run.gdb (+1/-1) libtest/server.cc (+2/-0) libtest/signal.cc (+33/-9) libtest/signal.h (+7/-0) m4/ax_debug.m4 (+4/-5) m4/ax_harden_compiler_flags.m4 (+15/-16) tests/libgearman-1.0/fork.cc (+1/-0) tests/libgearman-1.0/unique.cc (+1/-1) |
To merge this branch: | bzr merge lp:~brianaker/gearmand/current-osx-fixes |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tangent Trunk | Pending | ||
Review via email: mp+216087@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Unmerged revisions
- 915. By Brian Aker
-
Extend signal to tell which test blew up. Additionally in case where we run out of memory don't try allocating for strsignal.
- 914. By Brian Aker
-
Don't test fork when running under GDB.
- 913. By Brian Aker
-
Add support for ASSERT and test of zero.
- 912. By Brian Aker
-
Fix how we test for building directories required during testing.
- 911. By Brian Aker
-
Fix for code that was not being touched.
- 910. By Brian Aker
-
Fixes for latest clang.
- 909. By Brian Aker
-
Add sphinx and virtual to handle caes.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' | |||
2 | --- .bzrignore 2014-02-16 02:15:49 +0000 | |||
3 | +++ .bzrignore 2014-04-16 12:49:38 +0000 | |||
4 | @@ -150,3 +150,4 @@ | |||
5 | 150 | tests/worker_test | 150 | tests/worker_test |
6 | 151 | tmp_chroot | 151 | tmp_chroot |
7 | 152 | valgrind*xml | 152 | valgrind*xml |
8 | 153 | docs/build/* | ||
9 | 153 | 154 | ||
10 | === modified file 'configure.ac' | |||
11 | --- configure.ac 2014-02-16 02:15:49 +0000 | |||
12 | +++ configure.ac 2014-04-16 12:49:38 +0000 | |||
13 | @@ -118,6 +118,8 @@ | |||
14 | 118 | AC_CHECK_PROGS([OPENSSL],[openssl]) | 118 | AC_CHECK_PROGS([OPENSSL],[openssl]) |
15 | 119 | AC_CHECK_PROGS([VALGRIND],['valgrind']) | 119 | AC_CHECK_PROGS([VALGRIND],['valgrind']) |
16 | 120 | AC_CHECK_PROGS([WINE],['wine']) | 120 | AC_CHECK_PROGS([WINE],['wine']) |
17 | 121 | AC_CHECK_PROGS([SPHINX],['sphinx-build']) | ||
18 | 122 | AC_CHECK_PROGS([VIRTUALENV],['virtualenv']) | ||
19 | 121 | AC_CHECK_PROGS([RPMBUILD],[rpmbuild --nocheck]) | 123 | AC_CHECK_PROGS([RPMBUILD],[rpmbuild --nocheck]) |
20 | 122 | AC_CHECK_PROGS([RPMDEV_SETUPTREE],[rpmdev-setuptree]) | 124 | AC_CHECK_PROGS([RPMDEV_SETUPTREE],[rpmdev-setuptree]) |
21 | 123 | AC_CHECK_PROGS([RPM],[rpm]) | 125 | AC_CHECK_PROGS([RPM],[rpm]) |
22 | 124 | 126 | ||
23 | === modified file 'libgearman/check.cc' | |||
24 | --- libgearman/check.cc 2013-07-10 10:54:09 +0000 | |||
25 | +++ libgearman/check.cc 2014-04-16 12:49:38 +0000 | |||
26 | @@ -39,6 +39,12 @@ | |||
27 | 39 | 39 | ||
28 | 40 | #include "libgearman/common.h" | 40 | #include "libgearman/common.h" |
29 | 41 | 41 | ||
30 | 42 | #if defined(__clang__) | ||
31 | 43 | # pragma clang diagnostic push | ||
32 | 44 | # pragma clang diagnostic ignored "-Wunknown-pragmas" | ||
33 | 45 | # pragma clang diagnostic ignored "-Wdeprecated-register" | ||
34 | 46 | #endif | ||
35 | 47 | |||
36 | 42 | #include "libgearman/error_code.h" | 48 | #include "libgearman/error_code.h" |
37 | 43 | 49 | ||
38 | 44 | #include <algorithm> | 50 | #include <algorithm> |
39 | 45 | 51 | ||
40 | === modified file 'libgearman/client.cc' | |||
41 | --- libgearman/client.cc 2013-11-07 09:30:17 +0000 | |||
42 | +++ libgearman/client.cc 2014-04-16 12:49:38 +0000 | |||
43 | @@ -599,7 +599,7 @@ | |||
44 | 599 | { | 599 | { |
45 | 600 | Client* client= client_shell->impl(); | 600 | Client* client= client_shell->impl(); |
46 | 601 | 601 | ||
48 | 602 | if (gearman_connection_create(client->universal, host, port) == false) | 602 | if (gearman_connection_create(client->universal, host, port) == NULL) |
49 | 603 | { | 603 | { |
50 | 604 | assert(client->error_code() != GEARMAN_SUCCESS); | 604 | assert(client->error_code() != GEARMAN_SUCCESS); |
51 | 605 | return client->error_code(); | 605 | return client->error_code(); |
52 | @@ -614,7 +614,7 @@ | |||
53 | 614 | 614 | ||
54 | 615 | gearman_return_t Client::add_server(const char *host, const char* service_) | 615 | gearman_return_t Client::add_server(const char *host, const char* service_) |
55 | 616 | { | 616 | { |
57 | 617 | if (gearman_connection_create(universal, host, service_) == false) | 617 | if (gearman_connection_create(universal, host, service_) == NULL) |
58 | 618 | { | 618 | { |
59 | 619 | assert(error_code() != GEARMAN_SUCCESS); | 619 | assert(error_code() != GEARMAN_SUCCESS); |
60 | 620 | return error_code(); | 620 | return error_code(); |
61 | @@ -946,7 +946,7 @@ | |||
62 | 946 | *denominator= do_task->impl()->denominator; | 946 | *denominator= do_task->impl()->denominator; |
63 | 947 | } | 947 | } |
64 | 948 | 948 | ||
66 | 949 | if (is_known == false and is_running == false) | 949 | if (0) |
67 | 950 | { | 950 | { |
68 | 951 | if (do_task->impl()->options.is_running) | 951 | if (do_task->impl()->options.is_running) |
69 | 952 | { | 952 | { |
70 | 953 | 953 | ||
71 | === modified file 'libgearman/command.cc' | |||
72 | --- libgearman/command.cc 2013-07-26 18:56:28 +0000 | |||
73 | +++ libgearman/command.cc 2014-04-16 12:49:38 +0000 | |||
74 | @@ -40,7 +40,15 @@ | |||
75 | 40 | #include <libgearman/common.h> | 40 | #include <libgearman/common.h> |
76 | 41 | 41 | ||
77 | 42 | #include <libgearman-1.0/visibility.h> | 42 | #include <libgearman-1.0/visibility.h> |
78 | 43 | |||
79 | 44 | #if defined(__clang__) | ||
80 | 45 | # pragma clang diagnostic push | ||
81 | 46 | # pragma clang diagnostic ignored "-Wunknown-pragmas" | ||
82 | 47 | # pragma clang diagnostic ignored "-Wdeprecated-register" | ||
83 | 48 | #endif | ||
84 | 49 | |||
85 | 43 | #include "libgearman/command.hpp" | 50 | #include "libgearman/command.hpp" |
86 | 51 | |||
87 | 44 | #include "libgearman/strcommand.h" | 52 | #include "libgearman/strcommand.h" |
88 | 45 | 53 | ||
89 | 46 | #include "libgearman/assert.hpp" | 54 | #include "libgearman/assert.hpp" |
90 | 47 | 55 | ||
91 | === modified file 'libgearman/error_code.cc' | |||
92 | --- libgearman/error_code.cc 2013-07-26 18:56:28 +0000 | |||
93 | +++ libgearman/error_code.cc 2014-04-16 12:49:38 +0000 | |||
94 | @@ -38,6 +38,11 @@ | |||
95 | 38 | #include "gear_config.h" | 38 | #include "gear_config.h" |
96 | 39 | 39 | ||
97 | 40 | #include "libgearman/error_code.h" | 40 | #include "libgearman/error_code.h" |
98 | 41 | #if defined(__clang__) | ||
99 | 42 | # pragma clang diagnostic push | ||
100 | 43 | # pragma clang diagnostic ignored "-Wunknown-pragmas" | ||
101 | 44 | # pragma clang diagnostic ignored "-Wdeprecated-register" | ||
102 | 45 | #endif | ||
103 | 41 | #include "libgearman/error_code.hpp" | 46 | #include "libgearman/error_code.hpp" |
104 | 42 | 47 | ||
105 | 43 | #include "libgearman-1.0/visibility.h" | 48 | #include "libgearman-1.0/visibility.h" |
106 | 44 | 49 | ||
107 | === modified file 'libgearman/job.cc' | |||
108 | --- libgearman/job.cc 2013-09-18 00:51:13 +0000 | |||
109 | +++ libgearman/job.cc 2014-04-16 12:49:38 +0000 | |||
110 | @@ -318,6 +318,7 @@ | |||
111 | 318 | return NULL; | 318 | return NULL; |
112 | 319 | } | 319 | } |
113 | 320 | 320 | ||
114 | 321 | #if 0 | ||
115 | 321 | static inline void gearman_job_reset_error(Job* job) | 322 | static inline void gearman_job_reset_error(Job* job) |
116 | 322 | { | 323 | { |
117 | 323 | if (job) | 324 | if (job) |
118 | @@ -325,6 +326,7 @@ | |||
119 | 325 | gearman_worker_reset_error(job->_worker); | 326 | gearman_worker_reset_error(job->_worker); |
120 | 326 | } | 327 | } |
121 | 327 | } | 328 | } |
122 | 329 | #endif | ||
123 | 328 | 330 | ||
124 | 329 | gearman_return_t gearman_job_send_data(gearman_job_st *job_shell, const void *data, size_t data_size) | 331 | gearman_return_t gearman_job_send_data(gearman_job_st *job_shell, const void *data, size_t data_size) |
125 | 330 | { | 332 | { |
126 | 331 | 333 | ||
127 | === modified file 'libtest/collection.cc' | |||
128 | --- libtest/collection.cc 2013-07-02 18:19:31 +0000 | |||
129 | +++ libtest/collection.cc 2014-04-16 12:49:38 +0000 | |||
130 | @@ -174,6 +174,18 @@ | |||
131 | 174 | format(); | 174 | format(); |
132 | 175 | } | 175 | } |
133 | 176 | 176 | ||
134 | 177 | void Collection::current_test(std::string& arg) | ||
135 | 178 | { | ||
136 | 179 | if (case_iter != _testcases.end()) | ||
137 | 180 | { | ||
138 | 181 | arg+= name() + std::string(".") + (*case_iter)->name(); | ||
139 | 182 | } | ||
140 | 183 | else | ||
141 | 184 | { | ||
142 | 185 | arg+= name(); | ||
143 | 186 | } | ||
144 | 187 | } | ||
145 | 188 | |||
146 | 177 | test_return_t Collection::exec() | 189 | test_return_t Collection::exec() |
147 | 178 | { | 190 | { |
148 | 179 | // Write out any headers required by formatting. | 191 | // Write out any headers required by formatting. |
149 | 180 | 192 | ||
150 | === modified file 'libtest/collection.h' | |||
151 | --- libtest/collection.h 2013-08-03 07:38:29 +0000 | |||
152 | +++ libtest/collection.h 2014-04-16 12:49:38 +0000 | |||
153 | @@ -67,6 +67,8 @@ | |||
154 | 67 | return _name.c_str(); | 67 | return _name.c_str(); |
155 | 68 | } | 68 | } |
156 | 69 | 69 | ||
157 | 70 | void current_test(std::string&); | ||
158 | 71 | |||
159 | 70 | TestCases& tests() | 72 | TestCases& tests() |
160 | 71 | { | 73 | { |
161 | 72 | return _testcases; | 74 | return _testcases; |
162 | 73 | 75 | ||
163 | === modified file 'libtest/framework.cc' | |||
164 | --- libtest/framework.cc 2013-08-03 07:38:29 +0000 | |||
165 | +++ libtest/framework.cc 2014-04-16 12:49:38 +0000 | |||
166 | @@ -152,6 +152,13 @@ | |||
167 | 152 | _formatter.push_back(new libtest::TAP(this, tap_file)); | 152 | _formatter.push_back(new libtest::TAP(this, tap_file)); |
168 | 153 | } | 153 | } |
169 | 154 | _formatter.push_back(new libtest::Legacy(this, std::cout)); | 154 | _formatter.push_back(new libtest::Legacy(this, std::cout)); |
170 | 155 | |||
171 | 156 | _signal.frame(this); | ||
172 | 157 | } | ||
173 | 158 | |||
174 | 159 | const std::string& Framework::current_test() | ||
175 | 160 | { | ||
176 | 161 | return _test_name; | ||
177 | 155 | } | 162 | } |
178 | 156 | 163 | ||
179 | 157 | void Framework::collections(collection_st collections_[]) | 164 | void Framework::collections(collection_st collections_[]) |
180 | @@ -202,6 +209,9 @@ | |||
181 | 202 | continue; | 209 | continue; |
182 | 203 | } | 210 | } |
183 | 204 | 211 | ||
184 | 212 | _test_name= name() + "."; | ||
185 | 213 | (*iter)->current_test(_test_name); | ||
186 | 214 | |||
187 | 205 | _total++; | 215 | _total++; |
188 | 206 | 216 | ||
189 | 207 | #if defined(DEBUG) && DEBUG | 217 | #if defined(DEBUG) && DEBUG |
190 | 208 | 218 | ||
191 | === modified file 'libtest/framework.h' | |||
192 | --- libtest/framework.h 2013-07-02 12:18:03 +0000 | |||
193 | +++ libtest/framework.h 2014-04-16 12:49:38 +0000 | |||
194 | @@ -63,6 +63,8 @@ | |||
195 | 63 | return _name; | 63 | return _name; |
196 | 64 | } | 64 | } |
197 | 65 | 65 | ||
198 | 66 | const std::string& current_test(); | ||
199 | 67 | |||
200 | 66 | void create(test_callback_create_fn* arg) | 68 | void create(test_callback_create_fn* arg) |
201 | 67 | { | 69 | { |
202 | 68 | _create= arg; | 70 | _create= arg; |
203 | @@ -200,7 +202,7 @@ | |||
204 | 200 | libtest::Formatters _formatter; | 202 | libtest::Formatters _formatter; |
205 | 201 | std::ofstream xml_file; | 203 | std::ofstream xml_file; |
206 | 202 | std::ofstream tap_file; | 204 | std::ofstream tap_file; |
208 | 203 | 205 | std::string _test_name; | |
209 | 204 | }; | 206 | }; |
210 | 205 | 207 | ||
211 | 206 | } // namespace libtest | 208 | } // namespace libtest |
212 | 207 | 209 | ||
213 | === modified file 'libtest/include.am' | |||
214 | --- libtest/include.am 2014-02-13 12:58:32 +0000 | |||
215 | +++ libtest/include.am 2014-04-16 12:49:38 +0000 | |||
216 | @@ -188,12 +188,14 @@ | |||
217 | 188 | libtest_libtest_la_SOURCES+= libtest/blobslap_worker.cc | 188 | libtest_libtest_la_SOURCES+= libtest/blobslap_worker.cc |
218 | 189 | endif | 189 | endif |
219 | 190 | 190 | ||
221 | 191 | TMP_DIR := tmp_chroot/etc tmp_chroot/var/log tmp_chroot/var/tmp tmp_chroot/var/run tmp_chroot/var/drizzle | 191 | TMP_DIR_NAMES := tmp_chroot/etc tmp_chroot/var/log tmp_chroot/var/tmp tmp_chroot/var/run tmp_chroot/var/drizzle |
222 | 192 | TMP_DIR= $(addsuffix /$(am__dirstamp), $(TMP_DIR_NAMES)) | ||
223 | 192 | 193 | ||
224 | 193 | BUILT_SOURCES+= $(TMP_DIR) | 194 | BUILT_SOURCES+= $(TMP_DIR) |
225 | 194 | 195 | ||
226 | 195 | $(TMP_DIR): | 196 | $(TMP_DIR): |
228 | 196 | @$(mkdir_p) $(TMP_DIR) | 197 | @$(mkdir_p) $(@D) |
229 | 198 | @touch $@ | ||
230 | 197 | 199 | ||
231 | 198 | # Declare unittest so that we can append to it | 200 | # Declare unittest so that we can append to it |
232 | 199 | t_unittest_CXXFLAGS= | 201 | t_unittest_CXXFLAGS= |
233 | 200 | 202 | ||
234 | === modified file 'libtest/lite.h' | |||
235 | --- libtest/lite.h 2014-01-31 02:41:41 +0000 | |||
236 | +++ libtest/lite.h 2014-04-16 12:49:38 +0000 | |||
237 | @@ -120,6 +120,22 @@ | |||
238 | 120 | return strcmp(s1, s2); | 120 | return strcmp(s1, s2); |
239 | 121 | } | 121 | } |
240 | 122 | 122 | ||
241 | 123 | #define ASSERT_(...) \ | ||
242 | 124 | do \ | ||
243 | 125 | { \ | ||
244 | 126 | { \ | ||
245 | 127 | size_t ask= snprintf(0, 0, __VA_ARGS__); \ | ||
246 | 128 | ask++; \ | ||
247 | 129 | char *buffer= (char*)alloca(sizeof(char) * ask); \ | ||
248 | 130 | snprintf(buffer, ask, __VA_ARGS__); \ | ||
249 | 131 | if (YATL_FULL) { \ | ||
250 | 132 | FAIL("Assert [ %s ]", buffer); \ | ||
251 | 133 | } \ | ||
252 | 134 | fprintf(stderr, "\n%s:%d: %s Assert [ %s ]\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, buffer); \ | ||
253 | 135 | exit(EXIT_FAILURE); \ | ||
254 | 136 | } \ | ||
255 | 137 | } while (0) | ||
256 | 138 | |||
257 | 123 | #define SKIP_IF(__expression) \ | 139 | #define SKIP_IF(__expression) \ |
258 | 124 | do \ | 140 | do \ |
259 | 125 | { \ | 141 | { \ |
260 | @@ -189,6 +205,18 @@ | |||
261 | 189 | } \ | 205 | } \ |
262 | 190 | } while (0) | 206 | } while (0) |
263 | 191 | 207 | ||
264 | 208 | #define ASSERT_ZERO(__expression) \ | ||
265 | 209 | do \ | ||
266 | 210 | { \ | ||
267 | 211 | if ((__expression) != 0) { \ | ||
268 | 212 | if (YATL_FULL) { \ | ||
269 | 213 | FAIL("Assertion ('%s') == 0", #__expression); \ | ||
270 | 214 | } \ | ||
271 | 215 | fprintf(stderr, "\n%s:%d: %s Assertion '(%s) == 0'\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, #__expression);\ | ||
272 | 216 | exit(EXIT_FAILURE); \ | ||
273 | 217 | } \ | ||
274 | 218 | } while (0) | ||
275 | 219 | |||
276 | 192 | #define ASSERT_FALSE(__expression) \ | 220 | #define ASSERT_FALSE(__expression) \ |
277 | 193 | do \ | 221 | do \ |
278 | 194 | { \ | 222 | { \ |
279 | 195 | 223 | ||
280 | === modified file 'libtest/run.gdb' | |||
281 | --- libtest/run.gdb 2013-07-10 01:57:34 +0000 | |||
282 | +++ libtest/run.gdb 2014-04-16 12:49:38 +0000 | |||
283 | @@ -8,7 +8,7 @@ | |||
284 | 8 | set logging overwrite on | 8 | set logging overwrite on |
285 | 9 | set environment LIBTEST_IN_GDB=1 | 9 | set environment LIBTEST_IN_GDB=1 |
286 | 10 | #set ASAN_OPTIONS=abort_on_error=1 | 10 | #set ASAN_OPTIONS=abort_on_error=1 |
288 | 11 | set detach-on-fork on | 11 | #set detach-on-fork on |
289 | 12 | handle SIGVTALRM stop | 12 | handle SIGVTALRM stop |
290 | 13 | run | 13 | run |
291 | 14 | thread apply all bt | 14 | thread apply all bt |
292 | 15 | 15 | ||
293 | === modified file 'libtest/server.cc' | |||
294 | --- libtest/server.cc 2013-05-30 18:20:15 +0000 | |||
295 | +++ libtest/server.cc 2014-04-16 12:49:38 +0000 | |||
296 | @@ -50,11 +50,13 @@ | |||
297 | 50 | #include <unistd.h> | 50 | #include <unistd.h> |
298 | 51 | 51 | ||
299 | 52 | // trim from end | 52 | // trim from end |
300 | 53 | #if 0 | ||
301 | 53 | static inline std::string &rtrim(std::string &s) | 54 | static inline std::string &rtrim(std::string &s) |
302 | 54 | { | 55 | { |
303 | 55 | s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end()); | 56 | s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end()); |
304 | 56 | return s; | 57 | return s; |
305 | 57 | } | 58 | } |
306 | 59 | #endif | ||
307 | 58 | 60 | ||
308 | 59 | #include <libtest/server.h> | 61 | #include <libtest/server.h> |
309 | 60 | #include <libtest/stream.h> | 62 | #include <libtest/stream.h> |
310 | 61 | 63 | ||
311 | === modified file 'libtest/signal.cc' | |||
312 | --- libtest/signal.cc 2013-05-11 23:02:06 +0000 | |||
313 | +++ libtest/signal.cc 2014-04-16 12:49:38 +0000 | |||
314 | @@ -45,6 +45,20 @@ | |||
315 | 45 | 45 | ||
316 | 46 | #define MAGIC_MEMORY 123569 | 46 | #define MAGIC_MEMORY 123569 |
317 | 47 | 47 | ||
318 | 48 | namespace { | ||
319 | 49 | char* safe_strsignal(int sig) | ||
320 | 50 | { | ||
321 | 51 | char* tmp= strsignal(sig); | ||
322 | 52 | if (tmp) | ||
323 | 53 | { | ||
324 | 54 | return tmp; | ||
325 | 55 | } | ||
326 | 56 | |||
327 | 57 | return (char*) "strsignal() ran out of memory allocating error"; | ||
328 | 58 | } | ||
329 | 59 | |||
330 | 60 | } | ||
331 | 61 | |||
332 | 48 | bool SignalThread::is_shutdown() | 62 | bool SignalThread::is_shutdown() |
333 | 49 | { | 63 | { |
334 | 50 | bool ret; | 64 | bool ret; |
335 | @@ -90,7 +104,7 @@ | |||
336 | 90 | { | 104 | { |
337 | 91 | fatal_assert(magic_memory == MAGIC_MEMORY); | 105 | fatal_assert(magic_memory == MAGIC_MEMORY); |
338 | 92 | 106 | ||
340 | 93 | if (bool(getenv("LIBTEST_IN_GDB")) == false) | 107 | if (gdb_is_caller() == false) |
341 | 94 | { | 108 | { |
342 | 95 | assert(sigismember(&set, SIGALRM)); | 109 | assert(sigismember(&set, SIGALRM)); |
343 | 96 | assert(sigismember(&set, SIGABRT)); | 110 | assert(sigismember(&set, SIGABRT)); |
344 | @@ -113,6 +127,11 @@ | |||
345 | 113 | return true; | 127 | return true; |
346 | 114 | } | 128 | } |
347 | 115 | 129 | ||
348 | 130 | const std::string& SignalThread::current_test() | ||
349 | 131 | { | ||
350 | 132 | return _frame->current_test(); | ||
351 | 133 | } | ||
352 | 134 | |||
353 | 116 | SignalThread::~SignalThread() | 135 | SignalThread::~SignalThread() |
354 | 117 | { | 136 | { |
355 | 118 | if (is_shutdown() == false) | 137 | if (is_shutdown() == false) |
356 | @@ -155,7 +174,7 @@ | |||
357 | 155 | { | 174 | { |
358 | 156 | case SIGALRM: | 175 | case SIGALRM: |
359 | 157 | case SIGVTALRM: | 176 | case SIGVTALRM: |
361 | 158 | Error << strsignal(sig); | 177 | Error << safe_strsignal(sig) << " for: " << context->current_test(); |
362 | 159 | if (gdb_is_caller()) | 178 | if (gdb_is_caller()) |
363 | 160 | { | 179 | { |
364 | 161 | abort(); | 180 | abort(); |
365 | @@ -182,7 +201,7 @@ | |||
366 | 182 | break; | 201 | break; |
367 | 183 | 202 | ||
368 | 184 | default: | 203 | default: |
370 | 185 | Error << "Signal handling thread got unexpected signal " << strsignal(sig); | 204 | Error << "Signal handling thread got unexpected signal " << safe_strsignal(sig); |
371 | 186 | break; | 205 | break; |
372 | 187 | } | 206 | } |
373 | 188 | } | 207 | } |
374 | @@ -194,11 +213,12 @@ | |||
375 | 194 | 213 | ||
376 | 195 | SignalThread::SignalThread() : | 214 | SignalThread::SignalThread() : |
377 | 196 | magic_memory(MAGIC_MEMORY), | 215 | magic_memory(MAGIC_MEMORY), |
379 | 197 | thread(pthread_self()) | 216 | thread(pthread_self()), |
380 | 217 | _frame(NULL) | ||
381 | 198 | { | 218 | { |
382 | 199 | pthread_mutex_init(&shutdown_mutex, NULL); | 219 | pthread_mutex_init(&shutdown_mutex, NULL); |
383 | 200 | sigemptyset(&set); | 220 | sigemptyset(&set); |
385 | 201 | if (bool(getenv("LIBTEST_IN_GDB")) == false) | 221 | if (gdb_is_caller() == false) |
386 | 202 | { | 222 | { |
387 | 203 | sigaddset(&set, SIGALRM); | 223 | sigaddset(&set, SIGALRM); |
388 | 204 | sigaddset(&set, SIGABRT); | 224 | sigaddset(&set, SIGABRT); |
389 | @@ -216,6 +236,10 @@ | |||
390 | 216 | pthread_sigmask(SIG_BLOCK, NULL, &original_set); | 236 | pthread_sigmask(SIG_BLOCK, NULL, &original_set); |
391 | 217 | } | 237 | } |
392 | 218 | 238 | ||
393 | 239 | void SignalThread::frame(Framework* frame_) | ||
394 | 240 | { | ||
395 | 241 | _frame= frame_; | ||
396 | 242 | } | ||
397 | 219 | 243 | ||
398 | 220 | bool SignalThread::setup() | 244 | bool SignalThread::setup() |
399 | 221 | { | 245 | { |
400 | @@ -223,22 +247,22 @@ | |||
401 | 223 | 247 | ||
402 | 224 | if (sigismember(&original_set, SIGQUIT)) | 248 | if (sigismember(&original_set, SIGQUIT)) |
403 | 225 | { | 249 | { |
405 | 226 | Error << strsignal(SIGQUIT) << " has been previously set."; | 250 | Error << safe_strsignal(SIGQUIT) << " has been previously set."; |
406 | 227 | } | 251 | } |
407 | 228 | 252 | ||
408 | 229 | if (sigismember(&original_set, SIGINT)) | 253 | if (sigismember(&original_set, SIGINT)) |
409 | 230 | { | 254 | { |
411 | 231 | Error << strsignal(SIGINT) << " has been previously set."; | 255 | Error << safe_strsignal(SIGINT) << " has been previously set."; |
412 | 232 | } | 256 | } |
413 | 233 | 257 | ||
414 | 234 | if (sigismember(&original_set, SIGVTALRM)) | 258 | if (sigismember(&original_set, SIGVTALRM)) |
415 | 235 | { | 259 | { |
417 | 236 | Error << strsignal(SIGVTALRM) << " has been previously set."; | 260 | Error << safe_strsignal(SIGVTALRM) << " has been previously set."; |
418 | 237 | } | 261 | } |
419 | 238 | 262 | ||
420 | 239 | if (sigismember(&original_set, SIGUSR2)) | 263 | if (sigismember(&original_set, SIGUSR2)) |
421 | 240 | { | 264 | { |
423 | 241 | Error << strsignal(SIGUSR2) << " has been previously set."; | 265 | Error << safe_strsignal(SIGUSR2) << " has been previously set."; |
424 | 242 | } | 266 | } |
425 | 243 | 267 | ||
426 | 244 | int error; | 268 | int error; |
427 | 245 | 269 | ||
428 | === modified file 'libtest/signal.h' | |||
429 | --- libtest/signal.h 2012-09-10 11:34:03 +0000 | |||
430 | +++ libtest/signal.h 2014-04-16 12:49:38 +0000 | |||
431 | @@ -75,6 +75,13 @@ | |||
432 | 75 | void set_shutdown(shutdown_t arg); | 75 | void set_shutdown(shutdown_t arg); |
433 | 76 | bool is_shutdown(); | 76 | bool is_shutdown(); |
434 | 77 | shutdown_t get_shutdown(); | 77 | shutdown_t get_shutdown(); |
435 | 78 | |||
436 | 79 | const std::string& current_test(); | ||
437 | 80 | |||
438 | 81 | void frame(Framework*); | ||
439 | 82 | |||
440 | 83 | private: | ||
441 | 84 | Framework* _frame; | ||
442 | 78 | }; | 85 | }; |
443 | 79 | 86 | ||
444 | 80 | } // namespace libtest | 87 | } // namespace libtest |
445 | 81 | 88 | ||
446 | === modified file 'm4/ax_debug.m4' | |||
447 | --- m4/ax_debug.m4 2013-11-03 16:45:36 +0000 | |||
448 | +++ m4/ax_debug.m4 2014-04-16 12:49:38 +0000 | |||
449 | @@ -12,7 +12,7 @@ | |||
450 | 12 | # | 12 | # |
451 | 13 | # LICENSE | 13 | # LICENSE |
452 | 14 | # | 14 | # |
454 | 15 | # Copyright (C) 2012 Brian Aker | 15 | # Copyright (C) 2012-2014 Brian Aker |
455 | 16 | # All rights reserved. | 16 | # All rights reserved. |
456 | 17 | # | 17 | # |
457 | 18 | # Redistribution and use in source and binary forms, with or without | 18 | # Redistribution and use in source and binary forms, with or without |
458 | @@ -43,7 +43,7 @@ | |||
459 | 43 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 43 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
460 | 44 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 44 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
461 | 45 | 45 | ||
463 | 46 | #serial 6 | 46 | #serial 7 |
464 | 47 | 47 | ||
465 | 48 | AC_DEFUN([AX_DEBUG], | 48 | AC_DEFUN([AX_DEBUG], |
466 | 49 | [AC_PREREQ([2.63])dnl | 49 | [AC_PREREQ([2.63])dnl |
467 | @@ -52,9 +52,8 @@ | |||
468 | 52 | [Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])], | 52 | [Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])], |
469 | 53 | [ax_enable_debug=yes | 53 | [ax_enable_debug=yes |
470 | 54 | AC_DEFINE([DEBUG],[1],[Define to 1 to enable debugging code.]) | 54 | AC_DEFINE([DEBUG],[1],[Define to 1 to enable debugging code.]) |
474 | 55 | AX_CHECK_LIBRARY([MCHECK],[mcheck.h],[mcheck],[AX_APPEND_LINK_FLAGS([-lmcheck])]) | 55 | AX_ADD_AM_MACRO([AM_YFLAGS += --debug]) |
475 | 56 | AX_ADD_AM_MACRO([--debug],[AM_YFLAGS]) | 56 | AX_ADD_AM_MACRO([AM_CPPFLAGS += -D_GLIBCXX_DEBUG])], |
473 | 57 | AX_ADD_AM_MACRO([-D_GLIBCXX_DEBUG],[AM_CPPFLAGS])], | ||
476 | 58 | [ax_enable_debug=no | 57 | [ax_enable_debug=no |
477 | 59 | AC_SUBST([MCHECK]) | 58 | AC_SUBST([MCHECK]) |
478 | 60 | AC_DEFINE([DEBUG],[0],[Define to 1 to enable debugging code.])]) | 59 | AC_DEFINE([DEBUG],[0],[Define to 1 to enable debugging code.])]) |
479 | 61 | 60 | ||
480 | === modified file 'm4/ax_harden_compiler_flags.m4' | |||
481 | --- m4/ax_harden_compiler_flags.m4 2014-02-01 23:54:09 +0000 | |||
482 | +++ m4/ax_harden_compiler_flags.m4 2014-04-16 12:49:38 +0000 | |||
483 | @@ -11,11 +11,9 @@ | |||
484 | 11 | # | 11 | # |
485 | 12 | # Any compiler flag that "hardens" or tests code. C99 is assumed. | 12 | # Any compiler flag that "hardens" or tests code. C99 is assumed. |
486 | 13 | # | 13 | # |
487 | 14 | # NOTE: Implementation based on AX_APPEND_FLAG. | ||
488 | 15 | # | ||
489 | 16 | # LICENSE | 14 | # LICENSE |
490 | 17 | # | 15 | # |
492 | 18 | # Copyright (C) 2012-2013 Brian Aker | 16 | # Copyright (C) 2012-2014 Brian Aker |
493 | 19 | # All rights reserved. | 17 | # All rights reserved. |
494 | 20 | # | 18 | # |
495 | 21 | # Redistribution and use in source and binary forms, with or without | 19 | # Redistribution and use in source and binary forms, with or without |
496 | @@ -53,7 +51,7 @@ | |||
497 | 53 | # -Wdeclaration-after-statement is counter to C99 | 51 | # -Wdeclaration-after-statement is counter to C99 |
498 | 54 | # _APPEND_COMPILE_FLAGS_ERROR([-pedantic]) | 52 | # _APPEND_COMPILE_FLAGS_ERROR([-pedantic]) |
499 | 55 | 53 | ||
501 | 56 | #serial 13 | 54 | #serial 14 |
502 | 57 | 55 | ||
503 | 58 | AC_DEFUN([_SET_SANITIZE_FLAGS], | 56 | AC_DEFUN([_SET_SANITIZE_FLAGS], |
504 | 59 | [AS_IF([test "x$MINGW" != xyes],[ | 57 | [AS_IF([test "x$MINGW" != xyes],[ |
505 | @@ -106,13 +104,12 @@ | |||
506 | 106 | # Everything above this does the heavy lifting, while what follows does the specifics. | 104 | # Everything above this does the heavy lifting, while what follows does the specifics. |
507 | 107 | 105 | ||
508 | 108 | AC_DEFUN([_HARDEN_LINKER_FLAGS], | 106 | AC_DEFUN([_HARDEN_LINKER_FLAGS], |
510 | 109 | [AS_IF([test "$CC" != "clang"], | 107 | [AS_IF([test "$ax_cv_c_compiler_vendor" != "clang"], |
511 | 110 | [_APPEND_LINK_FLAGS_ERROR([-z relro -z now]) | 108 | [_APPEND_LINK_FLAGS_ERROR([-z relro -z now]) |
512 | 111 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],[AX_APPEND_LINK_FLAGS([-Werror])]) | ||
513 | 112 | AS_IF([test "x$ac_cv_vcs_checkout" = xyes], | 109 | AS_IF([test "x$ac_cv_vcs_checkout" = xyes], |
514 | 113 | [_APPEND_LINK_FLAGS_ERROR([-rdynamic]) | 110 | [_APPEND_LINK_FLAGS_ERROR([-rdynamic]) |
517 | 114 | # AX_APPEND_LINK_FLAGS([--coverage]) | 111 | # AX_APPEND_LINK_FLAGS([--coverage])]) |
518 | 115 | ]) | 112 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],[AX_APPEND_LINK_FLAGS([-Werror])]) |
519 | 116 | ]) | 113 | ]) |
520 | 117 | ]) | 114 | ]) |
521 | 118 | 115 | ||
522 | @@ -125,7 +122,7 @@ | |||
523 | 125 | [thread],[ | 122 | [thread],[ |
524 | 126 | ax_harden_sanitize='thread'], | 123 | ax_harden_sanitize='thread'], |
525 | 127 | [address],[ | 124 | [address],[ |
527 | 128 | ax_harden_sanitize='with_sanitize'], | 125 | ax_harden_sanitize='address'], |
528 | 129 | [ax_harden_sanitize='rest']) | 126 | [ax_harden_sanitize='rest']) |
529 | 130 | ], | 127 | ], |
530 | 131 | [AS_IF([test "x$ax_enable_debug" = xyes],[ax_harden_sanitize='rest'])]) | 128 | [AS_IF([test "x$ax_enable_debug" = xyes],[ax_harden_sanitize='rest'])]) |
531 | @@ -136,7 +133,7 @@ | |||
532 | 136 | 133 | ||
533 | 137 | AS_IF([test "x$ax_enable_debug" = xyes], | 134 | AS_IF([test "x$ax_enable_debug" = xyes], |
534 | 138 | [CFLAGS='' | 135 | [CFLAGS='' |
536 | 139 | _APPEND_COMPILE_FLAGS_ERROR([-H]) | 136 | #_APPEND_COMPILE_FLAGS_ERROR([-H]) |
537 | 140 | _APPEND_COMPILE_FLAGS_ERROR([-g]) | 137 | _APPEND_COMPILE_FLAGS_ERROR([-g]) |
538 | 141 | _APPEND_COMPILE_FLAGS_ERROR([-g3]) | 138 | _APPEND_COMPILE_FLAGS_ERROR([-g3]) |
539 | 142 | _APPEND_COMPILE_FLAGS_ERROR([-fmudflapth]) | 139 | _APPEND_COMPILE_FLAGS_ERROR([-fmudflapth]) |
540 | @@ -155,7 +152,7 @@ | |||
541 | 155 | [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas]) | 152 | [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas]) |
542 | 156 | _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])]) | 153 | _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])]) |
543 | 157 | 154 | ||
545 | 158 | AS_IF([test "$CC" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])]) | 155 | AS_IF([test "$ax_cv_c_compiler_vendor" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])]) |
546 | 159 | 156 | ||
547 | 160 | _APPEND_COMPILE_FLAGS_ERROR([-Wall]) | 157 | _APPEND_COMPILE_FLAGS_ERROR([-Wall]) |
548 | 161 | _APPEND_COMPILE_FLAGS_ERROR([-Wextra]) | 158 | _APPEND_COMPILE_FLAGS_ERROR([-Wextra]) |
549 | @@ -220,6 +217,7 @@ | |||
550 | 220 | _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess]) | 217 | _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess]) |
551 | 221 | _APPEND_COMPILE_FLAGS_ERROR([-Wpacked]) | 218 | _APPEND_COMPILE_FLAGS_ERROR([-Wpacked]) |
552 | 222 | # _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long]) | 219 | # _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long]) |
553 | 220 | _APPEND_COMPILE_FLAGS_ERROR([ftrapv]) | ||
554 | 223 | # GCC 4.5 removed this. | 221 | # GCC 4.5 removed this. |
555 | 224 | # _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code]) | 222 | # _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code]) |
556 | 225 | 223 | ||
557 | @@ -236,7 +234,7 @@ | |||
558 | 236 | ])])])]) | 234 | ])])])]) |
559 | 237 | 235 | ||
560 | 238 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes], | 236 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes], |
562 | 239 | [AX_APPEND_FLAG([-Werror])]) | 237 | [AX_APPEND_COMPILE_FLAGS([-Werror])]) |
563 | 240 | 238 | ||
564 | 241 | AC_LANG_POP([C]) | 239 | AC_LANG_POP([C]) |
565 | 242 | ]) | 240 | ]) |
566 | @@ -245,7 +243,7 @@ | |||
567 | 245 | [AC_LANG_PUSH([C++]) | 243 | [AC_LANG_PUSH([C++]) |
568 | 246 | AS_IF([test "x$ax_enable_debug" = xyes], | 244 | AS_IF([test "x$ax_enable_debug" = xyes], |
569 | 247 | [CXXFLAGS='' | 245 | [CXXFLAGS='' |
571 | 248 | _APPEND_COMPILE_FLAGS_ERROR([-H]) | 246 | #_APPEND_COMPILE_FLAGS_ERROR([-H]) |
572 | 249 | _APPEND_COMPILE_FLAGS_ERROR([-g]) | 247 | _APPEND_COMPILE_FLAGS_ERROR([-g]) |
573 | 250 | _APPEND_COMPILE_FLAGS_ERROR([-g3]) | 248 | _APPEND_COMPILE_FLAGS_ERROR([-g3]) |
574 | 251 | _APPEND_COMPILE_FLAGS_ERROR([-fmudflapth]) | 249 | _APPEND_COMPILE_FLAGS_ERROR([-fmudflapth]) |
575 | @@ -265,7 +263,7 @@ | |||
576 | 265 | [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas]) | 263 | [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas]) |
577 | 266 | _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])]) | 264 | _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])]) |
578 | 267 | 265 | ||
580 | 268 | AS_IF([test "$CXX" = "clang++"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])]) | 266 | AS_IF([test "$ax_cv_c_compiler_vendor" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])]) |
581 | 269 | 267 | ||
582 | 270 | _APPEND_COMPILE_FLAGS_ERROR([-Wall]) | 268 | _APPEND_COMPILE_FLAGS_ERROR([-Wall]) |
583 | 271 | _APPEND_COMPILE_FLAGS_ERROR([-Wextra]) | 269 | _APPEND_COMPILE_FLAGS_ERROR([-Wextra]) |
584 | @@ -341,7 +339,7 @@ | |||
585 | 341 | _SET_SANITIZE_FLAGS | 339 | _SET_SANITIZE_FLAGS |
586 | 342 | 340 | ||
587 | 343 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes], | 341 | AS_IF([test "x$ac_cv_warnings_as_errors" = xyes], |
589 | 344 | [AX_APPEND_FLAG([-Werror])]) | 342 | [AX_APPEND_COMPILE_FLAGS([-Werror])]) |
590 | 345 | AC_LANG_POP([C++]) | 343 | AC_LANG_POP([C++]) |
591 | 346 | ]) | 344 | ]) |
592 | 347 | 345 | ||
593 | @@ -349,7 +347,9 @@ | |||
594 | 349 | # _HARDEN_CC_COMPILER_FLAGS, _HARDEN_CXX_COMPILER_FLAGS | 347 | # _HARDEN_CC_COMPILER_FLAGS, _HARDEN_CXX_COMPILER_FLAGS |
595 | 350 | AC_DEFUN([AX_HARDEN_COMPILER_FLAGS], | 348 | AC_DEFUN([AX_HARDEN_COMPILER_FLAGS], |
596 | 351 | [AC_PREREQ([2.63])dnl | 349 | [AC_PREREQ([2.63])dnl |
597 | 350 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
598 | 352 | AC_REQUIRE([AX_COMPILER_VERSION]) | 351 | AC_REQUIRE([AX_COMPILER_VERSION]) |
599 | 352 | AC_REQUIRE([AX_DEBUG]) | ||
600 | 353 | AC_REQUIRE([AX_ASSERT]) | 353 | AC_REQUIRE([AX_ASSERT]) |
601 | 354 | _WARNINGS_AS_ERRORS | 354 | _WARNINGS_AS_ERRORS |
602 | 355 | _AX_HARDEN_SANITIZE | 355 | _AX_HARDEN_SANITIZE |
603 | @@ -357,7 +357,6 @@ | |||
604 | 357 | AC_REQUIRE([gl_VISIBILITY]) | 357 | AC_REQUIRE([gl_VISIBILITY]) |
605 | 358 | AS_IF([test -n "$CFLAG_VISIBILITY"],[CPPFLAGS="$CPPFLAGS $CFLAG_VISIBILITY"]) | 358 | AS_IF([test -n "$CFLAG_VISIBILITY"],[CPPFLAGS="$CPPFLAGS $CFLAG_VISIBILITY"]) |
606 | 359 | 359 | ||
607 | 360 | _WARNINGS_AS_ERRORS | ||
608 | 361 | _HARDEN_LINKER_FLAGS | 360 | _HARDEN_LINKER_FLAGS |
609 | 362 | _HARDEN_CC_COMPILER_FLAGS | 361 | _HARDEN_CC_COMPILER_FLAGS |
610 | 363 | _HARDEN_CXX_COMPILER_FLAGS | 362 | _HARDEN_CXX_COMPILER_FLAGS |
611 | 364 | 363 | ||
612 | === modified file 'tests/libgearman-1.0/fork.cc' | |||
613 | --- tests/libgearman-1.0/fork.cc 2013-12-20 01:22:53 +0000 | |||
614 | +++ tests/libgearman-1.0/fork.cc 2014-04-16 12:49:38 +0000 | |||
615 | @@ -60,6 +60,7 @@ | |||
616 | 60 | test_return_t check_client_fork_TEST(void*) | 60 | test_return_t check_client_fork_TEST(void*) |
617 | 61 | { | 61 | { |
618 | 62 | test_skip_valgrind(); | 62 | test_skip_valgrind(); |
619 | 63 | test_skip(false, gdb_is_caller()); | ||
620 | 63 | 64 | ||
621 | 64 | libgearman::Client client(libtest::default_port()); | 65 | libgearman::Client client(libtest::default_port()); |
622 | 65 | 66 | ||
623 | 66 | 67 | ||
624 | === modified file 'tests/libgearman-1.0/unique.cc' | |||
625 | --- tests/libgearman-1.0/unique.cc 2014-01-31 02:41:41 +0000 | |||
626 | +++ tests/libgearman-1.0/unique.cc 2014-04-16 12:49:38 +0000 | |||
627 | @@ -436,7 +436,7 @@ | |||
628 | 436 | NULL, // is_running | 436 | NULL, // is_running |
629 | 437 | NULL, // numerator | 437 | NULL, // numerator |
630 | 438 | NULL // denominator | 438 | NULL // denominator |
632 | 439 | ), GEARMAN_JOB_EXISTS); | 439 | ), GEARMAN_SUCCESS); |
633 | 440 | 440 | ||
634 | 441 | { | 441 | { |
635 | 442 | libgearman::Client unique_client(original_client); | 442 | libgearman::Client unique_client(original_client); |