2424#include < time.h>
2525#include < stdlib.h>
2626#include < string.h>
27+ #include < set>
28+ #include < string>
2729
2830#include " Parallel_SimpleDataTest.h"
2931
@@ -107,6 +109,7 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
107109{
108110 bool results_correct = true ;
109111 DataCollector::FileCreationAttr fileCAttr;
112+ std::set<std::string> datasetNames;
110113
111114#if defined TESTS_DEBUG
112115 if (currentMpiRank == 0 )
@@ -128,6 +131,13 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
128131
129132 parallelDataCollector->write (iteration, ctInt, dimensions, gridSize,
130133 " deep/folder/data" , dataWrite);
134+ datasetNames.insert (" deep/folder/data" );
135+ parallelDataCollector->write (iteration, ctInt, dimensions, gridSize,
136+ " deep/folder/data2" , dataWrite);
137+ datasetNames.insert (" deep/folder/data2" );
138+ parallelDataCollector->write (iteration, ctInt, dimensions, gridSize,
139+ " another_dataset" , dataWrite);
140+ datasetNames.insert (" another_dataset" );
131141 parallelDataCollector->close ();
132142
133143 delete[] dataWrite;
@@ -168,6 +178,36 @@ bool Parallel_SimpleDataTest::subtestWriteRead(int32_t iteration,
168178 MPI_INFO_NULL, mpiSize, 1 );
169179
170180 readCollector->open (HDF5_FILE, fileCAttr);
181+
182+ /* test entries listing */
183+ {
184+ DataCollector::DCEntry *entries = NULL ;
185+ size_t numEntries = 0 ;
186+
187+ int32_t *ids = NULL ;
188+ size_t numIDs = 0 ;
189+ readCollector->getEntryIDs (NULL , &numIDs);
190+ /* there might be old files, but we are at least at the current iteration */
191+ CPPUNIT_ASSERT (numIDs >= iteration + 1 );
192+ ids = new int32_t [numIDs];
193+ readCollector->getEntryIDs (ids, NULL );
194+
195+ readCollector->getEntriesForID (iteration, NULL , &numEntries);
196+ CPPUNIT_ASSERT (numEntries == 3 );
197+ entries = new DataCollector::DCEntry[numEntries];
198+ readCollector->getEntriesForID (iteration, entries, NULL );
199+
200+ CPPUNIT_ASSERT (numEntries == datasetNames.size ());
201+ for (uint32_t i = 0 ; i < numEntries; ++i)
202+ {
203+ /* test that listed datasets match expected dataset names*/
204+ CPPUNIT_ASSERT (datasetNames.find (entries[i].name ) != datasetNames.end ());
205+ }
206+
207+ delete[] entries;
208+ delete[] ids;
209+ }
210+
171211 readCollector->read (iteration, " deep/folder/data" , size_read, data_read);
172212 readCollector->close ();
173213
0 commit comments