On Tue, 03 Mar 2009 14:30:27 +0100, Francesco RUNDO  
<[email protected]> wrote:

>
>> AFAIK, to make sure that the kernel generated those and only those  
>> events,  that were predetermined by the test run. Otherwise, we'd have  
>> an  inconsistency in the checking procedure.
>>
>> Does it happen somewhere, that the kernel legitimately generates extra   
>> events (at the end)?
>>
>>> I think the check has to be related only to the notified events (the   
>>> amount of that events should be TST_TOTAL). Moreover, the first run  
>>> of  the while loop was made with tst_count=0 so that the while loop  
>>> may  reach TST_TOTAL+1 cycles. I think it is useless as the latest run  
>>> is  used to check unnecessary event.
>>
>>
>> I don't say I can't imagine a cleaner implementation of checking the   
>> length of the event sequence, but do you really think the test  
>> should't  check for it? Why haven't you deleted similar code for  
>> checking an event  sequence that is too short?
>>
>> Regards
>>     Jiri Palecek
>
> Ok, just to better describe my opinion (I hope without misunderstanding  
> ;-)
> In the while loop we're analyzing, you rightly process the notified  
> events with different checks.Ok, it is right.
>
> My suggest is to avoid to use "also" the check (with TFAIL) related to  
> TST_COUNT as it will be of course executed.
>
> In fact, the events to be notified are 9 (the value of TST_COUNT) but if  
> we start with tst_count=0, at the end (tst_count=9) you got a  
> "tst_resm(TFAIL, "get unnecessary event:......." even though "all the  
> notified events" have been rightly processed. I'm not sure about that.

No, you don't. At the end, tst_count (or test_num) will be 9, but you will  
already have run out of the buffer, so the "unnecessary event..." will not  
be reported. See:

ji...@debian:/usr/src/ltp-git/testcases/kernel/syscalls/inotify$  
./inotify02
inotify02    1  PASS  :  get event: wd=1 mask=40000004 cookie=0 len=0  
name=""
inotify02    2  PASS  :  get event: wd=1 mask=100 cookie=0 len=16  
name="test_file1"
inotify02    3  PASS  :  get event: wd=1 mask=20 cookie=0 len=16  
name="test_file1"
inotify02    4  PASS  :  get event: wd=1 mask=8 cookie=0 len=16  
name="test_file1"
inotify02    5  PASS  :  get event: wd=1 mask=40 cookie=81986 len=16  
name="test_file1"
inotify02    6  PASS  :  get event: wd=1 mask=80 cookie=81986 len=16  
name="test_file2"
inotify02    7  PASS  :  get event: wd=1 mask=800 cookie=0 len=0 name=""
inotify02    8  PASS  :  get event: wd=1 mask=200 cookie=0 len=16  
name="test_file2"
inotify02    9  PASS  :  get event: wd=1 mask=800 cookie=0 len=0 name=""
ji...@debian:/usr/src/ltp-git/testcases/kernel/syscalls/inotify$ echo $?
0

If you're actually getting enythig else, please post the actual output of  
inotify02 and the (standard & error) output of "strace -e read=3 inotify02"

Regards
     Jiri Palecek

