Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a unique ID to ComponentDescription #36690

Merged
merged 1 commit into from Jan 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 11 additions & 5 deletions FWCore/Framework/interface/ComponentDescription.h
Expand Up @@ -30,18 +30,24 @@ namespace edm {
struct ComponentDescription {
std::string label_; // A human friendly string that uniquely identifies the label
std::string type_; // A human friendly string that uniquely identifies the name
bool isSource_;
bool isLooper_;

// ID of parameter set of the creator
ParameterSetID pid_;

unsigned int id_;

bool isSource_;
bool isLooper_;

/* ----------- end of provenance information ------------- */

ComponentDescription() : label_(), type_(), isSource_(false), isLooper_(false), pid_() {}
ComponentDescription() : label_(), type_(), pid_(), id_(unknownID()), isSource_(false), isLooper_(false) {}

ComponentDescription(
std::string const& iType, std::string const& iLabel, unsigned int iId, bool iIsSource, bool iIsLooper = false)
: label_(iLabel), type_(iType), pid_(), id_(iId), isSource_(iIsSource), isLooper_(iIsLooper) {}

ComponentDescription(std::string const& iType, std::string const& iLabel, bool iIsSource, bool iIsLooper = false)
: label_(iLabel), type_(iType), isSource_(iIsSource), isLooper_(iIsLooper), pid_() {}
[[nodiscard]] static constexpr unsigned int unknownID() noexcept { return 0xFFFFFFFF; }

bool operator<(ComponentDescription const& iRHS) const {
return (type_ == iRHS.type_) ? (label_ < iRHS.label_) : (type_ < iRHS.type_);
Expand Down
4 changes: 4 additions & 0 deletions FWCore/Framework/src/ComponentMaker.cc
Expand Up @@ -2,6 +2,7 @@
#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include <string>
#include <atomic>

namespace edm {
namespace eventsetup {
Expand All @@ -12,6 +13,9 @@ namespace edm {
description.label_ = iConfiguration.getParameter<std::string>("@module_label");

description.pid_ = iConfiguration.id();
static std::atomic<unsigned int> s_id{0};
description.id_ = s_id++;

return description;
}

Expand Down
1 change: 1 addition & 0 deletions FWCore/Framework/src/EventSetupProviderMaker.cc
Expand Up @@ -84,6 +84,7 @@ namespace edm {
}
preferInfo[ComponentDescription(preferPSet.getParameter<std::string>("@module_type"),
preferPSet.getParameter<std::string>("@module_label"),
ComponentDescription::unknownID(),
false)] = recordToData;
}
return std::make_unique<EventSetupProvider>(activityRegistry, subProcessIndex, &preferInfo);
Expand Down
12 changes: 6 additions & 6 deletions FWCore/Framework/test/dependentrecord_t.cppunit.cc
Expand Up @@ -819,7 +819,7 @@ void testdependentrecord::getDataWithESGetTokenTest() {

try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -829,7 +829,7 @@ void testdependentrecord::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", true);
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", 1, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand Down Expand Up @@ -966,7 +966,7 @@ void testdependentrecord::getHandleWithESGetTokenTest() {

try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -976,7 +976,7 @@ void testdependentrecord::getHandleWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", true);
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", 1, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand Down Expand Up @@ -1130,7 +1130,7 @@ void testdependentrecord::getTransientHandleWithESGetTokenTest() {

try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -1140,7 +1140,7 @@ void testdependentrecord::getTransientHandleWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", true);
edm::eventsetup::ComponentDescription description("DepRecordProxyProviderWithData", "testTwo", 1, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand Down
65 changes: 34 additions & 31 deletions FWCore/Framework/test/eventsetup_t.cppunit.cc
Expand Up @@ -344,7 +344,7 @@ void testEventsetup::producerConflictTest() {
edm::ParameterSet pset = createDummyPset();
EventSetupProvider& provider = *controller.makeProvider(pset, &activityRegistry);

edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, false);

{
auto dummyProv = std::make_shared<DummyProxyProvider>();
Expand All @@ -365,7 +365,7 @@ void testEventsetup::sourceConflictTest() {
edm::ParameterSet pset = createDummyPset();
EventSetupProvider& provider = *controller.makeProvider(pset, &activityRegistry);

edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);

{
auto dummyProv = std::make_shared<DummyProxyProvider>();
Expand All @@ -386,7 +386,7 @@ void testEventsetup::twoSourceTest() {
edm::ParameterSet pset = createDummyPset();
EventSetupProvider& provider = *controller.makeProvider(pset, &activityRegistry);

edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
{
auto dummyProv = std::make_shared<DummyProxyProvider>();
dummyProv->setDescription(description);
Expand All @@ -396,7 +396,7 @@ void testEventsetup::twoSourceTest() {
auto dummyProv = std::make_shared<edm::DummyEventSetupRecordRetriever>();
std::shared_ptr<eventsetup::DataProxyProvider> providerPtr(dummyProv);
std::shared_ptr<edm::EventSetupRecordIntervalFinder> finderPtr(dummyProv);
edm::eventsetup::ComponentDescription description2("DummyEventSetupRecordRetriever", "", true);
edm::eventsetup::ComponentDescription description2("DummyEventSetupRecordRetriever", "", 0, true);
dummyProv->setDescription(description2);
provider.add(providerPtr);
provider.add(finderPtr);
Expand Down Expand Up @@ -454,7 +454,7 @@ void testEventsetup::provenanceTest() {

try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -464,7 +464,7 @@ void testEventsetup::provenanceTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testLabel", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testLabel", 1, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.registerIt();
Expand Down Expand Up @@ -635,7 +635,7 @@ void testEventsetup::getDataWithESGetTokenTest() {

try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -645,7 +645,7 @@ void testEventsetup::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", 1, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand All @@ -657,7 +657,7 @@ void testEventsetup::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("ConsumesProducer", "consumes", false);
edm::eventsetup::ComponentDescription description("ConsumesProducer", "consumes", 2, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "consumes");
ps.registerIt();
Expand All @@ -668,7 +668,7 @@ void testEventsetup::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("ConsumesFromProducer", "consumesFrom", false);
edm::eventsetup::ComponentDescription description("ConsumesFromProducer", "consumesFrom", 3, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "consumesFrom");
ps.registerIt();
Expand All @@ -679,7 +679,7 @@ void testEventsetup::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("SetMayConsumeProducer", "setMayConsumeSuceed", false);
edm::eventsetup::ComponentDescription description("SetMayConsumeProducer", "setMayConsumeSuceed", 4, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "setMayConsumeSuceed");
ps.registerIt();
Expand All @@ -690,7 +690,7 @@ void testEventsetup::getDataWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("SetMayConsumeProducer", "setMayConsumeFail", false);
edm::eventsetup::ComponentDescription description("SetMayConsumeProducer", "setMayConsumeFail", 5, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "setMayConsumeFail");
ps.registerIt();
Expand Down Expand Up @@ -820,7 +820,7 @@ void testEventsetup::getHandleWithESGetTokenTest() {
edm::ESParentContext pc;
try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -830,7 +830,7 @@ void testEventsetup::getHandleWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", 1, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand Down Expand Up @@ -916,7 +916,7 @@ void testEventsetup::getTransientHandleWithESGetTokenTest() {
edm::ESParentContext pc;
try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testOne", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand All @@ -926,7 +926,7 @@ void testEventsetup::getTransientHandleWithESGetTokenTest() {
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "testTwo", 1, false);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test22");
ps.addParameter<std::string>("appendToDataLabel", "blah");
Expand Down Expand Up @@ -1016,13 +1016,13 @@ void testEventsetup::sourceProducerResolutionTest() {

edm::ESParentContext pc;
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kBad);
dummyProv->setDescription(description);
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 1, false);
auto dummyProv = std::make_shared<DummyProxyProvider>(kGood);
dummyProv->setDescription(description);
provider.add(dummyProv);
Expand All @@ -1049,13 +1049,13 @@ void testEventsetup::sourceProducerResolutionTest() {
dummyFinder->setInterval(ValidityInterval(IOVSyncValue(Timestamp(2)), IOVSyncValue(Timestamp(3))));
provider.add(std::shared_ptr<edm::EventSetupRecordIntervalFinder>(dummyFinder));
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, false);
auto dummyProv = std::make_shared<DummyProxyProvider>(kGood);
dummyProv->setDescription(description);
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 1, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kBad);
dummyProv->setDescription(description);
provider.add(dummyProv);
Expand Down Expand Up @@ -1090,16 +1090,17 @@ void testEventsetup::preferTest() {
EventSetupProvider::PreferredProviderInfo preferInfo;
EventSetupProvider::RecordToDataMap recordToData;
//default means use all proxies
preferInfo[ComponentDescription("DummyProxyProvider", "", false)] = recordToData;
preferInfo[ComponentDescription("DummyProxyProvider", "", ComponentDescription::unknownID(), false)] =
recordToData;
provider.setPreferredProviderInfo(preferInfo);
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", 0, false);
auto dummyProv = std::make_shared<DummyProxyProvider>(kBad);
dummyProv->setDescription(description);
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", false);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 1, false);
auto dummyProv = std::make_shared<DummyProxyProvider>(kGood);
dummyProv->setDescription(description);
provider.add(dummyProv);
Expand All @@ -1125,16 +1126,17 @@ void testEventsetup::preferTest() {
EventSetupProvider::PreferredProviderInfo preferInfo;
EventSetupProvider::RecordToDataMap recordToData;
//default means use all proxies
preferInfo[ComponentDescription("DummyProxyProvider", "", false)] = recordToData;
preferInfo[ComponentDescription("DummyProxyProvider", "", ComponentDescription::unknownID(), false)] =
recordToData;
provider.setPreferredProviderInfo(preferInfo);
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kGood);
dummyProv->setDescription(description);
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", 1, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kBad);
dummyProv->setDescription(description);
provider.add(dummyProv);
Expand All @@ -1161,16 +1163,17 @@ void testEventsetup::preferTest() {
EventSetupProvider::RecordToDataMap recordToData;
recordToData.insert(
std::make_pair(std::string("DummyRecord"), std::make_pair(std::string("DummyData"), std::string())));
preferInfo[ComponentDescription("DummyProxyProvider", "", false)] = recordToData;
preferInfo[ComponentDescription("DummyProxyProvider", "", ComponentDescription::unknownID(), false)] =
recordToData;
provider.setPreferredProviderInfo(preferInfo);
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kGood);
dummyProv->setDescription(description);
provider.add(dummyProv);
}
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "bad", 1, true);
auto dummyProv = std::make_shared<DummyProxyProvider>(kBad);
dummyProv->setDescription(description);
provider.add(dummyProv);
Expand Down Expand Up @@ -1205,7 +1208,7 @@ void testEventsetup::introspectionTest() {
edm::ESParentContext pc;
try {
{
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", true);
edm::eventsetup::ComponentDescription description("DummyProxyProvider", "", 0, true);
edm::ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand Down Expand Up @@ -1300,7 +1303,7 @@ void testEventsetup::resetProxiesTest() {
finder->setInterval(ValidityInterval(IOVSyncValue(Timestamp(2)), IOVSyncValue(Timestamp(3))));
provider.add(std::shared_ptr<edm::EventSetupRecordIntervalFinder>(finder));

ComponentDescription description("DummyProxyProvider", "", true);
ComponentDescription description("DummyProxyProvider", "", 0, true);
ParameterSet ps;
ps.addParameter<std::string>("name", "test11");
ps.registerIt();
Expand Down
6 changes: 3 additions & 3 deletions FWCore/Framework/test/eventsetupplugin_t.cppunit.cc
Expand Up @@ -70,7 +70,7 @@ void testEventsetupplugin::finderTest()
dummyFinderPSet.registerIt();
SourceFactory::get()->addTo(esController, provider, dummyFinderPSet);

ComponentDescription descFinder("LoadableDummyFinder", "", true);
ComponentDescription descFinder("LoadableDummyFinder", "", ComponentDescription::unknownID(), true);
std::set<ComponentDescription> descriptions(provider.proxyProviderDescriptions());
//should not be found since not a provider
CPPUNIT_ASSERT(descriptions.find(descFinder) == descriptions.end());
Expand All @@ -81,7 +81,7 @@ void testEventsetupplugin::finderTest()
dummyProviderPSet.registerIt();
ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet);

ComponentDescription desc("LoadableDummyProvider", "", false);
ComponentDescription desc("LoadableDummyProvider", "", ComponentDescription::unknownID(), false);
descriptions = provider.proxyProviderDescriptions();
CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
Expand All @@ -92,7 +92,7 @@ void testEventsetupplugin::finderTest()
dummySourcePSet.registerIt();
SourceFactory::get()->addTo(esController, provider, dummySourcePSet);

ComponentDescription descSource("LoadableDummyESSource", "", true);
ComponentDescription descSource("LoadableDummyESSource", "", ComponentDescription::unknownID(), true);
descriptions = provider.proxyProviderDescriptions();
CPPUNIT_ASSERT(descriptions.find(descSource) != descriptions.end());
CPPUNIT_ASSERT(*(descriptions.find(descSource)) == descSource);
Expand Down