diff --git a/testing/adios2/engine/EngineWriteReadTest.cpp b/testing/adios2/engine/EngineWriteReadTest.cpp deleted file mode 100644 index b6ced9212d9528bb0c03850148b1a8e723440197..0000000000000000000000000000000000000000 --- a/testing/adios2/engine/EngineWriteReadTest.cpp +++ /dev/null @@ -1,168 +0,0 @@ -#include "EngineWriteReadTest.h" - -#include <cstdint> - -#include <array> -#include <iostream> -#include <stdexcept> - -#include <adios2.h> - -#include <gtest/gtest.h> - -EngineWriteReadTestBase::EngineWriteReadTestBase(std::string engineName, - std::string fileName) -: m_EngineName(engineName), m_FileName(fileName), m_Method(nullptr) -{ -} - -void EngineWriteReadTestBase::SetUp() -{ - m_adios = std::unique_ptr<adios::ADIOS>( - new adios::ADIOS(adios::Verbose::WARN, true)); -} - -void EngineWriteReadTestBase::TearDown() { m_adios.reset(); } - -void EngineWriteReadTestBase::SetUpWrite() -{ - m_Method = &m_adios->DeclareMethod("TestMethod"); - m_Method->SetEngine(m_EngineName); - m_Method->AddTransport("File"); - m_Engine = m_adios->Open(m_FileName, "w", *m_Method); - ASSERT_NE(m_Engine, nullptr); -} - -void EngineWriteReadTestBase::TearDownWrite() -{ - m_Method = nullptr; - m_Engine->Close(); - m_Engine.reset(); -} - -void EngineWriteReadTestBase::WriteStep(size_t step) -{ - auto &var_i8 = m_adios->GetVariable<char>("i8"); - auto &var_i16 = m_adios->GetVariable<short>("i16"); - auto &var_i32 = m_adios->GetVariable<int>("i32"); - auto &var_i64 = m_adios->GetVariable<long>("i64"); - auto &var_u8 = m_adios->GetVariable<unsigned char>("u8"); - auto &var_u16 = m_adios->GetVariable<unsigned short>("u16"); - auto &var_u32 = m_adios->GetVariable<unsigned int>("u32"); - auto &var_u64 = m_adios->GetVariable<unsigned long>("u64"); - auto &var_r32 = m_adios->GetVariable<float>("r32"); - auto &var_r64 = m_adios->GetVariable<double>("r64"); - - m_Engine->Write(var_i8, m_DataI8.cbegin() + step); - m_Engine->Write(var_i16, m_DataI16.cbegin() + step); - m_Engine->Write(var_i32, m_DataI32.cbegin() + step); - m_Engine->Write(var_i64, m_DataI64.cbegin() + step); - m_Engine->Write(var_u8, m_DataU8.cbegin() + step); - m_Engine->Write(var_u16, m_DataU16.cbegin() + step); - m_Engine->Write(var_u32, m_DataU32.cbegin() + step); - m_Engine->Write(var_u64, m_DataU64.cbegin() + step); - m_Engine->Write(var_r32, m_DataR32.cbegin() + step); - m_Engine->Write(var_r64, m_DataR64.cbegin() + step); -} - -void EngineWriteReadTestBase::Write3Steps() -{ - for (size_t t = 0; t < 3; ++t) - { - WriteStep(t); - m_Engine->Advance(); - } -} - -void EngineWriteReadTestBase::WriteRead() -{ - Declare(); - SetUpWrite(); - Write3Steps(); - TearDownWrite(); -} - -//****************************************************************************** -// 1D test data -//****************************************************************************** - -void EngineWriteRead1DTest::Declare() -{ - auto &var_i8 = m_adios->DefineVariable<char>("i8", adios::Dims{8}); - auto &var_i16 = m_adios->DefineVariable<short>("i16", adios::Dims{8}); - auto &var_i32 = m_adios->DefineVariable<int>("i32", adios::Dims{8}); - auto &var_i64 = m_adios->DefineVariable<long>("i64", adios::Dims{8}); - auto &var_u8 = m_adios->DefineVariable<unsigned char>("u8", adios::Dims{8}); - auto &var_u16 = - m_adios->DefineVariable<unsigned short>("u16", adios::Dims{8}); - auto &var_u32 = - m_adios->DefineVariable<unsigned int>("u32", adios::Dims{8}); - auto &var_u64 = - m_adios->DefineVariable<unsigned long>("u64", adios::Dims{8}); - auto &var_r32 = m_adios->DefineVariable<float>("r32", adios::Dims{8}); - auto &var_r64 = m_adios->DefineVariable<double>("r64", adios::Dims{8}); -} - -//****************************************************************************** -// 2D 2x4 test data -//****************************************************************************** - -void EngineWriteRead2D2x4Test::Declare() -{ - auto &var_i8 = m_adios->DefineVariable<char>("i8", adios::Dims{2, 4}); - auto &var_i16 = m_adios->DefineVariable<short>("i16", adios::Dims{2, 4}); - auto &var_i32 = m_adios->DefineVariable<int>("i32", adios::Dims{2, 4}); - auto &var_i64 = m_adios->DefineVariable<long>("i64", adios::Dims{2, 4}); - auto &var_u8 = - m_adios->DefineVariable<unsigned char>("u8", adios::Dims{2, 4}); - auto &var_u16 = - m_adios->DefineVariable<unsigned short>("u16", adios::Dims{2, 4}); - auto &var_u32 = - m_adios->DefineVariable<unsigned int>("u32", adios::Dims{2, 4}); - auto &var_u64 = - m_adios->DefineVariable<unsigned long>("u64", adios::Dims{2, 4}); - auto &var_r32 = m_adios->DefineVariable<float>("r32", adios::Dims{2, 4}); - auto &var_r64 = m_adios->DefineVariable<double>("r64", adios::Dims{2, 4}); -} - -//****************************************************************************** -// 2D 4x2 test data -//****************************************************************************** - -void EngineWriteRead2D4x2Test::Declare() -{ - auto &var_i8 = m_adios->DefineVariable<char>("i8", adios::Dims{4, 2}); - auto &var_i16 = m_adios->DefineVariable<short>("i16", adios::Dims{4, 2}); - auto &var_i32 = m_adios->DefineVariable<int>("i32", adios::Dims{4, 2}); - auto &var_i64 = m_adios->DefineVariable<long>("i64", adios::Dims{4, 2}); - auto &var_u8 = - m_adios->DefineVariable<unsigned char>("u8", adios::Dims{4, 2}); - auto &var_u16 = - m_adios->DefineVariable<unsigned short>("u16", adios::Dims{4, 2}); - auto &var_u32 = - m_adios->DefineVariable<unsigned int>("u32", adios::Dims{4, 2}); - auto &var_u64 = - m_adios->DefineVariable<unsigned long>("u64", adios::Dims{4, 2}); - auto &var_r32 = m_adios->DefineVariable<float>("r32", adios::Dims{4, 2}); - auto &var_r64 = m_adios->DefineVariable<double>("r64", adios::Dims{4, 2}); -} - -//****************************************************************************** -// main -//****************************************************************************** - -int main(int argc, char **argv) -{ -#ifdef ADIOS2_HAVE_MPI - MPI_Init(nullptr, nullptr); -#endif - - ::testing::InitGoogleTest(&argc, argv); - int result = RUN_ALL_TESTS(); - -#ifdef ADIOS2_HAVE_MPI - MPI_Finalize(); -#endif - - return result; -} diff --git a/testing/adios2/engine/EngineWriteReadTest.h b/testing/adios2/engine/EngineWriteReadTest.h deleted file mode 100644 index 1027930546cb5fffc4c011b5a622a2b2968bd9d7..0000000000000000000000000000000000000000 --- a/testing/adios2/engine/EngineWriteReadTest.h +++ /dev/null @@ -1,104 +0,0 @@ -#include <cstdint> - -#include <array> -#include <iostream> -#include <stdexcept> - -#include <adios2.h> - -#include <gtest/gtest.h> - -class EngineWriteReadTestBase : public ::testing::Test -{ -public: - EngineWriteReadTestBase(std::string engineName, std::string fileName); - -protected: - std::unique_ptr<adios::ADIOS> m_adios; - std::string m_EngineName; - std::string m_FileName; - - // To be created by child class SetUp() - adios::Method *m_Method; - std::shared_ptr<adios::Engine> m_Engine; - - // Create and destroy the manager class - virtual void SetUp(); - virtual void TearDown(); - - // Open and close files - virtual void SetUpWrite(); - virtual void TearDownWrite(); - - // Shared test functions - virtual void Declare() = 0; - void WriteStep(size_t step); - void Write3Steps(); - void WriteRead(); - - //************************************************************************* - // Test Data - //************************************************************************* - - // Test data for each type. Make sure our values exceed the range of the - // previous size to make sure we all bytes for each element - std::array<char, 10> m_DataI8 = {{0, 1, -2, 3, -4, 5, -6, 7, -8, 9}}; - std::array<int16_t, 10> m_DataI16 = { - {512, 513, -510, 515, -508, 517, -506, 519, -504, 521}}; - std::array<int32_t, 10> m_DataI32 = {{131072, 131073, -131070, 131075, - -131068, 131077, -131066, 131079, - -131064, 131081}}; - std::array<int64_t, 10> m_DataI64 = { - {8589934592, 8589934593, -8589934590, 8589934595, -8589934588, - 8589934597, -8589934586, 8589934599, -8589934584, 8589934601}}; - std::array<unsigned char, 10> m_DataU8 = { - {128, 129, 130, 131, 132, 133, 134, 135, 136, 137}}; - std::array<uint16_t, 10> m_DataU16 = { - {32768, 32769, 32770, 32771, 32772, 32773, 32774, 32775, 32776, 32777}}; - std::array<uint32_t, 10> m_DataU32 = { - {2147483648, 2147483649, 2147483650, 2147483651, 2147483652, 2147483653, - 2147483654, 2147483655, 2147483656, 2147483657}}; - std::array<uint64_t, 10> m_DataU64 = { - {9223372036854775808UL, 9223372036854775809UL, 9223372036854775810UL, - 9223372036854775811UL, 9223372036854775812UL, 9223372036854775813UL, - 9223372036854775814UL, 9223372036854775815UL, 9223372036854775816UL, - 9223372036854775817UL}}; - std::array<float, 10> m_DataR32 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; - std::array<double, 10> m_DataR64 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; -}; - -class EngineWriteRead1DTest : public EngineWriteReadTestBase -{ -public: - EngineWriteRead1DTest(std::string engineName, std::string fileName) - : EngineWriteReadTestBase(engineName, fileName) - { - } - -protected: - virtual void Declare(); -}; - -class EngineWriteRead2D2x4Test : public EngineWriteReadTestBase -{ -public: - EngineWriteRead2D2x4Test(std::string engineName, std::string fileName) - : EngineWriteReadTestBase(engineName, fileName) - { - } - -protected: - virtual void Declare(); -}; - -class EngineWriteRead2D4x2Test : public EngineWriteReadTestBase -{ -public: - EngineWriteRead2D4x2Test(std::string engineName, std::string fileName) - : EngineWriteReadTestBase(engineName, fileName) - { - } - -protected: - virtual void Declare(); -}; diff --git a/testing/adios2/engine/SmallTestData.h b/testing/adios2/engine/SmallTestData.h new file mode 100644 index 0000000000000000000000000000000000000000..d7f736582dabc3eedc9c377973461e5578cc1260 --- /dev/null +++ b/testing/adios2/engine/SmallTestData.h @@ -0,0 +1,36 @@ +/* + * Distributed under the OSI-approved Apache License, Version 2.0. See + * accompanying file Copyright.txt for details. + */ +#ifndef TESTING_ADIOS2_ENGINE_SMALLTESTDATA_H_ +#define TESTING_ADIOS2_ENGINE_SMALLTESTDATA_H_ + +// Test data for each type. Make sure our values exceed the range of the +// previous size to make sure we all bytes for each element +struct SmallTestData +{ + std::array<char, 10> I8 = {{0, 1, -2, 3, -4, 5, -6, 7, -8, 9}}; + std::array<int16_t, 10> I16 = { + {512, 513, -510, 515, -508, 517, -506, 519, -504, 521}}; + std::array<int32_t, 10> I32 = {{131072, 131073, -131070, 131075, -131068, + 131077, -131066, 131079, -131064, 131081}}; + std::array<int64_t, 10> I64 = { + {8589934592, 8589934593, -8589934590, 8589934595, -8589934588, + 8589934597, -8589934586, 8589934599, -8589934584, 8589934601}}; + std::array<unsigned char, 10> U8 = { + {128, 129, 130, 131, 132, 133, 134, 135, 136, 137}}; + std::array<uint16_t, 10> U16 = { + {32768, 32769, 32770, 32771, 32772, 32773, 32774, 32775, 32776, 32777}}; + std::array<uint32_t, 10> U32 = { + {2147483648, 2147483649, 2147483650, 2147483651, 2147483652, 2147483653, + 2147483654, 2147483655, 2147483656, 2147483657}}; + std::array<uint64_t, 10> U64 = { + {9223372036854775808UL, 9223372036854775809UL, 9223372036854775810UL, + 9223372036854775811UL, 9223372036854775812UL, 9223372036854775813UL, + 9223372036854775814UL, 9223372036854775815UL, 9223372036854775816UL, + 9223372036854775817UL}}; + std::array<float, 10> R32 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; + std::array<double, 10> R64 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; +}; + +#endif // TESTING_ADIOS2_ENGINE_SMALLTESTDATA_H_ diff --git a/testing/adios2/engine/adios1/CMakeLists.txt b/testing/adios2/engine/adios1/CMakeLists.txt index db9c2d1c941198e4ac23dcd2bbac573688d6f44a..f5e94b86bebb2b11bb3e0119eab7d6abd5397f95 100644 --- a/testing/adios2/engine/adios1/CMakeLists.txt +++ b/testing/adios2/engine/adios1/CMakeLists.txt @@ -3,9 +3,7 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# -add_executable(TestADIOS1WriteRead - TestADIOS1WriteRead.cpp - ../EngineWriteReadTest.cpp -) +add_executable(TestADIOS1WriteRead TestADIOS1WriteRead.cpp) target_link_libraries(TestADIOS1WriteRead adios2 gtest) + add_test(NAME adios2::engine::adios1::write_read COMMAND TestADIOS1WriteRead) diff --git a/testing/adios2/engine/adios1/TestADIOS1WriteRead.cpp b/testing/adios2/engine/adios1/TestADIOS1WriteRead.cpp index 08b090b6645d992b85c83644dcaf315f20969e88..0bdb08323ece66176537ff16467e952c5b87f1bd 100644 --- a/testing/adios2/engine/adios1/TestADIOS1WriteRead.cpp +++ b/testing/adios2/engine/adios1/TestADIOS1WriteRead.cpp @@ -7,45 +7,250 @@ #include <gtest/gtest.h> -#include "../EngineWriteReadTest.h" +#include "../SmallTestData.h" -class ADIOS1WriteRead1DTest : public EngineWriteRead1DTest +class ADIOS1WriteReadTest : public ::testing::Test { public: - ADIOS1WriteRead1DTest() - : EngineWriteRead1DTest("ADIOS1Writer", "ADIOS1WriteRead1DTest.bp") - { - } + ADIOS1WriteReadTest() = default; + + SmallTestData m_TestData; }; -TEST_F(ADIOS1WriteRead1DTest, WriteReadTest) { WriteRead(); } +//****************************************************************************** +// 1D 1x8 test data +//****************************************************************************** +TEST_F(ADIOS1WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read1D8) +{ + { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{8}); + auto &var_i16 = adios.DefineVariable<short>("i16", adios::Dims{8}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{8}); + auto &var_i64 = adios.DefineVariable<long>("i64", adios::Dims{8}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{8}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{8}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{8}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{8}); + auto &var_r32 = adios.DefineVariable<float>("r32", adios::Dims{8}); + auto &var_r64 = adios.DefineVariable<double>("r64", adios::Dims{8}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("ADIOS1Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2ADIOS2WriteADIOS1Read1D8.bp", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 2x4 test data //****************************************************************************** - -class ADIOS1WriteRead2D2x4Test : public EngineWriteRead2D2x4Test +TEST_F(ADIOS1WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D2x4) { -public: - ADIOS1WriteRead2D2x4Test() - : EngineWriteRead2D2x4Test("ADIOS1Writer", "ADIOS1WriteRead2D2x4Test.bp") { - } -}; + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{2, 4}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{2, 4}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{2, 4}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{2, 4}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{2, 4}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{2, 4}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{2, 4}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{2, 4}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{2, 4}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{2, 4}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("ADIOS1Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2ADIOS1WriteADIOS1Read2D2x4Test.bp", "w", method); + ASSERT_NE(engine, nullptr); -TEST_F(ADIOS1WriteRead2D2x4Test, WriteReadTest) { WriteRead(); } + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 4x2 test data //****************************************************************************** - -class ADIOS1WriteRead2D4x2Test : public EngineWriteRead2D4x2Test +TEST_F(ADIOS1WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D4x2) { -public: - ADIOS1WriteRead2D4x2Test() - : EngineWriteRead2D4x2Test("ADIOS1Writer", "ADIOS1WriteRead2D4x2Test.bp") { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{4, 2}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{4, 2}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{4, 2}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{4, 2}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{4, 2}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{4, 2}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{4, 2}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{4, 2}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{4, 2}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{4, 2}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("ADIOS1Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2ADIOS1WriteADIOS1Read2D4x2Test.bp", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); } -}; +} + +//****************************************************************************** +// main +//****************************************************************************** + +int main(int argc, char **argv) +{ +#ifdef ADIOS2_HAVE_MPI + MPI_Init(nullptr, nullptr); +#endif + + ::testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); + +#ifdef ADIOS2_HAVE_MPI + MPI_Finalize(); +#endif -TEST_F(ADIOS1WriteRead2D4x2Test, WriteReadTest) { WriteRead(); } + return result; +} diff --git a/testing/adios2/engine/bp/CMakeLists.txt b/testing/adios2/engine/bp/CMakeLists.txt index 8fd95e9a3268b3bdec403edb38b554e1b3083821..f9a211d6082de094d60fa5d18e2b6c29c13d2cc9 100644 --- a/testing/adios2/engine/bp/CMakeLists.txt +++ b/testing/adios2/engine/bp/CMakeLists.txt @@ -3,9 +3,6 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# -add_executable(TestBPWriteRead - TestBPWriteRead.cpp - ../EngineWriteReadTest.cpp -) +add_executable(TestBPWriteRead TestBPWriteRead.cpp) target_link_libraries(TestBPWriteRead adios2 gtest) add_test(NAME adios2::engine::bp::write_read COMMAND TestBPWriteRead) diff --git a/testing/adios2/engine/bp/TestBPWriteRead.cpp b/testing/adios2/engine/bp/TestBPWriteRead.cpp index d401bbe087044a70ffa6195aae43d280efb75f92..f1745cb9c4f90e25ad1220290882cbd6fcc541f3 100644 --- a/testing/adios2/engine/bp/TestBPWriteRead.cpp +++ b/testing/adios2/engine/bp/TestBPWriteRead.cpp @@ -7,45 +7,250 @@ #include <gtest/gtest.h> -#include "../EngineWriteReadTest.h" +#include "../SmallTestData.h" -class BPWriteRead1DTest : public EngineWriteRead1DTest +class BPWriteReadTest : public ::testing::Test { public: - BPWriteRead1DTest() - : EngineWriteRead1DTest("BPFileWriter", "BPWriteRead1DTest.bp") - { - } + BPWriteReadTest() = default; + + SmallTestData m_TestData; }; -TEST_F(BPWriteRead1DTest, WriteReadTest) { WriteRead(); } +//****************************************************************************** +// 1D 1x8 test data +//****************************************************************************** +TEST_F(BPWriteReadTest, ADIOS2ADIOS2WriteADIOS1Read1D8) +{ + { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{8}); + auto &var_i16 = adios.DefineVariable<short>("i16", adios::Dims{8}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{8}); + auto &var_i64 = adios.DefineVariable<long>("i64", adios::Dims{8}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{8}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{8}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{8}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{8}); + auto &var_r32 = adios.DefineVariable<float>("r32", adios::Dims{8}); + auto &var_r64 = adios.DefineVariable<double>("r64", adios::Dims{8}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("BPFileWriter"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2ADIOS2WriteADIOS1Read1D8.bp", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 2x4 test data //****************************************************************************** - -class BPWriteRead2D2x4Test : public EngineWriteRead2D2x4Test +TEST_F(BPWriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D2x4) { -public: - BPWriteRead2D2x4Test() - : EngineWriteRead2D2x4Test("BPFileWriter", "BPWriteRead2D2x4Test.bp") { - } -}; + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{2, 4}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{2, 4}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{2, 4}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{2, 4}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{2, 4}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{2, 4}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{2, 4}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{2, 4}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{2, 4}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{2, 4}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("BPFileWriter"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2BPWriteADIOS1Read2D2x4Test.bp", "w", method); + ASSERT_NE(engine, nullptr); -TEST_F(BPWriteRead2D2x4Test, WriteReadTest) { WriteRead(); } + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 4x2 test data //****************************************************************************** - -class BPWriteRead2D4x2Test : public EngineWriteRead2D4x2Test +TEST_F(BPWriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D4x2) { -public: - BPWriteRead2D4x2Test() - : EngineWriteRead2D4x2Test("BPFileWriter", "BPWriteRead2D4x2Test.bp") { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{4, 2}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{4, 2}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{4, 2}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{4, 2}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{4, 2}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{4, 2}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{4, 2}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{4, 2}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{4, 2}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{4, 2}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("BPFileWriter"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2BPWriteADIOS1Read2D4x2Test.bp", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); } -}; +} + +//****************************************************************************** +// main +//****************************************************************************** + +int main(int argc, char **argv) +{ +#ifdef ADIOS2_HAVE_MPI + MPI_Init(nullptr, nullptr); +#endif + + ::testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); + +#ifdef ADIOS2_HAVE_MPI + MPI_Finalize(); +#endif -TEST_F(BPWriteRead2D4x2Test, WriteReadTest) { WriteRead(); } + return result; +} diff --git a/testing/adios2/engine/hdf5/CMakeLists.txt b/testing/adios2/engine/hdf5/CMakeLists.txt index ec623c6db5a9b83baad0a94e85f77ea4af04691e..b8a4a56c2e32a7e0379f05b6badd7752202ed197 100644 --- a/testing/adios2/engine/hdf5/CMakeLists.txt +++ b/testing/adios2/engine/hdf5/CMakeLists.txt @@ -3,9 +3,6 @@ # accompanying file Copyright.txt for details. #------------------------------------------------------------------------------# -add_executable(TestHDF5WriteRead - TestHDF5WriteRead.cpp - ../EngineWriteReadTest.cpp -) +add_executable(TestHDF5WriteRead TestHDF5WriteRead.cpp) target_link_libraries(TestHDF5WriteRead adios2 gtest) add_test(NAME adios2::engine::hdf5::write_read COMMAND TestHDF5WriteRead) diff --git a/testing/adios2/engine/hdf5/TestHDF5WriteRead.cpp b/testing/adios2/engine/hdf5/TestHDF5WriteRead.cpp index 8a93394790cbdb6cfaf370b0b01cc1e82d471397..165dcda09eed71e17a50aa9dc8814a63657b2da8 100644 --- a/testing/adios2/engine/hdf5/TestHDF5WriteRead.cpp +++ b/testing/adios2/engine/hdf5/TestHDF5WriteRead.cpp @@ -7,45 +7,250 @@ #include <gtest/gtest.h> -#include "../EngineWriteReadTest.h" +#include "../SmallTestData.h" -class HDF5WriteRead1DTest : public EngineWriteRead1DTest +class HDF5WriteReadTest : public ::testing::Test { public: - HDF5WriteRead1DTest() - : EngineWriteRead1DTest("HDF5Writer", "HDF5WriteRead1DTest.h5") - { - } + HDF5WriteReadTest() = default; + + SmallTestData m_TestData; }; -TEST_F(HDF5WriteRead1DTest, WriteReadTest) { WriteRead(); } +//****************************************************************************** +// 1D 1x8 test data +//****************************************************************************** +TEST_F(HDF5WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read1D8) +{ + { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{8}); + auto &var_i16 = adios.DefineVariable<short>("i16", adios::Dims{8}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{8}); + auto &var_i64 = adios.DefineVariable<long>("i64", adios::Dims{8}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{8}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{8}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{8}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{8}); + auto &var_r32 = adios.DefineVariable<float>("r32", adios::Dims{8}); + auto &var_r64 = adios.DefineVariable<double>("r64", adios::Dims{8}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("HDF5Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2ADIOS2WriteADIOS1Read1D8.h5", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 2x4 test data //****************************************************************************** - -class HDF5WriteRead2D2x4Test : public EngineWriteRead2D2x4Test +TEST_F(HDF5WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D2x4) { -public: - HDF5WriteRead2D2x4Test() - : EngineWriteRead2D2x4Test("HDF5Writer", "HDF5WriteRead2D2x4Test.h5") { - } -}; + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{2, 4}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{2, 4}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{2, 4}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{2, 4}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{2, 4}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{2, 4}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{2, 4}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{2, 4}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{2, 4}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{2, 4}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("HDF5Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2HDF5WriteADIOS1Read2D2x4Test.h5", "w", method); + ASSERT_NE(engine, nullptr); -TEST_F(HDF5WriteRead2D2x4Test, WriteReadTest) { WriteRead(); } + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); + } +} //****************************************************************************** // 2D 4x2 test data //****************************************************************************** - -class HDF5WriteRead2D4x2Test : public EngineWriteRead2D4x2Test +TEST_F(HDF5WriteReadTest, ADIOS2ADIOS2WriteADIOS1Read2D4x2) { -public: - HDF5WriteRead2D4x2Test() - : EngineWriteRead2D4x2Test("HDF5Writer", "HDF5WriteRead2D4x2Test.h5") { + adios::ADIOS adios(adios::Verbose::WARN, true); + + // Declare 1D variables + { + auto &var_i8 = adios.DefineVariable<char>("i8", adios::Dims{4, 2}); + auto &var_i16 = + adios.DefineVariable<short>("i16", adios::Dims{4, 2}); + auto &var_i32 = adios.DefineVariable<int>("i32", adios::Dims{4, 2}); + auto &var_i64 = + adios.DefineVariable<long>("i64", adios::Dims{4, 2}); + auto &var_u8 = + adios.DefineVariable<unsigned char>("u8", adios::Dims{4, 2}); + auto &var_u16 = + adios.DefineVariable<unsigned short>("u16", adios::Dims{4, 2}); + auto &var_u32 = + adios.DefineVariable<unsigned int>("u32", adios::Dims{4, 2}); + auto &var_u64 = + adios.DefineVariable<unsigned long>("u64", adios::Dims{4, 2}); + auto &var_r32 = + adios.DefineVariable<float>("r32", adios::Dims{4, 2}); + auto &var_r64 = + adios.DefineVariable<double>("r64", adios::Dims{4, 2}); + } + + // Create the ADIOS 1 Engine + auto method = adios.DeclareMethod("TestMethod"); + method.SetEngine("HDF5Writer"); + method.AddTransport("File"); + + auto engine = + adios.Open("ADIOS2HDF5WriteADIOS1Read2D4x2Test.h5", "w", method); + ASSERT_NE(engine, nullptr); + + for (size_t step = 0; step < 3; ++step) + { + // Retrieve the variables that previously went out of scope + auto &var_i8 = adios.GetVariable<char>("i8"); + auto &var_i16 = adios.GetVariable<short>("i16"); + auto &var_i32 = adios.GetVariable<int>("i32"); + auto &var_i64 = adios.GetVariable<long>("i64"); + auto &var_u8 = adios.GetVariable<unsigned char>("u8"); + auto &var_u16 = adios.GetVariable<unsigned short>("u16"); + auto &var_u32 = adios.GetVariable<unsigned int>("u32"); + auto &var_u64 = adios.GetVariable<unsigned long>("u64"); + auto &var_r32 = adios.GetVariable<float>("r32"); + auto &var_r64 = adios.GetVariable<double>("r64"); + + // Write each one + engine->Write(var_i8, m_TestData.I8.cbegin() + step); + engine->Write(var_i16, m_TestData.I16.cbegin() + step); + engine->Write(var_i32, m_TestData.I32.cbegin() + step); + engine->Write(var_i64, m_TestData.I64.cbegin() + step); + engine->Write(var_u8, m_TestData.U8.cbegin() + step); + engine->Write(var_u16, m_TestData.U16.cbegin() + step); + engine->Write(var_u32, m_TestData.U32.cbegin() + step); + engine->Write(var_u64, m_TestData.U64.cbegin() + step); + engine->Write(var_r32, m_TestData.R32.cbegin() + step); + engine->Write(var_r64, m_TestData.R64.cbegin() + step); + + // Advance to the next time step + engine->Advance(); + } + + // Close the file + engine->Close(); } -}; +} + +//****************************************************************************** +// main +//****************************************************************************** + +int main(int argc, char **argv) +{ +#ifdef ADIOS2_HAVE_MPI + MPI_Init(nullptr, nullptr); +#endif + + ::testing::InitGoogleTest(&argc, argv); + int result = RUN_ALL_TESTS(); + +#ifdef ADIOS2_HAVE_MPI + MPI_Finalize(); +#endif -TEST_F(HDF5WriteRead2D4x2Test, WriteReadTest) { WriteRead(); } + return result; +}