From ba493cfa0aeeb257fa153f82480d28bb93d10a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20P=C3=B6schel?= Date: Thu, 13 Feb 2025 17:27:37 +0100 Subject: [PATCH] Add this to variableBasedSeries test --- test/SerialIOTest.cpp | 71 +++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/test/SerialIOTest.cpp b/test/SerialIOTest.cpp index b9d264e153..07daed68cb 100644 --- a/test/SerialIOTest.cpp +++ b/test/SerialIOTest.cpp @@ -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() == "attribute"); for (auto iteration : readSeries.readIterations()) { - if (iteration.iterationIndex > 2) - { - REQUIRE( - iteration.getAttribute("iteration_is_larger_than_two") - .get() == "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() == "it truly is"); + } + else + { + REQUIRE_FALSE(iteration.containsAttribute( + "iteration_is_larger_than_two")); + } } // If modifiable attributes are unsupported, the attribute is @@ -5946,8 +5953,11 @@ void variableBasedSeries(std::string const &file) { REQUIRE( iteration.getAttribute("changing_value").get() == - (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); @@ -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; @@ -6008,8 +6025,6 @@ void variableBasedSeries(std::string const &file) REQUIRE( constantParticles.getAttribute("value").get() == iteration.iterationIndex); - - last_iteration_index = iteration.iterationIndex; } REQUIRE(last_iteration_index == (is_adios2 ? 9 : 0)); }; @@ -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); @@ -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"( { @@ -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]")