update fileio test
authorTom Tromey <tromey@redhat.com>
Fri, 23 Aug 2013 18:18:39 +0000 (12:18 -0600)
committerTom Tromey <tromey@redhat.com>
Mon, 4 Nov 2013 18:02:08 +0000 (11:02 -0700)
This updates the fileio test to be parallel-safe.

2013-11-04  Tom Tromey  <tromey@redhat.com>

* gdb.base/fileio.c (test_open, test_write, test_read)
(test_lseek, test_close, test_stat, test_fstat)
(test_isatty, test_system, test_rename, test_unlink):
Use OUTDIR define.
* gdb.base/fileio.exp: Define OUTDIR during compilation.
Use standard_output_file.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/fileio.c
gdb/testsuite/gdb.base/fileio.exp

index 7f076f8..c913cbb 100644 (file)
@@ -1,5 +1,14 @@
 2013-11-04  Tom Tromey  <tromey@redhat.com>
 
+       * gdb.base/fileio.c (test_open, test_write, test_read)
+       (test_lseek, test_close, test_stat, test_fstat)
+       (test_isatty, test_system, test_rename, test_unlink):
+       Use OUTDIR define.
+       * gdb.base/fileio.exp: Define OUTDIR during compilation.
+       Use standard_output_file.
+
+2013-11-04  Tom Tromey  <tromey@redhat.com>
+
        * gdb.base/checkpoint.c (main): Use PI_TXT and COPY1_TXT
        defines.
        * gdb.base/checkpoint.exp: Define PI_TXT and COPY1_TXT during
index 329522f..4926c05 100644 (file)
@@ -58,6 +58,7 @@ system (const char * string);
 1) Invalid string/command. -  returns 127.  */
 static const char *strerrno (int err);
 
+/* Note that OUTDIR is defined by the test suite.  */
 #define FILENAME    "foo.fileio.test"
 #define RENAMED     "bar.fileio.test"
 #define NONEXISTANT "nofoo.fileio.test"
@@ -77,7 +78,7 @@ test_open ()
 
   /* Test opening */
   errno = 0;
-  ret = open (FILENAME, O_CREAT | O_TRUNC | O_RDWR, S_IWUSR | S_IRUSR);
+  ret = open (OUTDIR FILENAME, O_CREAT | O_TRUNC | O_RDWR, S_IWUSR | S_IRUSR);
   printf ("open 1: ret = %d, errno = %d %s\n", ret, errno,
          ret >= 0 ? "OK" : "");
   
@@ -86,7 +87,7 @@ test_open ()
   stop ();
   /* Creating an already existing file (created by fileio.exp) */
   errno = 0;
-  ret = open (FILENAME, O_CREAT | O_EXCL | O_WRONLY, S_IWUSR | S_IRUSR);
+  ret = open (OUTDIR FILENAME, O_CREAT | O_EXCL | O_WRONLY, S_IWUSR | S_IRUSR);
   printf ("open 2: ret = %d, errno = %d %s\n", ret, errno,
          strerrno (errno));
   if (ret >= 0)
@@ -110,13 +111,13 @@ test_open ()
   stop ();
   /* Open for write but no write permission */
   errno = 0;
