Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated tests #2546

7 changes: 4 additions & 3 deletions testing/adios2/bindings/python/TestBPWriteReadString.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ def test_write_read_string_fullAPI(self):

ioRead = adios.DeclareIO('ioReader')
adEngine = ioRead.Open(bpFilename, adios2.Mode.Read)
varReadMyString = ioRead.InquireVariable(varname)
for step in range(N_STEPS):
adEngine.BeginStep()
varReadMyString = ioRead.InquireVariable(varname)
result = adEngine.Get(varReadMyString)
adEngine.EndStep()
self.assertEqual(result, theString + str(step))
Expand All @@ -60,13 +60,14 @@ def test_write_read_string_highAPI(self):
theString + str(step))

def test_read_strings_all_steps(self):
comm = MPI.COMM_WORLD
fileName = 'string_test_all.bp'
with adios2.open(fileName, "w") as fh:
with adios2.open(fileName, "w", comm) as fh:
for i in range(N_STEPS):
fh.write("string_variable", "written {}".format(i))
fh.end_step()

with adios2.open(fileName, "r") as fh:
with adios2.open(fileName, "r", comm) as fh:
n = fh.steps()
name = "string_variable"
result = fh.read_string(name, 0, n)
Expand Down
151 changes: 123 additions & 28 deletions testing/adios2/engine/bp/TestBPSelectSteps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,15 @@ TEST_F(ADIOSReadSelectionStepsTest, Read)
#if ADIOS2_USE_MPI
MPI_Barrier(MPI_COMM_WORLD);
#endif

#if 1
adios2::IO ioRead = adios.DeclareIO("TestIORead");
ioRead.SetEngine("Filestream");
ioRead.SetParameter(filename, "1,3");
ioRead.SetParameter("StreamReader", "On");
adios2::Engine engine_s = ioRead.Open(filename, adios2::Mode::Read);
EXPECT_TRUE(engine_s);
try
{

for (int step = 0; step < NSteps; step++)
{
engine_s.BeginStep();
Expand All @@ -95,6 +96,7 @@ TEST_F(ADIOSReadSelectionStepsTest, Read)
ioRead.InquireVariable<int>("variable2");
adios2::Variable<int> var3 =
ioRead.InquireVariable<int>("variable3");

if (step == 0)
{
EXPECT_FALSE(var0);
Expand Down Expand Up @@ -126,101 +128,194 @@ TEST_F(ADIOSReadSelectionStepsTest, Read)
if (var0)
{
std::vector<int> res;
const std::size_t Nx = 10;
var0.SetSelection({{Nx * mpiRank}, {Nx}});
engine_s.Get<int>(var0, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints0);
}
if (var1)
{
std::vector<int> res;
const std::size_t Nx = 10;
var1.SetSelection({{Nx * mpiRank}, {Nx}});
engine_s.Get<int>(var1, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints1);
}
if (var2)
{
std::vector<int> res;
const std::size_t Nx = 10;
var2.SetSelection({{Nx * mpiRank}, {Nx}});
engine_s.Get<int>(var2, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints2);
}
if (var3)
{
std::vector<int> res;
const std::size_t Nx = 10;
var3.SetSelection({{Nx * mpiRank}, {Nx}});
engine_s.Get<int>(var3, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints3);
}
engine_s.EndStep();
}
}
catch (std::exception &e)
{
std::cout << "Exception " << e.what() << std::endl;
}
engine_s.Close();
#endif
#if ADIOS2_USE_MPI
MPI_Barrier(MPI_COMM_WORLD);
#endif
#if 1
adios2::IO ioReadBP = adios.DeclareIO("ReadBP");
ioReadBP.SetEngine("BPfile");
ioReadBP.SetParameter(filename, "1,3");
/** Engine derived class, spawned to start IO operations */
adios2::Engine engine_b = ioReadBP.Open(filename, adios2::Mode::Read);

EXPECT_TRUE(engine_b);

try
{
for (size_t step = 0; step < NSteps; ++step)
{
engine_b.BeginStep();
adios2::Variable<int> var0 =
ioReadBP.InquireVariable<int>("variable0");
adios2::Variable<int> var1 =
ioReadBP.InquireVariable<int>("variable1");
adios2::Variable<int> var2 =
ioReadBP.InquireVariable<int>("variable2");
adios2::Variable<int> var3 =
ioReadBP.InquireVariable<int>("variable3");

/** Variables are not updated */
/** EXPECT_EQ(var0.Steps(), 2); */
/** EXPECT_EQ(engine_b.GetAbsoluteSteps(var0), {1,3}); */
if (step == 0)
{
EXPECT_FALSE(var0);
EXPECT_FALSE(var1);
EXPECT_FALSE(var2);
EXPECT_FALSE(var3);
}
else if (step == 1)
{
EXPECT_TRUE(var0);
EXPECT_TRUE(var1);
EXPECT_TRUE(var2);
EXPECT_TRUE(var3);
}
else if (step == 2)
{
EXPECT_FALSE(var0);
EXPECT_FALSE(var1);
EXPECT_FALSE(var2);
EXPECT_FALSE(var3);
}
else if (step == 3)
{
EXPECT_TRUE(var0);
EXPECT_TRUE(var1);
EXPECT_TRUE(var2);
EXPECT_TRUE(var3);
}
if (var0)
{
std::vector<int> res;
var0.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var0, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints0);
}
if (var1)
{
std::vector<int> res;
var1.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var1, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints1);
}
if (var2)
{
std::vector<int> res;
var2.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var2, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints2);
}
if (var3)
{
std::vector<int> res;
var3.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var3, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints3);
}
engine_b.EndStep();
}
}
catch (std::exception &e)
{
std::cout << "Exception " << e.what() << std::endl;
}

