From 538a8deef801437da5a09bd7ef85b90d76581fac Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Tue, 30 Jun 2020 18:03:22 +0200 Subject: [PATCH] InDetEtaDependentCuts: Avoid thread-safety checker warnings. Rearrange test fixtures to avoid use of non-const atatics to fix warnings from the thread-safety checker. --- .../test/IDEDCSvc_GaudiFixtureBase.h | 17 +++++++++-------- .../test/InDetEtaDependentCutsSvc_test.cxx | 6 ++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/IDEDCSvc_GaudiFixtureBase.h b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/IDEDCSvc_GaudiFixtureBase.h index a8c869ef2be..d835a24d943 100644 --- a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/IDEDCSvc_GaudiFixtureBase.h +++ b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/IDEDCSvc_GaudiFixtureBase.h @@ -21,17 +21,18 @@ struct IDEDC_GaudiFixtureBase{ ISvcLocator* svcLoc{}; - static bool gaudiIsInitialised; const std::string jobOpts{}; - IDEDC_GaudiFixtureBase(const std::string & jobOptionFile = "InDetEtaDependentCutsTestJobOpts.txt"):jobOpts(jobOptionFile){ + static bool initGaudi (const std::string & jobOptionFile, ISvcLocator*& svcLoc) + { CxxUtils::ubsan_suppress ([]() { TInterpreter::Instance(); } ); - if (not gaudiIsInitialised){ - std::string fullJobOptsName="InDetEtaDependentCuts/" + jobOpts; - gaudiIsInitialised=Athena_test::initGaudi(fullJobOptsName, svcLoc); - } + std::string fullJobOptsName="InDetEtaDependentCuts/" + jobOptionFile; + return Athena_test::initGaudi(fullJobOptsName, svcLoc); + } + IDEDC_GaudiFixtureBase(const std::string & jobOptionFile = "InDetEtaDependentCutsTestJobOpts.txt"):jobOpts(jobOptionFile){ + static const bool gaudiIsInitialized [[maybe_unused]] + = initGaudi (jobOptionFile, svcLoc); } }; -bool IDEDC_GaudiFixtureBase::gaudiIsInitialised=false; -#endif \ No newline at end of file +#endif diff --git a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx index d5be3ed7b4f..e96f632a7b2 100644 --- a/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx +++ b/InnerDetector/InDetRecTools/InDetEtaDependentCuts/test/InDetEtaDependentCutsSvc_test.cxx @@ -33,22 +33,24 @@ struct GaudiKernelFixture:public IDEDC_GaudiFixtureBase{ using namespace InDet; BOOST_AUTO_TEST_SUITE(EtaDependentCutsSvcTest) - GaudiKernelFixture g(testJobOptionsFile); + const GaudiKernelFixture g(testJobOptionsFile); const auto & svcLoc=g.svcLoc; - ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); BOOST_AUTO_TEST_CASE( sanityCheck ){ const bool svcLocatorIsOk=(svcLoc != nullptr); BOOST_TEST(svcLocatorIsOk); } BOOST_AUTO_TEST_CASE( retrieveSvc ){ + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); BOOST_TEST (idEDCSvc.retrieve().isSuccess()); } BOOST_AUTO_TEST_CASE( interfaceID ){ + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); InterfaceID testId("IInDetEtaDependentCutsSvc",1,0); BOOST_TEST(idEDCSvc->interfaceID()==testId); } BOOST_AUTO_TEST_CASE(publicMethods){ + ServiceHandle<IInDetEtaDependentCutsSvc> idEDCSvc ("InDet::InDetEtaDependentCutsSvc", "test"); BOOST_TEST(idEDCSvc->getMaxEta() == 4.0); } BOOST_AUTO_TEST_SUITE_END() -- GitLab