diff --git a/Database/IOVDbSvc/CMakeLists.txt b/Database/IOVDbSvc/CMakeLists.txt index 03cb4ce438e28b52c2a0c2e456f10d6d40d1ba65..d82a9365547c00c65748462fbd3e9db6d5bf5139 100644 --- a/Database/IOVDbSvc/CMakeLists.txt +++ b/Database/IOVDbSvc/CMakeLists.txt @@ -48,7 +48,14 @@ atlas_add_test( IOVDbSvc_Boost_test INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${Boost_LIBRARIES} ${COOL_LIBRARIES} ${ROOT_LIBRARIES} GaudiKernel AthenaKernel CxxUtils TestTools StoreGateLib EventInfoMgtLib - LOG_IGNORE_PATTERN "^HistogramPersis.* INFO|^IOVSvc +DEBUG|^IOVSvcTool +DEBUG" ) + POST_EXEC_SCRIPT "nopost.sh" ) + +atlas_add_test( IOVDbSvc_InvalidMarkup_test + SOURCES test/IOVDbSvc_InvalidMarkup_test.cxx + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} ${COOL_LIBRARIES} ${ROOT_LIBRARIES} + GaudiKernel AthenaKernel CxxUtils TestTools StoreGateLib EventInfoMgtLib + POST_EXEC_SCRIPT "nopost.sh" ) atlas_add_test( IOVDbConn_test SOURCES test/IOVDbConn_test.cxx src/IOVDbConn.cxx @@ -113,7 +120,6 @@ atlas_add_test( IOVDbFolder_test GaudiKernel AthenaKernel AthenaBaseComps StoreGateLib SGTools CxxUtils TestTools CoraCool AthenaPoolUtilities GeoModelInterfaces IOVDbMetaDataToolsLib IOVDbDataModel EventInfoMgtLib - LOG_IGNORE_PATTERN "^HistogramPersis.* INFO|^IOVSvc +DEBUG|^IOVSvcTool +DEBUG" POST_EXEC_SCRIPT "nopost.sh" ) atlas_add_test( IovStore_test @@ -160,7 +166,6 @@ atlas_add_test( Cool2Json_test LINK_LIBRARIES ${Boost_LIBRARIES} ${COOL_LIBRARIES} ${CORAL_LIBRARIES} ${ROOT_LIBRARIES} GaudiKernel AthenaKernel StoreGateLib CoraCool AthenaPoolUtilities CxxUtils TestTools - LOG_IGNORE_PATTERN "^HistogramPersis.* INFO|^IOVSvc +DEBUG|^IOVSvcTool +DEBUG" POST_EXEC_SCRIPT "nopost.sh" ) atlas_add_test( CrestFunctions_test diff --git a/Database/IOVDbSvc/share/BasicFolder_test.ref b/Database/IOVDbSvc/share/BasicFolder_test.ref deleted file mode 100644 index 215d0ce5f72d26710e732be68d62226ca9e7d4cb..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/BasicFolder_test.ref +++ /dev/null @@ -1,4 +0,0 @@ -Running 9 test cases... - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/Cool2Json_test.ref b/Database/IOVDbSvc/share/Cool2Json_test.ref deleted file mode 100644 index ab847a0e336cbf6658198441e041de1d359d38a6..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/Cool2Json_test.ref +++ /dev/null @@ -1,20 +0,0 @@ -Running 3 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Sun Jun 30 21:12:54 2019 -==================================================================================================================================== -ApplicationMgr Ready - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/FolderTypes_test.ref b/Database/IOVDbSvc/share/FolderTypes_test.ref deleted file mode 100644 index 0bb37e5e4fb6274db0ca7a70747fcf29c1fcbf9d..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/FolderTypes_test.ref +++ /dev/null @@ -1,19 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Sun Mar 3 18:21:01 2019 -==================================================================================================================================== -ApplicationMgr Ready - -*** No errors detected diff --git a/Database/IOVDbSvc/share/IOVDbConn_test.ref b/Database/IOVDbSvc/share/IOVDbConn_test.ref deleted file mode 100644 index 28037a0591f47045dcfac63f7383f88b52256677..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbConn_test.ref +++ /dev/null @@ -1,22 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Mon Mar 4 16:55:46 2019 -==================================================================================================================================== -ApplicationMgr Ready -IOVDbConn_Boost... INFO Opening COOL connection for sqlite://;schema=IOVDbConnTest.db;dbname=OFLP200 -IOVDbConn_Boost... INFO *** COOL exception caught: Connection on "sqlite_file:IOVDbConnTest.db" cannot be established ( CORAL : "ConnectionPool::getSessionFromNewConnection" from "CORAL/Services/ConnectionService" ) -IOVDbConn_Boost... INFO Create a new conditions database: sqlite://;schema=IOVDbConnTest.db;dbname=OFLP200 - -*** No errors detected diff --git a/Database/IOVDbSvc/share/IOVDbCoolFunctions_test.ref b/Database/IOVDbSvc/share/IOVDbCoolFunctions_test.ref deleted file mode 100644 index 434668d839bab0aaa28cc2d087f31a8ced5caa2d..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbCoolFunctions_test.ref +++ /dev/null @@ -1,3 +0,0 @@ -Running 7 test cases... - -*** No errors detected diff --git a/Database/IOVDbSvc/share/IOVDbFolder_test.ref b/Database/IOVDbSvc/share/IOVDbFolder_test.ref deleted file mode 100644 index 28c69fff4086047c9683444ebbdadab511ee05c0..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbFolder_test.ref +++ /dev/null @@ -1,21 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v31r0) - running on lxplus089.cern.ch on Thu Mar 14 17:14:44 2019 -==================================================================================================================================== -ApplicationMgr Ready -IOVDbFolder_test INFO Opening COOL connection for sqlite://;schema=IOVDbFolderTest.db;dbname=OFLP200 - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/IOVDbParser_test.ref b/Database/IOVDbSvc/share/IOVDbParser_test.ref deleted file mode 100644 index 2ea4fc62a968a2a1a70beb5e8ad7fbe3eb4cc468..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbParser_test.ref +++ /dev/null @@ -1,23 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Sun Mar 3 18:21:30 2019 -==================================================================================================================================== -ApplicationMgr Ready -IOVDbParser_test INFO Folder extraText, Key: addrHeaderOverriding existing value <address_header service_type="71" clid="40774348" /> to new value <address_header service_type="71" clid="40774348" /> -IOVDbParser_test INFO Folder extraText, Key: keyOverriding existing value /PIXEL/CablingMap to new value /PIXEL/CablingMap -IOVDbParser_test INFO Folder extraText, Key: timeStampOverriding existing value run-lumi to new value time -IOVDbParser_test INFO Folder extraText, Key: typeNameOverriding existing value AthenaAttributeList to new value AthenaAttributeList - -*** No errors detected diff --git a/Database/IOVDbSvc/share/IOVDbStringFunctions_test.ref b/Database/IOVDbSvc/share/IOVDbStringFunctions_test.ref deleted file mode 100644 index 75cf5b17af8be2868212eca91f8ca2caf0fadfbd..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbStringFunctions_test.ref +++ /dev/null @@ -1,3 +0,0 @@ -Running 15 test cases... - -*** No errors detected diff --git a/Database/IOVDbSvc/share/IOVDbSvcCurl_test.ref b/Database/IOVDbSvc/share/IOVDbSvcCurl_test.ref deleted file mode 100644 index efa592469cb1ceb269bee161536956ef5970cb82..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbSvcCurl_test.ref +++ /dev/null @@ -1,4 +0,0 @@ -Running 4 test cases... - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/IOVDbSvc_BoostTest.ref b/Database/IOVDbSvc/share/IOVDbSvc_BoostTest.ref deleted file mode 100644 index 3e71bff51e5b9987cbf5009ea834d2b637a32e86..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbSvc_BoostTest.ref +++ /dev/null @@ -1,5 +0,0 @@ -ApplicationMgr.OutputLevel = 5; -ApplicationMgr.CreateSvc += { "StoreGateSvc/DetectorStore" }; -IOVDbSvc.Folders = { "/key1"}; -EventPersistencySvc.CnvServices += { "AthenaPoolCnvSvc" }; -MessageSvc.OutputLevel = 5; \ No newline at end of file diff --git a/Database/IOVDbSvc/share/IOVDbSvc_Boost_test.ref b/Database/IOVDbSvc/share/IOVDbSvc_Boost_test.ref deleted file mode 100644 index 7b911368c8834625f45a9177d8794a72a82a39bd..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IOVDbSvc_Boost_test.ref +++ /dev/null @@ -1,20 +0,0 @@ - - -Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v31r0) - running on lxplus089.cern.ch on Thu Mar 14 17:14:43 2019 -==================================================================================================================================== -ApplicationMgr Ready -Running 10 test cases... - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/IOVDbSvc_InvalidMarkup.txt b/Database/IOVDbSvc/share/IOVDbSvc_InvalidMarkup.txt new file mode 100644 index 0000000000000000000000000000000000000000..53b5278651e3359dc08df76c47edca1a9ce32d11 --- /dev/null +++ b/Database/IOVDbSvc/share/IOVDbSvc_InvalidMarkup.txt @@ -0,0 +1,5 @@ +ApplicationMgr.OutputLevel = 5; +ApplicationMgr.CreateSvc += { "StoreGateSvc/DetectorStore" }; +IOVDbSvc.Folders = { "<db>COOLONL_INDET/CONDBR2</db> /Indet/Onl/Beampos <key>/Indet/Beampos</key><forceTimestamp>1536151928</forceTimestamp"}; +EventPersistencySvc.CnvServices += { "AthenaPoolCnvSvc" }; +MessageSvc.OutputLevel = 5; diff --git a/Database/IOVDbSvc/share/IovStore_test.ref b/Database/IOVDbSvc/share/IovStore_test.ref deleted file mode 100644 index d280a371d774a6864b15c57ebc93fea6f1b8a8bf..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/IovStore_test.ref +++ /dev/null @@ -1,4 +0,0 @@ -Running 2 test cases... - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/Json2Cool_test.ref b/Database/IOVDbSvc/share/Json2Cool_test.ref deleted file mode 100644 index efa592469cb1ceb269bee161536956ef5970cb82..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/Json2Cool_test.ref +++ /dev/null @@ -1,4 +0,0 @@ -Running 4 test cases... - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/share/ReadFromFileMetaData_test.ref b/Database/IOVDbSvc/share/ReadFromFileMetaData_test.ref deleted file mode 100644 index e263596bf8f220c971e23d5adbcb9220cc6fae4c..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/ReadFromFileMetaData_test.ref +++ /dev/null @@ -1,19 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Sun Mar 3 18:19:37 2019 -==================================================================================================================================== -ApplicationMgr Ready - -*** No errors detected diff --git a/Database/IOVDbSvc/share/TagFunctions_test.ref b/Database/IOVDbSvc/share/TagFunctions_test.ref deleted file mode 100644 index 6b806a793e16d4da78437f13c0c532505831cbd2..0000000000000000000000000000000000000000 --- a/Database/IOVDbSvc/share/TagFunctions_test.ref +++ /dev/null @@ -1,20 +0,0 @@ -Running 2 test cases... - - -Initializing Gaudi ApplicationMgr using job opts /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # =======> /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -JobOptionsSvc INFO # (1,1): ApplicationMgr.OutputLevel = 5 -JobOptionsSvc INFO # (2,1): ApplicationMgr.CreateSvc += ["StoreGateSvc/DetectorStore"] -JobOptionsSvc INFO # (3,1): IOVDbSvc.Folders = ["/key1"] -JobOptionsSvc INFO # (4,1): EventPersistencySvc.CnvServices += ["AthenaPoolCnvSvc"] -JobOptionsSvc INFO # (5,1): MessageSvc.OutputLevel = 5 -JobOptionsSvc INFO Job options successfully read in from /home/sss/atlas/dvtest/build/joboptions/IOVDbSvc/IOVDbSvc_BoostTest.txt -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Tue Apr 30 15:37:32 2019 -==================================================================================================================================== -ApplicationMgr Ready - -[1;32;49m*** No errors detected -[0;39;49m \ No newline at end of file diff --git a/Database/IOVDbSvc/src/IOVDbParser.cxx b/Database/IOVDbSvc/src/IOVDbParser.cxx index 6d30f23e561d7f588872b35ca57dddd6e40858ee..745abd8bfa95651f8f234539264efdc559697120 100644 --- a/Database/IOVDbSvc/src/IOVDbParser.cxx +++ b/Database/IOVDbSvc/src/IOVDbParser.cxx @@ -32,6 +32,14 @@ IOVDbParser::IOVDbParser(const std::string& input, MsgStream& log) : // first find the end of the tag, either '>' or ' ', whichever first std::string::size_type iofs2=input.find(">",iofs1); std::string::size_type iofs3=input.find("/>",iofs1); + bool noClosingTag = (iofs2 == std::string::npos); + if (noClosingTag){ + m_msg << MSG::FATAL << + "Badly formed XML string, no closing tag in " << input << endmsg; + m_valid=false; + iofs=std::string::npos; + return; + } if (iofs2!=std::string::npos && iofs2<iofs3) { // found a closing >, so tag is standard <tag>value</tag> form std::string tag=IOVDbNamespace::spaceStrip(input.substr(iofs1+1,iofs2-iofs1-1)); @@ -41,13 +49,22 @@ IOVDbParser::IOVDbParser(const std::string& input, MsgStream& log) : // found closing tag, store tag and text m_keys[tag]=IOVDbNamespace::spaceStrip(input.substr(iofs2+1,iofs4-iofs2-1)); // advance to the next part of the string, after '>' on closing tag - iofs=input.find(">",iofs4)+1; + iofs=input.find(">",iofs4); + if (iofs == std::string::npos) { + m_msg << MSG::FATAL << + "Badly formed XML string, no closing tag in " << input << endmsg; + m_valid=false; + iofs=std::string::npos; + return; + } else { + iofs+=1; + } } else { - m_msg << MSG::ERROR << - "Badly formed XML string, no closing tag for " << tag << - " in " << input << endmsg; + m_msg << MSG::FATAL << + "Badly formed XML string, no closing tag in " << input << endmsg; m_valid=false; iofs=std::string::npos; + return; } } else if (iofs3!=std::string::npos) { // found a />, so tag is of form <tag values info/> @@ -66,10 +83,11 @@ IOVDbParser::IOVDbParser(const std::string& input, MsgStream& log) : iofs=iofs3+2; } else { // found a < but no closing > - m_msg << MSG::ERROR << "Badly formed XML string, no closing < in input " << + m_msg << MSG::FATAL << "Badly formed XML string, no closing > in input " << input << endmsg; iofs=std::string::npos; m_valid=false; + return; } } else { // no more < in input, take the rest into 'outside' data slot diff --git a/Database/IOVDbSvc/src/IOVDbSvc.cxx b/Database/IOVDbSvc/src/IOVDbSvc.cxx index d02da4aa67e4de4bb8f811bd9130897122f37934..490f5f337797d81228c91f28cb04da4a40c69090 100644 --- a/Database/IOVDbSvc/src/IOVDbSvc.cxx +++ b/Database/IOVDbSvc/src/IOVDbSvc.cxx @@ -855,7 +855,11 @@ StatusCode IOVDbSvc::setupFolders() { for (const auto & thisFolder : m_par_folders.value()) { ATH_MSG_DEBUG( "Setup folder " << thisFolder ); IOVDbParser folderdata(thisFolder,msg()); - if (!folderdata.isValid()) return StatusCode::FAILURE; + if (!folderdata.isValid()) { + ATH_MSG_FATAL("setupFolders: Folder setup string is invalid: " <<thisFolder); + return StatusCode::FAILURE; + } + allFolderdata.push_back(folderdata); } @@ -867,6 +871,10 @@ StatusCode IOVDbSvc::setupFolders() { for (const auto & thisOverrideTag : m_par_overrideTags) { IOVDbParser keys(thisOverrideTag,msg()); + if (not keys.isValid()){ + ATH_MSG_ERROR("An override tag was invalid: " << thisOverrideTag); + return StatusCode::FAILURE; + } std::string prefix; if (!keys.getKey("prefix","",prefix)) { // || !keys.getKey("tag","",tag)) { ATH_MSG_ERROR( "Problem in overrideTag specification " <<thisOverrideTag ); diff --git a/Database/IOVDbSvc/test/IOVDbParser_test.cxx b/Database/IOVDbSvc/test/IOVDbParser_test.cxx index 174fe6041fbefd7cbc8257a712b363f44bdd0ff6..458e2c7f0112be3e9b5332931cdcdd492e323a61 100644 --- a/Database/IOVDbSvc/test/IOVDbParser_test.cxx +++ b/Database/IOVDbSvc/test/IOVDbParser_test.cxx @@ -83,6 +83,7 @@ BOOST_FIXTURE_TEST_SUITE(IOVDbParserTest , GaudiKernelFixture) } bool testEqualityOperator = (parser3 == equivalentParser); bool testEqualityFalse = (parser1 == parser3); + BOOST_TEST(testEqualityOperator); BOOST_TEST(!testEqualityFalse); BOOST_TEST(parser1.toString() == "Folder:extraText, Attributes: [addrHeader:<address_header service_type=\"71\" clid=\"40774348\" />] [key:/PIXEL/CablingMap] [timeStamp:time] [typeName:AthenaAttributeList] "); @@ -100,6 +101,15 @@ BOOST_FIXTURE_TEST_SUITE(IOVDbParserTest , GaudiKernelFixture) BOOST_TEST(!parser1.extensible()); BOOST_TEST(!parser1.overridesIov()); BOOST_TEST(parser1.iovOverrideValue()==0); + //checks for ATEAM-666 + //the following doesnt close the forceTimestamp element correctly + //std::string invalidString1{"extraText<timeStamp>time</timeStamp><forceTimestamp>123456</forceTimestamp<addrHeader><address_header service_type=\"71\" clid=\"40774348\" /></addrHeader><typeName>AthenaAttributeList</typeName>"}; + std::string invalidString1{"<db>COOLONL_INDET/CONDBR2</db> /Indet/Onl/Beampos <key>/Indet/Beampos</key><forceTimestamp>1536151928</forceTimestamp"}; + IOVDbParser parser4(invalidString1, log); + BOOST_TEST( parser4.isValid() == false); + BOOST_TEST(parser4.getKey("forceTimestamp", "", returnValue) == false); + BOOST_TEST(parser1.iovOverrideValue()==0); + BOOST_TEST(returnValue == ""); } BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file diff --git a/Database/IOVDbSvc/test/IOVDbSvc_InvalidMarkup_test.cxx b/Database/IOVDbSvc/test/IOVDbSvc_InvalidMarkup_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..afcd9641ab5e7b8ef3f1ad6ddeb7c6ed19af0d45 --- /dev/null +++ b/Database/IOVDbSvc/test/IOVDbSvc_InvalidMarkup_test.cxx @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +/* + */ +/** + * @file IOVDbSvc/test/IOVDbSvc_InvalidMarkup_test.cxx + * @author Shaun Roe + * @date Jan, 2019 + * @brief Some tests for IOVDbSvc in the Boost framework; transferred from original work by Scott Snyder + */ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MAIN +#define BOOST_TEST_MODULE TEST_IOVDBSVC + +#include <boost/test/unit_test.hpp> +// +#include "AthenaKernel/IOVTime.h" +#include "AthenaKernel/IOVRange.h" +#include "AthenaKernel/IAddressProvider.h" +#include "AthenaKernel/ExtendedEventContext.h" +#include "GaudiKernel/EventContext.h" +#include "GaudiKernel/IOpaqueAddress.h" +// +#include "GaudiKernelFixtureBase.h" +#include "TestFolderFixture.h" +namespace utf = boost::unit_test; + +struct GaudiKernelFixture:public GaudiKernelFixtureBase{ + GaudiKernelFixture():GaudiKernelFixtureBase("IOVDbSvc_InvalidMarkup.txt"){ + //nop, everything in base. + } +}; + +struct TestFolderFixture:public TestFolderFixtureBase{ + //using IOVDbSvc default connection to sqlite file cooldummy.db + TestFolderFixture():TestFolderFixtureBase("cooldummy.db"){ + //nop, everything in base. + } +}; + +//Basic tests that the service can be retrieved +BOOST_AUTO_TEST_SUITE(IOVDbSvcTest ) + GaudiKernelFixture g; + const auto & svcLoc=g.svcLoc; + ServiceHandle<IIOVDbSvc> iovdbsvc ("IOVDbSvc", "test"); + + BOOST_AUTO_TEST_CASE( SanityCheck ){ + const bool svcLocatorIsNotOk=(svcLoc != nullptr); + BOOST_TEST(svcLocatorIsNotOk); + } + + BOOST_AUTO_TEST_CASE(IOVDbSvcRetrieved){ + BOOST_TEST (iovdbsvc.retrieve().isFailure()); + } + + BOOST_AUTO_TEST_CASE(preloadAddresses){ + IAddressProvider* iovdbsvc_ap = dynamic_cast<IAddressProvider*> (iovdbsvc.get()); + BOOST_TEST( iovdbsvc_ap == nullptr); + } + +BOOST_AUTO_TEST_SUITE_END() +