Skip to content

Commit 352c503

Browse files
committed
Extend tests: also use variable-based encoding
1 parent 9acc476 commit 352c503

1 file changed

Lines changed: 87 additions & 26 deletions

File tree

test/SerialIOTest.cpp

Lines changed: 87 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4635,41 +4635,48 @@ TEST_CASE( "late_setting_of_iterationencoding", "[serial]" )
46354635
"../samples/change_name_and_encoding_10.json" ) );
46364636
}
46374637

4638-
void append_mode( std::string const & extension )
4638+
void append_mode(
4639+
std::string const & extension,
4640+
bool variableBased,
4641+
std::string jsonConfig = "{}" )
46394642
{
4640-
std::string jsonConfig = R"END(
4641-
{
4642-
"adios2":
4643-
{
4644-
"schema": 20210209,
4645-
"engine":
4646-
{
4647-
"usesteps" : true
4648-
}
4649-
}
4650-
})END";
4651-
auto writeSomeIterations = []( WriteIterations && writeIterations,
4652-
std::vector< uint64_t > indices )
4653-
{
4643+
4644+
std::string filename = ( variableBased ? "../samples/append_variablebased."
4645+
: "../samples/append_groupbased." ) +
4646+
extension;
4647+
std::vector< int > data( 10, 0 );
4648+
auto writeSomeIterations = [ &data ](
4649+
WriteIterations && writeIterations,
4650+
std::vector< uint64_t > indices ) {
46544651
for( auto index : indices )
46554652
{
46564653
auto it = writeIterations[ index ];
46574654
auto dataset = it.meshes[ "E" ][ "x" ];
4658-
dataset.resetDataset( { Datatype::INT, { 1 } } );
4659-
dataset.makeConstant< int >( 0 );
4655+
dataset.resetDataset( { Datatype::INT, { 10 } } );
4656+
dataset.storeChunk( data, { 0 }, { 10 } );
46604657
// test that it works without closing too
46614658
it.close();
46624659
}
46634660
};
46644661
{
4665-
Series write(
4666-
"../samples/append." + extension, Access::CREATE, jsonConfig );
4662+
Series write( filename, Access::CREATE, jsonConfig );
4663+
if( variableBased )
4664+
{
4665+
if(write.backend() != "ADIOS2")
4666+
{
4667+
return;
4668+
}
4669+
write.setIterationEncoding( IterationEncoding::variableBased );
4670+
}
46674671
writeSomeIterations(
46684672
write.writeIterations(), std::vector< uint64_t >{ 0, 1 } );
46694673
}
46704674
{
4671-
Series write(
4672-
"../samples/append." + extension, Access::APPEND, jsonConfig );
4675+
Series write( filename, Access::APPEND, jsonConfig );
4676+
if( variableBased )
4677+
{
4678+
write.setIterationEncoding( IterationEncoding::variableBased );
4679+
}
46734680
if( write.backend() == "ADIOS1" )
46744681
{
46754682
REQUIRE_THROWS_AS(
@@ -4683,8 +4690,11 @@ void append_mode( std::string const & extension )
46834690
write.flush();
46844691
}
46854692
{
4686-
Series write(
4687-
"../samples/append." + extension, Access::APPEND, jsonConfig );
4693+
Series write( filename, Access::APPEND, jsonConfig );
4694+
if( variableBased )
4695+
{
4696+
write.setIterationEncoding( IterationEncoding::variableBased );
4697+
}
46884698
if( write.backend() == "ADIOS1" )
46894699
{
46904700
REQUIRE_THROWS_AS(
@@ -4698,8 +4708,23 @@ void append_mode( std::string const & extension )
46984708
write.flush();
46994709
}
47004710
{
4701-
Series read( "../samples/append." + extension, Access::READ_ONLY );
4702-
REQUIRE( read.iterations.size() == 5 );
4711+
Series read( filename, Access::READ_ONLY );
4712+
if( variableBased )
4713+
{
4714+
// in variable-based encodings, iterations are not parsed ahead of
4715+
// time but as they go
4716+
unsigned counter = 0;
4717+
for( auto iteration : read.readIterations() )
4718+
{
4719+
REQUIRE( iteration.iterationIndex == counter );
4720+
++counter;
4721+
}
4722+
REQUIRE( counter == 5 );
4723+
}
4724+
else
4725+
{
4726+
REQUIRE( read.iterations.size() == 5 );
4727+
}
47034728
/*
47044729
* Roadmap: for now, reading this should work by ignoring the last
47054730
* duplicate iteration.
@@ -4715,7 +4740,43 @@ TEST_CASE( "append_mode", "[serial]" )
47154740
{
47164741
for( auto const & t : testedFileExtensions() )
47174742
{
4718-
append_mode( t );
4743+
if( t == "h5" )
4744+
{
4745+
continue;
4746+
}
4747+
if( t == "bp" )
4748+
{
4749+
std::string jsonConfigOld = R"END(
4750+
{
4751+
"adios2":
4752+
{
4753+
"schema": 0,
4754+
"engine":
4755+
{
4756+
"usesteps" : true
4757+
}
4758+
}
4759+
})END";
4760+
std::string jsonConfigNew = R"END(
4761+
{
4762+
"adios2":
4763+
{
4764+
"schema": 20210209,
4765+
"engine":
4766+
{
4767+
"usesteps" : true
4768+
}
4769+
}
4770+
})END";
4771+
append_mode( t, false, jsonConfigOld );
4772+
append_mode( t, false, jsonConfigNew );
4773+
append_mode( t, true, jsonConfigOld );
4774+
append_mode( t, true, jsonConfigNew );
4775+
}
4776+
else
4777+
{
4778+
append_mode( t, false );
4779+
}
47194780
}
47204781
}
47214782

0 commit comments

Comments
 (0)