2018-01-17 09:15:51 -05:00
|
|
|
/***********************************************************************************************************************************
|
|
|
|
Test Exit Routines
|
|
|
|
***********************************************************************************************************************************/
|
2018-04-12 20:42:26 -04:00
|
|
|
#include "common/error.h"
|
2018-05-18 11:57:32 -04:00
|
|
|
#include "common/log.h"
|
2018-01-17 09:15:51 -05:00
|
|
|
#include "config/config.h"
|
|
|
|
|
2018-05-06 08:56:42 -04:00
|
|
|
#include "common/harnessFork.h"
|
|
|
|
|
2018-01-17 09:15:51 -05:00
|
|
|
/***********************************************************************************************************************************
|
|
|
|
Test Run
|
|
|
|
***********************************************************************************************************************************/
|
2018-01-31 18:22:25 -05:00
|
|
|
void
|
2018-08-03 19:19:14 -04:00
|
|
|
testRun(void)
|
2018-01-17 09:15:51 -05:00
|
|
|
{
|
2018-05-18 11:57:32 -04:00
|
|
|
FUNCTION_HARNESS_VOID();
|
|
|
|
|
2018-04-12 20:42:26 -04:00
|
|
|
// *****************************************************************************************************************************
|
|
|
|
if (testBegin("exitSignalName()"))
|
|
|
|
{
|
|
|
|
TEST_RESULT_STR(exitSignalName(signalTypeHup), "HUP", "SIGHUP name");
|
|
|
|
TEST_RESULT_STR(exitSignalName(signalTypeInt), "INT", "SIGINT name");
|
|
|
|
TEST_RESULT_STR(exitSignalName(signalTypeTerm), "TERM", "SIGTERM name");
|
|
|
|
TEST_ERROR(exitSignalName(signalTypeNone), AssertError, "no name for signal none");
|
|
|
|
}
|
|
|
|
|
|
|
|
// *****************************************************************************************************************************
|
|
|
|
if (testBegin("exitInit() and exitOnSignal()"))
|
|
|
|
{
|
2018-05-06 08:56:42 -04:00
|
|
|
HARNESS_FORK_BEGIN()
|
2018-04-12 20:42:26 -04:00
|
|
|
{
|
2019-02-27 18:07:16 +02:00
|
|
|
HARNESS_FORK_CHILD_BEGIN(errorTypeCode(&TermError), false)
|
2018-05-06 08:56:42 -04:00
|
|
|
{
|
|
|
|
exitInit();
|
|
|
|
raise(SIGTERM);
|
|
|
|
}
|
2019-02-27 18:07:16 +02:00
|
|
|
HARNESS_FORK_CHILD_END();
|
2018-04-12 20:42:26 -04:00
|
|
|
}
|
2018-05-06 08:56:42 -04:00
|
|
|
HARNESS_FORK_END();
|
2018-04-12 20:42:26 -04:00
|
|
|
}
|
|
|
|
|
2018-01-17 09:15:51 -05:00
|
|
|
// *****************************************************************************************************************************
|
|
|
|
if (testBegin("exitSafe()"))
|
|
|
|
{
|
2018-04-12 20:42:26 -04:00
|
|
|
cfgInit();
|
|
|
|
cfgCommandSet(cfgCmdNone);
|
|
|
|
|
|
|
|
TEST_RESULT_INT(exitSafe(0, false, signalTypeNone), 0, "exit with no command")
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
2018-01-17 09:15:51 -05:00
|
|
|
cfgInit();
|
|
|
|
cfgCommandSet(cfgCmdArchivePush);
|
|
|
|
|
2018-04-12 20:42:26 -04:00
|
|
|
TEST_RESULT_INT(exitSafe(0, false, signalTypeNone), 0, "exit with no error")
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResult("P00 INFO: archive-push command end: completed successfully");
|
2018-01-17 09:15:51 -05:00
|
|
|
|
2018-09-04 21:46:41 -04:00
|
|
|
TEST_RESULT_INT(exitSafe(1, false, signalTypeNone), 1, "exit with no error")
|
|
|
|
harnessLogResult("P00 INFO: archive-push command end: completed successfully");
|
|
|
|
|
2018-01-17 09:15:51 -05:00
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
|
|
|
TRY_BEGIN()
|
|
|
|
{
|
|
|
|
THROW(RuntimeError, "test error message");
|
|
|
|
}
|
|
|
|
CATCH_ANY()
|
|
|
|
{
|
2018-04-12 20:42:26 -04:00
|
|
|
exitSafe(0, true, signalTypeNone);
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResult(
|
2018-02-08 16:11:47 -05:00
|
|
|
"P00 ERROR: [122]: test error message\n"
|
|
|
|
"P00 INFO: archive-push command end: aborted with exception [122]");
|
2018-01-17 09:15:51 -05:00
|
|
|
}
|
|
|
|
TRY_END();
|
2018-04-12 20:42:26 -04:00
|
|
|
|
2018-05-18 11:57:32 -04:00
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogLevelSet(logLevelDebug);
|
2018-05-18 11:57:32 -04:00
|
|
|
|
|
|
|
TRY_BEGIN()
|
|
|
|
{
|
|
|
|
THROW(RuntimeError, "test debug error message");
|
|
|
|
}
|
|
|
|
CATCH_ANY()
|
|
|
|
{
|
|
|
|
exitSafe(0, true, signalTypeNone);
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResultRegExp(
|
2018-05-18 11:57:32 -04:00
|
|
|
"P00 ERROR\\: \\[122\\]\\: test debug error message\n"
|
|
|
|
" STACK TRACE\\:\n"
|
2018-11-03 16:34:04 -04:00
|
|
|
" test\\/module\\/common\\/exitTest\\:testRun\\:.*\n"
|
2018-05-18 11:57:32 -04:00
|
|
|
" test\\:main\\:.*\n");
|
|
|
|
}
|
|
|
|
TRY_END();
|
|
|
|
|
2018-07-20 19:03:46 -04:00
|
|
|
harnessLogLevelReset();
|
2018-05-18 11:57:32 -04:00
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
|
|
|
TRY_BEGIN()
|
|
|
|
{
|
|
|
|
THROW(AssertError, "test assert message");
|
|
|
|
}
|
|
|
|
CATCH_ANY()
|
|
|
|
{
|
|
|
|
exitSafe(0, true, signalTypeNone);
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResultRegExp(
|
2018-05-18 11:57:32 -04:00
|
|
|
"P00 ASSERT\\: \\[025\\]\\: test assert message\n"
|
|
|
|
" STACK TRACE\\:\n"
|
2018-11-03 16:34:04 -04:00
|
|
|
" test/module/common/exitTest\\:testRun\\:.*\n"
|
2018-05-18 11:57:32 -04:00
|
|
|
" test\\:main\\:.*\n");
|
|
|
|
}
|
|
|
|
TRY_END();
|
|
|
|
|
2018-04-12 20:42:26 -04:00
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
|
|
|
TRY_BEGIN()
|
|
|
|
{
|
|
|
|
THROW(RuntimeError, PERL_EMBED_ERROR);
|
|
|
|
}
|
|
|
|
CATCH_ANY()
|
|
|
|
{
|
|
|
|
exitSafe(0, true, signalTypeNone);
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResult(
|
2018-04-12 20:42:26 -04:00
|
|
|
"P00 INFO: archive-push command end: aborted with exception [122]");
|
|
|
|
}
|
|
|
|
TRY_END();
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
|
|
|
TEST_RESULT_INT(
|
|
|
|
exitSafe(errorTypeCode(&TermError), false, signalTypeNone), errorTypeCode(&TermError), "exit on term with no signal");
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResult("P00 INFO: archive-push command end: terminated on signal from child process");
|
2018-04-12 20:42:26 -04:00
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------------------------
|
|
|
|
TEST_RESULT_INT(
|
|
|
|
exitSafe(errorTypeCode(&TermError), false, signalTypeTerm), errorTypeCode(&TermError), "exit on term with SIGTERM");
|
2018-07-20 18:51:42 -04:00
|
|
|
harnessLogResult("P00 INFO: archive-push command end: terminated on signal [SIGTERM]");
|
2018-01-17 09:15:51 -05:00
|
|
|
}
|
2018-05-18 11:57:32 -04:00
|
|
|
|
|
|
|
FUNCTION_HARNESS_RESULT_VOID();
|
2018-01-17 09:15:51 -05:00
|
|
|
}
|