Re: [LTP] [PATCH] ppoll01: add signal() syscall to register the signal handler

Chandru
2009-10-01T07:28:08Z

On Saturday 26 September 2009 16:55:28 Mike Frysinger wrote:
> On Thursday 24 September 2009 02:59:32 Chandru wrote:
> > 3. Takes away
> > printing the type of error ( i.e strerror(errno) ) since it only prints
> > the last error seen and does not report the failures seen in the cases
> > before the last failed one. The reporting of NG or OK shoudl take care of
> > letting the user know the cases that have passed and cases that have
> > failed.
> >
> > - tst_resm(TFAIL, "%s failed - errno = %d : %s", TCID,
> > TEST_ERRNO, strerror(TEST_ERRNO));
> > + tst_resm(TFAIL, "%s failed", TCID);
>
> why dont you *fix* the issues you see with this output instead of making the
> output even more useless ? also, this should be converted to TFAIL|TTERRNO.
> -mike
>

em, the change was not useless, the existing reporting of failure was. The output on failure of only the
first case prints as
"ppoll01 1 TFAIL : ppoll01 failed - errno = 0 : Success"

The words 'failed' and 'Success' on the same line could confuse us. The testcase has 8 scenarios of which 5 are
made to fail by passing invalid arguments. Although we could have a fix as the following

=====================================================================

--- ppoll01.c.orig 2009-09-29 21:28:55.510487735 +0530
+++ ppoll01.c 2009-10-01 17:34:42.651235797 +0530
@@ -242,6 +242,8 @@ static struct test_case tcase[] = {
#endif
};

+int tstatus, terrno[16];
+
#define NUM_TEST_FDS 1

/*
@@ -265,6 +267,7 @@ static int do_test(struct test_case *tc)
sigset_t *p_sigmask, sigmask;
size_t sigsetsize = 0;
pid_t pid = 0;
+ static int tc_no;

TEST(fd = setup_file(progdir, "test.file", fpath));
if (fd < 0)
@@ -331,6 +334,11 @@ static int do_test(struct test_case *tc)
errno = 0;
TEST(sys_ret = syscall(__NR_ppoll, p_fds, nfds, p_ts, p_sigmask, sigsetsize));
sys_errno = errno;
+ if (((tc->ret == 0) && (sys_ret == -1)) || ((tc->ret == -1) && (sys_ret == 0))) {
+ tstatus |= (1 << tc_no);
+ terrno[tc_no] = errno;
+ }
+ tc_no++;
if (sys_ret <= 0 || tc->ret < 0)
goto TEST_END;

@@ -463,7 +471,10 @@ int main(int ac, char **av) {
break;

default:
- tst_resm(TFAIL, "%s failed - errno = %d : %s", TCID, TEST_ERRNO, strerror(TEST_ERRNO));
+ tst_resm(TPASS, "ppoll result = %d ",result);
+ for (i = 0; i < (int)(sizeof(tcase) / sizeof(tcase[0])); i++)
+ if (tstatus & (1 << i))
+ tst_resm(TFAIL|TTERRNO, "%s failed - errno = %d : %s", TCID, terrno[i], strerror(terrno[i]));
RPRINTF("NG");
cleanup();
tst_exit();

======================================================================

I will retain the current existing tst_resm lines and add TFAIL|TTERRNO to it as per your suggestion. The reason being that
there is not much gain in making the above changes to the test case.

Thanks,
Chandru