The 9th testcase of inotify02 failed due to event coalescence. We fix
this by moving the IN_DELETE test in between of the 2 IN_MOVE_SELF
events.

Also add the test for event coalescence.

Signed-off-by: Li Zefan <[EMAIL PROTECTED]>
---
 README      |    6 ++++--
 inotify02.c |   45 ++++++++++++++++++++++++++++-----------------
 2 files changed, 32 insertions(+), 19 deletions(-)

diff -Nurp ltp-full-20080229.orig/testcases/kernel/syscalls/inotify/inotify02.c 
ltp-full-20080229/testcases/kernel/syscalls/inotify/inotify02.c
--- ltp-full-20080229.orig/testcases/kernel/syscalls/inotify/inotify02.c        
2008-03-27 13:52:20.000000000 +0800
+++ ltp-full-20080229/testcases/kernel/syscalls/inotify/inotify02.c     
2008-03-27 16:44:35.000000000 +0800
@@ -37,6 +37,9 @@
  *     01/06/2007 - Fix to compile inotify test case with kernel that does 
  *     not support it. Ricardo Salveti de Araujo <[EMAIL PROTECTED]>
  *
+ *     03/27/2008 - Fix the test failure due to event coalescence. Also add
+ *     test for this event coalescence. Li Zefan <[EMAIL PROTECTED]>
+ *
  * ***************************************************************************/
 
 #include <stdio.h>
@@ -70,7 +73,7 @@ int TST_TOTAL=9;            /* Total num
 extern int Tst_count;        /* Test Case counter for tst_* routines */
 
 #define BUF_SIZE 256
-char fname1[BUF_SIZE], fname2[BUF_SIZE];
+char fname1[BUF_SIZE], fname2[BUF_SIZE], fname3[BUF_SIZE];
 char buf[BUF_SIZE];
 int fd, fd_notify;
 int wd;
@@ -173,19 +176,6 @@ int main(int ac, char **av){
         strcpy(event_set[Tst_count].name, FILE_NAME2);
         Tst_count++;
 
-
-
-        if (unlink(FILE_NAME2) == -1){
-            tst_brkm(TBROK, cleanup, 
-                    "unlink(%s) Failed, errno=%d : %s",
-                    FILE_NAME2,
-                    errno, strerror(errno));
-        }
-        event_set[Tst_count].mask = IN_DELETE;
-        strcpy(event_set[Tst_count].name, FILE_NAME2);
-        Tst_count++;
-
-
         if (getcwd(fname1, BUF_SIZE) == NULL){
             tst_brkm(TBROK, cleanup, 
                     "getcwd(%x, %d) Failed, errno=%d : %s",
@@ -193,7 +183,7 @@ int main(int ac, char **av){
                     errno, strerror(errno));
         }
 
-        snprintf(fname2, BUF_SIZE, "%s.rename", fname1);
+        snprintf(fname2, BUF_SIZE, "%s.rename1", fname1);
         if (rename(fname1, fname2) == -1){
             tst_brkm(TBROK, cleanup, 
                     "rename(%s, %s) Failed, errno=%d : %s",
@@ -204,11 +194,32 @@ int main(int ac, char **av){
         strcpy(event_set[Tst_count].name, "");
         Tst_count++;
 
+        if (unlink(FILE_NAME2) == -1){
+            tst_brkm(TBROK, cleanup,
+                    "unlink(%s) Failed, errno=%d : %s",
+                    FILE_NAME2,
+                    errno, strerror(errno));
+        }
+        event_set[Tst_count].mask = IN_DELETE;
+        strcpy(event_set[Tst_count].name, FILE_NAME2);
+        Tst_count++;
+
+        /*
+         * test that duplicate events will be coalesced into
+         * a single event
+         */
+        snprintf(fname3, BUF_SIZE, "%s.rename2", fname1);
+        if (rename(fname2, fname3) == -1){
+            tst_brkm(TBROK, cleanup,
+                    "rename(%s, %s) Failed, errno=%d : %s",
+                    fname2, fname3,
+                    errno, strerror(errno));
+        }
 
-        if (rename(fname2, fname1) == -1){
+        if (rename(fname3, fname1) == -1){
             tst_brkm(TBROK, cleanup, 
                     "rename(%s, %s) Failed, errno=%d : %s",
-                    fname2, fname1,
+                    fname3, fname1,
                     errno, strerror(errno));
         }
         event_set[Tst_count].mask = IN_MOVE_SELF;
diff -Nurp ltp-full-20080229.orig/testcases/kernel/syscalls/inotify/README 
ltp-full-20080229/testcases/kernel/syscalls/inotify/README
--- ltp-full-20080229.orig/testcases/kernel/syscalls/inotify/README     
2008-02-29 15:55:45.000000000 +0800
+++ ltp-full-20080229/testcases/kernel/syscalls/inotify/README  2008-03-27 
16:40:23.000000000 +0800
@@ -30,7 +30,9 @@ test 2:
                close                           IN_CLOSE_WRITE
                rename file                     IN_MOVED_FROM
                                                IN_MOVED_TO
-               unlink file                     IN_DELETE
                rename yourself                 IN_MOVE_SELF
+               unlink file                     IN_DELETE
+               rename yourself again
                rename back                     IN_MOVE_SELF
-       check that all events have been received
+       check that all events have been received and the last two successive
+       IN_MOVE_SELF events will be coalesced into a single one.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to