Skip to content

Commit 55fd977

Browse files
authored
Merge pull request #46484 from wddgit/fixUnlabeledCase
Fix unlabeled case in mayConsumes EventSetup
2 parents 854bda7 + 03973ad commit 55fd977

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

FWCore/Framework/src/ESRecordsToProductResolverIndices.cc

+6-4
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,12 @@ namespace edm::eventsetup {
115115
}
116116
} else {
117117
foundFirstIndex = true;
118-
returnValue.emplace_back(
119-
keyIndex - beginIndex,
120-
dataKeys_[keyIndex].name().value(),
121-
components_[keyIndex] ? std::string_view(components_[keyIndex]->label_) : std::string_view());
118+
returnValue.emplace_back(keyIndex - beginIndex,
119+
dataKeys_[keyIndex].name().value(),
120+
components_[keyIndex] ? components_[keyIndex]->label_.empty()
121+
? std::string_view(components_[keyIndex]->type_)
122+
: std::string_view(components_[keyIndex]->label_)
123+
: std::string_view());
122124
}
123125
++keyIndex;
124126
}

FWCore/Framework/test/eventsetup_t.cppunit.cc

+56
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,18 @@ void testEventsetup::getDataWithESGetTokenTest() {
656656
dummyProv->setAppendToDataLabel(ps);
657657
provider.add(dummyProv);
658658
}
659+
{
660+
edm::eventsetup::ComponentDescription description("DummyESProductResolverProvider", "", 100, false);
661+
edm::ParameterSet ps;
662+
ps.addParameter<std::string>("name", "test22");
663+
ps.addParameter<std::string>("appendToDataLabel", "blahblah");
664+
ps.registerIt();
665+
description.pid_ = ps.id();
666+
auto dummyProv = std::make_shared<DummyESProductResolverProvider>(kGood);
667+
dummyProv->setDescription(description);
668+
dummyProv->setAppendToDataLabel(ps);
669+
provider.add(dummyProv);
670+
}
659671
{
660672
edm::eventsetup::ComponentDescription description("ConsumesProducer", "consumes", 2, false);
661673
edm::ParameterSet ps;
@@ -739,6 +751,32 @@ void testEventsetup::getDataWithESGetTokenTest() {
739751
dummyProv->setAppendToDataLabel(ps);
740752
provider.add(dummyProv);
741753
}
754+
{
755+
edm::eventsetup::ComponentDescription description(
756+
"SetMayConsumeProducer", "setMayConsumeWithUnlabeledModuleLabel", 101, false);
757+
edm::ParameterSet ps;
758+
ps.addParameter<std::string>("name", "thisIsNotUsed");
759+
ps.registerIt();
760+
description.pid_ = ps.id();
761+
auto dummyProv = std::make_shared<SetMayConsumeProducer>(
762+
true, "DummyESProductResolverProvider", "blahblah", "productLabelForProducerWithMayConsumesUnlabeledCase");
763+
dummyProv->setDescription(description);
764+
dummyProv->setAppendToDataLabel(ps);
765+
provider.add(dummyProv);
766+
}
767+
{
768+
edm::eventsetup::ComponentDescription description(
769+
"SetMayConsumeProducer", "setMayConsumeWithUnlabeledModuleLabel", 102, false);
770+
edm::ParameterSet ps;
771+
ps.addParameter<std::string>("name", "thisIsNotUsed");
772+
ps.registerIt();
773+
description.pid_ = ps.id();
774+
auto dummyProv = std::make_shared<SetMayConsumeProducer>(
775+
true, "doesNotExist", "blahblah", "productLabelForProducerWithMayConsumesUnlabeledCaseNonexistent");
776+
dummyProv->setDescription(description);
777+
dummyProv->setAppendToDataLabel(ps);
778+
provider.add(dummyProv);
779+
}
742780

743781
edm::ESParentContext pc;
744782
controller.eventSetupForInstance(IOVSyncValue(Timestamp(2)));
@@ -878,6 +916,24 @@ void testEventsetup::getDataWithESGetTokenTest() {
878916
CPPUNIT_ASSERT_THROW(consumer.prefetch(provider.eventSetupImpl()), edm::eventsetup::NoProductResolverException);
879917
}
880918

919+
{
920+
DummyDataConsumer consumer{edm::ESInputTag("", "productLabelForProducerWithMayConsumesUnlabeledCase")};
921+
consumer.updateLookup(provider.recordsToResolverIndices());
922+
consumer.prefetch(provider.eventSetupImpl());
923+
EventSetup eventSetup{provider.eventSetupImpl(),
924+
static_cast<unsigned int>(edm::Transition::Event),
925+
consumer.esGetTokenIndices(edm::Transition::Event),
926+
pc};
927+
const DummyData& data = eventSetup.getData(consumer.m_token);
928+
CPPUNIT_ASSERT(kGood.value_ == data.value_);
929+
}
930+
931+
{
932+
DummyDataConsumer consumer{edm::ESInputTag("", "productLabelForProducerWithMayConsumesUnlabeledCaseNonexistent")};
933+
consumer.updateLookup(provider.recordsToResolverIndices());
934+
CPPUNIT_ASSERT_THROW(consumer.prefetch(provider.eventSetupImpl()), edm::eventsetup::NoProductResolverException);
935+
}
936+
881937
} catch (const cms::Exception& iException) {
882938
std::cout << "caught " << iException.explainSelf() << std::endl;
883939
throw;

0 commit comments

Comments
 (0)