diff --git a/Control/AthContainers/AthContainers/AuxElement.h b/Control/AthContainers/AthContainers/AuxElement.h index c494298f9863e64e23251211590779eaeae94a80..9a799f566a6e33920fd94cce1e71f7f4f63630fb 100644 --- a/Control/AthContainers/AthContainers/AuxElement.h +++ b/Control/AthContainers/AthContainers/AuxElement.h @@ -1176,4 +1176,7 @@ private: #include "AthContainers/AuxElement.icc" +CLASS_DEF (SG::AuxElement, 225182422, 1) + + #endif // not ATHCONTAINERS_AUXELEMENTBASE_H diff --git a/Control/AthenaBaseComps/AthenaBaseComps/AthAlgorithm.h b/Control/AthenaBaseComps/AthenaBaseComps/AthAlgorithm.h index e79468713bfb49fa1b108eb1deb602510ef8baff..6ca6da831830312612672ea331805506c666b327 100644 --- a/Control/AthenaBaseComps/AthenaBaseComps/AthAlgorithm.h +++ b/Control/AthenaBaseComps/AthenaBaseComps/AthAlgorithm.h @@ -234,6 +234,15 @@ public: } + /** + * @brief Return the list of extra output dependencies. + * + * This list is extended to include symlinks implied by inheritance + * relations. + */ + virtual const DataObjIDColl& extraOutputDeps() const override; + + /////////////////////////////////////////////////////////////////// // Non-const methods: /////////////////////////////////////////////////////////////////// @@ -266,6 +275,10 @@ public: typedef ServiceHandle<IUserDataSvc> UserDataSvc_t; /// Pointer to IUserDataSvc mutable UserDataSvc_t m_userStore; + + /// Extra output dependency collection, extended by AthAlgorithmDHUpdate + /// to add symlinks. Empty if no symlinks were found. + DataObjIDColl m_extendedExtraObjects; }; /////////////////////////////////////////////////////////////////// diff --git a/Control/AthenaBaseComps/AthenaBaseComps/AthReentrantAlgorithm.h b/Control/AthenaBaseComps/AthenaBaseComps/AthReentrantAlgorithm.h index e21626d3e063f20b88e9793922ab33a9808ae01a..0dd08e060b71e8ca06e75338ca79c7bae3f07436 100644 --- a/Control/AthenaBaseComps/AthenaBaseComps/AthReentrantAlgorithm.h +++ b/Control/AthenaBaseComps/AthenaBaseComps/AthReentrantAlgorithm.h @@ -281,7 +281,16 @@ public: } - + + /** + * @brief Return the list of extra output dependencies. + * + * This list is extended to include symlinks implied by inheritance + * relations. + */ + virtual const DataObjIDColl& extraOutputDeps() const override; + + /////////////////////////////////////////////////////////////////// // Non-const methods: /////////////////////////////////////////////////////////////////// @@ -314,6 +323,10 @@ public: typedef ServiceHandle<IUserDataSvc> UserDataSvc_t; /// Pointer to IUserDataSvc mutable UserDataSvc_t m_userStore; + + /// Extra output dependency collection, extended by AthAlgorithmDHUpdate + /// to add symlinks. Empty if no symlinks were found. + DataObjIDColl m_extendedExtraObjects; }; /////////////////////////////////////////////////////////////////// diff --git a/Control/AthenaBaseComps/CMakeLists.txt b/Control/AthenaBaseComps/CMakeLists.txt index ece926545de757e64648371b71d147dc2ba1c1da..fa62f1921cfa8c51dc0ebc850c91b8ee9d11d56a 100644 --- a/Control/AthenaBaseComps/CMakeLists.txt +++ b/Control/AthenaBaseComps/CMakeLists.txt @@ -38,3 +38,13 @@ atlas_add_test( AthReentrantAlgorithm_test SOURCES test/AthReentrantAlgorithm_test.cxx LINK_LIBRARIES StoreGateLib GaudiKernel TestTools AthenaBaseComps ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" ) + +atlas_add_test( AthAlgorithm_test + SOURCES test/AthAlgorithm_test.cxx + LINK_LIBRARIES StoreGateLib GaudiKernel TestTools AthenaBaseComps + ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" ) + +atlas_add_test( AthAlgorithmDHUpdate_test + SOURCES test/AthAlgorithmDHUpdate_test.cxx + LINK_LIBRARIES StoreGateLib GaudiKernel TestTools AthenaBaseComps + ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" ) diff --git a/Control/AthenaBaseComps/share/AthAlgorithmDHUpdate_test.ref b/Control/AthenaBaseComps/share/AthAlgorithmDHUpdate_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..d535188fd9f8895aad1444efc59279681dae2b33 --- /dev/null +++ b/Control/AthenaBaseComps/share/AthAlgorithmDHUpdate_test.ref @@ -0,0 +1,32 @@ + + +Initializing Gaudi ApplicationMgr using job opts ../share/propertyHandling_test.txt +JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work7/Control/AthenaBaseComps/share/../share/propertyHandling_test.txt +JobOptionsSvc INFO # (1,1): alg.rkey = "FooSvc/aaa" +JobOptionsSvc INFO # (2,1): alg.wkey = "BarSvc/bbb" +JobOptionsSvc INFO # (3,1): alg.ukey = "ccc" +JobOptionsSvc INFO # (4,1): alg.rhandle = "FooSvc/ddd" +JobOptionsSvc INFO # (5,1): alg.whandle = "BarSvc/eee" +JobOptionsSvc INFO # (6,1): alg.uhandle = "fff" +JobOptionsSvc INFO # (8,1): tool.rkey = "FooSvc/taa" +JobOptionsSvc INFO # (9,1): tool.wkey = "BarSvc/tbb" +JobOptionsSvc INFO # (10,1): tool.ukey = "tcc" +JobOptionsSvc INFO # (11,1): tool.rhandle = "FooSvc/tdd" +JobOptionsSvc INFO # (12,1): tool.whandle = "BarSvc/tee" +JobOptionsSvc INFO # (13,1): tool.uhandle = "tff" +JobOptionsSvc INFO # (15,1): ralg.rkey = "FooSvc/aaa" +JobOptionsSvc INFO # (16,1): ralg.whandle = "BarSvc/eee" +JobOptionsSvc INFO Job options successfully read in from ../share/propertyHandling_test.txt +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus042.cern.ch on Thu Apr 6 17:12:06 2017 +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +EventLoopMgr WARNING Unable to locate service "EventSelector" +EventLoopMgr WARNING No events will be processed from external input. +HistogramPersis...WARNING Histograms saving not required. +ApplicationMgr INFO Application Manager Initialized successfully +ApplicationMgr Ready +test1 +ClassIDSvc INFO getRegistryEntries: read 677 CLIDRegistry entries for module ALL diff --git a/Control/AthenaBaseComps/share/AthAlgorithm_test.ref b/Control/AthenaBaseComps/share/AthAlgorithm_test.ref new file mode 100644 index 0000000000000000000000000000000000000000..351f76b877521af4b2ee9f8870348eca0d1660ad --- /dev/null +++ b/Control/AthenaBaseComps/share/AthAlgorithm_test.ref @@ -0,0 +1,33 @@ + + +Initializing Gaudi ApplicationMgr using job opts ../share/propertyHandling_test.txt +JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work7/Control/AthenaBaseComps/share/../share/propertyHandling_test.txt +JobOptionsSvc INFO # (1,1): alg.rkey = "FooSvc/aaa" +JobOptionsSvc INFO # (2,1): alg.wkey = "BarSvc/bbb" +JobOptionsSvc INFO # (3,1): alg.ukey = "ccc" +JobOptionsSvc INFO # (4,1): alg.rhandle = "FooSvc/ddd" +JobOptionsSvc INFO # (5,1): alg.whandle = "BarSvc/eee" +JobOptionsSvc INFO # (6,1): alg.uhandle = "fff" +JobOptionsSvc INFO # (8,1): tool.rkey = "FooSvc/taa" +JobOptionsSvc INFO # (9,1): tool.wkey = "BarSvc/tbb" +JobOptionsSvc INFO # (10,1): tool.ukey = "tcc" +JobOptionsSvc INFO # (11,1): tool.rhandle = "FooSvc/tdd" +JobOptionsSvc INFO # (12,1): tool.whandle = "BarSvc/tee" +JobOptionsSvc INFO # (13,1): tool.uhandle = "tff" +JobOptionsSvc INFO # (15,1): ralg.rkey = "FooSvc/aaa" +JobOptionsSvc INFO # (16,1): ralg.whandle = "BarSvc/eee" +JobOptionsSvc INFO Job options successfully read in from ../share/propertyHandling_test.txt +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus042.cern.ch on Thu Apr 6 23:08:52 2017 +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +EventLoopMgr WARNING Unable to locate service "EventSelector" +EventLoopMgr WARNING No events will be processed from external input. +HistogramPersis...WARNING Histograms saving not required. +ApplicationMgr INFO Application Manager Initialized successfully +ApplicationMgr Ready +test1 +ClassIDSvc INFO getRegistryEntries: read 727 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 359 CLIDRegistry entries for module ALL diff --git a/Control/AthenaBaseComps/src/AthAlgorithm.cxx b/Control/AthenaBaseComps/src/AthAlgorithm.cxx index e419251f6e8a86aff3750b4e02a54d93c9208035..35f87bce7e3ff8f48b21a9506e499698f2f11fa9 100644 --- a/Control/AthenaBaseComps/src/AthAlgorithm.cxx +++ b/Control/AthenaBaseComps/src/AthAlgorithm.cxx @@ -11,12 +11,14 @@ // AthenaBaseComps includes #include "AthenaBaseComps/AthAlgorithm.h" +#include "AthAlgorithmDHUpdate.h" // STL includes // FrameWork includes #include "GaudiKernel/Property.h" + /////////////////////////////////////////////////////////////////// // Public methods: /////////////////////////////////////////////////////////////////// @@ -61,6 +63,14 @@ AthAlgorithm::AthAlgorithm( const std::string& name, m_userStore = UserDataSvc_t ("UserDataSvc/UserDataSvc", name), "Handle to a UserDataSvc/UserDataSvc instance: it will be used to " "retrieve user data during the course of the job" ); + + // Set up to run AthAlgorithmDHUpdate in sysInitialize before + // merging depedency lists. This extends the output dependency + // list with any symlinks implied by inheritance relations. + m_updateDataHandles = + std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate> + (m_extendedExtraObjects, + std::move (m_updateDataHandles)); } // Destructor @@ -105,3 +115,20 @@ AthAlgorithm::msg_update_handler( Property& outputLevel ) msg().setLevel( msgLevel() ); } } + + +/** + * @brief Return the list of extra output dependencies. + * + * This list is extended to include symlinks implied by inheritance + * relations. + */ +const DataObjIDColl& AthAlgorithm::extraOutputDeps() const +{ + // If we didn't find any symlinks to add, just return the collection + // from the base class. Otherwise, return the extended collection. + if (!m_extendedExtraObjects.empty()) { + return m_extendedExtraObjects; + } + return Algorithm::extraOutputDeps(); +} diff --git a/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.cxx b/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.cxx new file mode 100644 index 0000000000000000000000000000000000000000..237817d086579dab5bd6117f720c4f4588119442 --- /dev/null +++ b/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.cxx @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ +// $Id$ +/** + * @file AthenaBaseComps/src/AthAlgorithmDHUpdate.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Update output dependencies to include symlinks. + */ + + +#include "AthAlgorithmDHUpdate.h" +#include "SGTools/BaseInfo.h" + + +namespace AthenaBaseComps { + + +/** + * @brief Constructor. + * @param linkedObjs Set to which entries for symlinks will be added. + * @param chain Hook to call after this one completes. + */ +AthAlgorithmDHUpdate::AthAlgorithmDHUpdate (DataObjIDColl& linkedObjs, + std::unique_ptr<IDataHandleVisitor> chain) + : m_linkedObjs (linkedObjs), + m_chain (std::move (chain)) +{ +} + + +/** + * @brief Walk over the dependencies of an algorithm. + * @param dhh The algorithm object. + * + * Finds output dependencies of the algorithms that have symlinks + * available and enters these links in @c linkedObjs. + */ +void AthAlgorithmDHUpdate::visit (const IDataHandleHolder* dhh) +{ + // Make a copy, as usually linkedObjs will be extraOutputDeps(). + DataObjIDColl ex = dhh->extraOutputDeps(); + + // Process all output dependencies. + for (const Gaudi::DataHandle* h : dhh->outputHandles()) { + if (!h->objKey().empty()) + handle (h->fullKey().clid(), h->objKey()); + } + + for (const DataObjID& dobj : ex) { + if (!dobj.key().empty()) + handle (dobj.clid(), dobj.key()); + } + + for (const DataObjID& dobj : dhh->outputDataObjs()) { + if (!dobj.key().empty()) + handle (dobj.clid(), dobj.key()); + } + + // If we put anything in linkedObjs, also add the contents + // of extraOutputDeps. + if (!m_linkedObjs.empty()) { + DataObjIDColl ex = dhh->extraOutputDeps(); + m_linkedObjs.insert (ex.begin(), ex.end()); + } + + // Call the next hook function, if any. + if (m_chain) { + m_chain->visit (dhh); + } +} + + +/** + * @brief Handle one output dependency. + * @param clid The CLID of the output. + * @param key The SG key of the output. + * + * If CLID has symlinks available, enter these links in @c linkedObjs. + */ +void AthAlgorithmDHUpdate::handle (CLID clid, const std::string& key) +{ + const SG::BaseInfoBase* bib = SG::BaseInfoBase::find (clid); + if (!bib) return; + for (CLID clid2 : bib->get_bases()) { + if (clid2 != clid) { + m_linkedObjs.emplace (clid2, key); + } + } +} + + +} // namespace AthenaBaseComps diff --git a/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.h b/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.h new file mode 100644 index 0000000000000000000000000000000000000000..45036ce0ce7fe3c13f1d6b0aa59154bf574e9f08 --- /dev/null +++ b/Control/AthenaBaseComps/src/AthAlgorithmDHUpdate.h @@ -0,0 +1,85 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ +// $Id$ +/** + * @file AthenaBaseComps/src/AthAlgorithmDHUpdate.h + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Update output dependencies to include symlinks. + */ + + +#ifndef ATHENABASECOMPS_ATHALGORITHMDHUPDATE_H +#define ATHENABASECOMPS_ATHALGORITHMDHUPDATE_H + + +#include "GaudiKernel/IDataHandleHolder.h" +#include "GaudiKernel/DataObjID.h" +#include "GaudiKernel/ClassID.h" +#include <memory> + + +namespace AthenaBaseComps { + + +/** + * @brief Update output dependencies to include symlinks. + * + * This is intended to be installed in an algorithm via the + * m_updateDataHandles hook, to run before Algorithm::sysInitialize + * merges the sets of input and output dependencies. + * + * It makes a first pass over all the output dependences. For each, + * it examines the CLID to see if there are any other CLIDs to which + * it is convertable, and if so, adds them to the @c linkedObjs list. + * The intention is that the algorithm will then override + * @c extraOutputDeps so that it will include these extra entries. + */ +class AthAlgorithmDHUpdate + : public IDataHandleVisitor +{ +public: + /** + * @brief Constructor. + * @param linkedObjs Set to which entries for symlinks will be added. + * @param chain Hook to call after this one completes. + */ + AthAlgorithmDHUpdate (DataObjIDColl& linkedObjs, + std::unique_ptr<IDataHandleVisitor> chain); + + + /** + * @brief Walk over the dependencies of an algorithm. + * @param dhh The algorithm object. + * + * Finds output dependencies of the algorithms that have symlinks + * available and enters these links in @c linkedObjs. + */ + virtual void visit(const IDataHandleHolder* dhh) override; + + +private: + /** + * @brief Handle one output dependency. + * @param clid The CLID of the output. + * @param key The SG key of the output. + * + * If CLID has symlinks available, enter these links in @c linkedObjs. + */ + void handle (CLID clid, const std::string& key); + + + /// Set of additional output dependencies represented by links. + DataObjIDColl& m_linkedObjs; + + /// Hook to call after this one. + std::unique_ptr<IDataHandleVisitor> m_chain; +}; + + +} // namespace AthenaBaseComps + + +#endif // not ATHENABASECOMPS_ATHALGORITHMDHUPDATE_H diff --git a/Control/AthenaBaseComps/src/AthReentrantAlgorithm.cxx b/Control/AthenaBaseComps/src/AthReentrantAlgorithm.cxx index bc09e1db6f48bac7fd108fa942909166bf6f3797..7846761c4a224cf63677fe206a231145f7fcdbe5 100644 --- a/Control/AthenaBaseComps/src/AthReentrantAlgorithm.cxx +++ b/Control/AthenaBaseComps/src/AthReentrantAlgorithm.cxx @@ -11,6 +11,7 @@ // AthenaBaseComps includes #include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "AthAlgorithmDHUpdate.h" // FrameWork includes #include "GaudiKernel/Property.h" @@ -62,6 +63,14 @@ AthReentrantAlgorithm::AthReentrantAlgorithm( const std::string& name, m_userStore = UserDataSvc_t ("UserDataSvc/UserDataSvc", name), "Handle to a UserDataSvc/UserDataSvc instance: it will be used to " "retrieve user data during the course of the job" ); + + // Set up to run AthAlgorithmDHUpdate in sysInitialize before + // merging depedency lists. This extends the output dependency + // list with any symlinks implied by inheritance relations. + m_updateDataHandles = + std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate> + (m_extendedExtraObjects, + std::move (m_updateDataHandles)); } // Destructor @@ -119,3 +128,20 @@ StatusCode AthReentrantAlgorithm::execute() return execute_r (Gaudi::Hive::currentContext()); } #endif + + +/** + * @brief Return the list of extra output dependencies. + * + * This list is extended to include symlinks implied by inheritance + * relations. + */ +const DataObjIDColl& AthReentrantAlgorithm::extraOutputDeps() const +{ + // If we didn't find any symlinks to add, just return the collection + // from the base class. Otherwise, return the extended collection. + if (!m_extendedExtraObjects.empty()) { + return m_extendedExtraObjects; + } + return Algorithm::extraOutputDeps(); +} diff --git a/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx b/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e57749a5018f907090f794a1b0c1156539f39a9c --- /dev/null +++ b/Control/AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file AthenaBaseComps/test/AthAlgorithmDHUpdate_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Test property handling for AthReentrantAlgorithm. + */ + + +#undef NDEBUG +#include "../src/AthAlgorithmDHUpdate.h" +#include "SGTools/CLASS_DEF.h" +#include "SGTools/BaseInfo.h" +#include "TestTools/initGaudi.h" +#include <cassert> +#include <iostream> + + +class A2 {}; +class A3 {}; +class A1 : public A2, public A3 {}; +CLASS_DEF (A1, 132102064, 0) +CLASS_DEF (A2, 132102065, 0) +CLASS_DEF (A3, 132102066, 0) +SG_BASES2 (A1, A2, A3); + +class B2 {}; +class B1 : public B2 {}; +CLASS_DEF (B1, 132102074, 0) +CLASS_DEF (B2, 132102075, 0) +SG_BASE (B1, B2); + +class C2 {}; +class C1 : public C2 {}; +CLASS_DEF (C1, 132102084, 0) +CLASS_DEF (C2, 132102085, 0) +SG_BASE (C1, C2); + +class TestHolder + : public IDataHandleHolder +{ +public: + virtual std::vector<Gaudi::DataHandle*> inputHandles() const override + { std::abort(); } + virtual const DataObjIDColl& extraInputDeps() const override + { std::abort(); } + virtual void acceptDHVisitor(IDataHandleVisitor*) const override + { std::abort(); } + virtual void commitHandles() override + { std::abort(); } + virtual const DataObjIDColl& inputDataObjs() const override + { std::abort(); } + virtual void addDependency(const DataObjID&, const Gaudi::DataHandle::Mode&) override + { std::abort(); } + virtual void declare(Gaudi::DataHandle&) override + { std::abort(); } + virtual void renounce(Gaudi::DataHandle&) override + { std::abort(); } + virtual unsigned long addRef() override + { std::abort(); } + virtual unsigned long release() override + { std::abort(); } + virtual StatusCode queryInterface(const InterfaceID&, void**) override + { std::abort(); } + virtual const std::string& name() const override + { std::abort(); } + + virtual std::vector<Gaudi::DataHandle*> outputHandles() const override; + virtual const DataObjIDColl& extraOutputDeps() const override; + virtual const DataObjIDColl& outputDataObjs() const override; + + + std::vector<Gaudi::DataHandle*> handle_ptrs; + DataObjIDColl outDeps; + DataObjIDColl extraOutDeps; +}; + + +std::vector<Gaudi::DataHandle*> TestHolder::outputHandles() const +{ + return handle_ptrs; +} + + +const DataObjIDColl& TestHolder::extraOutputDeps() const +{ + return extraOutDeps; +} + + +const DataObjIDColl& TestHolder::outputDataObjs() const +{ + return outDeps; +} + + +class TestChain + : public IDataHandleVisitor +{ +public: + virtual void visit(const IDataHandleHolder*) override; + + const IDataHandleHolder* visited = nullptr; +}; + + +void TestChain::visit (const IDataHandleHolder* dhh) +{ + visited = dhh; +} + + +void test1() +{ + std::cout << "test1\n"; + + TestHolder h; + Gaudi::DataHandle h1 (DataObjID (ClassID_traits<A1>::ID(), "a1")); + h.handle_ptrs.push_back (&h1); + + h.outDeps.emplace (ClassID_traits<B1>::ID(), "b1"); + h.outDeps.emplace (ClassID_traits<C1>::ID(), "c1"); + h.extraOutDeps.emplace (ClassID_traits<C1>::ID(), "c1"); + + DataObjIDColl linkedObjs; + auto chain = std::make_unique<TestChain>(); + TestChain* tc = chain.get(); + AthenaBaseComps::AthAlgorithmDHUpdate dhu (linkedObjs, std::move (chain)); + dhu.visit (&h); + assert (tc->visited == &h); + + DataObjIDColl exp = { + { ClassID_traits<A2>::ID(), "a1" }, + { ClassID_traits<A3>::ID(), "a1" }, + { ClassID_traits<B2>::ID(), "b1" }, + { ClassID_traits<C1>::ID(), "c1" }, + { ClassID_traits<C2>::ID(), "c1" }, + }; + + if (linkedObjs != exp) { + for (const DataObjID& o : linkedObjs) { + std::cout << "linked " << o.clid() << " " << o.key() << "\n"; + } + } + + // Quick test with null chain. + std::unique_ptr<IDataHandleVisitor> chain2; + AthenaBaseComps::AthAlgorithmDHUpdate dhu2 (linkedObjs, std::move (chain2)); + dhu2.visit (&h); +} + + +int main() +{ + ISvcLocator* svcLoc = nullptr; + Athena_test::initGaudi ("propertyHandling_test.txt", svcLoc); + + test1(); + return 0; +} diff --git a/Control/AthenaBaseComps/test/AthAlgorithm_test.cxx b/Control/AthenaBaseComps/test/AthAlgorithm_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f0f2e494e004d9cc1a52cf81f213fd1c07a0fbfc --- /dev/null +++ b/Control/AthenaBaseComps/test/AthAlgorithm_test.cxx @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file AthenaBaseComps/test/AthAlgorithm_test.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Test property handling for AthAlgorithm. + */ + + +#undef NDEBUG +#include "AthenaBaseComps/AthAlgorithm.h" +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandle.h" +#include "TestTools/initGaudi.h" +#include "GaudiKernel/ThreadLocalContext.h" +#include <vector> +#include <cassert> +#include <iostream> + + +namespace AthenaBaseCompsTest { +class MyBase {}; +class MyObj : public MyBase {}; +} +CLASS_DEF (AthenaBaseCompsTest::MyBase, 293847296, 1) +CLASS_DEF (AthenaBaseCompsTest::MyObj, 293847295, 1) +SG_BASE (AthenaBaseCompsTest::MyObj, AthenaBaseCompsTest::MyBase); +using AthenaBaseCompsTest::MyObj; + + +class MyAlg + : public AthAlgorithm +{ +public: + MyAlg (const std::string& name, ISvcLocator* svcLoc); + + virtual StatusCode execute() override; + + virtual void declare(Gaudi::DataHandle& hnd) override; + + SG::ReadHandleKey<MyObj> rkey; + SG::WriteHandle<MyObj> whandle; + + std::vector<Gaudi::DataHandle*> inputs; + std::vector<Gaudi::DataHandle*> outputs; +}; + + +MyAlg::MyAlg (const std::string& name, ISvcLocator* svcLoc) + : AthAlgorithm (name, svcLoc) +{ + declareProperty ("rkey", rkey); + declareProperty ("whandle", whandle); +} + + +StatusCode MyAlg::execute() +{ + return StatusCode::SUCCESS; +} + + +void MyAlg::declare(Gaudi::DataHandle& hnd) { + if (hnd.mode() & Gaudi::DataHandle::Reader) + inputs.push_back( &hnd ); + if (hnd.mode() & Gaudi::DataHandle::Writer) + outputs.push_back( &hnd ); + AthAlgorithm::declare (hnd); +} + + +void test1 (ISvcLocator* svcLoc) +{ + std::cout << "test1\n"; + + MyAlg alg ("ralg", svcLoc); alg.addRef(); + //assert (alg.setProperties().isSuccess()); + assert (alg.sysInitialize().isSuccess()); + + assert (alg.rkey.clid() == 293847295); + assert (alg.rkey.key() == "aaa"); + assert (alg.rkey.storeHandle().name() == "FooSvc"); + assert (alg.rkey.mode() == Gaudi::DataHandle::Reader); + + assert (alg.whandle.clid() == 293847295); + assert (alg.whandle.key() == "eee"); + assert (alg.whandle.storeHandle().name() == "BarSvc"); + assert (alg.whandle.mode() == Gaudi::DataHandle::Writer); + + std::vector<std::string> inputKeys { "aaa" }; + assert (alg.inputs.size() == inputKeys.size()); + for (size_t i = 0; i < inputKeys.size(); i++) + assert (alg.inputs[i]->objKey() == inputKeys[i]); + + std::vector<std::string> outputKeys { "eee" }; + assert (alg.outputs.size() == outputKeys.size()); + for (size_t i = 0; i < outputKeys.size(); i++) + assert (alg.outputs[i]->objKey() == outputKeys[i]); + + IProxyDict* xdict = &*alg.evtStore(); + xdict = alg.evtStore()->hiveProxyDict(); + EventContext ctx; + ctx.setProxy (xdict); + Gaudi::Hive::setCurrentContext (ctx); + + assert (alg.execute().isSuccess()); + + DataObjIDColl exp = { + { ClassID_traits<AthenaBaseCompsTest::MyObj>::ID(), "eee" }, + { ClassID_traits<AthenaBaseCompsTest::MyBase>::ID(), "eee" }, + }; + if (exp != alg.outputDataObjs()) { + for (const DataObjID& o : alg.outputDataObjs()) { + std::cout << "obj " << o.clid() << " " << o.key() << "\n"; + } + } +} + + +int main() +{ + ISvcLocator* svcLoc = nullptr; + Athena_test::initGaudi ("propertyHandling_test.txt", svcLoc); + + test1 (svcLoc); + return 0; +} diff --git a/Control/AthenaBaseComps/test/AthReentrantAlgorithm_test.cxx b/Control/AthenaBaseComps/test/AthReentrantAlgorithm_test.cxx index d0d94d7778107bb89094d986b8e84a1a0ac0ae7e..51d4685b71cb9a61ec0361fcc1ffea88a41d888d 100644 --- a/Control/AthenaBaseComps/test/AthReentrantAlgorithm_test.cxx +++ b/Control/AthenaBaseComps/test/AthReentrantAlgorithm_test.cxx @@ -23,9 +23,12 @@ namespace AthenaBaseCompsTest { -class MyObj {}; +class MyBase {}; +class MyObj : public MyBase {}; } +CLASS_DEF (AthenaBaseCompsTest::MyBase, 293847296, 1) CLASS_DEF (AthenaBaseCompsTest::MyObj, 293847295, 1) +SG_BASE (AthenaBaseCompsTest::MyObj, AthenaBaseCompsTest::MyBase); using AthenaBaseCompsTest::MyObj; @@ -70,6 +73,7 @@ void MyAlg::declare(Gaudi::DataHandle& hnd) { inputs.push_back( &hnd ); if (hnd.mode() & Gaudi::DataHandle::Writer) outputs.push_back( &hnd ); + AthReentrantAlgorithm::declare (hnd); } @@ -78,7 +82,8 @@ void test1 (ISvcLocator* svcLoc) std::cout << "test1\n"; MyAlg alg ("ralg", svcLoc); alg.addRef(); - assert (alg.setProperties().isSuccess()); + //assert (alg.setProperties().isSuccess()); + assert (alg.sysInitialize().isSuccess()); assert (alg.rkey.clid() == 293847295); assert (alg.rkey.key() == "aaa"); @@ -108,6 +113,16 @@ void test1 (ISvcLocator* svcLoc) assert (alg.execute().isSuccess()); assert (pdict == xdict); + + DataObjIDColl exp = { + { ClassID_traits<AthenaBaseCompsTest::MyObj>::ID(), "eee" }, + { ClassID_traits<AthenaBaseCompsTest::MyBase>::ID(), "eee" }, + }; + if (exp != alg.outputDataObjs()) { + for (const DataObjID& o : alg.outputDataObjs()) { + std::cout << "obj " << o.clid() << " " << o.key() << "\n"; + } + } } diff --git a/Control/DataModelTest/DataModelRunTests/CMakeLists.txt b/Control/DataModelTest/DataModelRunTests/CMakeLists.txt index 49df0b2be64707c9d28476ac3e4f8645da9d3d2d..1d60c31652fec9e389b22cb7235af74b9489c97e 100644 --- a/Control/DataModelTest/DataModelRunTests/CMakeLists.txt +++ b/Control/DataModelTest/DataModelRunTests/CMakeLists.txt @@ -77,3 +77,13 @@ datamodel_run_test (xAODRootTestRead2 datamodel_run_test (ByteStreamTestWrite) datamodel_run_test (ByteStreamTestRead DEPENDS ByteStreamTestWrite) +datamodel_run_test (xAODTestSymlinks1) +datamodel_run_test (xAODTestSymlinks1MT + COMMAND "athena.py --thread=1") + +datamodel_run_test (xAODTestSymlinks2 + DEPENDS xAODTestWrite) +datamodel_run_test (xAODTestSymlinks2MT + COMMAND "athena.py --thread=1" + DEPENDS xAODTestWrite) + diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref new file mode 100644 index 0000000000000000000000000000000000000000..3e4b05309430758d54c89937e308cc8681e41632 --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref @@ -0,0 +1,126 @@ +Thu Apr 20 20:18:35 CEST 2017 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-opt] [atlas-work3g/725f3a42d9] -- built on [2017-04-20T1906] +Py:Athena INFO including file "AthenaCommon/Bootstrap.py" +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +[?1034hPy:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks1_jo.py" +Py:ConfigurableDb INFO Read module info for 5294 configurables from 15 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus005.cern.ch on Thu Apr 20 20:18:47 2017 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +StatusCodeSvc INFO initialize +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 2307 CLIDRegistry entries for module ALL +ChronoStatSvc INFO Number of skipped events for MemStat-1 +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 5682 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 52 CLIDRegistry entries for module ALL +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-18T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus005.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +PoolSvc INFO Re-initializing PoolSvc +ClassIDSvc INFO getRegistryEntries: read 867 CLIDRegistry entries for module ALL +HistogramPersis...WARNING Histograms saving not required. +EventSelector INFO Enter McEventSelector Initialization +AthenaEventLoopMgr INFO Setup EventSelector service EventSelector +ApplicationMgr INFO Application Manager Initialized successfully +ApplicationMgr INFO Application Manager Started successfully +EventPersistenc... INFO Added successfully Conversion service:McCnvSvc +AthenaEventLoopMgr INFO ===>>> start of run 0 <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #0, run #0 0 events processed so far <<<=== +ClassIDSvc INFO getRegistryEntries: read 104 CLIDRegistry entries for module ALL +xAODTestReadSym... INFO C (as AuxElement): 1000 +AthenaEventLoopMgr INFO ===>>> done processing event #0, run #0 1 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #1, run #0 1 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 2000 +AthenaEventLoopMgr INFO ===>>> done processing event #1, run #0 2 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #2, run #0 2 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 3000 +AthenaEventLoopMgr INFO ===>>> done processing event #2, run #0 3 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #3, run #0 3 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 4000 +AthenaEventLoopMgr INFO ===>>> done processing event #3, run #0 4 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #4, run #0 4 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 5000 +AthenaEventLoopMgr INFO ===>>> done processing event #4, run #0 5 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #5, run #0 5 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 6000 +AthenaEventLoopMgr INFO ===>>> done processing event #5, run #0 6 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #6, run #0 6 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 7000 +AthenaEventLoopMgr INFO ===>>> done processing event #6, run #0 7 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #7, run #0 7 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 8000 +AthenaEventLoopMgr INFO ===>>> done processing event #7, run #0 8 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #8, run #0 8 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 9000 +AthenaEventLoopMgr INFO ===>>> done processing event #8, run #0 9 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #9, run #0 9 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 10000 +AthenaEventLoopMgr INFO ===>>> done processing event #9, run #0 10 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #10, run #0 10 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 11000 +AthenaEventLoopMgr INFO ===>>> done processing event #10, run #0 11 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #11, run #0 11 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 12000 +AthenaEventLoopMgr INFO ===>>> done processing event #11, run #0 12 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #12, run #0 12 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 13000 +AthenaEventLoopMgr INFO ===>>> done processing event #12, run #0 13 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #13, run #0 13 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 14000 +AthenaEventLoopMgr INFO ===>>> done processing event #13, run #0 14 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #14, run #0 14 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 15000 +AthenaEventLoopMgr INFO ===>>> done processing event #14, run #0 15 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #15, run #0 15 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 16000 +AthenaEventLoopMgr INFO ===>>> done processing event #15, run #0 16 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #16, run #0 16 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 17000 +AthenaEventLoopMgr INFO ===>>> done processing event #16, run #0 17 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #17, run #0 17 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 18000 +AthenaEventLoopMgr INFO ===>>> done processing event #17, run #0 18 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #18, run #0 18 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 19000 +AthenaEventLoopMgr INFO ===>>> done processing event #18, run #0 19 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #19, run #0 19 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 20000 +AthenaEventLoopMgr INFO ===>>> done processing event #19, run #0 20 events processed so far <<<=== +Domain[ROOT_All] Info > Deaccess DbDomain READ [ROOT_All] +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +IncidentProcAlg2 INFO Finalize +EventSelector INFO finalize +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +ChronoStatSvc.f... INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" +CORAL/Services/ConnectionService Info Deleting the ConnectionPool diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref new file mode 100644 index 0000000000000000000000000000000000000000..85e4e24bba881e7a517b8050021f94eeca1b455f --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref @@ -0,0 +1,175 @@ +Thu Apr 20 20:24:37 CEST 2017 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-opt] [atlas-work3g/725f3a42d9] -- built on [2017-04-20T1906] +Py:Athena INFO including file "AthenaCommon/Bootstrap.py" +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +[?1034hPy:Athena INFO configuring AthenaHive with [1] concurrent threads +Py:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks1MT_jo.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks1_jo.py" +Py:ConfigurableDb INFO Read module info for 5294 configurables from 15 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +MessageSvc INFO Activating in a separate thread +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus005.cern.ch on Thu Apr 20 20:24:50 2017 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 2745 CLIDRegistry entries for module ALL +ChronoStatSvc INFO Number of skipped events for MemStat-1 +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +AthenaHiveEventLoopMgr INFO Initializing AthenaHiveEventLoopMgr - package version AthenaServices-00-00-00 +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-18T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus005.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +PoolSvc INFO Re-initializing PoolSvc +ClassIDSvc INFO getRegistryEntries: read 6549 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 52 CLIDRegistry entries for module ALL +SGInputLoader INFO Will preload the following DataObjects: +ThreadPoolSvc INFO no thread init tools attached +ForwardSchedulerSvc INFO Activating scheduler in a separate thread +ForwardSchedulerSvc INFO Waiting for ForwardSchedulerSvc to activate +ForwardSchedulerSvc INFO Start checking the actionsQueue +ForwardSchedulerSvc WARNING Property MaxEventsInFlight was set. This works but it's deprecated. Please migrate your code options files. +ForwardSchedulerSvc INFO Found 8 algorithms +ForwardSchedulerSvc INFO outputs: +('DMTest::C','cinfo') +('SG::AuxElement','cinfo') +('DMTest::CVec','cvec') + +ForwardSchedulerSvc INFO Data Dependencies for Algorithms: + BeginIncFiringAlg + none + IncidentProcAlg1 + none + SGInputLoader + none + xAODTestWriteCVec + o INPUT ('EventInfo','McEventInfo') + o OUTPUT ('DMTest::CVec','cvec') + xAODTestWriteCInfo + o INPUT ('EventInfo','McEventInfo') + o INPUT ('DMTest::CVec','cvec') + o OUTPUT ('SG::AuxElement','cinfo') + o OUTPUT ('DMTest::C','cinfo') + xAODTestReadSymlink + o INPUT ('SG::AuxElement','cinfo') + EndIncFiringAlg + none + IncidentProcAlg2 + none +ForwardSchedulerSvc INFO Will attribute the following unmet INPUT dependencies to "SGInputLoader/SGInputLoader" Algorithm + o ('EventInfo','McEventInfo') required by Algorithm: + * xAODTestWriteCVec + * xAODTestWriteCInfo +ForwardSchedulerSvc INFO Concurrency level information: +ForwardSchedulerSvc INFO o Number of events in flight: 'MaxEventsInFlight':1 +ForwardSchedulerSvc INFO o Number of algorithms in flight: 'MaxAlgosInFlight':1 +ForwardSchedulerSvc INFO o TBB thread pool size: 'ThreadPoolSize':1 +HistogramPersistencySvc WARNING Histograms saving not required. +EventSelector INFO Enter McEventSelector Initialization +AthenaHiveEventLoopMgr INFO Setup EventSelector service EventSelector +ApplicationMgr INFO Application Manager Initialized successfully +ApplicationMgr INFO Application Manager Started successfully +AthenaHiveEventLoopMgr INFO Starting loop on events +EventPersistencySvc INFO Added successfully Conversion service:McCnvSvc +AthenaHiveEventLoopMgr INFO ===>>> start of run 0 <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #0, run #0 on slot 0, 0 events processed so far <<<=== +ClassIDSvc 0 0 INFO getRegistryEntries: read 104 CLIDRegistry entries for module ALL +xAODTestReadSymlink 0 0 INFO C (as AuxElement): 1000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #0, run #0 on slot 0, 1 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #1, run #0 on slot 0, 1 events processed so far <<<=== +xAODTestReadSymlink 1 0 INFO C (as AuxElement): 2000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #1, run #0 on slot 0, 2 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #2, run #0 on slot 0, 2 events processed so far <<<=== +xAODTestReadSymlink 2 0 INFO C (as AuxElement): 3000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #2, run #0 on slot 0, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #3, run #0 on slot 0, 3 events processed so far <<<=== +xAODTestReadSymlink 3 0 INFO C (as AuxElement): 4000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #3, run #0 on slot 0, 4 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #4, run #0 on slot 0, 4 events processed so far <<<=== +xAODTestReadSymlink 4 0 INFO C (as AuxElement): 5000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #4, run #0 on slot 0, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #5, run #0 on slot 0, 5 events processed so far <<<=== +xAODTestReadSymlink 5 0 INFO C (as AuxElement): 6000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #5, run #0 on slot 0, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #6, run #0 on slot 0, 6 events processed so far <<<=== +xAODTestReadSymlink 6 0 INFO C (as AuxElement): 7000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #6, run #0 on slot 0, 7 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #7, run #0 on slot 0, 7 events processed so far <<<=== +xAODTestReadSymlink 7 0 INFO C (as AuxElement): 8000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #7, run #0 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #8, run #0 on slot 0, 8 events processed so far <<<=== +xAODTestReadSymlink 8 0 INFO C (as AuxElement): 9000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #8, run #0 on slot 0, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #9, run #0 on slot 0, 9 events processed so far <<<=== +xAODTestReadSymlink 9 0 INFO C (as AuxElement): 10000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #9, run #0 on slot 0, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #10, run #0 on slot 0, 10 events processed so far <<<=== +xAODTestReadSymlink 10 0 INFO C (as AuxElement): 11000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #10, run #0 on slot 0, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #11, run #0 on slot 0, 11 events processed so far <<<=== +xAODTestReadSymlink 11 0 INFO C (as AuxElement): 12000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #11, run #0 on slot 0, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #12, run #0 on slot 0, 12 events processed so far <<<=== +xAODTestReadSymlink 12 0 INFO C (as AuxElement): 13000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #12, run #0 on slot 0, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #13, run #0 on slot 0, 13 events processed so far <<<=== +xAODTestReadSymlink 13 0 INFO C (as AuxElement): 14000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #13, run #0 on slot 0, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #14, run #0 on slot 0, 14 events processed so far <<<=== +xAODTestReadSymlink 14 0 INFO C (as AuxElement): 15000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #14, run #0 on slot 0, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #15, run #0 on slot 0, 15 events processed so far <<<=== +xAODTestReadSymlink 15 0 INFO C (as AuxElement): 16000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #15, run #0 on slot 0, 16 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #16, run #0 on slot 0, 16 events processed so far <<<=== +xAODTestReadSymlink 16 0 INFO C (as AuxElement): 17000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #16, run #0 on slot 0, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #17, run #0 on slot 0, 17 events processed so far <<<=== +xAODTestReadSymlink 17 0 INFO C (as AuxElement): 18000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #17, run #0 on slot 0, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #18, run #0 on slot 0, 18 events processed so far <<<=== +xAODTestReadSymlink 18 0 INFO C (as AuxElement): 19000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #18, run #0 on slot 0, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #19, run #0 on slot 0, 19 events processed so far <<<=== +xAODTestReadSymlink 19 0 INFO C (as AuxElement): 20000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #19, run #0 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ---> Loop Finished (seconds): 0.0441599 +Domain[ROOT_All] Info > Deaccess DbDomain READ [ROOT_All] +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +SGInputLoader INFO Finalizing SGInputLoader... +IncidentProcAlg2 INFO Finalize +EventSelector INFO finalize +ForwardSchedulerSvc INFO Joining Scheduler thread +ForwardSchedulerSvc 19 0 INFO Terminating thread-pool resources +TimelineSvc INFO Outputting timeline with 160 entries to file 'TimelineFile':timeline.csv +EventDataSvc INFO Finalizing EventDataSvc - package version StoreGate-00-00-00 +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +ChronoStatSvc.finalize() INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" +CORAL/Services/ConnectionService Info Deleting the ConnectionPool diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT_jo.py new file mode 100644 index 0000000000000000000000000000000000000000..c950c9d30f5357f931c5c28d030ea56af878bdeb --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT_jo.py @@ -0,0 +1,10 @@ +# +# $Id$ +# +# File: DataModelRunTests/share/xAODTestSymlinks1MT_jo.py +# Author: snyder@bnl.gov +# Date: Apr 2017 +# Purpose: Test syminks and hive. +# + +include ('DataModelRunTests/xAODTestSymlinks1_jo.py') diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py new file mode 100644 index 0000000000000000000000000000000000000000..b2fcac96491ba38127f8edb670e0c08f22b2a5db --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py @@ -0,0 +1,71 @@ +# +# $Id$ +# +# File: DataModelRunTests/share/xAODTestSymlinks1_jo.py +# Author: snyder@bnl.gov +# Date: Apr 2017 +# Purpose: Test syminks and hive. +# + +## basic job configuration (for generator) +import AthenaCommon.AtlasUnixGeneratorJob + +## get a handle to the default top-level algorithm sequence +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + +## get a handle to the ServiceManager +from AthenaCommon.AppMgr import ServiceMgr as svcMgr + +## get a handle to the ApplicationManager +from AthenaCommon.AppMgr import theApp + +#-------------------------------------------------------------- +# Load POOL support +#-------------------------------------------------------------- +import AthenaPoolCnvSvc.WriteAthenaPool + + + +#-------------------------------------------------------------- +# Event related parameters +#-------------------------------------------------------------- +theApp.EvtMax = 20 + + +#-------------------------------------------------------------- +# Set up the algorithm. +#-------------------------------------------------------------- + +from AthenaCommon.ConcurrencyFlags import jobproperties as jp +nThreads = jp.ConcurrencyFlags.NumThreads() +if nThreads >= 1: + svcMgr.ForwardSchedulerSvc.CheckDependencies = True + svcMgr.ForwardSchedulerSvc.DataLoaderAlg = 'SGInputLoader' + + from SGComps.SGCompsConf import SGInputLoader + topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False ) + + +from DataModelTestDataCommon.DataModelTestDataCommonConf import \ + DMTest__xAODTestReadSymlink +from DataModelTestDataWrite.DataModelTestDataWriteConf import \ + DMTest__xAODTestWriteCVec, \ + DMTest__xAODTestWriteCInfo +topSequence += DMTest__xAODTestWriteCVec ("xAODTestWriteCVec") +topSequence += DMTest__xAODTestWriteCInfo ("xAODTestWriteCInfo") +topSequence += DMTest__xAODTestReadSymlink ("xAODTestReadSymlink", Key='cinfo') + + +#-------------------------------------------------------------- +# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) +#-------------------------------------------------------------- +svcMgr.MessageSvc.OutputLevel = 3 +svcMgr.MessageSvc.debugLimit = 100000 +svcMgr.ClassIDSvc.OutputLevel = 3 + +# No stats printout +ChronoStatSvc = Service( "ChronoStatSvc" ) +ChronoStatSvc.ChronoPrintOutTable = FALSE +ChronoStatSvc.PrintUserTime = FALSE +ChronoStatSvc.StatPrintOutTable = FALSE diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref new file mode 100644 index 0000000000000000000000000000000000000000..35e97761a0400dc49bee649c58462f849d59c1e7 --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref @@ -0,0 +1,158 @@ +Fri Apr 7 03:45:19 CEST 2017 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/4765e91ead] -- built on [2017-04-07T0230] +Py:Athena INFO including file "AthenaCommon/Bootstrap.py" +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +[?1034hPy:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks2_jo.py" +Py:ConfigurableDb INFO Read module info for 5290 configurables from 30 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus042.cern.ch on Fri Apr 7 03:45:41 2017 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +StatusCodeSvc INFO initialize +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 8862 CLIDRegistry entries for module ALL +ChronoStatSvc INFO Number of skipped events for MemStat-1 +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 358 CLIDRegistry entries for module ALL +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO Initializing PoolSvc - package version PoolSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://aiatlas036.cern.ch:8000/atlr)(serverurl=http://aiatlas034.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier01.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier05.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca20.cern.ch:3128)(proxyurl=http://ca17.cern.ch:3128)(proxyurl=http://atlast0fsquid.cern.ch:3128)(proxyurl=http://atlassquid1.cern.ch:3128)(proxyurl=http://atlassquid2.cern.ch:3128)(proxyurl=http://atlassquid4.cern.ch:3128) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-05T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus042.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +PoolSvc INFO Re-initializing PoolSvc +EventSelector INFO reinitialization... +EventSelector INFO EventSelection with query +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +Domain[ROOT_All] Info -> Access DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +Domain[ROOT_All] Info xaoddata.root +RootDatabase.open Info xaoddata.root File version:60802 +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +PoolSvc INFO Failed to find container MetaDataHdrDataHeader to get Token. +EventPersistenc... INFO Added successfully Conversion service:AthenaPoolCnvSvc +EventSelector INFO Initializing EventSelector - package version EventSelectorAthenaPool-00-00-00 +EventSelector INFO reinitialization... +EventSelector INFO EventSelection with query +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +AthenaPoolAddre... INFO Initializing AthenaPoolAddressProviderSvc - package version EventSelectorAthenaPool-00-00-00 +HistogramPersis...WARNING Histograms saving not required. +AthenaEventLoopMgr INFO Setup EventSelector service EventSelector +ApplicationMgr INFO Application Manager Initialized successfully +xaoddata.root Info Database being retired... +Domain[ROOT_All] Info -> Deaccess DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +Domain[ROOT_All] Info -> Access DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +Domain[ROOT_All] Info xaoddata.root +RootDatabase.open Info xaoddata.root File version:60802 +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +ApplicationMgr INFO Application Manager Started successfully +PoolSvc INFO Failed to find container MetaDataHdrDataHeader to get Token. +ClassIDSvc INFO getRegistryEntries: read 1067 CLIDRegistry entries for module ALL +AthenaPoolConve... INFO massageEventInfo: unable to get OverrideRunNumberFromInput property from EventSelector +AthenaEventLoopMgr INFO ===>>> start of run 0 <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #0, run #0 0 events processed so far <<<=== +ClassIDSvc INFO getRegistryEntries: read 11 CLIDRegistry entries for module ALL +xAODTestReadSym... INFO C (as AuxElement): 1000 +ClassIDSvc INFO getRegistryEntries: read 48 CLIDRegistry entries for module ALL +AthenaEventLoopMgr INFO ===>>> done processing event #0, run #0 1 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #1, run #0 1 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 2000 +AthenaEventLoopMgr INFO ===>>> done processing event #1, run #0 2 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #2, run #0 2 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 3000 +AthenaEventLoopMgr INFO ===>>> done processing event #2, run #0 3 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #3, run #0 3 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 4000 +AthenaEventLoopMgr INFO ===>>> done processing event #3, run #0 4 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #4, run #0 4 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 5000 +AthenaEventLoopMgr INFO ===>>> done processing event #4, run #0 5 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #5, run #0 5 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 6000 +AthenaEventLoopMgr INFO ===>>> done processing event #5, run #0 6 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #6, run #0 6 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 7000 +AthenaEventLoopMgr INFO ===>>> done processing event #6, run #0 7 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #7, run #0 7 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 8000 +AthenaEventLoopMgr INFO ===>>> done processing event #7, run #0 8 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #8, run #0 8 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 9000 +AthenaEventLoopMgr INFO ===>>> done processing event #8, run #0 9 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #9, run #0 9 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 10000 +AthenaEventLoopMgr INFO ===>>> done processing event #9, run #0 10 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #10, run #0 10 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 11000 +AthenaEventLoopMgr INFO ===>>> done processing event #10, run #0 11 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #11, run #0 11 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 12000 +AthenaEventLoopMgr INFO ===>>> done processing event #11, run #0 12 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #12, run #0 12 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 13000 +AthenaEventLoopMgr INFO ===>>> done processing event #12, run #0 13 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #13, run #0 13 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 14000 +AthenaEventLoopMgr INFO ===>>> done processing event #13, run #0 14 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #14, run #0 14 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 15000 +AthenaEventLoopMgr INFO ===>>> done processing event #14, run #0 15 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #15, run #0 15 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 16000 +AthenaEventLoopMgr INFO ===>>> done processing event #15, run #0 16 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #16, run #0 16 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 17000 +AthenaEventLoopMgr INFO ===>>> done processing event #16, run #0 17 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #17, run #0 17 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 18000 +AthenaEventLoopMgr INFO ===>>> done processing event #17, run #0 18 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #18, run #0 18 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 19000 +AthenaEventLoopMgr INFO ===>>> done processing event #18, run #0 19 events processed so far <<<=== +AthenaEventLoopMgr INFO ===>>> start processing event #19, run #0 19 events processed so far <<<=== +xAODTestReadSym... INFO C (as AuxElement): 20000 +AthenaEventLoopMgr INFO ===>>> done processing event #19, run #0 20 events processed so far <<<=== +xaoddata.root Info Database being retired... +Domain[ROOT_All] Info -> Deaccess DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +IncidentProcAlg2 INFO Finalize +Domain[ROOT_All] Info > Deaccess DbDomain READ [ROOT_All] +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +ChronoStatSvc.f... INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" +CORAL/Services/ConnectionService Info Deleting the ConnectionPool diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref new file mode 100644 index 0000000000000000000000000000000000000000..fd1c6f485f64d22f8b417ea8583361d4ba818fd1 --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref @@ -0,0 +1,195 @@ +Fri Apr 7 03:44:23 CEST 2017 +Preloading tcmalloc_minimal.so +Py:Athena INFO including file "AthenaCommon/Preparation.py" +Py:Athena INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/4765e91ead] -- built on [2017-04-07T0230] +Py:Athena INFO including file "AthenaCommon/Bootstrap.py" +Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" +Py:Athena INFO executing ROOT6Setup +[?1034hPy:Athena INFO configuring AthenaHive with [1] concurrent threads +Py:Athena INFO including file "AthenaCommon/Execution.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks2MT_jo.py" +Py:Athena INFO including file "DataModelRunTests/xAODTestSymlinks2_jo.py" +Py:ConfigurableDb INFO Read module info for 5290 configurables from 30 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +Py:Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +MessageSvc INFO Activating in a separate thread +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus042.cern.ch on Fri Apr 7 03:44:44 2017 +==================================================================================================================================== +ApplicationMgr INFO Successfully loaded modules : AthenaServices +ApplicationMgr INFO Application Manager Configured successfully +ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 +AthDictLoaderSvc INFO in initialize... +AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 9237 CLIDRegistry entries for module ALL +ChronoStatSvc INFO Number of skipped events for MemStat-1 +CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1) +CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) +AthenaHiveEventLoopMgr INFO Initializing AthenaHiveEventLoopMgr - package version AthenaServices-00-00-00 +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +AthenaPoolCnvSvc INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00 +PoolSvc INFO Initializing PoolSvc - package version PoolSvc-00-00-00 +PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok] +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://aiatlas036.cern.ch:8000/atlr)(serverurl=http://aiatlas034.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier01.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier05.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca20.cern.ch:3128)(proxyurl=http://ca17.cern.ch:3128)(proxyurl=http://atlast0fsquid.cern.ch:3128)(proxyurl=http://atlassquid1.cern.ch:3128)(proxyurl=http://atlassquid2.cern.ch:3128)(proxyurl=http://atlassquid4.cern.ch:3128) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-05T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host lxplus042.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm +PoolSvc INFO Setting up APR FileCatalog and Streams +PoolSvc INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +PoolSvc INFO Re-initializing PoolSvc +EventSelector INFO reinitialization... +EventSelector INFO EventSelection with query +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +Domain[ROOT_All] Info -> Access DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +Domain[ROOT_All] Info xaoddata.root +RootDatabase.open Info xaoddata.root File version:60802 +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +PoolSvc INFO Failed to find container MetaDataHdrDataHeader to get Token. +EventPersistencySvc INFO Added successfully Conversion service:AthenaPoolCnvSvc +EventSelector INFO Initializing EventSelector - package version EventSelectorAthenaPool-00-00-00 +EventSelector INFO reinitialization... +EventSelector INFO EventSelection with query +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +AthenaPoolAddressProviderSvc INFO Initializing AthenaPoolAddressProviderSvc - package version EventSelectorAthenaPool-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 1425 CLIDRegistry entries for module ALL +SGInputLoader INFO Will preload the following DataObjects: +ThreadPoolSvc INFO no thread init tools attached +ForwardSchedulerSvc INFO Activating scheduler in a separate thread +ForwardSchedulerSvc INFO Waiting for ForwardSchedulerSvc to activate +ForwardSchedulerSvc INFO Start checking the actionsQueue +ForwardSchedulerSvc WARNING Property MaxEventsInFlight was set. This works but it's deprecated. Please migrate your code options files. +ForwardSchedulerSvc INFO Found 6 algorithms +ForwardSchedulerSvc INFO outputs: + +ForwardSchedulerSvc INFO Data Dependencies for Algorithms: + BeginIncFiringAlg + none + IncidentProcAlg1 + none + SGInputLoader + none + xAODTestReadSymlink + o INPUT ('SG::AuxElement','cinfo') + EndIncFiringAlg + none + IncidentProcAlg2 + none +ForwardSchedulerSvc INFO Will attribute the following unmet INPUT dependencies to "SGInputLoader/SGInputLoader" Algorithm + o ('SG::AuxElement','cinfo') required by Algorithm: + * xAODTestReadSymlink +ForwardSchedulerSvc INFO Concurrency level information: +ForwardSchedulerSvc INFO o Number of events in flight: 'MaxEventsInFlight':1 +ForwardSchedulerSvc INFO o Number of algorithms in flight: 'MaxAlgosInFlight':1 +ForwardSchedulerSvc INFO o TBB thread pool size: 'ThreadPoolSize':1 +HistogramPersistencySvc WARNING Histograms saving not required. +AthenaHiveEventLoopMgr INFO Setup EventSelector service EventSelector +ApplicationMgr INFO Application Manager Initialized successfully +xaoddata.root Info Database being retired... +Domain[ROOT_All] Info -> Deaccess DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +RootCollection Info Opening Collection File xaoddata.root in mode: READ +RootCollection Info File xaoddata.root opened +DbSession Info Open DbSession +Domain[ROOT_All] Info > Access DbDomain READ [ROOT_All] +Domain[ROOT_All] Info -> Access DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +Domain[ROOT_All] Info xaoddata.root +RootDatabase.open Info xaoddata.root File version:60802 +ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root" +ImplicitCollection Info and a name "POOLContainer(DataHeader)" +ApplicationMgr INFO Application Manager Started successfully +AthenaHiveEventLoopMgr INFO Starting loop on events +PoolSvc INFO Failed to find container MetaDataHdrDataHeader to get Token. +AthenaPoolConverter INFO massageEventInfo: unable to get OverrideRunNumberFromInput property from EventSelector +AthenaHiveEventLoopMgr INFO ===>>> start of run 0 <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #0, run #0 on slot 0, 0 events processed so far <<<=== +ClassIDSvc 0 0 INFO getRegistryEntries: read 11 CLIDRegistry entries for module ALL +xAODTestReadSymlink 0 0 INFO C (as AuxElement): 1000 +ClassIDSvc 0 0 INFO getRegistryEntries: read 48 CLIDRegistry entries for module ALL +AthenaHiveEventLoopMgr INFO ===>>> done processing event #0, run #0 on slot 0, 1 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #1, run #0 on slot 0, 1 events processed so far <<<=== +xAODTestReadSymlink 1 0 INFO C (as AuxElement): 2000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #1, run #0 on slot 0, 2 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #2, run #0 on slot 0, 2 events processed so far <<<=== +xAODTestReadSymlink 2 0 INFO C (as AuxElement): 3000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #2, run #0 on slot 0, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #3, run #0 on slot 0, 3 events processed so far <<<=== +xAODTestReadSymlink 3 0 INFO C (as AuxElement): 4000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #3, run #0 on slot 0, 4 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #4, run #0 on slot 0, 4 events processed so far <<<=== +xAODTestReadSymlink 4 0 INFO C (as AuxElement): 5000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #4, run #0 on slot 0, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #5, run #0 on slot 0, 5 events processed so far <<<=== +xAODTestReadSymlink 5 0 INFO C (as AuxElement): 6000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #5, run #0 on slot 0, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #6, run #0 on slot 0, 6 events processed so far <<<=== +xAODTestReadSymlink 6 0 INFO C (as AuxElement): 7000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #6, run #0 on slot 0, 7 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #7, run #0 on slot 0, 7 events processed so far <<<=== +xAODTestReadSymlink 7 0 INFO C (as AuxElement): 8000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #7, run #0 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #8, run #0 on slot 0, 8 events processed so far <<<=== +xAODTestReadSymlink 8 0 INFO C (as AuxElement): 9000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #8, run #0 on slot 0, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #9, run #0 on slot 0, 9 events processed so far <<<=== +xAODTestReadSymlink 9 0 INFO C (as AuxElement): 10000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #9, run #0 on slot 0, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #10, run #0 on slot 0, 10 events processed so far <<<=== +xAODTestReadSymlink 10 0 INFO C (as AuxElement): 11000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #10, run #0 on slot 0, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #11, run #0 on slot 0, 11 events processed so far <<<=== +xAODTestReadSymlink 11 0 INFO C (as AuxElement): 12000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #11, run #0 on slot 0, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #12, run #0 on slot 0, 12 events processed so far <<<=== +xAODTestReadSymlink 12 0 INFO C (as AuxElement): 13000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #12, run #0 on slot 0, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #13, run #0 on slot 0, 13 events processed so far <<<=== +xAODTestReadSymlink 13 0 INFO C (as AuxElement): 14000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #13, run #0 on slot 0, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #14, run #0 on slot 0, 14 events processed so far <<<=== +xAODTestReadSymlink 14 0 INFO C (as AuxElement): 15000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #14, run #0 on slot 0, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #15, run #0 on slot 0, 15 events processed so far <<<=== +xAODTestReadSymlink 15 0 INFO C (as AuxElement): 16000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #15, run #0 on slot 0, 16 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #16, run #0 on slot 0, 16 events processed so far <<<=== +xAODTestReadSymlink 16 0 INFO C (as AuxElement): 17000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #16, run #0 on slot 0, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #17, run #0 on slot 0, 17 events processed so far <<<=== +xAODTestReadSymlink 17 0 INFO C (as AuxElement): 18000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #17, run #0 on slot 0, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #18, run #0 on slot 0, 18 events processed so far <<<=== +xAODTestReadSymlink 18 0 INFO C (as AuxElement): 19000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #18, run #0 on slot 0, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ===>>> start processing event #19, run #0 on slot 0, 19 events processed so far <<<=== +xAODTestReadSymlink 19 0 INFO C (as AuxElement): 20000 +AthenaHiveEventLoopMgr INFO ===>>> done processing event #19, run #0 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr INFO ---> Loop Finished (seconds): 0.533476 +xaoddata.root Info Database being retired... +Domain[ROOT_All] Info -> Deaccess DbDatabase READ [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25 +ApplicationMgr INFO Application Manager Stopped successfully +IncidentProcAlg1 INFO Finalize +SGInputLoader INFO Finalizing SGInputLoader... +IncidentProcAlg2 INFO Finalize +ForwardSchedulerSvc INFO Joining Scheduler thread +ForwardSchedulerSvc 19 0 INFO Terminating thread-pool resources +TimelineSvc INFO Outputting timeline with 120 entries to file 'TimelineFile':timeline.csv +EventDataSvc INFO Finalizing EventDataSvc - package version StoreGate-00-00-00 +Domain[ROOT_All] Info > Deaccess DbDomain READ [ROOT_All] +AthDictLoaderSvc INFO in finalize... +ToolSvc INFO Removing all tools created by ToolSvc +ChronoStatSvc.finalize() INFO Service finalized successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +Py:Athena INFO leaving with code 0: "successful run" +CORAL/Services/ConnectionService Info Deleting the ConnectionPool diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT_jo.py new file mode 100644 index 0000000000000000000000000000000000000000..556b3860ea096473323b5d9d6b305f6846c1b73c --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT_jo.py @@ -0,0 +1,10 @@ +# +# $Id$ +# +# File: DataModelRunTests/share/xAODTestSymlinks2MT_jo.py +# Author: snyder@bnl.gov +# Date: Apr 2017 +# Purpose: Test syminks and hive. +# + +include ('DataModelRunTests/xAODTestSymlinks2_jo.py') diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2_jo.py new file mode 100644 index 0000000000000000000000000000000000000000..c87673b7f52e18393eacf447351c96bd8d36e658 --- /dev/null +++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2_jo.py @@ -0,0 +1,80 @@ +# +# $Id$ +# +# File: DataModelRunTests/share/xAODTestSymlinks2_jo.py +# Author: snyder@bnl.gov +# Date: Apr 2017 +# Purpose: Test syminks and hive. +# + +## basic job configuration (for generator) +import AthenaCommon.AtlasUnixStandardJob + +## get a handle to the default top-level algorithm sequence +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + +## get a handle to the ServiceManager +from AthenaCommon.AppMgr import ServiceMgr as svcMgr + +## get a handle to the ApplicationManager +from AthenaCommon.AppMgr import theApp + +#-------------------------------------------------------------- +# Load POOL support +#-------------------------------------------------------------- +import AthenaPoolCnvSvc.ReadAthenaPool + + +#-------------------------------------------------------------- +# Define input +#-------------------------------------------------------------- +svcMgr.EventSelector.InputCollections = [ "xaoddata.root" ] + + +#-------------------------------------------------------------- +# Event related parameters +#-------------------------------------------------------------- +theApp.EvtMax = 20 + + +#-------------------------------------------------------------- +# Set up the algorithm. +#-------------------------------------------------------------- + +from AthenaCommon.ConcurrencyFlags import jobproperties as jp +nThreads = jp.ConcurrencyFlags.NumThreads() +if nThreads >= 1: + svcMgr.ForwardSchedulerSvc.CheckDependencies = True + svcMgr.ForwardSchedulerSvc.DataLoaderAlg = 'SGInputLoader' + + from SGComps.SGCompsConf import SGInputLoader + topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False ) + + +from DataModelTestDataCommon.DataModelTestDataCommonConf import \ + DMTest__xAODTestReadSymlink +topSequence += DMTest__xAODTestReadSymlink ("xAODTestReadSymlink", Key='cinfo') + + +# Note: can't autoload these. +import ROOT +import cppyy +cppyy.loadDictionary("libDataModelTestDataCommonDict") +cppyy.loadDictionary("libDataModelTestDataReadDict") +ROOT.DMTest.B +ROOT.DMTest.setConverterLibrary ('libDataModelTestDataReadCnvPoolCnv.so') + + +#-------------------------------------------------------------- +# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) +#-------------------------------------------------------------- +svcMgr.MessageSvc.OutputLevel = 3 +svcMgr.MessageSvc.debugLimit = 100000 +svcMgr.ClassIDSvc.OutputLevel = 3 + +# No stats printout +ChronoStatSvc = Service( "ChronoStatSvc" ) +ChronoStatSvc.ChronoPrintOutTable = FALSE +ChronoStatSvc.PrintUserTime = FALSE +ChronoStatSvc.StatPrintOutTable = FALSE diff --git a/Control/DataModelTest/DataModelRunTests/test/post.sh b/Control/DataModelTest/DataModelRunTests/test/post.sh index 8a2a07bb29d1a134619703e15505808f6dc3a3f7..b6c9c397f884c11be5edf3a77ca81bfc77e2c498 100755 --- a/Control/DataModelTest/DataModelRunTests/test/post.sh +++ b/Control/DataModelTest/DataModelRunTests/test/post.sh @@ -186,6 +186,10 @@ PP="$PP"'|has different type than the branch' # Gaudi changes PP="$PP"'|INFO massageEventInfo:' +PP="$PP"'|Loop Finished' + +# Hive ordering. +PP="$PP"'|Terminating thread-pool resources' diff --git a/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt index da584aacb5a5ccd6aedd05ab7d2ff98234aefee6..1f65b503480dde4d7adf0812703cfc10d6a5fd80 100644 --- a/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt +++ b/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt @@ -15,24 +15,31 @@ atlas_depends_on_subdirs( PUBLIC GaudiKernel PRIVATE Control/AthLinks + Control/StoreGate + Control/AthenaBaseComps Trigger/TrigDataAccess/TrigSerializeCnvSvc ) # External dependencies: find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) # Component(s) in the package: -atlas_add_library( DataModelTestDataCommon +atlas_add_library( DataModelTestDataCommonLib src/*.cxx PUBLIC_HEADERS DataModelTestDataCommon PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES AthContainers SGTools xAODCore xAODTrigger GaudiKernel - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthLinks ) + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthLinks StoreGateLib AthenaBaseComps ) + +atlas_add_component( DataModelTestDataCommon + src/components/*.cxx + INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib SGTools xAODCore GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests TrigSteeringEvent DataModelTestDataCommonLib ) atlas_add_dictionary( DataModelTestDataCommonDict DataModelTestDataCommon/DataModelTestDataCommonDict.h DataModelTestDataCommon/selection.xml INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks DataModelTestDataCommon + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks DataModelTestDataCommonLib NO_ROOTMAP_MERGE EXTRA_FILES src/dict/*.cxx ELEMENT_LINKS DMTest::BAuxVec DMTest::CVec_v1 ) @@ -42,4 +49,4 @@ atlas_add_sercnv_library ( DataModelTestDataCommonSerCnv FILES DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CAuxContainer.h TYPES_WITH_NAMESPACE DMTest::CVec DMTest::CView DMTest::CAuxContainer INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommon ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommonLib ) diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx new file mode 100644 index 0000000000000000000000000000000000000000..aa3c7ed559fb0532de2b3c4663f3feb9df2e252c --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file DataModeltestDataCommon/src/components/DataModelTestDataCommon_entries.cxx + * @author snyder@bnl.gov + * @date Apr, 2017 + * @brief Gaudi algorithm factory declarations. + */ + +#include "GaudiKernel/DeclareFactoryEntries.h" +#include "../xAODTestReadSymlink.h" + +DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadSymlink) diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_load.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_load.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ae5ccddd06a8e9423b17b9861741ecf32a6ba472 --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_load.cxx @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file/src/components/DataModelTestDataCommon_load.cxx + * @author snyder@bnl.gov + * @date Apr, 2017 + * @brief Gaudi shared lib loading declaration. + */ + +#include "GaudiKernel/LoadFactoryEntries.h" + +LOAD_FACTORY_ENTRIES( DataModelTestDataCommon ) diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..aebed797353b069d9ec58f04de89f5bf1b578776 --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file DataModelTestDataCommon/src/xAODTestReadSymlink.cxx + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Test reading via a symlink. + */ + + +#include "xAODTestReadSymlink.h" +#include "StoreGate/ReadHandle.h" + + +namespace DMTest { + + +xAODTestReadSymlink::xAODTestReadSymlink (const std::string &name, ISvcLocator *pSvcLocator) + : AthReentrantAlgorithm (name, pSvcLocator) +{ + declareProperty ("Key", m_objKey); +} + + +StatusCode xAODTestReadSymlink::initialize() +{ + ATH_CHECK( m_objKey.initialize() ); + return StatusCode::SUCCESS; +} + + +StatusCode xAODTestReadSymlink::execute_r (const EventContext& ctx) const +{ + SG::ReadHandle<SG::AuxElement> c (m_objKey, ctx); + + static const SG::AuxElement::Accessor<int> anInt ("anInt"); + ATH_MSG_INFO( "C (as AuxElement): " << anInt (*c) ); + return StatusCode::SUCCESS; +} + + +} // namespace DMTest diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h new file mode 100644 index 0000000000000000000000000000000000000000..9c793a392959be14c1e585d3eb8f28fa434d0e85 --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h @@ -0,0 +1,60 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration. + */ + +// $Id$ +/** + * @file DataModelTestDataCommon/src/xAODTestReadSymlink.h + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2017 + * @brief Test reading via a symlink. + */ + + +#ifndef DATAMODELTESTDATACOMMON_XAODTESTREADSYMLINK_H +#define DATAMODELTESTDATACOMMON_XAODTESTREADSYMLINK_H + + +#include "AthenaBaseComps/AthReentrantAlgorithm.h" +#include "StoreGate/ReadHandleKey.h" +#include "AthContainers/AuxElement.h" + + +namespace DMTest { + + +class xAODTestReadSymlink + : public AthReentrantAlgorithm +{ +public: + /** + * @brief Constructor. + * @param name The algorithm name. + * @param svc The service locator. + */ + xAODTestReadSymlink (const std::string &name, ISvcLocator *pSvcLocator); + + + /** + * @brief Algorithm initialization; called at the beginning of the job. + */ + virtual StatusCode initialize() override; + + + /** + * @brief Algorithm event processing. + */ + virtual StatusCode execute_r (const EventContext& ctx) const override; + + +private: + SG::ReadHandleKey<SG::AuxElement> m_objKey; +}; + + +} // namespace DMTest + + +#endif // not DATAMODELTESTDATACOMMON_XAODTESTREADSYMLINK_H diff --git a/Control/DataModelTest/DataModelTestDataRead/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataRead/CMakeLists.txt index b962d213858fdcfab7443c7f1872d91a2eb92a4b..761282dd6a16315f3e3f695732ebdcfc72ebc2dd 100644 --- a/Control/DataModelTest/DataModelTestDataRead/CMakeLists.txt +++ b/Control/DataModelTest/DataModelTestDataRead/CMakeLists.txt @@ -32,19 +32,19 @@ atlas_add_library( DataModelTestDataReadLib src/*.cxx PUBLIC_HEADERS DataModelTestDataRead PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES AthContainers AthLinks DataModelTestDataCommon SGTools GaudiKernel DataModelAthenaPoolLib StoreGateLib SGtests TrigSteeringEvent TrigNavigationLib + LINK_LIBRARIES AthContainers AthLinks DataModelTestDataCommonLib SGTools GaudiKernel DataModelAthenaPoolLib StoreGateLib SGtests TrigSteeringEvent TrigNavigationLib PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel CxxUtils xAODCore ) atlas_add_component( DataModelTestDataRead src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommon SGTools GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests xAODCore TrigSteeringEvent DataModelTestDataReadLib ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommonLib SGTools GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests xAODCore TrigSteeringEvent DataModelTestDataReadLib ) atlas_add_dictionary( DataModelTestDataReadDict DataModelTestDataRead/DataModelTestDataReadDict.h DataModelTestDataRead/selection.xml INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommon SGTools GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests xAODCore DataModelTestDataReadLib + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommonLib SGTools GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests xAODCore DataModelTestDataReadLib NO_ROOTMAP_MERGE EXTRA_FILES src/dict/*.cxx ELEMENT_LINKS DataVector<DMTest::B> ) @@ -54,4 +54,4 @@ atlas_add_sercnv_library ( DataModelTestDataReadSerCnv FILES DataModelTestDataRead/HVec.h DataModelTestDataRead/HView.h DataModelTestDataRead/HAuxContainer.h TYPES_WITH_NAMESPACE DMTest::HVec DMTest::HView DMTest::HAuxContainer INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommon DataModelTestDataReadLib ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommonLib DataModelTestDataReadLib ) diff --git a/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt index 8016ca4f8f390d8c46ebc27bb45ad7e63f2674f3..b47fbba44e92fe469715eaa8fd598d21b5c5e258 100644 --- a/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt +++ b/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt @@ -21,5 +21,5 @@ atlas_add_poolcnv_library( DataModelTestDataReadCnvPoolCnv src/*.cxx FILES DataModelTestDataRead/BVec.h DataModelTestDataRead/BDer.h DataModelTestDataRead/DVec.h DataModelTestDataRead/DDer.h DataModelTestDataRead/ELVec.h DataModelTestDataRead/G.h DataModelTestDataRead/GVec.h DataModelTestDataRead/GAuxContainer.h DataModelTestDataRead/H.h DataModelTestDataRead/HVec.h DataModelTestDataRead/HAuxContainer.h DataModelTestDataRead/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView - LINK_LIBRARIES AthenaPoolUtilities AthenaKernel DataModelTestDataCommon DataModelTestDataReadLib AthenaPoolCnvSvcLib ) + LINK_LIBRARIES AthenaPoolUtilities AthenaKernel DataModelTestDataCommonLib DataModelTestDataReadLib AthenaPoolCnvSvcLib ) diff --git a/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.cxx b/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fbcf9df43ee516b401b847c2123597698892e255 --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.cxx @@ -0,0 +1,5 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// Dummy source file so that cmake will know this is a custom converter. diff --git a/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.h b/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.h new file mode 100644 index 0000000000000000000000000000000000000000..8f2b628701dc01ca4546f6bda62d3bc302344378 --- /dev/null +++ b/Control/DataModelTest/DataModelTestDataReadCnv/src/CCnv.h @@ -0,0 +1,27 @@ +// This file's extension implies that it's C, but it's really -*- C++ -*-. + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// $Id$ +/** + * @file DataModelTestDataReadCnv/src/CCnv.h + * @author scott snyder <snyder@bnl.gov> + * @date Apr, 2016 + * @brief POOL coverter for C. + */ + + +#ifndef DATAMODELTESTDATAREADCNV_CCNV_H +#define DATAMODELTESTDATAREADCNV_CCNV_H + + +#include "DataModelTestDataCommon/C.h" +#include "AthenaPoolCnvSvc/T_AthenaPoolxAODCnv.h" + + +typedef T_AthenaPoolxAODCnv<DMTest::C> CCnv; + + +#endif // not DATAMODELTESTDATAREADCNV_CCNV_H diff --git a/Control/DataModelTest/DataModelTestDataWrite/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataWrite/CMakeLists.txt index b43ef7397e45384b64df6f493198a291de8e696f..ecae489ead1c27021e8db4bdb09011b670b03e3e 100644 --- a/Control/DataModelTest/DataModelTestDataWrite/CMakeLists.txt +++ b/Control/DataModelTest/DataModelTestDataWrite/CMakeLists.txt @@ -34,19 +34,19 @@ atlas_add_library( DataModelTestDataWriteLib src/*.cxx PUBLIC_HEADERS DataModelTestDataWrite PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES AthContainers AthLinks DataModelTestDataCommon SGTools xAODCore GaudiKernel DataModelAthenaPoolLib StoreGateLib SGtests TrigNavigationLib EventInfo TrigSteeringEvent + LINK_LIBRARIES AthContainers AthLinks DataModelTestDataCommonLib SGTools xAODCore GaudiKernel DataModelAthenaPoolLib StoreGateLib SGtests TrigNavigationLib EventInfo TrigSteeringEvent PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel CxxUtils ) atlas_add_component( DataModelTestDataWrite src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommon SGTools xAODCore GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests TrigSteeringEvent DataModelTestDataWriteLib ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommonLib SGTools xAODCore GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests TrigSteeringEvent DataModelTestDataWriteLib ) atlas_add_dictionary( DataModelTestDataWriteDict DataModelTestDataWrite/DataModelTestDataWriteDict.h DataModelTestDataWrite/selection.xml INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommon SGTools xAODCore GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests DataModelTestDataWriteLib + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthLinks DataModelAthenaPoolLib DataModelTestDataCommonLib SGTools xAODCore GaudiKernel AthenaBaseComps AthenaKernel CxxUtils StoreGateLib SGtests DataModelTestDataWriteLib NO_ROOTMAP_MERGE EXTRA_FILES src/dict/*.cxx ELEMENT_LINKS DataVector<DMTest::B> ) @@ -57,4 +57,4 @@ atlas_add_sercnv_library ( DataModelTestDataWriteSerCnv FILES DataModelTestDataWrite/HVec.h DataModelTestDataWrite/HView.h DataModelTestDataWrite/HAuxContainer.h TYPES_WITH_NAMESPACE DMTest::HVec DMTest::HView DMTest::HAuxContainer INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommon DataModelTestDataWriteLib ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers SGTools xAODCore xAODTrigger GaudiKernel AthLinks TrigSerializeCnvSvcLib DataModelTestDataCommonLib DataModelTestDataWriteLib ) diff --git a/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt index 786bd960e9a0d2b23c1222f41abea46de1186e46..104f8b02fb7d053d12288690c411eca91e06e2a1 100644 --- a/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt +++ b/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt @@ -20,5 +20,5 @@ atlas_add_poolcnv_library( DataModelTestDataWriteCnvPoolCnv src/*.cxx FILES DataModelTestDataWrite/BVec.h DataModelTestDataWrite/BDer.h DataModelTestDataWrite/DVec.h DataModelTestDataWrite/DDer.h DataModelTestDataWrite/ELVec.h DataModelTestDataWrite/G.h DataModelTestDataWrite/GVec.h DataModelTestDataWrite/GAuxContainer.h DataModelTestDataWrite/H.h DataModelTestDataWrite/HVec.h DataModelTestDataWrite/HAuxContainer.h DataModelTestDataWrite/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView - LINK_LIBRARIES AthenaPoolUtilities DataModelTestDataCommon DataModelTestDataWriteLib AthenaPoolCnvSvcLib ) + LINK_LIBRARIES AthenaPoolUtilities DataModelTestDataCommonLib DataModelTestDataWriteLib AthenaPoolCnvSvcLib ) diff --git a/Control/SGComps/src/SGInputLoader.cxx b/Control/SGComps/src/SGInputLoader.cxx index 0815f2a2f61b0cb4c4e661f197c0b62712e3f224..8a77c39b056dd3a6c879dd07bba169d1858eb5a4 100644 --- a/Control/SGComps/src/SGInputLoader.cxx +++ b/Control/SGComps/src/SGInputLoader.cxx @@ -89,7 +89,20 @@ SGInputLoader::execute() if (dp->transientAddress()->provider() == 0) { ATH_MSG_DEBUG(" obj " << obj << " has no provider, and is only Transient" ); } + + // Tell hive about the object. evtStore()->addedNewTransObject(obj.clid(), obj.key()); + + // Also add all aliases... + for (const std::string& alias : dp->alias()) { + evtStore()->addedNewTransObject(obj.clid(), alias); + } + + // ... and linked classes. + for (CLID clid2 : dp->transientAddress()->transientID()) { + if (clid2 != obj.clid()) + evtStore()->addedNewTransObject(clid2, obj.key()); + } } else { ATH_MSG_ERROR("unable to get proxy for " << obj); } diff --git a/Control/StoreGate/src/SGImplSvc.cxx b/Control/StoreGate/src/SGImplSvc.cxx index b49902703a604241692e07e5f12433860e45e7c7..5603a653d1268a2a2a6a18dcf7d8773a3d1dd540 100644 --- a/Control/StoreGate/src/SGImplSvc.cxx +++ b/Control/StoreGate/src/SGImplSvc.cxx @@ -714,6 +714,8 @@ SGImplSvc::addSymLink(const CLID& linkid, DataProxy* dp) if (baseptr) this->t2pRegister (baseptr, dp).ignore(); } + + addedNewTransObject (linkid, dp->name()); return sc; } @@ -728,6 +730,8 @@ SGImplSvc::addAlias(const std::string& aliasKey, DataProxy* proxy) return StatusCode::FAILURE; } + addedNewTransObject (proxy->clID(), aliasKey); + // add key to proxy and to ProxyStore return m_pStore->addAlias(aliasKey, proxy); } @@ -1642,7 +1646,19 @@ void SGImplSvc::addedNewPersObject(CLID clid, DataProxy* dp) { //if proxy is loading from persistency //add key of object to list of "newly recorded" objects if (0 != dp->transientAddress()->provider()) { + // The object itself. s_newObjs.insert(DataObjID(clid,dp->name())); + + // Aliases. + for (const std::string& alias : dp->alias()) { + s_newObjs.insert(DataObjID(clid,alias)); + } + + // Symlinks. + for (CLID clid2 : dp->transientAddress()->transientID()) { + if (clid2 != clid) + s_newObjs.insert(DataObjID(clid2,dp->name())); + } } } void SGImplSvc::addedNewTransObject(CLID clid, const std::string& key) {