Skip to content

Commit

Permalink
test/mpi/io: Check status after zero-byte read
Browse files Browse the repository at this point in the history
Until [4b7d553], ROMIO was failing to fill in the status object
for zero-byte operations. See pmodels#2332.

Co-authored-by: Jeff Hammond <[email protected]>
  • Loading branch information
raffenet and Jeff Hammond committed Nov 22, 2019
1 parent 5a6052a commit dcccd64
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 1 deletion.
1 change: 1 addition & 0 deletions test/mpi/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -1073,6 +1073,7 @@
/io/testfile*
/io/testlist
/io/userioerr
/io/zero_count
/maint/conftimestamp
/maint/testmerge
/manual/dimsbalanced
Expand Down
3 changes: 2 additions & 1 deletion test/mpi/io/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ noinst_PROGRAMS = \
hindexed_io \
simple_collective \
external32_derived_dtype \
tst_fileview
tst_fileview \
zero_count


if BUILD_MPIX_TESTS
Expand Down
1 change: 1 addition & 0 deletions test/mpi/io/testlist.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ resized2 1
bigtype 1 mem=6.5
hindexed_io 1
tst_fileview 1
zero_count 4
simple_collective 1 arg=simple_collective.testfile
external32_derived_dtype 1
i_bigtype 1 mpiversion=3.1 mem=6.5
Expand Down
50 changes: 50 additions & 0 deletions test/mpi/io/zero_count.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2019 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
#include "mpitest.h"

/*
static char MTEST_Descrip[] = "Test count for zero length reads";
*/

int main(int argc, char **argv)
{
int errs = 0;
int len, rank, get_size;
char buf[10], *filename = __FILE__;
MPI_File fh;
MPI_Status status;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE | MPI_MODE_RDWR, MPI_INFO_NULL, &fh);

if (rank == 0)
len = 10;
else
len = 0;

/* mimic the case status object may not be initialized to 0 */
memset(&status, 1, sizeof(status));

MPI_File_read_all(fh, buf, len, MPI_BYTE, &status);
MPI_Get_count(&status, MPI_BYTE, &get_size);

if (len != get_size) {
printf("Error: expecting get_size to be %d but got %d\n", len, get_size);
errs++;
}

MPI_File_close(&fh);

MTest_Finalize(errs);
return 0;
}

0 comments on commit dcccd64

Please sign in to comment.