Beispiel #1
0
ATF_TC_BODY (status_signaled, tc)
{
    {
        const int rawstatus = fork_and_wait_child (child_sigkill);

        atf_process_status_t s;

        RE (atf_process_status_init (&s, rawstatus));
        ATF_CHECK (!atf_process_status_exited (&s));
        ATF_CHECK (atf_process_status_signaled (&s));
        ATF_CHECK_EQ (atf_process_status_termsig (&s), SIGKILL);
        ATF_CHECK (!atf_process_status_coredump (&s));
        atf_process_status_fini (&s);
    }

    {
        const int rawstatus = fork_and_wait_child (child_sigterm);

        atf_process_status_t s;

        RE (atf_process_status_init (&s, rawstatus));
        ATF_CHECK (!atf_process_status_exited (&s));
        ATF_CHECK (atf_process_status_signaled (&s));
        ATF_CHECK_EQ (atf_process_status_termsig (&s), SIGTERM);
        ATF_CHECK (!atf_process_status_coredump (&s));
        atf_process_status_fini (&s);
    }
}
Beispiel #2
0
ATF_TC_BODY (status_exited, tc)
{
    {
        const int rawstatus = fork_and_wait_child (child_exit_success);

        atf_process_status_t s;

        RE (atf_process_status_init (&s, rawstatus));
        ATF_CHECK (atf_process_status_exited (&s));
        ATF_CHECK_EQ (atf_process_status_exitstatus (&s), EXIT_SUCCESS);
        ATF_CHECK (!atf_process_status_signaled (&s));
        atf_process_status_fini (&s);
    }

    {
        const int rawstatus = fork_and_wait_child (child_exit_failure);

        atf_process_status_t s;

        RE (atf_process_status_init (&s, rawstatus));
        ATF_CHECK (atf_process_status_exited (&s));
        ATF_CHECK_EQ (atf_process_status_exitstatus (&s), EXIT_FAILURE);
        ATF_CHECK (!atf_process_status_signaled (&s));
        atf_process_status_fini (&s);
    }
}
Beispiel #3
0
int
atf_process_status_termsig(const atf_process_status_t *s)
{
    PRE(atf_process_status_signaled(s));
    int mutable_status = s->m_status;
    return WTERMSIG(mutable_status);
}
Beispiel #4
0
bool
atf_process_status_coredump(const atf_process_status_t *s)
{
    PRE(atf_process_status_signaled(s));
#if defined(WCOREDUMP)
    int mutable_status = s->m_status;
    return WCOREDUMP(mutable_status);
#else
    return false;
#endif
}
Beispiel #5
0
ATF_TC_BODY (status_coredump, tc)
{
    struct rlimit rl;

    rl.rlim_cur = RLIM_INFINITY;
    rl.rlim_max = RLIM_INFINITY;
    if (setrlimit (RLIMIT_CORE, &rl) == -1)
        atf_tc_skip ("Cannot unlimit the core file size; check limits " "manually");

    const int rawstatus = fork_and_wait_child (child_sigquit);

    atf_process_status_t s;

    RE (atf_process_status_init (&s, rawstatus));
    ATF_CHECK (!atf_process_status_exited (&s));
    ATF_CHECK (atf_process_status_signaled (&s));
    ATF_CHECK_EQ (atf_process_status_termsig (&s), SIGQUIT);
    ATF_CHECK (atf_process_status_coredump (&s));
    atf_process_status_fini (&s);
}
Beispiel #6
0
bool
impl::status::signaled(void)
    const
{
    return atf_process_status_signaled(&m_status);
}