Skip to content

Commit 9273346

Browse files
committed
[ntuple] add evolution test for atomic<class>
1 parent f75eb4b commit 9273346

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

tree/ntuple/test/ntuple_evolution_type.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,17 +236,21 @@ TEST(RNTupleEvolution, Enum)
236236

237237
TEST(RNTupleEvolution, CheckAtomic)
238238
{
239-
// TODO(jblomer): enable test with CustomAtomicNotLockFree once linking of libatomic is sorted out.
239+
EXPECT_FALSE(std::atomic<CustomAtomicNotLockFree>{}.is_lock_free());
240240

241241
FileRaii fileGuard("test_ntuple_evolution_check_atomic.root");
242242
{
243243
auto model = ROOT::RNTupleModel::Create();
244244
auto atomicInt = model->MakeField<std::atomic<std::int32_t>>("atomicInt");
245245
auto regularInt = model->MakeField<std::int32_t>("regularInt");
246+
auto atomicClass = model->MakeField<std::atomic<CustomAtomicNotLockFree>>("atomicClass");
247+
auto regularClass = model->MakeField<CustomAtomicNotLockFree>("regularClass");
246248
auto writer = ROOT::RNTupleWriter::Recreate(std::move(model), "ntpl", fileGuard.GetPath());
247249

248250
*atomicInt = 7;
249251
*regularInt = 13;
252+
std::fill(std::begin(regularClass->a), std::end(regularClass->a), 137);
253+
*atomicClass = *regularClass;
250254
writer->Fill();
251255
}
252256

@@ -256,6 +260,9 @@ TEST(RNTupleEvolution, CheckAtomic)
256260
auto v2 = reader->GetView<std::atomic<std::int64_t>>("regularInt");
257261
auto v3 = reader->GetView<std::int64_t>("atomicInt");
258262

263+
auto v4 = reader->GetView<CustomAtomicNotLockFree>("atomicClass");
264+
auto v5 = reader->GetView<std::atomic<CustomAtomicNotLockFree>>("regularClass");
265+
259266
try {
260267
reader->GetView<std::atomic<std::byte>>("atomicInt");
261268
FAIL() << "automatic evolution into an invalid atomic inner type should fail";
@@ -273,6 +280,12 @@ TEST(RNTupleEvolution, CheckAtomic)
273280
EXPECT_EQ(7, v1(0));
274281
EXPECT_EQ(13, v2(0));
275282
EXPECT_EQ(7, v3(0));
283+
284+
EXPECT_EQ(137, v4(0).a[0]);
285+
EXPECT_EQ(137, v4(0).a[99]);
286+
CustomAtomicNotLockFree tmp = v5(0);
287+
EXPECT_EQ(137, tmp.a[0]);
288+
EXPECT_EQ(137, tmp.a[99]);
276289
}
277290

278291
TEST(RNTupleEvolution, ArrayAsRVec)

0 commit comments

Comments
 (0)