Blame test/mpi/init/finalized.c

Packit 0848f5
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit 0848f5
/*
Packit 0848f5
 *  (C) 2003 by Argonne National Laboratory.
Packit 0848f5
 *      See COPYRIGHT in top-level directory.
Packit 0848f5
 */
Packit 0848f5
#include "mpi.h"
Packit 0848f5
#include <stdio.h>
Packit 0848f5
Packit 0848f5
/* FIXME: This test program assumes that MPI_Error_string will work even
Packit 0848f5
   if MPI is not initialized.  That is not guaranteed.  */
Packit 0848f5
Packit 0848f5
/* Normally, when checking for error returns from MPI calls, you must ensure
Packit 0848f5
   that the error handler on the relevant object (communicator, file, or
Packit 0848f5
   window) has been set to MPI_ERRORS_RETURN.  The tests in this
Packit 0848f5
   program are a special case, as either a failure or an abort will
Packit 0848f5
   indicate a problem */
Packit 0848f5
Packit 0848f5
int main(int argc, char *argv[])
Packit 0848f5
{
Packit 0848f5
    int error;
Packit 0848f5
    int flag;
Packit 0848f5
    char err_string[1024];
Packit 0848f5
    int length = 1024;
Packit 0848f5
    int rank;
Packit 0848f5
Packit 0848f5
    flag = 0;
Packit 0848f5
    error = MPI_Finalized(&flag;;
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Finalized failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
    if (flag) {
Packit 0848f5
        printf("MPI_Finalized returned true before MPI_Init.\n");
Packit 0848f5
        return -1;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    error = MPI_Init(&argc, &argv);
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Init failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    error = MPI_Comm_rank(MPI_COMM_WORLD, &rank;;
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Comm_rank failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        MPI_Abort(MPI_COMM_WORLD, error);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    flag = 0;
Packit 0848f5
    error = MPI_Finalized(&flag;;
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Finalized failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        MPI_Abort(MPI_COMM_WORLD, error);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
    if (flag) {
Packit 0848f5
        printf("MPI_Finalized returned true before MPI_Finalize.\n");
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        MPI_Abort(MPI_COMM_WORLD, error);
Packit 0848f5
        return -1;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    error = MPI_Barrier(MPI_COMM_WORLD);
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Barrier failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        MPI_Abort(MPI_COMM_WORLD, error);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    error = MPI_Finalize();
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Finalize failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
Packit 0848f5
    flag = 0;
Packit 0848f5
    error = MPI_Finalized(&flag;;
Packit 0848f5
    if (error != MPI_SUCCESS) {
Packit 0848f5
        MPI_Error_string(error, err_string, &length);
Packit 0848f5
        printf("MPI_Finalized failed: %s\n", err_string);
Packit 0848f5
        fflush(stdout);
Packit 0848f5
        return error;
Packit 0848f5
    }
Packit 0848f5
    if (!flag) {
Packit 0848f5
        printf("MPI_Finalized returned false after MPI_Finalize.\n");
Packit 0848f5
        return -1;
Packit 0848f5
    }
Packit 0848f5
    if (rank == 0) {
Packit 0848f5
        printf(" No Errors\n");
Packit 0848f5
    }
Packit 0848f5
    return 0;
Packit 0848f5
}