From bab26b36e0c40d6eb2c3372fc4e54d81c00a07b9 Mon Sep 17 00:00:00 2001 From: bvonhall Date: Tue, 28 Apr 2020 13:00:47 +0200 Subject: [PATCH 1/5] Adapt the code to get objects from the CCDB to the new format returned by it --- Framework/src/CcdbDatabase.cxx | 10 +++++++--- Framework/test/testDbFactory.cxx | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Framework/src/CcdbDatabase.cxx b/Framework/src/CcdbDatabase.cxx index 4e6e9b60fd..bb2ee33779 100644 --- a/Framework/src/CcdbDatabase.cxx +++ b/Framework/src/CcdbDatabase.cxx @@ -184,6 +184,9 @@ std::shared_ptr CcdbDatabase::retrieveMO(std::string taskNa map metadata; TObject* obj = retrieveTObject(path, metadata, when, &headers); Version objectVersion(headers["qc_version"]); // retrieve headers to determine the version of the QC framework + ILOG(Debug) << "Version of object is " << objectVersion << ENDM; + ILOG(Debug) << "objectVersion == Version(\"0.0.0\") : " << (objectVersion == Version("0.0.0")) << ENDM; + ILOG(Debug) << "objectVersion < Version(\"0.25\") : " << (objectVersion < Version("0.25")) << ENDM std::shared_ptr mo; if (objectVersion == Version("0.0.0") || objectVersion < Version("0.25")) { @@ -325,9 +328,10 @@ std::vector CcdbDatabase::getPublishedObjectNames(std::string taskN while (std::getline(ss, line, '\n')) { ltrim(line); rtrim(line); - if (line.length() > 0 && line.find("\"path\"") == 0) { - unsigned long objNameStart = 9 + taskNameEscaped.length(); - string path = line.substr(objNameStart, line.length() - 2 /*final 2 char*/ - objNameStart); + if (line.length() > 0 && line.find("{\"path\"") == 0) { + unsigned long objNameStart = 10 + taskNameEscaped.length(); + unsigned long objNameEnd = line.find("\"", objNameStart); + string path = line.substr(objNameStart, objNameEnd-objNameStart);//line.length() - 2 /*final 2 char*/ - objNameStart); result.push_back(path); } } diff --git a/Framework/test/testDbFactory.cxx b/Framework/test/testDbFactory.cxx index 44f96ba3b0..6c1bdc02da 100644 --- a/Framework/test/testDbFactory.cxx +++ b/Framework/test/testDbFactory.cxx @@ -14,12 +14,12 @@ /// #include "QualityControl/DatabaseFactory.h" +#include "QualityControl/QcInfoLogger.h" #ifdef _WITH_MYSQL - #include "QualityControl/MySqlDatabase.h" - #endif + #define BOOST_TEST_MODULE DbFactory test #define BOOST_TEST_MAIN #define BOOST_TEST_DYN_LINK From 2b22dc4ebe13e8dc4bfb0715c1bcf2c9042c36e9 Mon Sep 17 00:00:00 2001 From: bvonhall Date: Tue, 28 Apr 2020 13:01:53 +0200 Subject: [PATCH 2/5] QC-322 remove excessive output --- Framework/src/CcdbDatabase.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Framework/src/CcdbDatabase.cxx b/Framework/src/CcdbDatabase.cxx index bb2ee33779..6b2bd62d7f 100644 --- a/Framework/src/CcdbDatabase.cxx +++ b/Framework/src/CcdbDatabase.cxx @@ -184,9 +184,9 @@ std::shared_ptr CcdbDatabase::retrieveMO(std::string taskNa map metadata; TObject* obj = retrieveTObject(path, metadata, when, &headers); Version objectVersion(headers["qc_version"]); // retrieve headers to determine the version of the QC framework - ILOG(Debug) << "Version of object is " << objectVersion << ENDM; - ILOG(Debug) << "objectVersion == Version(\"0.0.0\") : " << (objectVersion == Version("0.0.0")) << ENDM; - ILOG(Debug) << "objectVersion < Version(\"0.25\") : " << (objectVersion < Version("0.25")) << ENDM +// ILOG(Debug) << "Version of object is " << objectVersion << ENDM; +// ILOG(Debug) << "objectVersion == Version(\"0.0.0\") : " << (objectVersion == Version("0.0.0")) << ENDM; +// ILOG(Debug) << "objectVersion < Version(\"0.25\") : " << (objectVersion < Version("0.25")) << ENDM std::shared_ptr mo; if (objectVersion == Version("0.0.0") || objectVersion < Version("0.25")) { From cb390ae38fc86864d74f41930beafeaeed4b0933 Mon Sep 17 00:00:00 2001 From: Barthelemy Date: Tue, 28 Apr 2020 13:08:27 +0200 Subject: [PATCH 3/5] format --- Framework/src/CcdbDatabase.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Framework/src/CcdbDatabase.cxx b/Framework/src/CcdbDatabase.cxx index 6b2bd62d7f..591456f287 100644 --- a/Framework/src/CcdbDatabase.cxx +++ b/Framework/src/CcdbDatabase.cxx @@ -184,9 +184,9 @@ std::shared_ptr CcdbDatabase::retrieveMO(std::string taskNa map metadata; TObject* obj = retrieveTObject(path, metadata, when, &headers); Version objectVersion(headers["qc_version"]); // retrieve headers to determine the version of the QC framework -// ILOG(Debug) << "Version of object is " << objectVersion << ENDM; -// ILOG(Debug) << "objectVersion == Version(\"0.0.0\") : " << (objectVersion == Version("0.0.0")) << ENDM; -// ILOG(Debug) << "objectVersion < Version(\"0.25\") : " << (objectVersion < Version("0.25")) << ENDM + // ILOG(Debug) << "Version of object is " << objectVersion << ENDM; + // ILOG(Debug) << "objectVersion == Version(\"0.0.0\") : " << (objectVersion == Version("0.0.0")) << ENDM; + // ILOG(Debug) << "objectVersion < Version(\"0.25\") : " << (objectVersion < Version("0.25")) << ENDM std::shared_ptr mo; if (objectVersion == Version("0.0.0") || objectVersion < Version("0.25")) { @@ -331,7 +331,7 @@ std::vector CcdbDatabase::getPublishedObjectNames(std::string taskN if (line.length() > 0 && line.find("{\"path\"") == 0) { unsigned long objNameStart = 10 + taskNameEscaped.length(); unsigned long objNameEnd = line.find("\"", objNameStart); - string path = line.substr(objNameStart, objNameEnd-objNameStart);//line.length() - 2 /*final 2 char*/ - objNameStart); + string path = line.substr(objNameStart, objNameEnd - objNameStart); //line.length() - 2 /*final 2 char*/ - objNameStart); result.push_back(path); } } From 4fbdcb2478cc27c71474b898c8a5bbe6e15582e6 Mon Sep 17 00:00:00 2001 From: bvonhall Date: Tue, 28 Apr 2020 13:53:19 +0200 Subject: [PATCH 4/5] QC-323 --- Framework/src/CcdbDatabase.cxx | 28 ++++++++++++++-------------- Framework/test/testDbFactory.cxx | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Framework/src/CcdbDatabase.cxx b/Framework/src/CcdbDatabase.cxx index 591456f287..af5657171b 100644 --- a/Framework/src/CcdbDatabase.cxx +++ b/Framework/src/CcdbDatabase.cxx @@ -33,6 +33,9 @@ #include #include +#include +#include +#include using namespace std::chrono; using namespace AliceO2::Common; @@ -318,22 +321,19 @@ std::vector CcdbDatabase::getListing(std::string subpath) std::vector CcdbDatabase::getPublishedObjectNames(std::string taskName) { std::vector result; - string listing = ccdbApi.list(taskName + "/.*", true, "Application/JSON"); - // Split the string we received, by line. Also trim it and remove empty lines. Select the lines starting with "path". - std::stringstream ss(listing); - std::string line; - std::string taskNameEscaped = boost::replace_all_copy(taskName, "/", "\\/"); - while (std::getline(ss, line, '\n')) { - ltrim(line); - rtrim(line); - if (line.length() > 0 && line.find("{\"path\"") == 0) { - unsigned long objNameStart = 10 + taskNameEscaped.length(); - unsigned long objNameEnd = line.find("\"", objNameStart); - string path = line.substr(objNameStart, objNameEnd - objNameStart); //line.length() - 2 /*final 2 char*/ - objNameStart); - result.push_back(path); - } + boost::property_tree::ptree pt; + stringstream ss; + ss << listing; + boost::property_tree::read_json(ss, pt); + + BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("objects")) + { + assert(v.first.empty()); // array elements have no names + string data = v.second.get_child("path").data(); + string path = data.substr(taskName.size()); + result.push_back(path); } return result; diff --git a/Framework/test/testDbFactory.cxx b/Framework/test/testDbFactory.cxx index 6c1bdc02da..9de8a2e9cd 100644 --- a/Framework/test/testDbFactory.cxx +++ b/Framework/test/testDbFactory.cxx @@ -99,7 +99,7 @@ BOOST_AUTO_TEST_CASE(db_ccdb_listing) // } BOOST_CHECK(std::find(objectNames.begin(), objectNames.end(), "/object1") != objectNames.end()); BOOST_CHECK(std::find(objectNames.begin(), objectNames.end(), "/object2") != objectNames.end()); - BOOST_CHECK(std::find(objectNames.begin(), objectNames.end(), "/path\\/to\\/object3") != objectNames.end()); + BOOST_CHECK(std::find(objectNames.begin(), objectNames.end(), "/path/to/object3") != objectNames.end()); // store list of streamer infos // ccdb->storeStreamerInfosToFile("streamerinfos.root"); From 2404bd5ef65d5fa2a0e969ef083b527b08d302d8 Mon Sep 17 00:00:00 2001 From: Barthelemy Date: Tue, 28 Apr 2020 13:56:03 +0200 Subject: [PATCH 5/5] format --- Framework/src/CcdbDatabase.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Framework/src/CcdbDatabase.cxx b/Framework/src/CcdbDatabase.cxx index af5657171b..993f380f4a 100644 --- a/Framework/src/CcdbDatabase.cxx +++ b/Framework/src/CcdbDatabase.cxx @@ -328,8 +328,7 @@ std::vector CcdbDatabase::getPublishedObjectNames(std::string taskN ss << listing; boost::property_tree::read_json(ss, pt); - BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("objects")) - { + BOOST_FOREACH (boost::property_tree::ptree::value_type& v, pt.get_child("objects")) { assert(v.first.empty()); // array elements have no names string data = v.second.get_child("path").data(); string path = data.substr(taskName.size());