From d897d5d9d4a5f8ec5b5281512fdc30c3b1c7489b Mon Sep 17 00:00:00 2001
From: Frank Winklmeier <frank.winklmeier@cern.ch>
Date: Wed, 6 Mar 2024 14:27:16 +0100
Subject: [PATCH] MagFieldServices: migrate CondAlg unit test to CA

---
 MagneticField/MagFieldServices/CMakeLists.txt |  8 +--
 .../share/test_magFieldCondAlg.py             | 68 +++++++++----------
 2 files changed, 34 insertions(+), 42 deletions(-)
 mode change 100644 => 100755 MagneticField/MagFieldServices/share/test_magFieldCondAlg.py

diff --git a/MagneticField/MagFieldServices/CMakeLists.txt b/MagneticField/MagFieldServices/CMakeLists.txt
index 78609842e5a8..eb26135a7c1b 100644
--- a/MagneticField/MagFieldServices/CMakeLists.txt
+++ b/MagneticField/MagFieldServices/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 
 # Declare the package name:
 atlas_subdir( MagFieldServices )
@@ -20,11 +20,9 @@ atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 if( NOT SIMULATIONBASE )
   atlas_add_test( MagFieldServicesConfig
                   SCRIPT python -m MagFieldServices.MagFieldServicesConfig
-                  PROPERTIES TIMEOUT 300
-                  POST_EXEC_SCRIPT nopost.sh )
+                  POST_EXEC_SCRIPT noerror.sh )
 
   atlas_add_test( MagFieldCondAlg
-                  SCRIPT athena --threads=1 ${CMAKE_CURRENT_SOURCE_DIR}/share/test_magFieldCondAlg.py
-                  PROPERTIES TIMEOUT 300
+                  SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/test_magFieldCondAlg.py
                   LOG_SELECT_PATTERN "MagFieldCondReader" )
 endif()
diff --git a/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py b/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
old mode 100644
new mode 100755
index 347f83aca86f..59b544ec3141
--- a/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
+++ b/MagneticField/MagFieldServices/share/test_magFieldCondAlg.py
@@ -1,6 +1,8 @@
-# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#!/usr/bin/env python
 #
-# Job options to test magnetic field conditions algs with varying currents.
+# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
+#
+# Test magnetic field conditions algs with varying currents.
 #
 
 # Testing IOVs and currents: (since LB, solenoid, toroids)
@@ -23,6 +25,7 @@ currents = [(0, 7730, 20400),
 
 # Folder name
 folder = '/EXT/DCS/MAGNETS/SENSORDATA'
+sqlite = 'magfield.db'
 
 def createDB():
    """Create sqlite file with DCS currents"""
@@ -32,11 +35,10 @@ def createDB():
    from CoolConvUtilities import AtlCoolLib, AtlCoolTool
 
    # Cleanup previous file
-   import os
-   if os.path.isfile("magfield.db"):
-      os.remove("magfield.db")
+   if os.path.isfile(sqlite):
+      os.remove(sqlite)
 
-   db = cool.DatabaseSvcFactory.databaseService().createDatabase('sqlite://;schema=magfield.db;dbname=CONDBR2')
+   db = cool.DatabaseSvcFactory.databaseService().createDatabase(f'sqlite://;schema={sqlite};dbname=CONDBR2')
    spec = cool.RecordSpecification()
    spec.extend("value", cool.StorageType.Float)
    spec.extend("quality_invalid", cool.StorageType.Bool)
@@ -60,34 +62,26 @@ def createDB():
 # Create sqlite file with DCS currents
 createDB()
 
-# basic job configuration
-import AthenaCommon.AtlasUnixGeneratorJob  # noqa: F401
-from AthenaCommon.AppMgr import theApp, ServiceMgr as svcMgr
-from AthenaCommon.AlgSequence import AthSequencer, AlgSequence
-
-# Increment LBN every event
-from McEventSelector import McEventSelectorConf
-svcMgr += McEventSelectorConf.McEventSelector('EventSelector', EventsPerLB=1)
-
-# Conditions folder setup
-from AthenaCommon.GlobalFlags import globalflags
-globalflags.DataSource='data'
-globalflags.ConditionsTag='CONDBR2-BLKPA-RUN2-01'
-
-from IOVDbSvc.CondDB import conddb
-conddb.setGlobalTag(globalflags.ConditionsTag())
-conddb.addFolder('GLOBAL', '/GLOBAL/BField/Maps <noover/>', className="CondAttrListCollection")
-conddb.addFolder('magfield.db', folder, className='CondAttrListCollection')
-
-# Magnetic field algorithm setup
-from AthenaCommon.CfgGetter import getAlgorithm
-condSeq = AthSequencer("AthCondSeq")
-condSeq += getAlgorithm( "AtlasFieldMapCondAlg" )
-condSeq += getAlgorithm( "AtlasFieldCacheCondAlg" )
-condSeq.AtlasFieldCacheCondAlg.LockMapCurrents = False
-
-import AthenaCommon.CfgMgr as CfgMgr
-topSequence = AlgSequence()
-topSequence += CfgMgr.MagField__CondReader("MagFieldCondReader")
-
-theApp.EvtMax = currents[-1][0]+5   # 5 events per IOV
+from AthenaConfiguration.AllConfigFlags import initConfigFlags
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.MainServicesConfig import MainEvgenServicesCfg
+
+flags = initConfigFlags()
+flags.Input.Files = []
+flags.Concurrency.NumThreads = 1
+flags.Exec.MaxEvents = currents[-1][0]+5   # 5 events per IOV
+flags.IOVDb.GlobalTag = 'CONDBR2-BLKPA-RUN2-01'
+flags.IOVDb.SqliteInput = sqlite
+flags.IOVDb.SqliteFolders = (folder,)
+flags.lock()
+
+acc = MainEvgenServicesCfg(flags)
+acc.getService('EventSelector').EventsPerLB = 1
+
+from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
+acc.merge( AtlasFieldCacheCondAlgCfg(flags, LockMapCurrents=False) )
+
+acc.addEventAlgo( CompFactory.MagField.CondReader('MagFieldCondReader') )
+
+import sys
+sys.exit(acc.run().isFailure())
-- 
GitLab