@@ -252,6 +252,7 @@ TEST_F(SkeletonTestSharedMemoryCreationFixture, PrepareServiceOfferFailsOnShmCre
252252 skeleton_->PrepareOffer (events_, fields_, std::move (kEmptyRegisterShmObjectTraceCallback )).has_value ());
253253}
254254
255+ #ifdef REQUIRE_TYPED_MEMORY
255256TEST_F (SkeletonTestSharedMemoryCreationFixture, PrepareServiceOfferWithTraceCallback)
256257{
257258 RecordProperty (" Verifies" , " SCR-19178261, SCR-18166404" );
@@ -319,6 +320,40 @@ TEST_F(SkeletonTestSharedMemoryCreationFixture, PrepareServiceOfferWithTraceCall
319320 EXPECT_TRUE (
320321 skeleton_->PrepareOffer (events_, fields_, register_shm_object_trace_callback.AsStdFunction ()).has_value ());
321322}
323+ #else
324+ TEST_F (SkeletonTestSharedMemoryCreationFixture, PrepareServiceOfferWithTraceCallbackWhenTypedMemoryIsNotRequired)
325+ {
326+ RecordProperty (" Verifies" , " SCR-19178261, SCR-18166404" );
327+ RecordProperty (" Description" ,
328+ " Checks whether trace registration is still performed for the DATA shm-object when typed-memory "
329+ " support is not required by the build configuration." );
330+ RecordProperty (" TestType" , " Requirements-based test" );
331+ RecordProperty (" DerivationTechnique" , " Analysis of requirements" );
332+
333+ using namespace memory ::shared;
334+
335+ MockFunction<void (std::string_view, impl::ServiceElementType, ISharedMemoryResource::FileDescriptor, void *)>
336+ register_shm_object_trace_callback{};
337+
338+ // Given a Skeleton constructed from a valid identifier referencing a QM deployment
339+ InitialiseSkeleton (GetValidInstanceIdentifier ()).WithNoConnectedProxy ();
340+
341+ EXPECT_CALL (*data_shared_memory_resource_mock_, IsShmInTypedMemory ()).Times (0 );
342+ EXPECT_CALL (*data_shared_memory_resource_mock_, GetFileDescriptor ())
343+ .WillOnce (Return (kDummyShmObjectFileDescriptor ));
344+ EXPECT_CALL (*data_shared_memory_resource_mock_, getBaseAddress ()).WillOnce (Return (kDummyShmObjectBaseAddress ));
345+
346+ EXPECT_CALL (register_shm_object_trace_callback,
347+ Call (tracing::TracingRuntime::kDummyElementNameForShmRegisterCallback ,
348+ tracing::TracingRuntime::kDummyElementTypeForShmRegisterCallback ,
349+ kDummyShmObjectFileDescriptor ,
350+ kDummyShmObjectBaseAddress ));
351+
352+ // Then PrepareOffer will succeed
353+ EXPECT_TRUE (
354+ skeleton_->PrepareOffer (events_, fields_, register_shm_object_trace_callback.AsStdFunction ()).has_value ());
355+ }
356+ #endif
322357
323358using SkeletonPrepareOfferFixture = SkeletonTestMockedSharedMemoryFixture;
324359TEST_F (SkeletonPrepareOfferFixture, PrepareOfferCreatesSharedMemoryIfOpeningAndFLockingServiceUsageMarkerFileSucceeds)
0 commit comments