diff options
author | Volker Lendecke <vl@samba.org> | 2008-12-28 17:43:18 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2009-01-04 16:42:40 +0100 |
commit | 1b328d98208d4245733dc8e04f6b81ab606ead8c (patch) | |
tree | 78f703fc8e7ad5ef690779db68516a046f7306ae /source3/torture | |
parent | 4df681abf497c24e8abf3df1137023389bfed709 (diff) | |
download | samba-1b328d98208d4245733dc8e04f6b81ab606ead8c.tar.gz samba-1b328d98208d4245733dc8e04f6b81ab606ead8c.tar.bz2 samba-1b328d98208d4245733dc8e04f6b81ab606ead8c.zip |
Add a quick test of wb_trans_send/recv
Diffstat (limited to 'source3/torture')
-rw-r--r-- | source3/torture/torture.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/source3/torture/torture.c b/source3/torture/torture.c index 3261e78d44..8a1a61e79a 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -5493,6 +5493,70 @@ static bool run_local_memcache(int dummy) return ret; } +static void wbclient_done(struct async_req *req) +{ + NTSTATUS status; + struct winbindd_response *wb_resp; + int *i = (int *)req->async.priv; + + status = wb_trans_recv(req, req, &wb_resp); + TALLOC_FREE(req); + *i += 1; + d_printf("wb_trans_recv %d returned %s\n", *i, nt_errstr(status)); +} + +static bool run_local_wbclient(int dummy) +{ + struct event_context *ev; + struct wb_context **wb_ctx; + struct winbindd_request wb_req; + bool result = false; + int i, j; + + BlockSignals(True, SIGPIPE); + + ev = event_context_init(talloc_tos()); + if (ev == NULL) { + goto fail; + } + + wb_ctx = TALLOC_ARRAY(ev, struct wb_context *, torture_numops); + if (wb_ctx == NULL) { + goto fail; + } + + ZERO_STRUCT(wb_req); + wb_req.cmd = WINBINDD_PING; + + for (i=0; i<torture_numops; i++) { + wb_ctx[i] = wb_context_init(ev); + if (wb_ctx[i] == NULL) { + goto fail; + } + for (j=0; j<5; j++) { + struct async_req *req; + req = wb_trans_send(ev, ev, wb_ctx[i], + (j % 2) == 0, &wb_req); + if (req == NULL) { + goto fail; + } + req->async.fn = wbclient_done; + req->async.priv = &i; + } + } + + i = 0; + + while (i < 5 * torture_numops) { + event_loop_once(ev); + } + + result = true; + fail: + TALLOC_FREE(ev); + return result; +} + static double create_procs(bool (*fn)(int), bool *result) { int i, status; @@ -5652,6 +5716,7 @@ static struct { { "LOCAL-RBTREE", run_local_rbtree, 0}, { "LOCAL-MEMCACHE", run_local_memcache, 0}, { "LOCAL-STREAM-NAME", run_local_stream_name, 0}, + { "LOCAL-WBCLIENT", run_local_wbclient, 0}, {NULL, NULL, 0}}; |