>>>>>> plain text document attachment  
>>>>>> (ltp-full-20090131-fix-inotify02.patch)
>>>>>> This patch avoid to run the istructions within the while loop if  
>>>>>> no   more events have been collected.
>>>>>> Signed-off-by: Francesco Rundo <[email protected]>
>>>>>> ---    
>>>>>> ltp-full-20090131/testcases/kernel/syscalls/inotify/inotify02.c.origin   
>>>>>>    
>>>>>> 2009-03-02  09:16:53.110000000 +0100
>>>>>> +++    
>>>>>> ltp-full-20090131/testcases/kernel/syscalls/inotify/inotify02.c      
>>>>>> 2009-03-02  09:37:04.470002000 +0100
>>>>>> @@ -54,7 +54,7 @@
>>>>>>  #include "test.h"
>>>>>>  #include "usctest.h"
>>>>>>
>>>>>> -#if defined(__NR_inotify_init) && defined(HAVE_SYS_INOTIFY)
>>>>>> +#if defined(__NR_inotify_init) && defined(HAVE_SYS_INOTIFY_H)
>>>>>
>>>>>
>>>>>
>>>>> Jiri Palecek <[email protected]> already made these changes last  
>>>>> month,   Mon Feb 23 07:18:46 2009 UTC.
>>>>>
>>>>>>  #include <sys/inotify.h>
>>>>>>
>>>>>>  #ifndef IN_MOVE_SELF
>>>>>>
>>>>>
>>>>> You probably need only the following:
>>>>>
>>>>> Signed-Off-By: Francesco RUNDO <[email protected]>,
>>>>> Signed-Off-By: Subrata Modak <[email protected]>,
>>>>> -- ---    
>>>>> ltp-full-20090228/testcases/kernel/syscalls/inotify/inotify02.c.orig      
>>>>> 2009-03-03  14:40:23.000000000 +0530
>>>>> +++    
>>>>> ltp-full-20090228/testcases/kernel/syscalls/inotify/inotify02.c      
>>>>> 2009-03-03  14:36:37.000000000 +0530
>>>>> @@ -246,25 +246,17 @@ int main(int ac, char **av){
>>>>>         }
>>>>> -        while (i < len) {
>>>>> +        while ((i < len)&&(test_num < TST_TOTAL)) {
>>>>>              struct inotify_event *event;
>>>>>              event = (struct inotify_event *) &event_buf[i];
>>>>> -            if (test_num >= TST_TOTAL){
>>>>> -                tst_resm(TFAIL, "get unnecessary event: "
>>>>> -                    "wd=%d mask=%x cookie=%u len=%u"
>>>>> -                    "name=\"%s\"",event->wd, event->mask,
>>>>> -                    event->cookie, event->len,
>>>>> -                            event->name);
>>>>> -
>>>>> -            } else     if ((event_set[test_num].mask ==  
>>>>> event->mask)  &&
>>>>> -                    (! strncmp( event_set[test_num].name,
>>>>> -                        event->name, event->len))) {
>>>>> +            if ((event_set[test_num].mask == event->mask) &&
>>>>> +                (! strncmp( event_set[test_num].name,
>>>>> +                            event->name, event->len))) {
>>>>>                  tst_resm(TPASS, "get event: wd=%d mask=%x"
>>>>> -                        " cookie=%u len=%u name=\"%s\"",
>>>>> -                        event->wd, event->mask,
>>>>> -                        event->cookie, event->len,
>>>>> -                        event->name);
>>>>> -
>>>>> +                         " cookie=%u len=%u name=\"%s\"",
>>>>> +                         event->wd, event->mask,
>>>>> +                         event->cookie, event->len,
>>>>> +                         event->name);
>>>>>              } else {
>>>>>                  tst_resm(TFAIL, "get event: wd=%d mask=%x "
>>>>>                      "(expected %x) cookie=%u len=%u "
>>>>>
>>>>> @@ -375,7 +368,7 @@
>>>>>
>>>>>>      tst_resm(TCONF, "Inotify syscall can be found at kernel  
>>>>>> 2.6.13  or  higher.");
>>>>>>      return 0;
>>>>>>  #endif
>>>>>> -#ifndef HAVE_SYS_INOTIFY
>>>>>> +#ifndef HAVE_SYS_INOTIFY_H
>>>>>
>>>>>
>>>>>
>>>>> Same here. Changes are already in CVS.
>>>>>
>>>>> Regards--
>>>>> Subrata
>>>>>
>>>>>>      tst_resm(TBROK, "can't find header sys/inotify.h");
>>>>>>      return 1;
>>>>>>  #endif
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>



-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to