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