File indexing completed on 2025-03-31 22:26:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "cppunit/extensions/HelperMacros.h"
0016
0017 #include "FWCore/PluginManager/interface/PluginManager.h"
0018 #include "FWCore/PluginManager/interface/standard.h"
0019 #include "FWCore/Version/interface/GetReleaseVersion.h"
0020 #include "FWCore/Framework/interface/SourceFactory.h"
0021 #include "FWCore/Framework/interface/ModuleFactory.h"
0022 #include "FWCore/Framework/interface/EventSetupProvider.h"
0023 #include "FWCore/Framework/interface/EventSetupsController.h"
0024 #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
0025
0026 #include "DummyFinder.h"
0027 #include "DummyESProductResolverProvider.h"
0028 #include "TestTypeResolvers.h"
0029
0030 using namespace edm::eventsetup;
0031
0032 namespace {
0033 edm::ActivityRegistry activityRegistry;
0034 }
0035
0036 namespace edm::test {
0037 namespace other {
0038 class LoadableDummyFinderA : public DummyFinder {
0039 public:
0040 LoadableDummyFinderA(const edm::ParameterSet&) { ++count_; }
0041 static int count_;
0042 };
0043 int LoadableDummyFinderA::count_ = 0;
0044
0045 class LoadableDummyProviderA : public edm::eventsetup::test::DummyESProductResolverProvider {
0046 public:
0047 LoadableDummyProviderA(const edm::ParameterSet& iPSet)
0048 : DummyESProductResolverProvider(
0049 edm::eventsetup::test::DummyData(iPSet.getUntrackedParameter<int>("value", 1))) {
0050 ++count_;
0051 }
0052 static int count_;
0053 };
0054 int LoadableDummyProviderA::count_ = 0;
0055
0056 class LoadableDummyESSourceA : public edm::eventsetup::test::DummyESProductResolverProvider, public DummyFinder {
0057 public:
0058 LoadableDummyESSourceA(const edm::ParameterSet& iPSet)
0059 : DummyESProductResolverProvider(
0060 edm::eventsetup::test::DummyData(iPSet.getUntrackedParameter<int>("value", 2))) {
0061 setInterval(edm::ValidityInterval(edm::IOVSyncValue(edm::EventID(1, 0, 0)), edm::IOVSyncValue::endOfTime()));
0062 ++count_;
0063 }
0064 static int count_;
0065 };
0066 int LoadableDummyESSourceA::count_ = 0;
0067 }
0068 namespace cpu {
0069 class LoadableDummyFinderA : public DummyFinder {
0070 public:
0071 LoadableDummyFinderA(const edm::ParameterSet&) { ++count_; }
0072 static int count_;
0073 };
0074 int LoadableDummyFinderA::count_ = 0;
0075
0076 class LoadableDummyProviderA : public edm::eventsetup::test::DummyESProductResolverProvider {
0077 public:
0078 LoadableDummyProviderA(const edm::ParameterSet& iPSet)
0079 : DummyESProductResolverProvider(
0080 edm::eventsetup::test::DummyData(iPSet.getUntrackedParameter<int>("value", 1))) {
0081 ++count_;
0082 }
0083 static int count_;
0084 };
0085 int LoadableDummyProviderA::count_ = 0;
0086 using LoadableDummyProviderB = LoadableDummyProviderA;
0087
0088 class LoadableDummyESSourceA : public edm::eventsetup::test::DummyESProductResolverProvider, public DummyFinder {
0089 public:
0090 LoadableDummyESSourceA(const edm::ParameterSet& iPSet)
0091 : DummyESProductResolverProvider(
0092 edm::eventsetup::test::DummyData(iPSet.getUntrackedParameter<int>("value", 2))) {
0093 setInterval(edm::ValidityInterval(edm::IOVSyncValue(edm::EventID(1, 0, 0)), edm::IOVSyncValue::endOfTime()));
0094 ++count_;
0095 }
0096 static int count_;
0097 };
0098 int LoadableDummyESSourceA::count_ = 0;
0099 using LoadableDummyESSourceB = LoadableDummyESSourceA;
0100 }
0101 }
0102
0103 DEFINE_FWK_EVENTSETUP_SOURCE(edm::test::other::LoadableDummyFinderA);
0104 DEFINE_FWK_EVENTSETUP_SOURCE(edm::test::cpu::LoadableDummyFinderA);
0105 DEFINE_FWK_EVENTSETUP_SOURCE(edm::test::other::LoadableDummyESSourceA);
0106 DEFINE_FWK_EVENTSETUP_SOURCE(edm::test::cpu::LoadableDummyESSourceA);
0107 DEFINE_FWK_EVENTSETUP_SOURCE(edm::test::cpu::LoadableDummyESSourceB);
0108 DEFINE_FWK_EVENTSETUP_MODULE(edm::test::other::LoadableDummyProviderA);
0109 DEFINE_FWK_EVENTSETUP_MODULE(edm::test::cpu::LoadableDummyProviderA);
0110 DEFINE_FWK_EVENTSETUP_MODULE(edm::test::cpu::LoadableDummyProviderB);
0111
0112 class testEventsetupplugin : public CppUnit::TestFixture {
0113 CPPUNIT_TEST_SUITE(testEventsetupplugin);
0114
0115 CPPUNIT_TEST(finderTest);
0116 CPPUNIT_TEST(simpleResolverTest);
0117 CPPUNIT_TEST(complexResolverTest);
0118
0119 CPPUNIT_TEST_SUITE_END();
0120
0121 public:
0122 void setUp() {}
0123 void tearDown() {}
0124
0125 void finderTest();
0126 void simpleResolverTest();
0127 void complexResolverTest();
0128 void configurableResolverTest();
0129 };
0130
0131
0132 CPPUNIT_TEST_SUITE_REGISTRATION(testEventsetupplugin);
0133
0134 static void doInit() {
0135 static bool firstTime = true;
0136 if (firstTime) {
0137 if (not edmplugin::PluginManager::isAvailable()) {
0138 edmplugin::PluginManager::configure(edmplugin::standard::config());
0139 }
0140 firstTime = false;
0141 }
0142 }
0143
0144 void testEventsetupplugin::finderTest()
0145
0146 {
0147 doInit();
0148 EventSetupsController esController;
0149 EventSetupProvider provider(&activityRegistry);
0150 edm::ModuleTypeResolverMaker const* resolverMaker = nullptr;
0151
0152 edm::ParameterSet dummyFinderPSet;
0153 dummyFinderPSet.addParameter("@module_type", std::string("LoadableDummyFinder"));
0154 dummyFinderPSet.addParameter("@module_label", std::string(""));
0155 dummyFinderPSet.registerIt();
0156 SourceFactory::get()->addTo(esController, provider, dummyFinderPSet, resolverMaker);
0157
0158 ComponentDescription descFinder("LoadableDummyFinder", "", ComponentDescription::unknownID(), true);
0159 std::set<ComponentDescription> descriptions(provider.resolverProviderDescriptions());
0160
0161 CPPUNIT_ASSERT(descriptions.find(descFinder) == descriptions.end());
0162
0163 edm::ParameterSet dummyProviderPSet;
0164 dummyProviderPSet.addParameter("@module_type", std::string("LoadableDummyProvider"));
0165 dummyProviderPSet.addParameter("@module_label", std::string(""));
0166 dummyProviderPSet.registerIt();
0167 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, resolverMaker);
0168
0169 ComponentDescription desc("LoadableDummyProvider", "", ComponentDescription::unknownID(), false);
0170 descriptions = provider.resolverProviderDescriptions();
0171 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0172 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0173
0174 edm::ParameterSet dummySourcePSet;
0175 dummySourcePSet.addParameter("@module_type", std::string("LoadableDummyESSource"));
0176 dummySourcePSet.addParameter("@module_label", std::string(""));
0177 dummySourcePSet.registerIt();
0178 SourceFactory::get()->addTo(esController, provider, dummySourcePSet, resolverMaker);
0179
0180 ComponentDescription descSource("LoadableDummyESSource", "", ComponentDescription::unknownID(), true);
0181 descriptions = provider.resolverProviderDescriptions();
0182 CPPUNIT_ASSERT(descriptions.find(descSource) != descriptions.end());
0183 CPPUNIT_ASSERT(*(descriptions.find(descSource)) == descSource);
0184 }
0185
0186 void testEventsetupplugin::simpleResolverTest() {
0187 doInit();
0188
0189 edm::test::SimpleTestTypeResolverMaker resolverMaker;
0190 EventSetupsController esController(&resolverMaker);
0191 EventSetupProvider provider(&activityRegistry);
0192
0193 edm::ParameterSet dummyFinderPSet;
0194 dummyFinderPSet.addParameter("@module_type", std::string("LoadableDummyFinder"));
0195 dummyFinderPSet.addParameter("@module_label", std::string(""));
0196 dummyFinderPSet.registerIt();
0197 SourceFactory::get()->addTo(esController, provider, dummyFinderPSet, &resolverMaker);
0198
0199 ComponentDescription descFinder("LoadableDummyFinder", "", ComponentDescription::unknownID(), true);
0200 std::set<ComponentDescription> descriptions(provider.resolverProviderDescriptions());
0201
0202 CPPUNIT_ASSERT(descriptions.find(descFinder) == descriptions.end());
0203
0204 edm::ParameterSet dummyProviderPSet;
0205 dummyProviderPSet.addParameter("@module_type", std::string("LoadableDummyProvider"));
0206 dummyProviderPSet.addParameter("@module_label", std::string(""));
0207 dummyProviderPSet.registerIt();
0208 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0209
0210 ComponentDescription desc("LoadableDummyProvider", "", ComponentDescription::unknownID(), false);
0211 descriptions = provider.resolverProviderDescriptions();
0212 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0213 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0214
0215 edm::ParameterSet dummySourcePSet;
0216 dummySourcePSet.addParameter("@module_type", std::string("LoadableDummyESSource"));
0217 dummySourcePSet.addParameter("@module_label", std::string(""));
0218 dummySourcePSet.registerIt();
0219 SourceFactory::get()->addTo(esController, provider, dummySourcePSet, &resolverMaker);
0220
0221 ComponentDescription descSource("LoadableDummyESSource", "", ComponentDescription::unknownID(), true);
0222 descriptions = provider.resolverProviderDescriptions();
0223 CPPUNIT_ASSERT(descriptions.find(descSource) != descriptions.end());
0224 CPPUNIT_ASSERT(*(descriptions.find(descSource)) == descSource);
0225 }
0226
0227 void testEventsetupplugin::complexResolverTest() {
0228 doInit();
0229
0230 edm::test::ComplexTestTypeResolverMaker resolverMaker;
0231 EventSetupsController esController(&resolverMaker);
0232 EventSetupProvider provider(&activityRegistry);
0233
0234 edm::ParameterSet dummyFinderPSet;
0235 dummyFinderPSet.addParameter("@module_type", std::string("generic::LoadableDummyFinderA"));
0236 dummyFinderPSet.addParameter("@module_label", std::string(""));
0237 dummyFinderPSet.registerIt();
0238 SourceFactory::get()->addTo(esController, provider, dummyFinderPSet, &resolverMaker);
0239
0240 ComponentDescription descFinder("generic::LoadableDummyFinderA", "", ComponentDescription::unknownID(), true);
0241 std::set<ComponentDescription> descriptions(provider.resolverProviderDescriptions());
0242
0243 CPPUNIT_ASSERT(descriptions.find(descFinder) == descriptions.end());
0244
0245
0246 {
0247 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0248 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 0);
0249 edm::ParameterSet dummyProviderPSet;
0250 dummyProviderPSet.addParameter("@module_type", std::string("generic::LoadableDummyProviderA"));
0251 dummyProviderPSet.addParameter("@module_label", std::string(""));
0252 dummyProviderPSet.registerIt();
0253 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0254
0255 ComponentDescription desc("generic::LoadableDummyProviderA", "", ComponentDescription::unknownID(), false);
0256 descriptions = provider.resolverProviderDescriptions();
0257 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0258 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0259 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0260 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 1);
0261 edm::test::other::LoadableDummyProviderA::count_ = 0;
0262 }
0263
0264
0265 {
0266 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderB::count_ == 0);
0267 edm::ParameterSet dummyProviderPSet;
0268 dummyProviderPSet.addParameter("@module_type", std::string("generic::LoadableDummyProviderB"));
0269 dummyProviderPSet.addParameter("@module_label", std::string(""));
0270 dummyProviderPSet.registerIt();
0271 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0272
0273 ComponentDescription desc("generic::LoadableDummyProviderB", "", ComponentDescription::unknownID(), false);
0274 descriptions = provider.resolverProviderDescriptions();
0275 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0276 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0277 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderB::count_ == 1);
0278 edm::test::cpu::LoadableDummyProviderB::count_ = 0;
0279 }
0280
0281
0282 {
0283 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyESSourceA::count_ == 0);
0284 CPPUNIT_ASSERT(edm::test::other::LoadableDummyESSourceA::count_ == 0);
0285 edm::ParameterSet dummySourcePSet;
0286 dummySourcePSet.addParameter("@module_type", std::string("generic::LoadableDummyESSourceA"));
0287 dummySourcePSet.addParameter("@module_label", std::string(""));
0288 dummySourcePSet.registerIt();
0289 SourceFactory::get()->addTo(esController, provider, dummySourcePSet, &resolverMaker);
0290
0291 ComponentDescription descSource("generic::LoadableDummyESSourceA", "", ComponentDescription::unknownID(), true);
0292 descriptions = provider.resolverProviderDescriptions();
0293 CPPUNIT_ASSERT(descriptions.find(descSource) != descriptions.end());
0294 CPPUNIT_ASSERT(*(descriptions.find(descSource)) == descSource);
0295 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyESSourceA::count_ == 0);
0296 CPPUNIT_ASSERT(edm::test::other::LoadableDummyESSourceA::count_ == 1);
0297 edm::test::other::LoadableDummyESSourceA::count_ = 0;
0298 }
0299
0300
0301 {
0302 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyESSourceB::count_ == 0);
0303 edm::ParameterSet dummySourcePSet;
0304 dummySourcePSet.addParameter("@module_type", std::string("generic::LoadableDummyESSourceB"));
0305 dummySourcePSet.addParameter("@module_label", std::string(""));
0306 dummySourcePSet.registerIt();
0307 SourceFactory::get()->addTo(esController, provider, dummySourcePSet, &resolverMaker);
0308
0309 ComponentDescription descSource("generic::LoadableDummyESSourceB", "", ComponentDescription::unknownID(), true);
0310 descriptions = provider.resolverProviderDescriptions();
0311 CPPUNIT_ASSERT(descriptions.find(descSource) != descriptions.end());
0312 CPPUNIT_ASSERT(*(descriptions.find(descSource)) == descSource);
0313 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyESSourceB::count_ == 1);
0314 edm::test::cpu::LoadableDummyESSourceB::count_ = 0;
0315 }
0316 }
0317
0318 void testEventsetupplugin::configurableResolverTest() {
0319 doInit();
0320
0321 edm::test::ConfigurableTestTypeResolverMaker resolverMaker;
0322 EventSetupsController esController(&resolverMaker);
0323 EventSetupProvider provider(&activityRegistry);
0324
0325 edm::ParameterSet dummyFinderPSet;
0326 dummyFinderPSet.addParameter("@module_type", std::string("generic::LoadableDummyFinderA"));
0327 dummyFinderPSet.addParameter("@module_label", std::string(""));
0328 dummyFinderPSet.addUntrackedParameter("variant", std::string(""));
0329 dummyFinderPSet.registerIt();
0330 SourceFactory::get()->addTo(esController, provider, dummyFinderPSet, &resolverMaker);
0331
0332 ComponentDescription descFinder("generic::LoadableDummyFinderA", "", ComponentDescription::unknownID(), true);
0333 std::set<ComponentDescription> descriptions(provider.resolverProviderDescriptions());
0334
0335 CPPUNIT_ASSERT(descriptions.find(descFinder) == descriptions.end());
0336
0337
0338 {
0339 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0340 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 0);
0341 edm::ParameterSet dummyProviderPSet;
0342 dummyProviderPSet.addParameter("@module_type", std::string("generic::LoadableDummyProviderA"));
0343 dummyProviderPSet.addParameter("@module_label", std::string(""));
0344 dummyProviderPSet.addUntrackedParameter("variant", std::string(""));
0345 dummyProviderPSet.registerIt();
0346 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0347
0348 ComponentDescription desc("generic::LoadableDummyProviderA", "", ComponentDescription::unknownID(), false);
0349 descriptions = provider.resolverProviderDescriptions();
0350 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0351 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0352 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0353 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 1);
0354 edm::test::other::LoadableDummyProviderA::count_ = 0;
0355 }
0356
0357
0358 {
0359 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0360 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 0);
0361 edm::ParameterSet dummyProviderPSet;
0362 dummyProviderPSet.addParameter("@module_type", std::string("generic::LoadableDummyProviderA"));
0363 dummyProviderPSet.addParameter("@module_label", std::string(""));
0364 dummyProviderPSet.addUntrackedParameter("variant", std::string("cpu"));
0365 dummyProviderPSet.registerIt();
0366 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0367
0368 ComponentDescription desc("generic::LoadableDummyProviderA", "", ComponentDescription::unknownID(), false);
0369 descriptions = provider.resolverProviderDescriptions();
0370 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0371 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0372 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 1);
0373 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 0);
0374 edm::test::cpu::LoadableDummyProviderA::count_ = 0;
0375 }
0376
0377
0378 {
0379 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0380 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 0);
0381 edm::ParameterSet dummyProviderPSet;
0382 dummyProviderPSet.addParameter("@module_type", std::string("generic::LoadableDummyProviderA"));
0383 dummyProviderPSet.addParameter("@module_label", std::string(""));
0384 dummyProviderPSet.addUntrackedParameter("variant", std::string("other"));
0385 dummyProviderPSet.registerIt();
0386 ModuleFactory::get()->addTo(esController, provider, dummyProviderPSet, &resolverMaker);
0387
0388 ComponentDescription desc("generic::LoadableDummyProviderA", "", ComponentDescription::unknownID(), false);
0389 descriptions = provider.resolverProviderDescriptions();
0390 CPPUNIT_ASSERT(descriptions.find(desc) != descriptions.end());
0391 CPPUNIT_ASSERT(*(descriptions.find(desc)) == desc);
0392 CPPUNIT_ASSERT(edm::test::cpu::LoadableDummyProviderA::count_ == 0);
0393 CPPUNIT_ASSERT(edm::test::other::LoadableDummyProviderA::count_ == 1);
0394 edm::test::other::LoadableDummyProviderA::count_ = 0;
0395 }
0396 }