Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
aa1db8c35b635d3ba5b0f273999fea62978c5cd9
[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     char value[MPI_MAX_INFO_VAL];
26     int i, flag;
27
28     MTest_Init( &argc, &argv );
29
30     /* 1,2,3 */
31     MPI_Info_create( &info );
32     /* Use only named keys incase the info implementation only supports
33        the predefined keys (e.g., IBM) */
34     for (i=0; i<NKEYS; i++) {
35         MPI_Info_set( info, keys1[i], values1[i] );
36     }
37
38     /* Check that all values are present */
39     for (i=0; i<NKEYS; i++) {
40         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
41         if (!flag) {
42             errs++;
43             printf( "No value for key %s\n", keys1[i] );
44         }
45         if (strcmp( value, values1[i] )) {
46             errs++;
47             printf( "Incorrect value for key %s\n", keys1[i] );
48         }
49     }
50     MPI_Info_free( &info );
51
52     /* 3,2,1 */
53     MPI_Info_create( &info );
54     /* Use only named keys incase the info implementation only supports
55        the predefined keys (e.g., IBM) */
56     for (i=NKEYS-1; i>=0; i--) {
57         MPI_Info_set( info, keys1[i], values1[i] );
58     }
59
60     /* Check that all values are present */
61     for (i=0; i<NKEYS; i++) {
62         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
63         if (!flag) {
64             errs++;
65             printf( "No value for key %s\n", keys1[i] );
66         }
67         if (strcmp( value, values1[i] )) {
68             errs++;
69             printf( "Incorrect value for key %s\n", keys1[i] );
70         }
71     }
72     MPI_Info_free( &info );
73
74     /* 1,3,2 */
75     MPI_Info_create( &info );
76     /* Use only named keys incase the info implementation only supports
77        the predefined keys (e.g., IBM) */
78     MPI_Info_set( info, keys1[0], values1[0] );
79     MPI_Info_set( info, keys1[2], values1[2] );
80     MPI_Info_set( info, keys1[1], values1[1] );
81
82     /* Check that all values are present */
83     for (i=0; i<NKEYS; i++) {
84         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
85         if (!flag) {
86             errs++;
87             printf( "No value for key %s\n", keys1[i] );
88         }
89         if (strcmp( value, values1[i] )) {
90             errs++;
91             printf( "Incorrect value for key %s\n", keys1[i] );
92         }
93     }
94     MPI_Info_free( &info );
95
96     /* 2,1,3 */
97     MPI_Info_create( &info );
98     /* Use only named keys incase the info implementation only supports
99        the predefined keys (e.g., IBM) */
100     MPI_Info_set( info, keys1[1], values1[1] );
101     MPI_Info_set( info, keys1[0], values1[0] );
102     MPI_Info_set( info, keys1[2], values1[2] );
103
104     /* Check that all values are present */
105     for (i=0; i<NKEYS; i++) {
106         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
107         if (!flag) {
108             errs++;
109             printf( "No value for key %s\n", keys1[i] );
110         }
111         if (strcmp( value, values1[i] )) {
112             errs++;
113             printf( "Incorrect value for key %s\n", keys1[i] );
114         }
115     }
116     MPI_Info_free( &info );
117
118     /* 2,3,1 */
119     MPI_Info_create( &info );
120     /* Use only named keys incase the info implementation only supports
121        the predefined keys (e.g., IBM) */
122     MPI_Info_set( info, keys1[1], values1[1] );
123     MPI_Info_set( info, keys1[2], values1[2] );
124     MPI_Info_set( info, keys1[0], values1[0] );
125
126     /* Check that all values are present */
127     for (i=0; i<NKEYS; i++) {
128         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
129         if (!flag) {
130             errs++;
131             printf( "No value for key %s\n", keys1[i] );
132         }
133         if (strcmp( value, values1[i] )) {
134             errs++;
135             printf( "Incorrect value for key %s\n", keys1[i] );
136         }
137     }
138     MPI_Info_free( &info );
139     
140     /* 3,1,2 */
141     MPI_Info_create( &info );
142     /* Use only named keys incase the info implementation only supports
143        the predefined keys (e.g., IBM) */
144     MPI_Info_set( info, keys1[2], values1[2] );
145     MPI_Info_set( info, keys1[0], values1[0] );
146     MPI_Info_set( info, keys1[1], values1[1] );
147
148     /* Check that all values are present */
149     for (i=0; i<NKEYS; i++) {
150         MPI_Info_get( info, keys1[i], MPI_MAX_INFO_VAL, value, &flag );
151         if (!flag) {
152             errs++;
153             printf( "No value for key %s\n", keys1[i] );
154         }
155         if (strcmp( value, values1[i] )) {
156             errs++;
157             printf( "Incorrect value for key %s\n", keys1[i] );
158         }
159     }
160     MPI_Info_free( &info );
161     
162     MTest_Finalize( errs );
163     MPI_Finalize();
164     return 0;
165   
166 }