[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ltp-list
Subject:    Re: [LTP] [PATCH] setrlimit01: wait for all children to exit in test3
From:       "Salvatore CRO'" <salvatore.cro () st ! com>
Date:       2012-03-23 7:13:11
Message-ID: 4F6C2287.9020103 () st ! com
[Download RAW message or body]

On 3/21/2012 12:10 PM, Salvatore CRO' wrote:
> On 3/21/2012 10:46 AM, Caspar Zhang wrote:
>> On 03/21/2012 05:41 PM, ZhoupingLiu wrote:
>>> On 03/20/2012 11:39 PM, Salvatore CRO' wrote:
>>>> In test3, parent just wait for one child to exit but it
>>>> actually has 10.
>>> hi, Salvatore
>>>
>>> yes, you are right, but your patch didn't resolve the issue completely.
>>> comments in-line.
>>>
>>>> As it could happen there may be other children around that
>>>> didn't get yet the chance to exit, they will get signaled
>>>> by ltp-pan (SIGTERM) and pollute the output of subsequent
>>>> test (setrlimit02).
>>>> Parent definitely needs to wait for all children to exit.
>>>>
>>>> Signed-off-by: Salvatore Cro<salvatore.cro@st.com>
>>>> ---
>>>>    testcases/kernel/syscalls/setrlimit/setrlimit01.c |    2 +-
>>>>    1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c 
>>>> b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>>> index ac32450..430835c 100644
>>>> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>>> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>>> @@ -267,7 +267,7 @@ void test3()
>>>>                exit(0);
>>>>            }
>>>>        }
>>>> -    waitpid(pid,&status, 0);
>>>> +    while(wait(&status)>   0) { /* no-op */ ; }
>>>>        if (WEXITSTATUS(status) != 0) {
>>>>            tst_resm(TFAIL, "RLIMIT_NPROC functionality is not 
>>>> correct");
>>>>        } else {
>>> if one child exit unexpectedly, e.g: exit(9);
>>> the case can't catch it. how about this patch set:
>
> Question is, do we care about prematurely ended child?
> We could just test for this condition ( if may use WIFEXITED in this 
> case)
> and emit a TWARN.
>
>>> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>> b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>> index ac32450..ec3e54e 100644
>>> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>>> @@ -226,6 +226,8 @@ void test2()
>>>     */
>>>    void test3()
>>>    {
>>> +       int flag = 0;
>>> +
>>>           if (getrlimit(RLIMIT_NPROC,&save_rlim)<  0) {
>>>                   tst_brkm(TBROK, cleanup, "getrlimit failed, errno: 
>>> %d",
>>> errno);
>>>           }
>>> @@ -267,12 +269,16 @@ void test3()
>>>                           exit(0);
>>>                   }
>>>           }
>>> -       waitpid(pid,&status, 0);
>>> -       if (WEXITSTATUS(status) != 0) {
>>> -               tst_resm(TFAIL, "RLIMIT_NPROC functionality is not
>>> correct");
>>> -       } else {
>>> -               tst_resm(TPASS, "RLIMIT_NPROC functionality is 
>>> correct");
>>> +       while (wait(&status)>  0) {
>>> +               if (WEXITSTATUS(status) != 0) {
>>> +                       tst_resm(TFAIL,
>>> +                           "RLIMIT_NPROC functionality is not 
>>> correct");
>>> +                       flag = 1;
>>> +               }
>>>           }
>>> +
>>> +       if (flag == 0)
>>> +               tst_resm(TPASS, "RLIMIT_NPROC functionality is 
>>> correct");
>> flag is not necessary. no TFAIL means TPASS. Rest looks good for your 
>> patch.
>
> Anyhow, in my opinion, this condition is not suitable to decide for 
> test pass/fail.
> Test is supposed to fail when the fork from 11th child on does not 
> fail or fail with
> an errno != EAGAIN.
> If so, the test logic wasn't actually accurate independently of my patch.
>
> BR,
> Salvo.
>

What about above analysis ? Any comment is welcome.

BR,
Salvo.


>> Thanks,
>> Caspar
>


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic