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