1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00
Amitay Isaacs 1f523a628a ctdb-tests: Avoid early exits in scripts that appear on tail of a pipe
When executing a shell script code "foo | bar", if "bar" terminates early,
then "foo" can get I/O error when writing to stdout.

The tdbtool stub did not wait to read anything from stdin when it is
expected to.  This would cause tests to fail randomly under load when
tdbtool process exited early.

Similarly, debug function read from stdin only under certain conditions
(higher debug and when not reading from tty).  Otherwise, exited early.

Thanks to Andrew Bartlett for noticing the problem and Catalyst Cloud
(http://catalyst.net.nz/cloud) for providing resources to test fixes.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Pair-Programmed-With: Martin Schwenke <martin@meltin.net>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>

Autobuild-User(master): Michael Adam <obnox@samba.org>
Autobuild-Date(master): Fri Mar 20 16:26:37 CET 2015 on sn-devel-104
2015-03-20 16:26:36 +01:00
..

eventscript unit tests
======================

This directory contains some eventscript unit tests for CTDB.  These
tests can be run as a non-privileged user.  There are a lot of stub
implementations of commands (located in stubs/) used to make the
eventscripts think they're running against a real system.

Test case filenames look like:

  <eventscript>.<event>.NNN.sh

The test helper functions will run <eventscript> with specified
options.  If using the simple_test() or iterate_test() helper
functions then the 1st <event> argument is automatically passed.  When
simple_test_event() is used the event name must be explicitly passed
as the 1st argument - this is more flexible and supports multiple
events per test.

Examples:

* ../run_tests.sh .

  Run all tests, displaying minimal output.

* ../run_tests.sh -s .

  Run all tests, displaying minimal output and a summary.

* ../run_tests.sh -s ./10.interface.*.sh

  Run all the tests against the 10.interface eventscript.

* ../run_tests.sh -v -s .

  Run all tests, displaying extra output and a summary.

* ../run_tests.sh -sq .

  Run all tests, displaying only a summary.

* ../run_tests.sh -X ./10.interface.startup.002.sh

  Run a test and have the eventscript itself run with "sh -x".  This
  will usually make a test fail because the (undesirable) trace output
  will be included with the output of the eventscript.  However, this
  is useful for finding out why a test might be failing.