Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reduce the size of partial shared malloc tests.
[simgrid.git] / teshsuite / smpi / mpich3-test / info / infoorder.c
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  *
4  *  (C) 2003 by Argonne National Laboratory.
5  *      See COPYRIGHT in top-level directory.
6  */
7 #include "mpi.h"
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include "mpitest.h"
11 #include "mpitestconf.h"
12 #ifdef HAVE_STRING_H
13 #include <string.h>
14 #endif
15
16 #define NKEYS 3
17 int main(int argc, char *argv[])
18 {
19     int errs = 0;
20     MPI_Info info;
21     char *keys1[NKEYS] = { (char *) "file", (char *) "soft", (char *) "host" };
22     char *values1[NKEYS] = { (char *) "runfile.txt", (char *) "2:1000:4,3:1000:7",
23         (char *) "myhost.myorg.org"
24     };
25
26     char value[MPI_MAX_INFO_VAL];
27     int i, flag;
28
29     MTest_Init(&argc, &argv);
30
31     /* 1,2,3 */
32     MPI_Info_create(&info);
33     /* Use only named keys incase the info implementation only supports
34      * the predefined keys (e.g., IBM) */
35     for (i = 0; i < NKEYS; i++) {
36         MPI_Info_set(info, keys1[i], values1[i]);
37     }
38
39     /* Check that all values are present */
40     for (i = 0; i < NKEYS; i++) {
41         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
42         if (!flag) {
43             errs++;
44             printf("No value for key %s\n", keys1[i]);
45         }
46         if (strcmp(value, values1[i])) {
47             errs++;
48             printf("Incorrect value for key %s\n", keys1[i]);
49         }
50     }
51     MPI_Info_free(&info);
52
53     /* 3,2,1 */
54     MPI_Info_create(&info);
55     /* Use only named keys incase the info implementation only supports
56      * the predefined keys (e.g., IBM) */
57     for (i = NKEYS - 1; i >= 0; i--) {
58         MPI_Info_set(info, keys1[i], values1[i]);
59     }
60
61     /* Check that all values are present */
62     for (i = 0; i < NKEYS; i++) {
63         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
64         if (!flag) {
65             errs++;
66             printf("No value for key %s\n", keys1[i]);
67         }
68         if (strcmp(value, values1[i])) {
69             errs++;
70             printf("Incorrect value for key %s\n", keys1[i]);
71         }
72     }
73     MPI_Info_free(&info);
74
75     /* 1,3,2 */
76     MPI_Info_create(&info);
77     /* Use only named keys incase the info implementation only supports
78      * the predefined keys (e.g., IBM) */
79     MPI_Info_set(info, keys1[0], values1[0]);
80     MPI_Info_set(info, keys1[2], values1[2]);
81     MPI_Info_set(info, keys1[1], values1[1]);
82
83     /* Check that all values are present */
84     for (i = 0; i < NKEYS; i++) {
85         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
86         if (!flag) {
87             errs++;
88             printf("No value for key %s\n", keys1[i]);
89         }
90         if (strcmp(value, values1[i])) {
91             errs++;
92             printf("Incorrect value for key %s\n", keys1[i]);
93         }
94     }
95     MPI_Info_free(&info);
96
97     /* 2,1,3 */
98     MPI_Info_create(&info);
99     /* Use only named keys incase the info implementation only supports
100      * the predefined keys (e.g., IBM) */
101     MPI_Info_set(info, keys1[1], values1[1]);
102     MPI_Info_set(info, keys1[0], values1[0]);
103     MPI_Info_set(info, keys1[2], values1[2]);
104
105     /* Check that all values are present */
106     for (i = 0; i < NKEYS; i++) {
107         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
108         if (!flag) {
109             errs++;
110             printf("No value for key %s\n", keys1[i]);
111         }
112         if (strcmp(value, values1[i])) {
113             errs++;
114             printf("Incorrect value for key %s\n", keys1[i]);
115         }
116     }
117     MPI_Info_free(&info);
118
119     /* 2,3,1 */
120     MPI_Info_create(&info);
121     /* Use only named keys incase the info implementation only supports
122      * the predefined keys (e.g., IBM) */
123     MPI_Info_set(info, keys1[1], values1[1]);
124     MPI_Info_set(info, keys1[2], values1[2]);
125     MPI_Info_set(info, keys1[0], values1[0]);
126
127     /* Check that all values are present */
128     for (i = 0; i < NKEYS; i++) {
129         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
130         if (!flag) {
131             errs++;
132             printf("No value for key %s\n", keys1[i]);
133         }
134         if (strcmp(value, values1[i])) {
135             errs++;
136             printf("Incorrect value for key %s\n", keys1[i]);
137         }
138     }
139     MPI_Info_free(&info);
140
141     /* 3,1,2 */
142     MPI_Info_create(&info);
143     /* Use only named keys incase the info implementation only supports
144      * the predefined keys (e.g., IBM) */
145     MPI_Info_set(info, keys1[2], values1[2]);
146     MPI_Info_set(info, keys1[0], values1[0]);
147     MPI_Info_set(info, keys1[1], values1[1]);
148
149     /* Check that all values are present */
150     for (i = 0; i < NKEYS; i++) {
151         MPI_Info_get(info, keys1[i], MPI_MAX_INFO_VAL, value, &flag);
152         if (!flag) {
153             errs++;
154             printf("No value for key %s\n", keys1[i]);
155         }
156         if (strcmp(value, values1[i])) {
157             errs++;
158             printf("Incorrect value for key %s\n", keys1[i]);
159         }
160     }
161     MPI_Info_free(&info);
162
163     MTest_Finalize(errs);
164     MPI_Finalize();
165     return 0;
166
167 }