11/* *
2- * Copyright 2013 Felix Schmitt
2+ * Copyright 2013-2016 Felix Schmitt, Axel Huebl
33 *
44 * This file is part of libSplash.
55 *
2626#include < string.h>
2727#include < set>
2828#include < string>
29+ #include < typeinfo>
2930
3031#include " Parallel_SimpleDataTest.h"
3132
@@ -45,7 +46,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(Parallel_SimpleDataTest);
4546using namespace splash ;
4647
4748Parallel_SimpleDataTest::Parallel_SimpleDataTest () :
48- ctInt (),
49+ ctInt32 (),
4950parallelDataCollector(NULL )
5051{
5152 srand (10 );
@@ -68,7 +69,7 @@ Parallel_SimpleDataTest::~Parallel_SimpleDataTest()
6869}
6970
7071bool Parallel_SimpleDataTest::testData (const Dimensions mpiSize,
71- const Dimensions gridSize, int *data)
72+ const Dimensions gridSize, int32_t *data)
7273{
7374 for (size_t z = 0 ; z < mpiSize[2 ]; ++z)
7475 for (size_t y = 0 ; y < mpiSize[1 ]; ++y)
@@ -124,18 +125,18 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
124125 fileCAttr.enableCompression = false ;
125126 parallelDataCollector->open (HDF5_FILE, fileCAttr);
126127
127- int *dataWrite = new int [bufferSize];
128+ int32_t *dataWrite = new int32_t [bufferSize];
128129
129130 for (uint32_t i = 0 ; i < bufferSize; i++)
130131 dataWrite[i] = currentMpiRank + 1 ;
131132
132- parallelDataCollector->write (iteration, ctInt , dimensions, gridSize,
133+ parallelDataCollector->write (iteration, ctInt32 , dimensions, gridSize,
133134 " deep/folder/data" , dataWrite);
134135 datasetNames.insert (" deep/folder/data" );
135- parallelDataCollector->write (iteration, ctInt , dimensions, gridSize,
136+ parallelDataCollector->write (iteration, ctInt32 , dimensions, gridSize,
136137 " deep/folder/data2" , dataWrite);
137138 datasetNames.insert (" deep/folder/data2" );
138- parallelDataCollector->write (iteration, ctInt , dimensions, gridSize,
139+ parallelDataCollector->write (iteration, ctInt32 , dimensions, gridSize,
139140 " another_dataset" , dataWrite);
140141 datasetNames.insert (" another_dataset" );
141142 parallelDataCollector->close ();
@@ -153,8 +154,8 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
153154
154155 Dimensions size_read;
155156 Dimensions full_grid_size = gridSize * mpiSize;
156- int *data_read = new int [full_grid_size.getScalarSize ()];
157- memset (data_read, 0 , sizeof (int ) * full_grid_size.getScalarSize ());
157+ int32_t *data_read = new int32_t [full_grid_size.getScalarSize ()];
158+ memset (data_read, 0 , sizeof (int32_t ) * full_grid_size.getScalarSize ());
158159
159160 // test using SerialDataCollector
160161 if (currentMpiRank == 0 )
@@ -173,7 +174,7 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
173174 MPI_CHECK (MPI_Barrier (mpiComm));
174175
175176 // test using full read per process
176- memset (data_read, 0 , sizeof (int ) * full_grid_size.getScalarSize ());
177+ memset (data_read, 0 , sizeof (int32_t ) * full_grid_size.getScalarSize ());
177178 ParallelDataCollector *readCollector = new ParallelDataCollector (mpiComm,
178179 MPI_INFO_NULL, mpiSize, 1 );
179180
@@ -202,13 +203,26 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
202203 {
203204 /* test that listed datasets match expected dataset names*/
204205 CPPUNIT_ASSERT (datasetNames.find (entries[i].name ) != datasetNames.end ());
206+ CPPUNIT_ASSERT (typeid (*entries[i].colType ) == typeid (ColTypeInt32));
205207 }
206208
207209 delete[] entries;
208210 delete[] ids;
209211 }
210212
211213 readCollector->read (iteration, " deep/folder/data" , size_read, data_read);
214+
215+ Dimensions dstBuffer (size_read);
216+ Dimensions dstOffset (0 , 0 , 0 );
217+ Dimensions sizeRead (0 , 0 , 0 );
218+ CollectionType* colType = readCollector->readMeta (iteration,
219+ " deep/folder/data" , dstBuffer, dstOffset, sizeRead);
220+
221+ CPPUNIT_ASSERT (typeid (*colType) == typeid (ColTypeInt32));
222+ CPPUNIT_ASSERT (typeid (*colType) != typeid (ColTypeUInt32));
223+ CPPUNIT_ASSERT (typeid (*colType) != typeid (ColTypeUInt64));
224+ CPPUNIT_ASSERT (typeid (*colType) != typeid (ColTypeDouble));
225+
212226 readCollector->close ();
213227
214228 CPPUNIT_ASSERT (size_read == full_grid_size);
@@ -218,8 +232,8 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
218232 MPI_CHECK (MPI_Barrier (mpiComm));
219233
220234 // test using parallel read
221- data_read = new int [gridSize.getScalarSize ()];
222- memset (data_read, 0 , sizeof (int ) * gridSize.getScalarSize ());
235+ data_read = new int32_t [gridSize.getScalarSize ()];
236+ memset (data_read, 0 , sizeof (int32_t ) * gridSize.getScalarSize ());
223237
224238 const Dimensions globalOffset = gridSize * mpiPos;
225239 readCollector->open (HDF5_FILE, fileCAttr);
@@ -379,7 +393,7 @@ bool Parallel_SimpleDataTest::subtestFill(int32_t iteration,
379393 fileCAttr.enableCompression = false ;
380394 parallelDataCollector->open (HDF5_FILE, fileCAttr);
381395
382- int dataWrite = currentMpiRank + 1 ;
396+ int32_t dataWrite = currentMpiRank + 1 ;
383397 uint32_t num_elements = (currentMpiRank + 1 ) * elements;
384398 Dimensions grid_size (num_elements, 1 , 1 );
385399
@@ -389,10 +403,10 @@ bool Parallel_SimpleDataTest::subtestFill(int32_t iteration,
389403
390404 Dimensions globalOffset, globalSize;
391405 parallelDataCollector->reserve (iteration, grid_size,
392- &globalSize, &globalOffset, 1 , ctInt , " reserved/reserved_data" );
406+ &globalSize, &globalOffset, 1 , ctInt32 , " reserved/reserved_data" );
393407
394- int attrVal = currentMpiRank;
395- parallelDataCollector->writeAttribute (iteration, ctInt , " reserved/reserved_data" ,
408+ int32_t attrVal = currentMpiRank;
409+ parallelDataCollector->writeAttribute (iteration, ctInt32 , " reserved/reserved_data" ,
396410 " reserved_attr" , &attrVal);
397411
398412 uint32_t elements_written = 0 ;
@@ -437,8 +451,8 @@ bool Parallel_SimpleDataTest::subtestFill(int32_t iteration,
437451 // test using SerialDataCollector
438452 if (currentMpiRank == 0 )
439453 {
440- int *data_read = new int [full_grid_size.getScalarSize ()];
441- memset (data_read, 0 , sizeof (int ) * full_grid_size.getScalarSize ());
454+ int32_t *data_read = new int32_t [full_grid_size.getScalarSize ()];
455+ memset (data_read, 0 , sizeof (int32_t ) * full_grid_size.getScalarSize ());
442456
443457 DataCollector *dataCollector = new SerialDataCollector (1 );
444458 dataCollector->open (filename_stream.str ().c_str (), fileCAttr);
0 commit comments