Skip to content

Commit 73e3c11

Browse files
authored
[QC-423] Make ObjectManager agnostic to the type of task (#493)
1 parent 414425c commit 73e3c11

11 files changed

Lines changed: 35 additions & 25 deletions

File tree

Framework/include/QualityControl/ObjectsManager.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,13 @@ class ObjectsManager
4343
public:
4444
/**
4545
* Constructor
46-
* @param taskConfig The configuration of the task for which we are building this object manager
46+
* @param taskName Task name
47+
* @param detectorName Detector 3-letter code
48+
* @param consulUrl Consul URL, for the service discovery
49+
* @param parallelTaskID ID of a parallel Task, use 0 if there is only one.
4750
* @param noDiscovery If true disables the use of ServiceDiscovery
4851
*/
49-
explicit ObjectsManager(const TaskConfig& taskConfig, bool noDiscovery = false);
52+
ObjectsManager(std::string taskName, std::string detectorName, std::string consulUrl, int parallelTaskID = 0, bool noDiscovery = false);
5053
virtual ~ObjectsManager();
5154

5255
static const std::string gDrawOptionsKey;
@@ -154,7 +157,8 @@ class ObjectsManager
154157

155158
private:
156159
std::unique_ptr<MonitorObjectCollection> mMonitorObjects;
157-
TaskConfig mTaskConfig;
160+
std::string mTaskName;
161+
std::string mDetectorName;
158162
std::unique_ptr<ServiceDiscovery> mServiceDiscovery;
159163
bool mUpdateServiceDiscovery;
160164
};

Framework/include/QualityControl/TaskConfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct TaskConfig {
3333
std::string conditionUrl = "";
3434
std::unordered_map<std::string, std::string> customParameters = {};
3535
std::string detectorName = "MISC"; // intended to be the 3 letters code
36-
int parallelTaskID = 0; // ID to differentiate parallel local Tasks from one another. 0 this is the only one.
36+
int parallelTaskID = 0; // ID to differentiate parallel local Tasks from one another. 0 means this is the only one.
3737
};
3838

3939
} // namespace o2::quality_control::core

Framework/src/ObjectsManager.cxx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ namespace o2::quality_control::core
3131
const std::string ObjectsManager::gDrawOptionsKey = "drawOptions";
3232
const std::string ObjectsManager::gDisplayHintsKey = "displayHints";
3333

34-
ObjectsManager::ObjectsManager(const TaskConfig& taskConfig, bool noDiscovery) : mTaskConfig(taskConfig), mUpdateServiceDiscovery(false)
34+
ObjectsManager::ObjectsManager(std::string taskName, std::string detectorName, std::string consulUrl, int parallelTaskID, bool noDiscovery)
35+
: mTaskName(taskName), mDetectorName(detectorName), mUpdateServiceDiscovery(false)
3536
{
3637
mMonitorObjects = std::make_unique<MonitorObjectCollection>();
3738
mMonitorObjects->SetOwner(true);
3839

3940
// register with the discovery service
4041
if (!noDiscovery) {
41-
std::string uniqueTaskID = taskConfig.taskName + "_" + std::to_string(mTaskConfig.parallelTaskID);
42-
mServiceDiscovery = std::make_unique<ServiceDiscovery>(taskConfig.consulUrl, taskConfig.taskName, uniqueTaskID);
42+
std::string uniqueTaskID = taskName + "_" + std::to_string(parallelTaskID);
43+
mServiceDiscovery = std::make_unique<ServiceDiscovery>(consulUrl, taskName, uniqueTaskID);
4344
} else {
4445
ILOG(Warning, Ops) << "Service Discovery disabled" << ENDM;
4546
mServiceDiscovery = nullptr;
@@ -54,7 +55,7 @@ void ObjectsManager::startPublishing(TObject* object)
5455
ILOG(Warning, Support) << "Object is already being published (" << object->GetName() << ")" << ENDM;
5556
BOOST_THROW_EXCEPTION(DuplicateObjectError() << errinfo_object_name(object->GetName()));
5657
}
57-
auto* newObject = new MonitorObject(object, mTaskConfig.taskName, mTaskConfig.detectorName);
58+
auto* newObject = new MonitorObject(object, mTaskName, mDetectorName);
5859
newObject->setIsOwner(false);
5960
mMonitorObjects->Add(newObject);
6061
mUpdateServiceDiscovery = true;

Framework/src/TaskRunner.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void TaskRunner::init(InitContext& iCtx)
102102
mCollector->addGlobalTag("TaskName", mTaskConfig.taskName);
103103

104104
// setup publisher
105-
mObjectsManager = std::make_shared<ObjectsManager>(mTaskConfig);
105+
mObjectsManager = std::make_shared<ObjectsManager>(mTaskConfig.taskName, mTaskConfig.detectorName, mTaskConfig.consulUrl, mTaskConfig.parallelTaskID);
106106

107107
// setup user's task
108108
TaskFactory f;

Framework/test/testObjectsManager.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ BOOST_AUTO_TEST_CASE(invalid_url_test)
3535
TaskConfig config;
3636
config.taskName = "test";
3737
config.consulUrl = "bad-url:1234";
38-
ObjectsManager objectsManager(config, true);
38+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
3939
}
4040

