17 Commits

Author SHA1 Message Date
Rainer Gerhards
34241cc1c5
Merge pull request #3328 from jsiwrk/child_exit_report_option
report child process exit status according to config parameter
2018-12-30 12:55:28 +01:00
Joan Sala
845ffe603b testbench: fix omprog-output-capture-mt.sh test failure in Python 3
Make the test program explicitly flush lines written to stdout and
stderr, and do not use stdbuf to force line buffering for stdout.

In Python 2 stderr was unbuffered, but in Python 3 it is block-buffered
when redirected to a file/pipe. Besides, stdbuf seems to have no effect
on Python 3.

This solves one of the problems with this test described in #3361.
The problem ocurred with Python 3 and after the addition of the
wait_file_lines check in v8.40.0. The buffering that Python did caused
the last two lines of the output file to be written at shutdown time.

Other minor fixes and consistency enhancements in other omprog tests.
2018-12-26 17:32:06 +01:00
Joan Sala
9315787c6d report child process exit status according to config parameter
Add new global setting 'reportChildProcessExits' with possible values
'none|errors|all' (default 'errors'), and new global function
'glblReportChildProcessExit' to report the exit status of a child
process according to the setting.

Invoke the report function whenever rsyslog reaps a child, namely in:
- rsyslogd.c (SIGCHLD signal handler)
- omprog
- mmexternal
- srutils.c (execProg function, invoked from stream.c and omshell)

Remove redundant "reaped by main loop" info log in omprog.

Promote debug message in mmexternal indicating that the child has
terminated prematurely to a warning log, like in omprog.

Closes #3281
2018-12-21 20:29:01 +01:00
Rainer Gerhards
69ef6e329b fix bad bash coding style and disable shellcheck false positives
Also now permit interactivly running tests without explicitly setting
$srcdir. This now works if we are inside ./tests and fails, as before,
when we are in a different directory.

Detected by shellcheck via CodeFactor.io
2018-10-23 13:27:37 +02:00
Rainer Gerhards
ae8ea444cd
some more cosmetic fixes (previously overlooked) 2018-10-19 17:50:44 +02:00
Rainer Gerhards
ca1af1b459
cleanup: shellcheck-found minor issues 2018-10-19 12:55:59 +02:00
Rainer Gerhards
a45f3af81d squash: wait until full startup so that imdiag.port exists 2018-09-05 09:21:42 +02:00
Rainer Gerhards
de906074d3
Merge pull request #2984 from jsiwrk/bugfix/omprog_parallel_test
testbench: minor fix on some omprog tests for parallel execution
2018-09-03 14:47:14 +02:00
Joan Sala
697f2032c7 testbench: minor fix on some omprog tests for parallel execution 2018-09-02 23:03:29 +02:00
Rainer Gerhards
d051a9bdb6 squash: more changes 2018-09-02 17:46:16 +02:00
Rainer Gerhards
b5a385a13d testbench: modernize plumbing
another set of changes for testbench modernization
2018-09-02 17:29:39 +02:00
Joan Sala
4a54c23dc0 omprog: improve child process output capture/redirection
Capture program output using a pipe shared with all child processes,
and write to the file using a dedicated thread. Ensures lines emitted
by the child processes will not be intermingled in the output file if
the lines are less than PIPE_BUF chars long and are written in line-
buffered mode.

Reopen output file on HUP, to support external rotation of the file.

New setting 'fileCreateMode' as in omfile.

With these improvements the 'output' setting should now be usable for
production (it was originally intended only for debugging).

Redirect stdout/stderr of child process to /dev/null when not captured.
Closes #2787

Minor: simplify some test code: 'wait-startup' not needed after
'startup', 'wait-queueempty' not needed before 'shutdown_when_empty'.
2018-09-02 10:35:59 +02:00
Rainer Gerhards
a43a03f17e
testbench: make more test file names dynamic
This is required to support parallel test runs.

Among others, make thise files dynamic:
* test-spool
* rsyslog.input
* rsyslog.out*.log
* tmp.in

Also:
* convert presort test statement to function
* cleanup imfile truncation test
* cleanup imfile-growing-file-id test
  some cruft was left due to copy and paste error
* serialize mysql tests
2018-08-29 10:46:32 +02:00
Rainer Gerhards
5a7d6009c7
testbench: some minor improvements
- DEAD_PORT now uses unassigned IANA port unlike to be used on the system
  (dynamic port querying is racy and we had at least once an issue, so we
  can remove ambiguity here easily)
- replace some diag.sh commands by bash functions
2018-08-19 08:35:19 +02:00
Florian Riedl
aa0b3e4657 Test refactor part 2 2018-07-24 13:05:02 +02:00
Rainer Gerhards
2ba3c8ddde
testbench: modernize testbench plumbing
changes some of the test commands to use bash functions
includes some small bug fixes to tests where bugs were
previously not seen due to different plumbing.
2018-07-23 17:26:34 +02:00
Joan Sala
1089bd4146 omprog: refactor tests, fix child closing issues
Refactor omprog tests. Fix sync issues in these tests by
using the feedback mode (confirmMessages=on) to synchronize
the test with the external program. Closes #2403 (I hope)

Fix omprog not properly closing child process when
signalOnClose=on. Needed for the new tests. Closes #2599

Fix omprog not waiting for the child process to terminate
when signalOnClose=off. Needed for the new tests. Closes #2600

Close all fds before executing the child even when valgrind
is enabled (--enable-valgrind). Needed for the new tests.

Fix memory leak when the xxxTransactionMark parameters were
used.
2018-04-14 23:41:03 +02:00