Skip to content

Commit

Permalink
Add this to variableBasedSeries test
Browse files Browse the repository at this point in the history
  • Loading branch information
franzpoeschel committed Feb 13, 2025
1 parent 96df03b commit ba493cf
Showing 1 changed file with 55 additions and 16 deletions.
71 changes: 55 additions & 16 deletions test/SerialIOTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5911,32 +5911,39 @@ void variableBasedSeries(std::string const &file)

auto testRead = [&file, &extent](
std::string const &parseMode,
bool supportsModifiableAttributes) {
bool supportsModifiableAttributes,
Access access = Access::READ_LINEAR) {
/*
* Need linear read mode to access more than a single iteration in
* variable-based iteration encoding.
*/
Series readSeries(file, Access::READ_LINEAR, parseMode);
Series readSeries(file, access, parseMode);
bool is_adios2 = readSeries.backend() == "ADIOS2";

size_t last_iteration_index = 0;
REQUIRE(!readSeries.containsAttribute("some_global"));
if (access == Access::READ_LINEAR)
{
REQUIRE(!readSeries.containsAttribute("some_global"));
}
readSeries.parseBase();
REQUIRE(
readSeries.getAttribute("some_global").get<std::string>() ==
"attribute");
for (auto iteration : readSeries.readIterations())
{
if (iteration.iterationIndex > 2)
{
REQUIRE(
iteration.getAttribute("iteration_is_larger_than_two")
.get<std::string>() == "it truly is");
}
else
if (access == Access::READ_LINEAR)
{
REQUIRE_FALSE(iteration.containsAttribute(
"iteration_is_larger_than_two"));
if (iteration.iterationIndex > 2)
{
REQUIRE(
iteration.getAttribute("iteration_is_larger_than_two")
.get<std::string>() == "it truly is");
}
else
{
REQUIRE_FALSE(iteration.containsAttribute(
"iteration_is_larger_than_two"));
}
}

// If modifiable attributes are unsupported, the attribute is
Expand All @@ -5946,8 +5953,11 @@ void variableBasedSeries(std::string const &file)
{
REQUIRE(
iteration.getAttribute("changing_value").get<unsigned>() ==
(supportsModifiableAttributes ? iteration.iterationIndex
: 0));
(supportsModifiableAttributes
? (access == Access::READ_LINEAR
? iteration.iterationIndex
: 9)
: 0));
}
auto E_x = iteration.meshes["E"]["x"];
REQUIRE(E_x.getDimensionality() == 1);
Expand All @@ -5965,6 +5975,13 @@ void variableBasedSeries(std::string const &file)
Extent changingExtent(dimensionality, len);
REQUIRE(E_y.getExtent() == changingExtent);

last_iteration_index = iteration.iterationIndex;

if (access == Access::READ_RANDOM_ACCESS)
{
continue;
}

// this loop ensures that only the recordcomponent ["E"]["i"] is
// present where i == iteration.iterationIndex
for (uint64_t otherIteration = 0; otherIteration < 10;
Expand Down Expand Up @@ -6008,8 +6025,6 @@ void variableBasedSeries(std::string const &file)
REQUIRE(
constantParticles.getAttribute("value").get<unsigned>() ==
iteration.iterationIndex);

last_iteration_index = iteration.iterationIndex;
}
REQUIRE(last_iteration_index == (is_adios2 ? 9 : 0));
};
Expand All @@ -6029,6 +6044,14 @@ void variableBasedSeries(std::string const &file)
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ true);
testRead(
"{\"defer_iteration_parsing\": true}",
/*supportsModifiableAttributes = */ true,
Access::READ_RANDOM_ACCESS);
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ true,
Access::READ_RANDOM_ACCESS);

jsonConfig = "{}";
testWrite(jsonConfig);
Expand All @@ -6038,6 +6061,14 @@ void variableBasedSeries(std::string const &file)
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ true);
testRead(
"{\"defer_iteration_parsing\": true}",
/*supportsModifiableAttributes = */ true,
Access::READ_RANDOM_ACCESS);
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ true,
Access::READ_RANDOM_ACCESS);

jsonConfig = R"(
{
Expand All @@ -6052,6 +6083,14 @@ void variableBasedSeries(std::string const &file)
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ false);
testRead(
"{\"defer_iteration_parsing\": true}",
/*supportsModifiableAttributes = */ false,
Access::READ_RANDOM_ACCESS);
testRead(
"{\"defer_iteration_parsing\": false}",
/*supportsModifiableAttributes = */ false,
Access::READ_RANDOM_ACCESS);
}

TEST_CASE("variableBasedSeries", "[serial][adios2]")
Expand Down

0 comments on commit ba493cf

Please sign in to comment.