File indexing completed on 2024-04-06 12:13:00
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/PythonParameterSet/interface/PyBind11ProcessDesc.h"
0011 #include "FWCore/Utilities/interface/EDMException.h"
0012
0013 #include <cppunit/extensions/HelperMacros.h>
0014
0015 #include <memory>
0016
0017 #include <iostream>
0018 #include <sstream>
0019 #include <stdexcept>
0020 #include <string>
0021 #include <vector>
0022 #include <algorithm>
0023 #include <set>
0024
0025 class testmakeprocess : public CppUnit::TestFixture {
0026 CPPUNIT_TEST_SUITE(testmakeprocess);
0027 CPPUNIT_TEST(simpleProcessTest);
0028 CPPUNIT_TEST(usingTest);
0029 CPPUNIT_TEST(pathTest);
0030 CPPUNIT_TEST(moduleTest);
0031 CPPUNIT_TEST(emptyModuleTest);
0032 CPPUNIT_TEST(taskTest);
0033 CPPUNIT_TEST(taskTestWithEmptySchedule);
0034 CPPUNIT_TEST(taskTestWithSchedule);
0035 CPPUNIT_TEST(edmException);
0036
0037
0038 CPPUNIT_TEST_SUITE_END();
0039
0040 public:
0041 void setUp() {}
0042 void tearDown() {}
0043 void simpleProcessTest();
0044 void usingTest();
0045 void pathTest();
0046 void moduleTest();
0047 void emptyModuleTest();
0048 void taskTest();
0049 void taskTestWithEmptySchedule();
0050 void taskTestWithSchedule();
0051 void edmException();
0052
0053 private:
0054 typedef std::shared_ptr<edm::ParameterSet> ParameterSetPtr;
0055 ParameterSetPtr pSet(char const* c) {
0056
0057 ParameterSetPtr result = PyBind11ProcessDesc(std::string(c), false).parameterSet();
0058 CPPUNIT_ASSERT(result->getParameter<std::string>("@process_name") == "test");
0059 return result;
0060 }
0061
0062 };
0063
0064
0065 CPPUNIT_TEST_SUITE_REGISTRATION(testmakeprocess);
0066
0067 void testmakeprocess::simpleProcessTest() {
0068 char const* kTest =
0069 "import FWCore.ParameterSet.Config as cms\n"
0070 "process = cms.Process('test')\n"
0071 "dummy = cms.PSet(b = cms.bool(True))\n";
0072 ParameterSetPtr test = pSet(kTest);
0073 }
0074
0075 void testmakeprocess::usingTest() {
0076 char const* kTest =
0077 "import FWCore.ParameterSet.Config as cms\n"
0078 "process = cms.Process('test')\n"
0079 "process.dummy = cms.PSet(\n"
0080 " b = cms.bool(True)\n"
0081 ")\n"
0082 "process.dummy2 = cms.PSet(\n"
0083 " d = cms.bool(True)\n"
0084 ")\n"
0085 "process.m1 = cms.EDFilter('Dummy',\n"
0086 " process.dummy\n"
0087 ")\n"
0088 "process.m2 = cms.EDFilter('Dummy2',\n"
0089 " process.dummy2\n"
0090 ")\n"
0091 "process.p = cms.Path(process.m1+process.m2)\n";
0092
0093 ParameterSetPtr test = pSet(kTest);
0094
0095
0096 CPPUNIT_ASSERT(test->getParameterSet("m1").getParameter<bool>("b") == true);
0097 CPPUNIT_ASSERT(test->getParameterSet("m2").getParameter<bool>("d") == true);
0098 }
0099
0100 void testmakeprocess::pathTest() {
0101 char const* kTest =
0102 "import FWCore.ParameterSet.Config as cms\n"
0103 "process = cms.Process('test')\n"
0104 "process.cone5 = cms.EDFilter('PhonyConeJet',\n"
0105 " i = cms.int32(5)\n"
0106 ")\n"
0107 "process.cone7 = cms.EDFilter('PhonyConeJet',\n"
0108 " i = cms.int32(7)\n"
0109 ")\n"
0110 "process.jtanalyzer = cms.EDAnalyzer('jtanalyzer')\n"
0111 "process.writer = cms.OutputModule('Writer')\n"
0112 "process.cones = cms.Sequence(process.cone5*process.cone7)\n"
0113 "process.term1 = cms.Path(process.cones+process.jtanalyzer)\n"
0114 "process.atEnd = cms.EndPath(process.writer)\n";
0115
0116 ParameterSetPtr test = pSet(kTest);
0117
0118
0119 edm::ParameterSet& myparams = *(test);
0120 myparams.registerIt();
0121 std::string rep = myparams.toString();
0122 edm::ParameterSet copy(rep);
0123 CPPUNIT_ASSERT(copy == myparams);
0124 }
0125
0126 edm::ParameterSet modulePSet(std::string const& iLabel, std::string const& iType, std::string const& iCppType) {
0127 edm::ParameterSet temp;
0128 temp.addParameter("s", 1);
0129 temp.addParameter("@module_label", iLabel);
0130 temp.addParameter("@module_type", iType);
0131 temp.addParameter("@module_edm_type", iCppType);
0132 return temp;
0133 }
0134
0135 void testmakeprocess::moduleTest() {
0136 char const* kTest =
0137 "import FWCore.ParameterSet.Config as cms\n"
0138 "process = cms.Process('test')\n"
0139 "process.cones = cms.EDFilter('Module',\n"
0140 " s = cms.int32(1)\n"
0141 ")\n"
0142 "process.NoLabelModule = cms.ESProducer('NoLabelModule',\n"
0143 " s = cms.int32(1)\n"
0144 ")\n"
0145 "process.labeled = cms.ESProducer('LabelModule',\n"
0146 " s = cms.int32(1)\n"
0147 ")\n"
0148 "process.source = cms.Source('InputSource',\n"
0149 " s = cms.int32(1)\n"
0150 ")\n"
0151 "process.NoLabelRetriever = cms.ESSource('NoLabelRetriever',\n"
0152 " s = cms.int32(1)\n"
0153 ")\n"
0154 "process.label = cms.ESSource('LabelRetriever',\n"
0155 " s = cms.int32(1)\n"
0156 ")\n"
0157 "process.p = cms.Path(process.cones)\n";
0158
0159 ParameterSetPtr test = pSet(kTest);
0160
0161 static edm::ParameterSet const kEmpty;
0162 edm::ParameterSet const kCone(modulePSet("cones", "Module", "EDFilter"));
0163 std::ostringstream out;
0164 out << kCone.toString() << std::endl;
0165 out << test->getParameterSet("cones").toString() << std::endl;
0166
0167 edm::ParameterSet const kMainInput(modulePSet("@main_input", "InputSource", "Source"));
0168
0169 edm::ParameterSet const kNoLabelModule(modulePSet("", "NoLabelModule", "ESProducer"));
0170 edm::ParameterSet const kLabelModule(modulePSet("labeled", "LabelModule", "ESProducer"));
0171 edm::ParameterSet const kNoLabelRetriever(modulePSet("", "NoLabelRetriever", "ESSource"));
0172 edm::ParameterSet const kLabelRetriever(modulePSet("label", "LabelRetriever", "ESSource"));
0173
0174 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("cones")));
0175 CPPUNIT_ASSERT(kCone == test->getParameterSet("cones"));
0176
0177 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("@main_input")));
0178 CPPUNIT_ASSERT(kMainInput == (test->getParameterSet("@main_input")));
0179
0180 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("NoLabelModule@")));
0181 CPPUNIT_ASSERT(kNoLabelModule == test->getParameterSet("NoLabelModule@"));
0182
0183 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("LabelModule@labeled")));
0184 CPPUNIT_ASSERT(kLabelModule == test->getParameterSet("LabelModule@labeled"));
0185
0186 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("NoLabelRetriever@")));
0187 CPPUNIT_ASSERT(kNoLabelRetriever == test->getParameterSet("NoLabelRetriever@"));
0188
0189 CPPUNIT_ASSERT(kEmpty != (test->getParameterSet("LabelRetriever@label")));
0190 CPPUNIT_ASSERT(kLabelRetriever == test->getParameterSet("LabelRetriever@label"));
0191 }
0192
0193 void testmakeprocess::emptyModuleTest() {
0194 char const* kTest =
0195 "import FWCore.ParameterSet.Config as cms\n"
0196 "process = cms.Process('test')\n"
0197 "process.thing = cms.EDFilter('XX')\n"
0198 "process.p = cms.Path(process.thing)\n";
0199
0200 ParameterSetPtr test = pSet(kTest);
0201
0202 edm::ParameterSet& myparams = *(test);
0203 myparams.registerIt();
0204 std::string rep = myparams.toString();
0205 edm::ParameterSet copy(rep);
0206 CPPUNIT_ASSERT(copy == myparams);
0207 }
0208
0209 void testmakeprocess::taskTest() {
0210 char const* kTest =
0211 "import FWCore.ParameterSet.Config as cms\n"
0212 "process = cms.Process('test')\n"
0213 "process.load(\"FWCore.PythonParameterSet.test.testTask_cff\")\n"
0214 "t10 = cms.Task(process.m29, process.m30, process.f29, process.f30,"
0215 "process.ess27, process.ess28, process.esp27, process.esp28,"
0216 "process.serv27, process.serv28)\n";
0217
0218 ParameterSetPtr test = pSet(kTest);
0219
0220 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("m1") && !test->existsAs<edm::ParameterSet>("m2") &&
0221 test->existsAs<edm::ParameterSet>("m3") && test->existsAs<edm::ParameterSet>("m4") &&
0222 test->existsAs<edm::ParameterSet>("m5") && test->existsAs<edm::ParameterSet>("m6") &&
0223 test->existsAs<edm::ParameterSet>("m7") && test->existsAs<edm::ParameterSet>("m8") &&
0224 test->existsAs<edm::ParameterSet>("m9") && test->existsAs<edm::ParameterSet>("m10") &&
0225 test->existsAs<edm::ParameterSet>("m11") && test->existsAs<edm::ParameterSet>("m12") &&
0226 test->existsAs<edm::ParameterSet>("m13") && test->existsAs<edm::ParameterSet>("m14") &&
0227 test->existsAs<edm::ParameterSet>("m15") && test->existsAs<edm::ParameterSet>("m16") &&
0228 test->existsAs<edm::ParameterSet>("m17") && test->existsAs<edm::ParameterSet>("m18") &&
0229 test->existsAs<edm::ParameterSet>("m19") && test->existsAs<edm::ParameterSet>("m20") &&
0230 test->existsAs<edm::ParameterSet>("m21") && test->existsAs<edm::ParameterSet>("m22") &&
0231 test->existsAs<edm::ParameterSet>("m23") && test->existsAs<edm::ParameterSet>("m24") &&
0232 test->existsAs<edm::ParameterSet>("m25") && test->existsAs<edm::ParameterSet>("m26") &&
0233 !test->existsAs<edm::ParameterSet>("m27") && !test->existsAs<edm::ParameterSet>("m28") &&
0234 !test->existsAs<edm::ParameterSet>("m29") && !test->existsAs<edm::ParameterSet>("m30"));
0235
0236 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("f1") && !test->existsAs<edm::ParameterSet>("f2") &&
0237 test->existsAs<edm::ParameterSet>("f3") && test->existsAs<edm::ParameterSet>("f4") &&
0238 test->existsAs<edm::ParameterSet>("f5") && test->existsAs<edm::ParameterSet>("f6") &&
0239 test->existsAs<edm::ParameterSet>("f7") && test->existsAs<edm::ParameterSet>("f8") &&
0240 test->existsAs<edm::ParameterSet>("f9") && test->existsAs<edm::ParameterSet>("f10") &&
0241 test->existsAs<edm::ParameterSet>("f11") && test->existsAs<edm::ParameterSet>("f12") &&
0242 test->existsAs<edm::ParameterSet>("f13") && test->existsAs<edm::ParameterSet>("f14") &&
0243 test->existsAs<edm::ParameterSet>("f15") && test->existsAs<edm::ParameterSet>("f16") &&
0244 test->existsAs<edm::ParameterSet>("f17") && test->existsAs<edm::ParameterSet>("f18") &&
0245 test->existsAs<edm::ParameterSet>("f19") && test->existsAs<edm::ParameterSet>("f20") &&
0246 test->existsAs<edm::ParameterSet>("f21") && test->existsAs<edm::ParameterSet>("f22") &&
0247 test->existsAs<edm::ParameterSet>("f23") && test->existsAs<edm::ParameterSet>("f24") &&
0248 test->existsAs<edm::ParameterSet>("f25") && test->existsAs<edm::ParameterSet>("f26") &&
0249 !test->existsAs<edm::ParameterSet>("f27") && !test->existsAs<edm::ParameterSet>("f28") &&
0250 !test->existsAs<edm::ParameterSet>("f29") && !test->existsAs<edm::ParameterSet>("f30"));
0251
0252 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("a1") && !test->existsAs<edm::ParameterSet>("a2") &&
0253 test->existsAs<edm::ParameterSet>("a3") && test->existsAs<edm::ParameterSet>("a4") &&
0254 test->existsAs<edm::ParameterSet>("a5") && test->existsAs<edm::ParameterSet>("a6") &&
0255 test->existsAs<edm::ParameterSet>("a7") && test->existsAs<edm::ParameterSet>("a8") &&
0256 test->existsAs<edm::ParameterSet>("a9") && test->existsAs<edm::ParameterSet>("a10"));
0257
0258 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("o1") && !test->existsAs<edm::ParameterSet>("o2") &&
0259 test->existsAs<edm::ParameterSet>("o7") && test->existsAs<edm::ParameterSet>("o8") &&
0260 test->existsAs<edm::ParameterSet>("o9") && test->existsAs<edm::ParameterSet>("o10"));
0261
0262 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("ess@ess1") && test->existsAs<edm::ParameterSet>("ess2@") &&
0263 !test->existsAs<edm::ParameterSet>("ess@ess3") && !test->existsAs<edm::ParameterSet>("ess4@") &&
0264 test->existsAs<edm::ParameterSet>("ess@ess11") && test->existsAs<edm::ParameterSet>("ess12@") &&
0265 test->existsAs<edm::ParameterSet>("ess@ess13") && test->existsAs<edm::ParameterSet>("ess14@") &&
0266 test->existsAs<edm::ParameterSet>("ess@ess15") && test->existsAs<edm::ParameterSet>("ess16@") &&
0267 test->existsAs<edm::ParameterSet>("ess@ess17") && test->existsAs<edm::ParameterSet>("ess18@") &&
0268 test->existsAs<edm::ParameterSet>("ess@ess19") && test->existsAs<edm::ParameterSet>("ess20@") &&
0269 test->existsAs<edm::ParameterSet>("ess@ess21") && test->existsAs<edm::ParameterSet>("ess22@") &&
0270 test->existsAs<edm::ParameterSet>("ess@ess23") && test->existsAs<edm::ParameterSet>("ess24@") &&
0271 test->existsAs<edm::ParameterSet>("ess@ess25") && test->existsAs<edm::ParameterSet>("ess26@") &&
0272 test->existsAs<edm::ParameterSet>("ess@ess27") && test->existsAs<edm::ParameterSet>("ess28@"));
0273
0274 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("esp@esp1") && test->existsAs<edm::ParameterSet>("esp2@") &&
0275 !test->existsAs<edm::ParameterSet>("esp@esp3") && !test->existsAs<edm::ParameterSet>("esp4@") &&
0276 test->existsAs<edm::ParameterSet>("esp@esp11") && test->existsAs<edm::ParameterSet>("esp12@") &&
0277 test->existsAs<edm::ParameterSet>("esp@esp13") && test->existsAs<edm::ParameterSet>("esp14@") &&
0278 test->existsAs<edm::ParameterSet>("esp@esp15") && test->existsAs<edm::ParameterSet>("esp16@") &&
0279 test->existsAs<edm::ParameterSet>("esp@esp17") && test->existsAs<edm::ParameterSet>("esp18@") &&
0280 test->existsAs<edm::ParameterSet>("esp@esp19") && test->existsAs<edm::ParameterSet>("esp20@") &&
0281 test->existsAs<edm::ParameterSet>("esp@esp21") && test->existsAs<edm::ParameterSet>("esp22@") &&
0282 test->existsAs<edm::ParameterSet>("esp@esp23") && test->existsAs<edm::ParameterSet>("esp24@") &&
0283 test->existsAs<edm::ParameterSet>("esp@esp25") && test->existsAs<edm::ParameterSet>("esp26@") &&
0284 test->existsAs<edm::ParameterSet>("esp@esp27") && test->existsAs<edm::ParameterSet>("esp28@"));
0285
0286 std::vector<edm::ParameterSet> const& vpsetServices = test->getUntrackedParameterSetVector("services");
0287
0288
0289
0290 std::set<std::string> serviceNames;
0291 for (auto const& pset : vpsetServices) {
0292 serviceNames.insert(pset.getParameter<std::string>("@service_type"));
0293 }
0294 std::vector<std::string> expectedServiceNames{"MessageLogger", "serv1", "serv2", "serv11", "serv12", "serv13",
0295 "serv14", "serv15", "serv16", "serv17", "serv18", "serv19",
0296 "serv20", "serv21", "serv22", "serv23", "serv24", "serv25",
0297 "serv26", "serv27", "serv28"};
0298 bool result = true;
0299 for (auto const& name : expectedServiceNames) {
0300 if (serviceNames.find(name) == serviceNames.end()) {
0301 result = false;
0302 }
0303 }
0304 if (serviceNames.size() != expectedServiceNames.size()) {
0305 result = false;
0306 }
0307 CPPUNIT_ASSERT(result);
0308 }
0309
0310 void testmakeprocess::taskTestWithEmptySchedule() {
0311 char const* kTest =
0312 "import FWCore.ParameterSet.Config as cms\n"
0313 "process = cms.Process('test')\n"
0314 "process.load(\"FWCore.PythonParameterSet.test.testTask_cff\")\n"
0315 "t10 = cms.Task(process.m29, process.m30, process.f29, process.f30,"
0316 "process.ess27, process.ess28, process.esp27, process.esp28,"
0317 "process.serv27, process.serv28)\n"
0318 "process.schedule = cms.Schedule()\n";
0319
0320 ParameterSetPtr test = pSet(kTest);
0321
0322 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("m1") && !test->existsAs<edm::ParameterSet>("m2") &&
0323 !test->existsAs<edm::ParameterSet>("m3") && !test->existsAs<edm::ParameterSet>("m4") &&
0324 !test->existsAs<edm::ParameterSet>("m5") && !test->existsAs<edm::ParameterSet>("m6") &&
0325 !test->existsAs<edm::ParameterSet>("m7") && !test->existsAs<edm::ParameterSet>("m8") &&
0326 !test->existsAs<edm::ParameterSet>("m9") && !test->existsAs<edm::ParameterSet>("m10") &&
0327 !test->existsAs<edm::ParameterSet>("m11") && !test->existsAs<edm::ParameterSet>("m12") &&
0328 !test->existsAs<edm::ParameterSet>("m13") && !test->existsAs<edm::ParameterSet>("m14") &&
0329 !test->existsAs<edm::ParameterSet>("m15") && !test->existsAs<edm::ParameterSet>("m16") &&
0330 !test->existsAs<edm::ParameterSet>("m17") && !test->existsAs<edm::ParameterSet>("m18") &&
0331 !test->existsAs<edm::ParameterSet>("m19") && !test->existsAs<edm::ParameterSet>("m20") &&
0332 !test->existsAs<edm::ParameterSet>("m21") && !test->existsAs<edm::ParameterSet>("m22") &&
0333 !test->existsAs<edm::ParameterSet>("m23") && !test->existsAs<edm::ParameterSet>("m24") &&
0334 !test->existsAs<edm::ParameterSet>("m25") && !test->existsAs<edm::ParameterSet>("m26") &&
0335 !test->existsAs<edm::ParameterSet>("m27") && !test->existsAs<edm::ParameterSet>("m28") &&
0336 !test->existsAs<edm::ParameterSet>("m29") && !test->existsAs<edm::ParameterSet>("m30"));
0337
0338 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("f1") && !test->existsAs<edm::ParameterSet>("f2") &&
0339 !test->existsAs<edm::ParameterSet>("f3") && !test->existsAs<edm::ParameterSet>("f4") &&
0340 !test->existsAs<edm::ParameterSet>("f5") && !test->existsAs<edm::ParameterSet>("f6") &&
0341 !test->existsAs<edm::ParameterSet>("f7") && !test->existsAs<edm::ParameterSet>("f8") &&
0342 !test->existsAs<edm::ParameterSet>("f9") && !test->existsAs<edm::ParameterSet>("f10") &&
0343 !test->existsAs<edm::ParameterSet>("f11") && !test->existsAs<edm::ParameterSet>("f12") &&
0344 !test->existsAs<edm::ParameterSet>("f13") && !test->existsAs<edm::ParameterSet>("f14") &&
0345 !test->existsAs<edm::ParameterSet>("f15") && !test->existsAs<edm::ParameterSet>("f16") &&
0346 !test->existsAs<edm::ParameterSet>("f17") && !test->existsAs<edm::ParameterSet>("f18") &&
0347 !test->existsAs<edm::ParameterSet>("f19") && !test->existsAs<edm::ParameterSet>("f20") &&
0348 !test->existsAs<edm::ParameterSet>("f21") && !test->existsAs<edm::ParameterSet>("f22") &&
0349 !test->existsAs<edm::ParameterSet>("f23") && !test->existsAs<edm::ParameterSet>("f24") &&
0350 !test->existsAs<edm::ParameterSet>("f25") && !test->existsAs<edm::ParameterSet>("f26") &&
0351 !test->existsAs<edm::ParameterSet>("f27") && !test->existsAs<edm::ParameterSet>("f28") &&
0352 !test->existsAs<edm::ParameterSet>("f29") && !test->existsAs<edm::ParameterSet>("f30"));
0353
0354 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("a1") && !test->existsAs<edm::ParameterSet>("a2") &&
0355 !test->existsAs<edm::ParameterSet>("a3") && !test->existsAs<edm::ParameterSet>("a4") &&
0356 !test->existsAs<edm::ParameterSet>("a5") && !test->existsAs<edm::ParameterSet>("a6") &&
0357 !test->existsAs<edm::ParameterSet>("a7") && !test->existsAs<edm::ParameterSet>("a8") &&
0358 !test->existsAs<edm::ParameterSet>("a9") && !test->existsAs<edm::ParameterSet>("a10"));
0359
0360 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("o1") && !test->existsAs<edm::ParameterSet>("o2") &&
0361 !test->existsAs<edm::ParameterSet>("o7") && !test->existsAs<edm::ParameterSet>("o8") &&
0362 !test->existsAs<edm::ParameterSet>("o9") && !test->existsAs<edm::ParameterSet>("o10"));
0363
0364 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("ess@ess1") && test->existsAs<edm::ParameterSet>("ess2@") &&
0365 !test->existsAs<edm::ParameterSet>("ess@ess3") && !test->existsAs<edm::ParameterSet>("ess4@") &&
0366 !test->existsAs<edm::ParameterSet>("ess@ess11") && !test->existsAs<edm::ParameterSet>("ess12@") &&
0367 !test->existsAs<edm::ParameterSet>("ess@ess13") && !test->existsAs<edm::ParameterSet>("ess14@") &&
0368 !test->existsAs<edm::ParameterSet>("ess@ess15") && !test->existsAs<edm::ParameterSet>("ess16@") &&
0369 !test->existsAs<edm::ParameterSet>("ess@ess17") && !test->existsAs<edm::ParameterSet>("ess18@") &&
0370 !test->existsAs<edm::ParameterSet>("ess@ess19") && !test->existsAs<edm::ParameterSet>("ess20@") &&
0371 !test->existsAs<edm::ParameterSet>("ess@ess21") && !test->existsAs<edm::ParameterSet>("ess22@") &&
0372 !test->existsAs<edm::ParameterSet>("ess@ess23") && !test->existsAs<edm::ParameterSet>("ess24@") &&
0373 !test->existsAs<edm::ParameterSet>("ess@ess25") && !test->existsAs<edm::ParameterSet>("ess26@") &&
0374 test->existsAs<edm::ParameterSet>("ess@ess27") && test->existsAs<edm::ParameterSet>("ess28@"));
0375
0376 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("esp@esp1") && test->existsAs<edm::ParameterSet>("esp2@") &&
0377 !test->existsAs<edm::ParameterSet>("esp@esp3") && !test->existsAs<edm::ParameterSet>("esp4@") &&
0378 !test->existsAs<edm::ParameterSet>("esp@esp11") && !test->existsAs<edm::ParameterSet>("esp12@") &&
0379 !test->existsAs<edm::ParameterSet>("esp@esp13") && !test->existsAs<edm::ParameterSet>("esp14@") &&
0380 !test->existsAs<edm::ParameterSet>("esp@esp15") && !test->existsAs<edm::ParameterSet>("esp16@") &&
0381 !test->existsAs<edm::ParameterSet>("esp@esp17") && !test->existsAs<edm::ParameterSet>("esp18@") &&
0382 !test->existsAs<edm::ParameterSet>("esp@esp19") && !test->existsAs<edm::ParameterSet>("esp20@") &&
0383 !test->existsAs<edm::ParameterSet>("esp@esp21") && !test->existsAs<edm::ParameterSet>("esp22@") &&
0384 !test->existsAs<edm::ParameterSet>("esp@esp23") && !test->existsAs<edm::ParameterSet>("esp24@") &&
0385 !test->existsAs<edm::ParameterSet>("esp@esp25") && !test->existsAs<edm::ParameterSet>("esp26@") &&
0386 test->existsAs<edm::ParameterSet>("esp@esp27") && test->existsAs<edm::ParameterSet>("esp28@"));
0387
0388 std::vector<edm::ParameterSet> const& vpsetServices = test->getUntrackedParameterSetVector("services");
0389
0390
0391
0392 std::set<std::string> serviceNames;
0393 for (auto const& pset : vpsetServices) {
0394 serviceNames.insert(pset.getParameter<std::string>("@service_type"));
0395 }
0396 std::vector<std::string> expectedServiceNames{"MessageLogger", "serv1", "serv2", "serv27", "serv28"};
0397 bool result = true;
0398 for (auto const& name : expectedServiceNames) {
0399 if (serviceNames.find(name) == serviceNames.end()) {
0400 result = false;
0401 }
0402 }
0403 if (serviceNames.size() != expectedServiceNames.size()) {
0404 result = false;
0405 }
0406 CPPUNIT_ASSERT(result);
0407 }
0408
0409 void testmakeprocess::taskTestWithSchedule() {
0410 char const* kTest =
0411 "import FWCore.ParameterSet.Config as cms\n"
0412 "process = cms.Process('test')\n"
0413 "process.load(\"FWCore.PythonParameterSet.test.testTask_cff\")\n"
0414 "t10 = cms.Task(process.m29, process.m30, process.f29, process.f30,"
0415 "process.ess27, process.ess28, process.esp27, process.esp28,"
0416 "process.serv27, process.serv28)\n"
0417 "process.schedule = cms.Schedule(process.p1, process.p2, process.e1, process.e2,"
0418 "process.pf1, process.pf2, process.ef1, process.ef2,"
0419 "process.pa1, process.pa2, process.ea1, process.ea2,"
0420 "process.eo1, process.eo2, process.pess2, process.eess2,"
0421 "process.pesp2, process.eesp2, process.pserv2, process.eserv2,"
0422 "tasks=[process.t9, process.tf9, process.tess10,process.tesp10,"
0423 "process.tserv10])\n";
0424
0425 ParameterSetPtr test = pSet(kTest);
0426
0427 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("m1") && !test->existsAs<edm::ParameterSet>("m2") &&
0428 test->existsAs<edm::ParameterSet>("m3") && test->existsAs<edm::ParameterSet>("m4") &&
0429 test->existsAs<edm::ParameterSet>("m5") && test->existsAs<edm::ParameterSet>("m6") &&
0430 test->existsAs<edm::ParameterSet>("m7") && test->existsAs<edm::ParameterSet>("m8") &&
0431 test->existsAs<edm::ParameterSet>("m9") && test->existsAs<edm::ParameterSet>("m10") &&
0432 test->existsAs<edm::ParameterSet>("m11") && test->existsAs<edm::ParameterSet>("m12") &&
0433 test->existsAs<edm::ParameterSet>("m13") && test->existsAs<edm::ParameterSet>("m14") &&
0434 test->existsAs<edm::ParameterSet>("m15") && test->existsAs<edm::ParameterSet>("m16") &&
0435 test->existsAs<edm::ParameterSet>("m17") && test->existsAs<edm::ParameterSet>("m18") &&
0436 test->existsAs<edm::ParameterSet>("m19") && test->existsAs<edm::ParameterSet>("m20") &&
0437 test->existsAs<edm::ParameterSet>("m21") && test->existsAs<edm::ParameterSet>("m22") &&
0438 test->existsAs<edm::ParameterSet>("m23") && test->existsAs<edm::ParameterSet>("m24") &&
0439 test->existsAs<edm::ParameterSet>("m25") && test->existsAs<edm::ParameterSet>("m26") &&
0440 test->existsAs<edm::ParameterSet>("m27") && test->existsAs<edm::ParameterSet>("m28") &&
0441 !test->existsAs<edm::ParameterSet>("m29") && !test->existsAs<edm::ParameterSet>("m30"));
0442
0443 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("f1") && !test->existsAs<edm::ParameterSet>("f2") &&
0444 test->existsAs<edm::ParameterSet>("f3") && test->existsAs<edm::ParameterSet>("f4") &&
0445 test->existsAs<edm::ParameterSet>("f5") && test->existsAs<edm::ParameterSet>("f6") &&
0446 test->existsAs<edm::ParameterSet>("f7") && test->existsAs<edm::ParameterSet>("f8") &&
0447 test->existsAs<edm::ParameterSet>("f9") && test->existsAs<edm::ParameterSet>("f10") &&
0448 test->existsAs<edm::ParameterSet>("f11") && test->existsAs<edm::ParameterSet>("f12") &&
0449 test->existsAs<edm::ParameterSet>("f13") && test->existsAs<edm::ParameterSet>("f14") &&
0450 test->existsAs<edm::ParameterSet>("f15") && test->existsAs<edm::ParameterSet>("f16") &&
0451 test->existsAs<edm::ParameterSet>("f17") && test->existsAs<edm::ParameterSet>("f18") &&
0452 test->existsAs<edm::ParameterSet>("f19") && test->existsAs<edm::ParameterSet>("f20") &&
0453 test->existsAs<edm::ParameterSet>("f21") && test->existsAs<edm::ParameterSet>("f22") &&
0454 test->existsAs<edm::ParameterSet>("f23") && test->existsAs<edm::ParameterSet>("f24") &&
0455 test->existsAs<edm::ParameterSet>("f25") && test->existsAs<edm::ParameterSet>("f26") &&
0456 test->existsAs<edm::ParameterSet>("f27") && test->existsAs<edm::ParameterSet>("f28") &&
0457 !test->existsAs<edm::ParameterSet>("f29") && !test->existsAs<edm::ParameterSet>("f30"));
0458
0459 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("a1") && !test->existsAs<edm::ParameterSet>("a2") &&
0460 test->existsAs<edm::ParameterSet>("a3") && test->existsAs<edm::ParameterSet>("a4") &&
0461 test->existsAs<edm::ParameterSet>("a5") && test->existsAs<edm::ParameterSet>("a6") &&
0462 test->existsAs<edm::ParameterSet>("a7") && test->existsAs<edm::ParameterSet>("a8") &&
0463 test->existsAs<edm::ParameterSet>("a9") && test->existsAs<edm::ParameterSet>("a10"));
0464
0465 CPPUNIT_ASSERT(!test->existsAs<edm::ParameterSet>("o1") && !test->existsAs<edm::ParameterSet>("o2") &&
0466 test->existsAs<edm::ParameterSet>("o7") && test->existsAs<edm::ParameterSet>("o8") &&
0467 test->existsAs<edm::ParameterSet>("o9") && test->existsAs<edm::ParameterSet>("o10"));
0468
0469 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("ess@ess1") && test->existsAs<edm::ParameterSet>("ess2@") &&
0470 test->existsAs<edm::ParameterSet>("ess@ess3") && test->existsAs<edm::ParameterSet>("ess4@") &&
0471 test->existsAs<edm::ParameterSet>("ess@ess11") && test->existsAs<edm::ParameterSet>("ess12@") &&
0472 test->existsAs<edm::ParameterSet>("ess@ess13") && test->existsAs<edm::ParameterSet>("ess14@") &&
0473 test->existsAs<edm::ParameterSet>("ess@ess15") && test->existsAs<edm::ParameterSet>("ess16@") &&
0474 test->existsAs<edm::ParameterSet>("ess@ess17") && test->existsAs<edm::ParameterSet>("ess18@") &&
0475 test->existsAs<edm::ParameterSet>("ess@ess19") && test->existsAs<edm::ParameterSet>("ess20@") &&
0476 test->existsAs<edm::ParameterSet>("ess@ess21") && test->existsAs<edm::ParameterSet>("ess22@") &&
0477 test->existsAs<edm::ParameterSet>("ess@ess23") && test->existsAs<edm::ParameterSet>("ess24@") &&
0478 test->existsAs<edm::ParameterSet>("ess@ess25") && test->existsAs<edm::ParameterSet>("ess26@") &&
0479 test->existsAs<edm::ParameterSet>("ess@ess27") && test->existsAs<edm::ParameterSet>("ess28@"));
0480
0481 CPPUNIT_ASSERT(test->existsAs<edm::ParameterSet>("esp@esp1") && test->existsAs<edm::ParameterSet>("esp2@") &&
0482 test->existsAs<edm::ParameterSet>("esp@esp3") && test->existsAs<edm::ParameterSet>("esp4@") &&
0483 test->existsAs<edm::ParameterSet>("esp@esp11") && test->existsAs<edm::ParameterSet>("esp12@") &&
0484 test->existsAs<edm::ParameterSet>("esp@esp13") && test->existsAs<edm::ParameterSet>("esp14@") &&
0485 test->existsAs<edm::ParameterSet>("esp@esp15") && test->existsAs<edm::ParameterSet>("esp16@") &&
0486 test->existsAs<edm::ParameterSet>("esp@esp17") && test->existsAs<edm::ParameterSet>("esp18@") &&
0487 test->existsAs<edm::ParameterSet>("esp@esp19") && test->existsAs<edm::ParameterSet>("esp20@") &&
0488 test->existsAs<edm::ParameterSet>("esp@esp21") && test->existsAs<edm::ParameterSet>("esp22@") &&
0489 test->existsAs<edm::ParameterSet>("esp@esp23") && test->existsAs<edm::ParameterSet>("esp24@") &&
0490 test->existsAs<edm::ParameterSet>("esp@esp25") && test->existsAs<edm::ParameterSet>("esp26@") &&
0491 test->existsAs<edm::ParameterSet>("esp@esp27") && test->existsAs<edm::ParameterSet>("esp28@"));
0492
0493 std::vector<edm::ParameterSet> const& vpsetServices = test->getUntrackedParameterSetVector("services");
0494
0495
0496
0497 std::set<std::string> serviceNames;
0498 for (auto const& pset : vpsetServices) {
0499 serviceNames.insert(pset.getParameter<std::string>("@service_type"));
0500 }
0501 std::vector<std::string> expectedServiceNames{"MessageLogger", "serv1", "serv2", "serv3", "serv4", "serv11",
0502 "serv12", "serv13", "serv14", "serv15", "serv16", "serv17",
0503 "serv18", "serv19", "serv20", "serv21", "serv22", "serv23",
0504 "serv24", "serv25", "serv26", "serv27", "serv28"};
0505 bool result = true;
0506 for (auto const& name : expectedServiceNames) {
0507 if (serviceNames.find(name) == serviceNames.end()) {
0508 result = false;
0509 }
0510 }
0511 if (serviceNames.size() != expectedServiceNames.size()) {
0512 result = false;
0513 }
0514 CPPUNIT_ASSERT(result);
0515 }
0516
0517 void testmakeprocess::edmException() {
0518 {
0519 char const* const kTest =
0520 "import FWCore.ParameterSet.Config as cms\n"
0521 "raise cms.EDMException(cms.edm.errors.Configuration,'test message')\n";
0522
0523 bool exceptionHappened = false;
0524 try {
0525 (void)pSet(kTest);
0526 } catch (edm::Exception const& e) {
0527 exceptionHappened = true;
0528 CPPUNIT_ASSERT(e.categoryCode() == edm::errors::Configuration);
0529 } catch (std::exception const& e) {
0530 std::cout << "wrong error " << e.what() << std::endl;
0531 exceptionHappened = true;
0532 CPPUNIT_ASSERT(false);
0533 }
0534 CPPUNIT_ASSERT(exceptionHappened);
0535 }
0536
0537 {
0538 char const* const kTest =
0539 "import FWCore.ParameterSet.Config as cms\n"
0540 "raise cms.EDMException(cms.edm.errors.UnavailableAccelerator,'test message')\n";
0541
0542 bool exceptionHappened = false;
0543 try {
0544 (void)pSet(kTest);
0545 } catch (edm::Exception const& e) {
0546 exceptionHappened = true;
0547 CPPUNIT_ASSERT(e.categoryCode() == edm::errors::UnavailableAccelerator);
0548 } catch (std::exception const& e) {
0549 std::cout << "wrong error " << e.what() << std::endl;
0550 exceptionHappened = true;
0551 CPPUNIT_ASSERT(false);
0552 }
0553 CPPUNIT_ASSERT(exceptionHappened);
0554 }
0555 }
0556
0557
0558
0559
0560
0561
0562
0563
0564
0565
0566
0567
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599
0600