pgsql: Remove infinite-loop hazards in ecpg test suite.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Remove infinite-loop hazards in ecpg test suite.
Дата
Msg-id E1gmmqW-0004Ct-9j@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Remove infinite-loop hazards in ecpg test suite.

A report from Andrew Dunstan showed that an ecpglib breakage that
causes repeated query failures could lead to infinite loops in some
ecpg test scripts, because they contain "while(1)" loops with no
exit condition other than successful test completion.  That might
be all right for manual testing, but it seems entirely unacceptable
for automated test environments such as our buildfarm.  We don't
want buildfarm owners to have to intervene manually when a test
goes wrong.

To fix, just change all those while(1) loops to exit after at most
100 iterations (which is more than any of them expect to iterate).
This seems sufficient since we'd see discrepancies in the test output
if any loop executed the wrong number of times.

I tested this by dint of intentionally breaking ecpg_do_prologue
to always fail, and verifying that the tests still got to completion.

Back-patch to all supported branches, since the whole point of this
exercise is to protect the buildfarm against future mistakes.

Discussion: https://postgr.es/m/18693.1548302004@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d5a1fde397269bd60b99e70a4eb2934b75fd31ec

Modified Files
--------------
src/interfaces/ecpg/test/compat_informix/test_informix.pgc     |  4 ++--
src/interfaces/ecpg/test/compat_oracle/char_array.pgc          |  4 ++--
.../ecpg/test/expected/compat_informix-test_informix.c         |  4 ++--
src/interfaces/ecpg/test/expected/compat_oracle-char_array.c   |  4 ++--
src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c        | 10 +++++-----
src/interfaces/ecpg/test/expected/preproc-autoprep.c           |  2 +-
src/interfaces/ecpg/test/expected/preproc-outofscope.c         |  4 ++--
src/interfaces/ecpg/test/expected/preproc-variable.c           |  4 ++--
.../ecpg/test/expected/preproc-whenever_do_continue.c          |  7 +++++--
src/interfaces/ecpg/test/expected/sql-fetch.c                  |  8 ++++----
src/interfaces/ecpg/test/expected/sql-quote.c                  |  6 +++---
src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc               |  8 ++++----
src/interfaces/ecpg/test/preproc/autoprep.pgc                  |  2 +-
src/interfaces/ecpg/test/preproc/outofscope.pgc                |  4 ++--
src/interfaces/ecpg/test/preproc/variable.pgc                  |  4 ++--
src/interfaces/ecpg/test/preproc/whenever_do_continue.pgc      |  4 ++--
src/interfaces/ecpg/test/sql/fetch.pgc                         |  6 +++---
src/interfaces/ecpg/test/sql/quote.pgc                         |  4 ++--
18 files changed, 46 insertions(+), 43 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: PL/pgSQL: Add statement ID to statement structures
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Remove _configthreadlocale() calls in ecpg test suite.