engine_b.Close();
#endif
#if ADIOS2_USE_MPI
MPI_Barrier(MPI_COMM_WORLD);
#endif
#if 1
adios2::IO ioReadBPFull = adios.DeclareIO("ReadBPFull");
ioReadBPFull.SetParameter(filename, "1,3");
/** Engine derived class, spawned to start IO operations */
adios2::Engine engine_bf =
ioReadBPFull.Open(filename, adios2::Mode::Read);

EXPECT_TRUE(engine_bf);
{
adios2::Variable<int> var0 =
ioReadBP.InquireVariable<int>("variable0");
ioReadBPFull.InquireVariable<int>("variable0");
adios2::Variable<int> var1 =
ioReadBP.InquireVariable<int>("variable1");
ioReadBPFull.InquireVariable<int>("variable1");
adios2::Variable<int> var2 =
ioReadBP.InquireVariable<int>("variable2");
ioReadBPFull.InquireVariable<int>("variable2");
adios2::Variable<int> var3 =
ioReadBP.InquireVariable<int>("variable3");
ioReadBPFull.InquireVariable<int>("variable3");
/** Variables are not updated */
/** EXPECT_EQ(var0.Steps(), 2); */
/** EXPECT_EQ(engine_b.GetAbsoluteSteps(var0), {1,3}); */

if (var0)
EXPECT_TRUE(var0);
EXPECT_TRUE(var1);
EXPECT_TRUE(var2);
EXPECT_TRUE(var3);
{
std::vector<int> res;
const std::size_t Nx = 10;
var0.SetStepSelection({1, 1});
var0.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var0, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints0);
var0.SetStepSelection({3, 1});
engine_b.Get<int>(var0, res, adios2::Mode::Sync);
engine_bf.Get<int>(var0, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints0);
}
if (var1)
{
std::vector<int> res;
const std::size_t Nx = 10;
var1.SetStepSelection({1, 1});
var1.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var1, res, adios2::Mode::Sync);
engine_bf.Get<int>(var1, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints1);
}
if (var2)

{
std::vector<int> res;
const std::size_t Nx = 10;
var2.SetStepSelection({1, 1});
var2.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var2, res, adios2::Mode::Sync);
engine_bf.Get<int>(var2, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints2);
}
if (var3)

{
std::vector<int> res;
const std::size_t Nx = 10;
var3.SetStepSelection({1, 1});
var3.SetSelection({{Nx * mpiRank}, {Nx}});
engine_b.Get<int>(var3, res, adios2::Mode::Sync);
engine_bf.Get<int>(var3, res, adios2::Mode::Sync);
EXPECT_EQ(res, Ints3);
}
}
engine_b.Close();
engine_bf.Close();
#endif
}
}

Expand Down