4141
BOOST_AUTO_TEST_CASE(duplicate_object_test)
4242
{
4343
TaskConfig config;
4444
config.taskName = "test";
4545
config.consulUrl = "http://consul-test.cern.ch:8500";
46-
ObjectsManager objectsManager(config, true);
46+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
4747
TObjString s("content");
4848
objectsManager.startPublishing(&s);
4949
BOOST_CHECK_THROW(objectsManager.startPublishing(&s), o2::quality_control::core::DuplicateObjectError);
@@ -54,7 +54,7 @@ BOOST_AUTO_TEST_CASE(is_being_published_test)
5454
TaskConfig config;
5555
config.taskName = "test";
5656
config.consulUrl = "http://consul-test.cern.ch:8500";
57-
ObjectsManager objectsManager(config, true);
57+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
5858
TObjString s("content");
5959
BOOST_CHECK(!objectsManager.isBeingPublished("content"));
6060
objectsManager.startPublishing(&s);
@@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE(unpublish_test)
6666
{
6767
TaskConfig config;
6868
config.taskName = "test";
69-
ObjectsManager objectsManager(config, true);
69+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
7070
TObjString s("content");
7171
objectsManager.startPublishing(&s);
7272
BOOST_CHECK_EQUAL(objectsManager.getNumberPublishedObjects(), 1);
@@ -85,7 +85,7 @@ BOOST_AUTO_TEST_CASE(getters_test)
8585
TaskConfig config;
8686
config.taskName = "test";
8787
config.consulUrl = "http://consul-test.cern.ch:8500";
88-
ObjectsManager objectsManager(config, true);
88+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
8989

9090
TObjString s("content");
9191
TH1F h("histo", "h", 100, 0, 99);
@@ -115,7 +115,7 @@ BOOST_AUTO_TEST_CASE(metadata_test)
115115
TaskConfig config;
116116
config.taskName = "test";
117117
config.consulUrl = "http://consul-test.cern.ch:8500";
118-
ObjectsManager objectsManager(config, true);
118+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
119119

120120
TObjString s("content");
121121
TH1F h("histo", "h", 100, 0, 99);
@@ -131,7 +131,7 @@ BOOST_AUTO_TEST_CASE(drawOptions_test)
131131
TaskConfig config;
132132
config.taskName = "test";
133133
config.consulUrl = "http://consul-test.cern.ch:8500";
134-
ObjectsManager objectsManager(config, true);
134+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
135135

136136
TH1F h("histo", "h", 100, 0, 99);
137137
objectsManager.startPublishing(&h);

Framework/test/testPublisher.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ BOOST_AUTO_TEST_CASE(publisher_test)
3333
{
3434
TaskConfig config;
3535
config.taskName = "test";
36-
ObjectsManager objectsManager(config, true);
36+
ObjectsManager objectsManager(config.taskName, config.detectorName, config.consulUrl, 0, true);
3737
TObjString s("content");
3838
objectsManager.startPublishing(&s);
3939

Framework/test/testTaskInterface.cxx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ BOOST_AUTO_TEST_CASE(test_invoke_all_methods)
124124
{
125125
// This is maximum that we can do until we are able to test the DPL algorithms in isolation.
126126
TaskConfig taskConfig;
127-
ObjectsManager* objectsManager = new ObjectsManager(taskConfig, true);
127+
ObjectsManager* objectsManager = new ObjectsManager(taskConfig.taskName, taskConfig.detectorName, taskConfig.consulUrl, 0, true);
128+
128129
test::TestTask testTask(objectsManager);
129130
BOOST_CHECK_EQUAL(testTask.test, 0);
130131

@@ -141,7 +142,7 @@ BOOST_AUTO_TEST_CASE(test_invoke_all_methods)
141142
testTask.startOfCycle();
142143
BOOST_CHECK_EQUAL(testTask.test, 3);
143144

144-
// creating a valid ProcessingContex is almost impossible outside of the framework
145+
// creating a valid ProcessingContext is almost impossible outside of the framework
145146
// testTask.monitorData(pctx);
146147
// BOOST_CHECK_EQUAL(testTask.test, 4);
147148

@@ -166,7 +167,7 @@ BOOST_AUTO_TEST_CASE(test_task_factory)
166167
"http://consul-test.cern.ch:8500"
167168
};
168169

169-
auto objectsManager = make_shared<ObjectsManager>(config);
170+
auto objectsManager = make_shared<ObjectsManager>(config.taskName, config.detectorName, config.consulUrl);
170171

171172
TaskFactory taskFactory;
172173
auto task = taskFactory.create(config, objectsManager);

Modules/Daq/test/testQcDaq.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ BOOST_AUTO_TEST_CASE(instantiate_task)
2525
TaskConfig config;
2626
config.consulUrl = "http://consul-test.cern.ch:8500";
2727
config.taskName = "qcDaqTest";
28-
auto manager = make_shared<ObjectsManager>(config, true);
28+
config.detectorName = "DAQ";
29+
auto manager = make_shared<ObjectsManager>(config.taskName, config.detectorName, config.consulUrl, 0, true);
2930
task.setObjectsManager(manager);
3031
// o2::framework::InitContext ctx;
3132
// task.initialize(ctx); // TODO

Modules/Example/test/testFactory.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ BOOST_AUTO_TEST_CASE(Task_Factory)
2929
config.taskName = "task";
3030
config.moduleName = "QcCommon";
3131
config.className = "o2::quality_control_modules::example::ExampleTask";
32-
auto manager = make_shared<ObjectsManager>(config);
32+
config.detectorName = "DAQ";
33+
auto manager = make_shared<ObjectsManager>(config.taskName, config.detectorName, config.consulUrl, 0, true);
3334
try {
3435
gSystem->AddDynamicPath("lib:../../lib:../../../lib:.:"); // add local paths for the test
3536
factory.create(config, manager);
@@ -44,7 +45,7 @@ BOOST_AUTO_TEST_CASE(Task_Factory_failures, *utf::depends_on("Task_Factory") /*
4445
{
4546
TaskFactory factory;
4647
TaskConfig config;
47-
auto manager = make_shared<ObjectsManager>(config);
48+
auto manager = make_shared<ObjectsManager>(config.taskName, config.detectorName, config.consulUrl, 0, true);
4849

4950
config.taskName = "task";
5051
config.moduleName = "WRONGNAME";

Modules/Example/test/testQcExample.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ BOOST_AUTO_TEST_CASE(insantiate_task)
2626
TaskConfig config;
2727
config.consulUrl = "http://consul-test.cern.ch:8500";
2828
config.taskName = "qcExampleTest";
29-
auto manager = make_shared<ObjectsManager>(config, true);
29+
config.detectorName = "TST";
30+
auto manager = make_shared<ObjectsManager>(config.taskName, config.detectorName, config.consulUrl, 0, true);
3031
task.setObjectsManager(manager);
3132
// task.initialize();// TODO
3233

0 commit comments

Comments
 (0)