-  ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR);
+  ret = open (OUTDIR NOWRITE, O_CREAT | O_RDONLY, S_IRUSR);
   if (ret >= 0)
     {
       close (ret);
       stop ();
       errno = 0;
-      ret = open (NOWRITE, O_WRONLY);
+      ret = open (OUTDIR NOWRITE, O_WRONLY);
       printf ("open 5: ret = %d, errno = %d %s\n", ret, errno,
              strerrno (errno));
       if (ret >= 0)
@@ -137,7 +138,7 @@ test_write ()
 
   /* Test writing */
   errno = 0;
-  fd = open (FILENAME, O_WRONLY);
+  fd = open (OUTDIR FILENAME, O_WRONLY);
   if (fd >= 0)
     {
       errno = 0;
@@ -157,7 +158,7 @@ test_write ()
   stop ();
   /* Write to a read-only file */
   errno = 0;
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       errno = 0;
@@ -178,7 +179,7 @@ test_read ()
 
   /* Test reading */
   errno = 0;
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       memset (buf, 0, 16);
@@ -210,7 +211,7 @@ test_lseek ()
 
   /* Test seeking */
   errno = 0;
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       errno = 0;
@@ -251,7 +252,7 @@ test_close ()
 
   /* Test close */
   errno = 0;
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       errno = 0;
@@ -278,7 +279,7 @@ test_stat ()
 
   /* Test stat */
   errno = 0;
-  ret = stat (FILENAME, &st);
+  ret = stat (OUTDIR FILENAME, &st);
   if (!ret)
     printf ("stat 1: ret = %d, errno = %d %s\n", ret, errno,
            st.st_size == 11 ? "OK" : "");
@@ -313,7 +314,7 @@ test_fstat ()
 
   /* Test fstat */
   errno = 0;
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       errno = 0;
@@ -352,7 +353,7 @@ test_isatty ()
   printf ("isatty 4: invalid %s\n", isatty (999) ? "yes" : "no OK");
   stop ();
   /* Check open file */
-  fd = open (FILENAME, O_RDONLY);
+  fd = open (OUTDIR FILENAME, O_RDONLY);
   if (fd >= 0)
     {
       printf ("isatty 5: file %s\n", isatty (fd) ? "yes" : "no OK");
@@ -364,6 +365,8 @@ test_isatty ()
 }
 
 
+char sys[1512];
+
 int
 test_system ()
 {
@@ -371,14 +374,13 @@ test_system ()
    * Requires test framework to switch on "set remote system-call-allowed 1"
    */
   int ret;
-  char sys[512];
 
   /* Test for shell */
   ret = system (NULL);
   printf ("system 1: ret = %d %s\n", ret, ret != 0 ? "OK" : "");
   stop ();
   /* This test prepares the directory for test_rename() */
-  sprintf (sys, "mkdir -p %s %s", TESTSUBDIR, TESTDIR2);
+  sprintf (sys, "mkdir -p %s/%s %s/%s", OUTDIR, TESTSUBDIR, OUTDIR, TESTDIR2);
   ret = system (sys);
   if (ret == 127)
     printf ("system 2: ret = %d /bin/sh unavailable???\n", ret);
@@ -399,7 +401,7 @@ test_rename ()
 
   /* Test rename */
   errno = 0;
-  ret = rename (FILENAME, RENAMED);
+  ret = rename (OUTDIR FILENAME, OUTDIR RENAMED);
   if (!ret)
     {
       errno = 0;
@@ -407,7 +409,7 @@ test_rename ()
       if (ret && errno == ENOENT)
         {
          errno = 0;
-         ret = stat (RENAMED, &st);
+         ret = stat (OUTDIR RENAMED, &st);
          printf ("rename 1: ret = %d, errno = %d %s\n", ret, errno,
                  strerrno (errno));
          errno = 0;
@@ -420,50 +422,50 @@ test_rename ()
   stop ();
   /* newpath is existing directory, oldpath is not a directory */
   errno = 0;
-  ret = rename (RENAMED, TESTDIR2);
+  ret = rename (OUTDIR RENAMED, OUTDIR TESTDIR2);
   printf ("rename 2: ret = %d, errno = %d %s\n", ret, errno,
          strerrno (errno));
   stop ();
   /* newpath is a non-empty directory */
   errno = 0;
-  ret = rename (TESTDIR2, TESTDIR1);
+  ret = rename (OUTDIR TESTDIR2, OUTDIR TESTDIR1);
   printf ("rename 3: ret = %d, errno = %d %s\n", ret, errno,
           strerrno (errno));
   stop ();
   /* newpath is a subdirectory of old path */
   errno = 0;
-  ret = rename (TESTDIR1, TESTSUBDIR);
+  ret = rename (OUTDIR TESTDIR1, OUTDIR TESTSUBDIR);
   printf ("rename 4: ret = %d, errno = %d %s\n", ret, errno,
          strerrno (errno));
   stop ();
   /* oldpath does not exist */
   errno = 0;
-  ret = rename (NONEXISTANT, FILENAME);
+  ret = rename (OUTDIR NONEXISTANT, OUTDIR FILENAME);
   printf ("rename 5: ret = %d, errno = %d %s\n", ret, errno,
          strerrno (errno));
   stop ();
 }
 
+char name[1256];
+
 int
 test_unlink ()
 {
   int ret;
-  char name[256];
-  char sys[512];
 
   /* Test unlink */
   errno = 0;
-  ret = unlink (RENAMED);
+  ret = unlink (OUTDIR RENAMED);
   printf ("unlink 1: ret = %d, errno = %d %s\n", ret, errno,
          strerrno (errno));
   stop ();
   /* No write access */
-  sprintf (name, "%s/%s", TESTDIR2, FILENAME);
+  sprintf (name, "%s/%s/%s", OUTDIR, TESTDIR2, FILENAME);
   errno = 0;
   ret = open (name, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR);
   if (ret >= 0)
     {
-      sprintf (sys, "chmod -w %s", TESTDIR2);
+      sprintf (sys, "chmod -w %s/%s", OUTDIR, TESTDIR2);
       ret = system (sys);
       if (!ret)
         {
@@ -480,7 +482,7 @@ test_unlink ()
   stop ();
   /* pathname doesn't exist */
   errno = 0;
-  ret = unlink (NONEXISTANT);
+  ret = unlink (OUTDIR NONEXISTANT);
   printf ("unlink 3: ret = %d, errno = %d %s\n", ret, errno,
           strerrno (errno));
   stop ();
index ded043f..b9dfb38 100644 (file)
@@ -23,7 +23,15 @@ if [target_info exists gdb,nofileio] {
 
 standard_testfile
 
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+if {[is_remote host]} {
+    set outdir .
+} else {
+    set outdir [standard_output_file {}]
+}
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
+          executable \
+          [list debug "additional_flags=-DOUTDIR=\"$outdir/\""]] != "" } {
     untested fileio.exp
     return -1
 }
@@ -35,8 +43,11 @@ if [get_compiler_info] {
     return -1
 }
 
-remote_exec build {sh -xc test\ -r\ dir2.fileio.test\ &&\ chmod\ -f\ +w\ dir2.fileio.test}
-remote_exec build {sh -xc rm\ -rf\ *.fileio.test}
+set dir2 [standard_output_file dir2.fileio.test]
+if {[file exists $dir2] && ![file writable $dir2]} {
+    system "chmod +w $dir2"
+}
+system "rm -rf [standard_output_file *.fileio.test]"
 
 set oldtimeout $timeout
 set timeout [expr "$timeout + 60"]
@@ -78,7 +89,7 @@ gdb_test continue \
 
 gdb_test "continue" ".*" ""
 
-catch "system \"chmod -f -w nowrt.fileio.test\""
+catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
 
 gdb_test continue \
 "Continuing\\..*open 5:.*EACCES$stop_msg" \
@@ -241,11 +252,6 @@ gdb_test continue \
 "Time(2) returns feasible values"
 
 gdb_exit
-# Wait till GDB really exits.
-sleep 1
-
-remote_exec build {sh -xc test\ -r\ dir2.fileio.test\ &&\ chmod\ -f\ +w\ dir2.fileio.test}
-remote_exec build {sh -xc rm\ -rf\ *.fileio.test}
 
 set timeout $oldtimeout
 return 0