diff options
author | Ralph Boehme <slow@samba.org> | 2017-04-11 20:00:05 +0200 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2017-04-20 16:53:16 +0200 |
commit | 426e407c533ae6980da672cf2d4e7b01b821a3d3 (patch) | |
tree | f854ba4079f29eef77b0a8c6c79d5412f1a5661e | |
parent | 4a43129b7a7285024f0d2b76e893740f73adce2f (diff) | |
download | samba-426e407c533ae6980da672cf2d4e7b01b821a3d3.tar.gz |
lib/util: add a test for samba_runcmd_send()
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
-rw-r--r-- | lib/util/tests/tfork.c | 36 | ||||
-rwxr-xr-x | testprogs/blackbox/tfork.sh | 15 |
2 files changed, 51 insertions, 0 deletions
diff --git a/lib/util/tests/tfork.c b/lib/util/tests/tfork.c index 7963aafaae1..7a9692836f3 100644 --- a/lib/util/tests/tfork.c +++ b/lib/util/tests/tfork.c @@ -19,6 +19,7 @@ #include "replace.h" #include <talloc.h> +#include <tevent.h> #include "system/filesys.h" #include "libcli/util/ntstatus.h" #include "torture/torture.h" @@ -85,6 +86,37 @@ done: return ok; } +static bool test_tfork_cmd_send(struct torture_context *tctx) +{ + struct tevent_context *ev = NULL; + struct tevent_req *req = NULL; + const char *cmd[2] = { NULL, NULL }; + bool ok = true; + + ev = tevent_context_init(tctx); + torture_assert_goto(tctx, ev != NULL, ok, done, + "tevent_context_init failed\n"); + + cmd[0] = talloc_asprintf(tctx, "%s/testprogs/blackbox/tfork.sh", SRCDIR); + torture_assert_goto(tctx, cmd[0] != NULL, ok, done, + "talloc_asprintf failed\n"); + + req = samba_runcmd_send(tctx, ev, timeval_zero(), 1, 0, + cmd, "foo", NULL); + torture_assert_goto(tctx, req != NULL, ok, done, + "samba_runcmd_send failed\n"); + + ok = tevent_req_poll(req, ev); + torture_assert_goto(tctx, ok, ok, done, "tevent_req_poll failed\n"); + + torture_comment(tctx, "samba_runcmd_send test finished\n"); + +done: + TALLOC_FREE(ev); + + return ok; +} + struct torture_suite *torture_local_tfork(TALLOC_CTX *mem_ctx) { struct torture_suite *suite = @@ -98,5 +130,9 @@ struct torture_suite *torture_local_tfork(TALLOC_CTX *mem_ctx) "tfork_status", test_tfork_status); + torture_suite_add_simple_test(suite, + "tfork_cmd_send", + test_tfork_cmd_send); + return suite; } diff --git a/testprogs/blackbox/tfork.sh b/testprogs/blackbox/tfork.sh new file mode 100755 index 00000000000..0f75a8c6aa3 --- /dev/null +++ b/testprogs/blackbox/tfork.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +sleep 1 + +echo stdout >&1 +echo $1 >&1 +echo stderror >&2 + +# close stdout and stderror, but don't exit yet +exec 1>&- +exec 2>&- + +sleep 1 + +exit 0 |