Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reduce the size of partial shared malloc tests.
[simgrid.git] / teshsuite / smpi / mpich3-test / init / finalized.c
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  *  (C) 2003 by Argonne National Laboratory.
4  *      See COPYRIGHT in top-level directory.
5  */
6 #include "mpi.h"
7 #include <stdio.h>
8
9 /* FIXME: This test program assumes that MPI_Error_string will work even
10    if MPI is not initialized.  That is not guaranteed.  */
11
12 /* Normally, when checking for error returns from MPI calls, you must ensure
13    that the error handler on the relevant object (communicator, file, or
14    window) has been set to MPI_ERRORS_RETURN.  The tests in this
15    program are a special case, as either a failure or an abort will
16    indicate a problem */
17
18 int main(int argc, char *argv[])
19 {
20     int error;
21     int flag;
22     char err_string[1024];
23     int length = 1024;
24     int rank;
25
26     flag = 0;
27     error = MPI_Finalized(&flag);
28     if (error != MPI_SUCCESS) {
29         MPI_Error_string(error, err_string, &length);
30         printf("MPI_Finalized failed: %s\n", err_string);
31         fflush(stdout);
32         return error;
33     }
34     if (flag) {
35         printf("MPI_Finalized returned true before MPI_Init.\n");
36         return -1;
37     }
38
39     error = MPI_Init(&argc, &argv);
40     if (error != MPI_SUCCESS) {
41         MPI_Error_string(error, err_string, &length);
42         printf("MPI_Init failed: %s\n", err_string);
43         fflush(stdout);
44         return error;
45     }
46
47     error = MPI_Comm_rank(MPI_COMM_WORLD, &rank);
48     if (error != MPI_SUCCESS) {
49         MPI_Error_string(error, err_string, &length);
50         printf("MPI_Comm_rank failed: %s\n", err_string);
51         fflush(stdout);
52         MPI_Abort(MPI_COMM_WORLD, error);
53         return error;
54     }
55
56     flag = 0;
57     error = MPI_Finalized(&flag);
58     if (error != MPI_SUCCESS) {
59         MPI_Error_string(error, err_string, &length);
60         printf("MPI_Finalized failed: %s\n", err_string);
61         fflush(stdout);
62         MPI_Abort(MPI_COMM_WORLD, error);
63         return error;
64     }
65     if (flag) {
66         printf("MPI_Finalized returned true before MPI_Finalize.\n");
67         fflush(stdout);
68         MPI_Abort(MPI_COMM_WORLD, error);
69         return -1;
70     }
71
72     error = MPI_Barrier(MPI_COMM_WORLD);
73     if (error != MPI_SUCCESS) {
74         MPI_Error_string(error, err_string, &length);
75         printf("MPI_Barrier failed: %s\n", err_string);
76         fflush(stdout);
77         MPI_Abort(MPI_COMM_WORLD, error);
78         return error;
79     }
80
81     error = MPI_Finalize();
82     if (error != MPI_SUCCESS) {
83         MPI_Error_string(error, err_string, &length);
84         printf("MPI_Finalize failed: %s\n", err_string);
85         fflush(stdout);
86         return error;
87     }
88
89     flag = 0;
90     error = MPI_Finalized(&flag);
91     if (error != MPI_SUCCESS) {
92         MPI_Error_string(error, err_string, &length);
93         printf("MPI_Finalized failed: %s\n", err_string);
94         fflush(stdout);
95         return error;
96     }
97     if (!flag) {
98         printf("MPI_Finalized returned false after MPI_Finalize.\n");
99         return -1;
100     }
101     if (rank == 0) {
102         printf(" No Errors\n");
103     }
104     return 0;
105 }