Fix minor bugs in the test case that cause the test to fail intermittently.
Also, print more debug info when test fails.

This fixes a bug reported by Sachin P. Sant.

Signed-off-by: Sukadev Bhattiprolu <[email protected]>
---
 testcases/kernel/containers/pidns/pidns17.c |   17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

Index: ltp-full-20090331/testcases/kernel/containers/pidns/pidns17.c
===================================================================
--- ltp-full-20090331.orig/testcases/kernel/containers/pidns/pidns17.c  
2009-06-10 23:52:44.022094621 -0700
+++ ltp-full-20090331/testcases/kernel/containers/pidns/pidns17.c       
2009-06-11 00:09:37.454753439 -0700
@@ -74,8 +74,10 @@ int child_fn(void *arg)
 
        /* Spawn many children */
        for (i = 0; i < 10; i++)
-               if ((children[i] = fork()) == 0)
-                       sleep(10);
+               if ((children[i] = fork()) == 0) {
+                       pause();
+                       exit(2);
+               }
 
        /* wait for last child to get scheduled */
        sleep(1);
@@ -86,13 +88,16 @@ int child_fn(void *arg)
        }
 
        for (i = 0; i < 10; i++) {
-               if (waitpid(children[i], &status, WNOHANG) == -1) {
+               if (waitpid(children[i], &status, 0) == -1) {
                        tst_resm(TBROK, "cinit: waitpid() failed(%s)",\
                                        strerror(errno));
                        cleanup();
                }
-               if (!(WIFSIGNALED(&status) && WTERMSIG(status) == SIGUSR1)) {
-                       tst_resm(TFAIL, "cinit: found a child alive still.");
+               if (!(WIFSIGNALED(status) && WTERMSIG(status) == SIGUSR1)) {
+                       tst_resm(TFAIL, "cinit: found a child alive still "
+                                       "%d exit: %d, %d, signal %d, %d", i,
+                                       WIFEXITED(status), WEXITSTATUS(status),
+                                       WIFSIGNALED(status), WTERMSIG(status));
                        cleanup();
                }
        }
@@ -125,7 +130,7 @@ int main(int argc, char *argv[])
        }
 
        sleep(1);
-       if (wait(&status) < 0)
+       if (waitpid(-1, &status, __WALL) < 0)
                tst_resm(TWARN, "parent: waitpid() failed.");
 
        if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to