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