root/ompi/mca/io/romio321/romio/test/error.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
   2 /*  
   3  *  (C) 2001 by Argonne National Laboratory.
   4  *      See COPYRIGHT in top-level directory.
   5  */
   6 #include "mpi.h"
   7 #include <stdio.h>
   8 #include <string.h>
   9 #include <stdlib.h>
  10 
  11 #define VERBOSE 0
  12 /* tests if error message is printed correctly */
  13 
  14 int main(int argc, char **argv)
  15 {
  16     int i, rank, len, err;
  17     int errs = 0;
  18     char *filename, *tmp;
  19     MPI_File fh;
  20     char string[MPI_MAX_ERROR_STRING];
  21 
  22     MPI_Init(&argc,&argv);
  23     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  24 
  25 #if VERBOSE
  26     if (!rank) {
  27         fprintf(stderr, "Tests if errors are reported correctly...\n");
  28         fprintf(stderr, "Should say \"Invalid displacement argument\"\n\n");
  29     }
  30 #endif
  31 
  32 /* process 0 takes the file name as a command-line argument and 
  33    broadcasts it to other processes */
  34     if (!rank) {
  35         i = 1;
  36         while ((i < argc) && strcmp("-fname", *argv)) {
  37             i++;
  38             argv++;
  39         }
  40         if (i >= argc) {
  41             fprintf(stderr, "\n*#  Usage: simple -fname filename\n\n");
  42             MPI_Abort(MPI_COMM_WORLD, 1);
  43         }
  44         argv++;
  45         len = strlen(*argv);
  46         filename = (char *) malloc(len+10);
  47         strcpy(filename, *argv);
  48         MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD);
  49         MPI_Bcast(filename, len+10, MPI_CHAR, 0, MPI_COMM_WORLD);
  50     }
  51     else {
  52         MPI_Bcast(&len, 1, MPI_INT, 0, MPI_COMM_WORLD);
  53         filename = (char *) malloc(len+10);
  54         MPI_Bcast(filename, len+10, MPI_CHAR, 0, MPI_COMM_WORLD);
  55     }
  56     
  57     /* each process opens a separate file called filename.'myrank' */
  58     tmp = (char *) malloc(len+10);
  59     strcpy(tmp, filename);
  60     sprintf(filename, "%s.%d", tmp, rank);
  61 
  62     err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE+MPI_MODE_RDWR,
  63                         MPI_INFO_NULL, &fh);
  64     err = MPI_File_set_view(fh, -1, MPI_BYTE, MPI_BYTE, "native", 
  65                             MPI_INFO_NULL);
  66     /* disp is deliberately passed as -1 */
  67 
  68     /* This test is designed for ROMIO specifically and tests for a 
  69        specific error message */
  70     if (err != MPI_SUCCESS) {
  71         MPI_Error_string(err, string, &len);
  72         if (!rank) {
  73 #if VERBOSE
  74             fprintf(stderr, "%s\n", string);
  75 #else
  76             /* check for the word "displacement" in the message.
  77                This allows other formatting of the message */
  78             if (strstr( string, "displacement" ) == 0) {
  79                 fprintf( stderr, "Unexpected error message %s\n", string );
  80                 errs++;
  81             }
  82 #endif
  83         }
  84     }
  85     else {
  86         errs++;
  87         fprintf( stderr, "File set view did not return an error\n" );
  88     }
  89 
  90     MPI_File_close(&fh);
  91 
  92     free(filename);
  93     free(tmp);
  94 
  95     if (!rank) {
  96         if (errs == 0) {
  97             printf( " No Errors\n" );
  98         }
  99         else {
 100             printf( " Found %d errors\n", errs );
 101         }
 102     }
 103 
 104     MPI_Finalize();
 105     return 0; 
 106 }

/* [<][>][^][v][top][bottom][index][help] */