f951357bf4d8a5a5f571ffcf883e5182f4760ebe
[charm.git] / tests / util / check.C
1 #include "converse.h"
2 #include "envelope.h"
3 #include <stdio.h>
4
5 void check_test(int argc, char** argv) {
6   CmiInt2 int2;
7   CmiInt4 int4;
8   CmiInt8 int8;
9   CmiUInt2 uint2;
10   CmiUInt4 uint4;
11   CmiUInt8 uint8;
12   CmiFloat4 float4;
13   CmiFloat8 float8;
14
15   if (CkMyPe()!=0) return;
16   if (sizeof(int2) != 2) {
17     CmiPrintf("Error: sizeof(CmiInt2) is %d!\n",sizeof(int2));
18     exit(1);
19   }
20   if (sizeof(int4) != 4) {
21     CmiPrintf("Error: sizeof(CmiInt4) is %d!\n",sizeof(int4));
22     exit(1);
23   }
24   if (sizeof(int8) != 8) {
25     CmiPrintf("Error: sizeof(CmiInt8) is %d!\n",sizeof(int8));
26     exit(1);
27   }
28
29   if (sizeof(uint2) != 2) {
30     CmiPrintf("Error: sizeof(CmiUInt2) is %d!\n",sizeof(uint2));
31     exit(1);
32   }
33   if (sizeof(uint4) != 4) {
34     CmiPrintf("Error: sizeof(CmiUInt4) is %d!\n",sizeof(uint4));
35     exit(1);
36   }
37   if (sizeof(uint8) != 8) {
38     CmiPrintf("Error: sizeof(CmiUInt8) is %d!\n",sizeof(uint8));
39     exit(1);
40   }
41
42   if (sizeof(float4) != 4) {
43     CmiPrintf("Error: sizeof(CmiFloat4) is %d!\n",sizeof(float4));
44     exit(1);
45   }
46   if (sizeof(float8) != 8) {
47     CmiPrintf("Error: sizeof(CmiFloat8) is %d!\n",sizeof(float8));
48     exit(1);
49   }
50
51   // Test for changes in CkEnvelopeType
52   // If the test below fails, it means the CkEnvelopeType enum was modified.
53   // BEFORE changing this test, make sure the CHARMDEBUG_MINOR version number is
54   // incremented, and the CharmDebug correspondant enumeration (in
55   // charm.debug.pdata.MsgInfo.java) is updated accordingly.
56   if (LAST_CK_ENVELOPE_TYPE != 20) {
57     CmiPrintf("Error: LAST_CK_ENVELOPE_TYPE changed. Update CharmDebug and fix this test:\n");
58     CmiPrintf("       BEFORE changing this test, make sure the CHARMDEBUG_MINOR version number is incremented, and the CharmDebug correspondant enumeration (in charm.debug.pdata.MsgInfo.java) is updated accordingly.");
59     exit(1);
60   }
61
62 #if ! CMK_SMP
63   const int s = 8*1024*1024;
64   void *buf1 = CmiAlloc(s);
65   memset(buf1, 1, s);
66   CmiUInt8 mem_before = CmiMemoryUsage();
67   void *buf2 = CmiAlloc(s);
68   memset(buf2, 2, s);
69   CmiUInt8 mem_after = CmiMemoryUsage();
70   CmiFree(buf2);
71   CmiFree(buf1);
72   CmiPrintf("CmiMemoryUsage() reported %fMB (before) vs %fMB (after)!\n", mem_before/1E6, mem_after/1E6);
73   if (mem_after - mem_before < s) {
74     CmiPrintf("Error: CmiMemoryUsage() does not work %lld %lld!\n", mem_before, mem_after);
75     CmiAbort("CmiMemoryUsage failed");
76   }
77 #endif
78
79   CmiPrintf("Info: converse header: %d envelope: %d\n", CmiReservedHeaderSize, sizeof(envelope));
80   if (sizeof(envelope) % 8 != 0) {
81     CmiPrintf("Error: size of envelope can not divide 8. \n");
82     exit(1);
83   }
84   CmiPrintf("All tests passed\n");
85 }
86
87 int main(int argc, char **argv)
88 {
89   ConverseInit(argc,argv,check_test,1,0);
90 }
91