File indexing completed on 2024-07-28 22:48:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "DataFormats/Provenance/interface/EventID.h"
0015 #include "DataFormats/Provenance/interface/RunLumiEventNumber.h"
0016 #include "FWCore/Framework/interface/Event.h"
0017 #include "FWCore/Framework/interface/Frameworkfwd.h"
0018 #include "FWCore/Framework/interface/global/EDProducer.h"
0019 #include "FWCore/Framework/interface/MakerMacros.h"
0020 #include "FWCore/Integration/plugins/TestServiceOne.h"
0021 #include "FWCore/Integration/plugins/TestServiceTwo.h"
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0026 #include "FWCore/ServiceRegistry/interface/Service.h"
0027 #include "FWCore/Utilities/interface/Exception.h"
0028 #include "FWCore/Utilities/interface/StreamID.h"
0029
0030 #include <atomic>
0031 #include <limits>
0032 #include <memory>
0033
0034 constexpr unsigned int kTestStreams = 4;
0035 constexpr unsigned int kUnset = std::numeric_limits<unsigned int>::max();
0036 constexpr unsigned int kNumberOfTestModules = 2;
0037
0038 constexpr unsigned int kNumberOfModulesWithJobTransitions = 6;
0039 constexpr unsigned int kNumberOfModulesWithStreamTransitions = 3;
0040 constexpr unsigned int kNumberOfModulesWithProcessBlockTransitions = 2;
0041 constexpr unsigned int kStreamToThrowOn = 2;
0042
0043 namespace edmtest {
0044
0045 namespace {
0046 struct Cache {};
0047 }
0048
0049 class ExceptionThrowingProducer : public edm::global::EDProducer<edm::StreamCache<Cache>,
0050 edm::RunCache<Cache>,
0051 edm::LuminosityBlockCache<Cache>,
0052 edm::WatchProcessBlock> {
0053 public:
0054 explicit ExceptionThrowingProducer(edm::ParameterSet const&);
0055
0056 ~ExceptionThrowingProducer() noexcept(false) override;
0057 ExceptionThrowingProducer(const ExceptionThrowingProducer&) = delete;
0058 ExceptionThrowingProducer& operator=(const ExceptionThrowingProducer&) = delete;
0059 ExceptionThrowingProducer(ExceptionThrowingProducer&&) = delete;
0060 ExceptionThrowingProducer& operator=(ExceptionThrowingProducer&&) = delete;
0061
0062 void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
0063
0064 std::shared_ptr<Cache> globalBeginRun(edm::Run const&, edm::EventSetup const&) const override;
0065 void globalEndRun(edm::Run const&, edm::EventSetup const&) const override;
0066 std::shared_ptr<Cache> globalBeginLuminosityBlock(edm::LuminosityBlock const&,
0067 edm::EventSetup const&) const override;
0068 void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) const override;
0069
0070 std::unique_ptr<Cache> beginStream(edm::StreamID) const override;
0071 void streamBeginRun(edm::StreamID, edm::Run const&, edm::EventSetup const&) const override;
0072 void streamBeginLuminosityBlock(edm::StreamID, edm::LuminosityBlock const&, edm::EventSetup const&) const override;
0073 void streamEndLuminosityBlock(edm::StreamID, edm::LuminosityBlock const&, edm::EventSetup const&) const override;
0074 void streamEndRun(edm::StreamID, edm::Run const&, edm::EventSetup const&) const override;
0075 void endStream(edm::StreamID) const override;
0076
0077 void beginProcessBlock(edm::ProcessBlock const& processBlock) override;
0078 void endProcessBlock(edm::ProcessBlock const& processBlock) override;
0079
0080 void beginJob() override;
0081 void endJob() override;
0082
0083 static void fillDescriptions(edm::ConfigurationDescriptions&);
0084
0085 private:
0086 const bool verbose_;
0087
0088 const edm::EventID eventIDThrowOnEvent_;
0089 const edm::EventID eventIDThrowOnGlobalBeginRun_;
0090 const edm::EventID eventIDThrowOnGlobalBeginLumi_;
0091 const edm::EventID eventIDThrowOnGlobalEndRun_;
0092 const edm::EventID eventIDThrowOnGlobalEndLumi_;
0093 const edm::EventID eventIDThrowOnStreamBeginRun_;
0094 const edm::EventID eventIDThrowOnStreamBeginLumi_;
0095 const edm::EventID eventIDThrowOnStreamEndRun_;
0096 const edm::EventID eventIDThrowOnStreamEndLumi_;
0097 const bool throwInBeginJob_;
0098 const bool throwInBeginStream_;
0099 const bool throwInBeginProcessBlock_;
0100 const bool throwInEndProcessBlock_;
0101 const bool throwInEndStream_;
0102 const bool throwInEndJob_;
0103
0104 unsigned int nBeginJob_ = 0;
0105 mutable std::atomic<unsigned int> nBeginStream_{0};
0106 unsigned int nBeginProcessBlock_ = 0;
0107 unsigned int nEndProcessBlock_ = 0;
0108 mutable std::atomic<unsigned int> nEndStream_{0};
0109 unsigned int nEndJob_ = 0;
0110
0111 mutable std::vector<unsigned int> nStreamBeginLumi_;
0112 mutable std::vector<unsigned int> nStreamEndLumi_;
0113 mutable std::atomic<unsigned int> nGlobalBeginLumi_{0};
0114 mutable std::atomic<unsigned int> nGlobalEndLumi_{0};
0115
0116 mutable std::vector<unsigned int> nStreamBeginRun_;
0117 mutable std::vector<unsigned int> nStreamEndRun_;
0118 mutable std::atomic<unsigned int> nGlobalBeginRun_{0};
0119 mutable std::atomic<unsigned int> nGlobalEndRun_{0};
0120
0121 const unsigned int expectedNBeginJob_;
0122 const unsigned int expectedNBeginStream_;
0123 const unsigned int expectedNBeginProcessBlock_;
0124 const unsigned int expectedNEndProcessBlock_;
0125 const unsigned int expectedNEndStream_;
0126 const unsigned int expectedNEndJob_;
0127 const bool expectNoRunsProcessed_;
0128
0129 const unsigned int expectedOffsetNoEndJob_;
0130 const unsigned int expectedOffsetNoEndStream_;
0131 const unsigned int expectedOffsetNoEndProcessBlock_;
0132
0133 const unsigned int expectedStreamBeginLumi_;
0134 const unsigned int expectedOffsetNoStreamEndLumi_;
0135 mutable unsigned int streamWithBeginLumiException_ = kUnset;
0136 const unsigned int expectedGlobalBeginLumi_;
0137 const unsigned int expectedOffsetNoGlobalEndLumi_;
0138 const unsigned int expectedOffsetNoWriteLumi_;
0139
0140 const unsigned int expectedStreamBeginRun_;
0141 const unsigned int expectedOffsetNoStreamEndRun_;
0142 mutable unsigned int streamWithBeginRunException_ = kUnset;
0143 const unsigned int expectedGlobalBeginRun_;
0144 const unsigned int expectedOffsetNoGlobalEndRun_;
0145 const unsigned int expectedOffsetNoWriteRun_;
0146
0147 mutable std::atomic<bool> streamBeginLumiExceptionOccurred_ = false;
0148 mutable std::atomic<bool> streamEndLumiExceptionOccurred_ = false;
0149 mutable std::atomic<bool> globalBeginLumiExceptionOccurred_ = false;
0150
0151 mutable std::atomic<bool> streamBeginRunExceptionOccurred_ = false;
0152 mutable std::atomic<bool> streamEndRunExceptionOccurred_ = false;
0153 mutable std::atomic<bool> globalBeginRunExceptionOccurred_ = false;
0154 };
0155
0156 ExceptionThrowingProducer::ExceptionThrowingProducer(edm::ParameterSet const& pset)
0157 : verbose_(pset.getUntrackedParameter<bool>("verbose")),
0158 eventIDThrowOnEvent_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnEvent")),
0159 eventIDThrowOnGlobalBeginRun_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnGlobalBeginRun")),
0160 eventIDThrowOnGlobalBeginLumi_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnGlobalBeginLumi")),
0161 eventIDThrowOnGlobalEndRun_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnGlobalEndRun")),
0162 eventIDThrowOnGlobalEndLumi_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnGlobalEndLumi")),
0163 eventIDThrowOnStreamBeginRun_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnStreamBeginRun")),
0164 eventIDThrowOnStreamBeginLumi_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnStreamBeginLumi")),
0165 eventIDThrowOnStreamEndRun_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnStreamEndRun")),
0166 eventIDThrowOnStreamEndLumi_(pset.getUntrackedParameter<edm::EventID>("eventIDThrowOnStreamEndLumi")),
0167 throwInBeginJob_(pset.getUntrackedParameter<bool>("throwInBeginJob")),
0168 throwInBeginStream_(pset.getUntrackedParameter<bool>("throwInBeginStream")),
0169 throwInBeginProcessBlock_(pset.getUntrackedParameter<bool>("throwInBeginProcessBlock")),
0170 throwInEndProcessBlock_(pset.getUntrackedParameter<bool>("throwInEndProcessBlock")),
0171 throwInEndStream_(pset.getUntrackedParameter<bool>("throwInEndStream")),
0172 throwInEndJob_(pset.getUntrackedParameter<bool>("throwInEndJob")),
0173 nStreamBeginLumi_(kTestStreams, 0),
0174 nStreamEndLumi_(kTestStreams, 0),
0175 nStreamBeginRun_(kTestStreams, 0),
0176 nStreamEndRun_(kTestStreams, 0),
0177 expectedNBeginJob_(pset.getUntrackedParameter<unsigned int>("expectedNBeginJob")),
0178 expectedNBeginStream_(pset.getUntrackedParameter<unsigned int>("expectedNBeginStream")),
0179 expectedNBeginProcessBlock_(pset.getUntrackedParameter<unsigned int>("expectedNBeginProcessBlock")),
0180 expectedNEndProcessBlock_(pset.getUntrackedParameter<unsigned int>("expectedNEndProcessBlock")),
0181 expectedNEndStream_(pset.getUntrackedParameter<unsigned int>("expectedNEndStream")),
0182 expectedNEndJob_(pset.getUntrackedParameter<unsigned int>("expectedNEndJob")),
0183 expectNoRunsProcessed_(pset.getUntrackedParameter<bool>("expectNoRunsProcessed")),
0184 expectedOffsetNoEndJob_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoEndJob")),
0185 expectedOffsetNoEndStream_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoEndStream")),
0186 expectedOffsetNoEndProcessBlock_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoEndProcessBlock")),
0187 expectedStreamBeginLumi_(pset.getUntrackedParameter<unsigned int>("expectedStreamBeginLumi")),
0188 expectedOffsetNoStreamEndLumi_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoStreamEndLumi")),
0189 expectedGlobalBeginLumi_(pset.getUntrackedParameter<unsigned int>("expectedGlobalBeginLumi")),
0190 expectedOffsetNoGlobalEndLumi_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoGlobalEndLumi")),
0191 expectedOffsetNoWriteLumi_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoWriteLumi")),
0192 expectedStreamBeginRun_(pset.getUntrackedParameter<unsigned int>("expectedStreamBeginRun")),
0193 expectedOffsetNoStreamEndRun_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoStreamEndRun")),
0194 expectedGlobalBeginRun_(pset.getUntrackedParameter<unsigned int>("expectedGlobalBeginRun")),
0195 expectedOffsetNoGlobalEndRun_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoGlobalEndRun")),
0196 expectedOffsetNoWriteRun_(pset.getUntrackedParameter<unsigned int>("expectedOffsetNoWriteRun")) {}
0197
0198 ExceptionThrowingProducer::~ExceptionThrowingProducer() noexcept(false) {
0199 if (nBeginJob_ != expectedNBeginJob_) {
0200 edm::LogAbsolute("ExceptionThrowingProducer")
0201 << "ExceptionThrowingProducer::beginJob did not run expected number of times.";
0202 edm::LogAbsolute("ExceptionThrowingProducer") << "At least one test in ExceptionThrowingProducer FAILED";
0203 } else if (nEndJob_ != expectedNEndJob_) {
0204 edm::LogAbsolute("ExceptionThrowingProducer")
0205 << "ExceptionThrowingProducer::endJob did not run expected number of times.";
0206 edm::LogAbsolute("ExceptionThrowingProducer") << "At least one test in ExceptionThrowingProducer FAILED";
0207 } else if (nEndJob_ == 0u && nBeginProcessBlock_ == 0 && nEndProcessBlock_ == 0 && nBeginStream_.load() == 0 &&
0208 nEndStream_.load() == 0 && nGlobalBeginRun_.load() == 0 && nGlobalEndRun_.load() == 0) {
0209 edm::LogAbsolute("ExceptionThrowingProducer") << "All tests in ExceptionThrowingProducer PASSED";
0210 }
0211
0212 edm::Service<edmtest::TestServiceOne> serviceOne;
0213
0214 if (verbose_) {
0215 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPostEndJob = " << serviceOne->nPostEndJob();
0216 edm::LogAbsolute("ExceptionThrowingProducer")
0217 << "serviceOne->nPreModuleEndJob = " << serviceOne->nPreModuleEndJob();
0218 edm::LogAbsolute("ExceptionThrowingProducer")
0219 << "serviceOne->nPostModuleEndJob = " << serviceOne->nPostModuleEndJob();
0220 }
0221
0222 if (serviceOne->nPostEndJob() != nBeginJob_ ||
0223 serviceOne->nPreModuleEndJob() != nBeginJob_ * kNumberOfModulesWithJobTransitions - expectedOffsetNoEndJob_ ||
0224 serviceOne->nPostModuleEndJob() != nBeginJob_ * kNumberOfModulesWithJobTransitions - expectedOffsetNoEndJob_) {
0225 edm::LogAbsolute("ExceptionThrowingProducer")
0226 << "FAILED: Unexpected number of service end job related signals in TestServiceOne, checking while in "
0227 "ExceptionThrowingProducer destructor";
0228 edm::LogAbsolute("ExceptionThrowingProducer") << "At least one test in ExceptionThrowingProducer FAILED";
0229 }
0230 }
0231
0232 void ExceptionThrowingProducer::produce(edm::StreamID, edm::Event& event, edm::EventSetup const&) const {
0233 if (event.id() == eventIDThrowOnEvent_) {
0234 throw cms::Exception("IntentionalTestException")
0235 << "ExceptionThrowingProducer::produce, module configured to throw on: " << eventIDThrowOnEvent_;
0236 }
0237 }
0238
0239 std::shared_ptr<Cache> ExceptionThrowingProducer::globalBeginRun(edm::Run const& run, edm::EventSetup const&) const {
0240 ++nGlobalBeginRun_;
0241 if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) ==
0242 eventIDThrowOnGlobalBeginRun_) {
0243 globalBeginRunExceptionOccurred_.store(true);
0244 throw cms::Exception("IntentionalTestException")
0245 << "ExceptionThrowingProducer::globalBeginRun, module configured to throw on: "
0246 << eventIDThrowOnGlobalBeginRun_;
0247 }
0248 return std::make_shared<Cache>();
0249 }
0250
0251 void ExceptionThrowingProducer::globalEndRun(edm::Run const& run, edm::EventSetup const&) const {
0252 ++nGlobalEndRun_;
0253 if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) ==
0254 eventIDThrowOnGlobalEndRun_) {
0255 throw cms::Exception("IntentionalTestException")
0256 << "ExceptionThrowingProducer::globalEndRun, module configured to throw on: " << eventIDThrowOnGlobalEndRun_;
0257 }
0258 }
0259
0260 std::shared_ptr<Cache> ExceptionThrowingProducer::globalBeginLuminosityBlock(edm::LuminosityBlock const& lumi,
0261 edm::EventSetup const&) const {
0262 ++nGlobalBeginLumi_;
0263 if (edm::EventID(lumi.id().run(), lumi.id().luminosityBlock(), edm::invalidEventNumber) ==
0264 eventIDThrowOnGlobalBeginLumi_) {
0265 globalBeginLumiExceptionOccurred_.store(true);
0266 throw cms::Exception("IntentionalTestException")
0267 << "ExceptionThrowingProducer::globalBeginLuminosityBlock, module configured to throw on: "
0268 << eventIDThrowOnGlobalBeginLumi_;
0269 }
0270 return std::make_shared<Cache>();
0271 }
0272
0273 void ExceptionThrowingProducer::globalEndLuminosityBlock(edm::LuminosityBlock const& lumi,
0274 edm::EventSetup const&) const {
0275 ++nGlobalEndLumi_;
0276 if (edm::EventID(lumi.id().run(), lumi.id().luminosityBlock(), edm::invalidEventNumber) ==
0277 eventIDThrowOnGlobalEndLumi_) {
0278 throw cms::Exception("IntentionalTestException")
0279 << "ExceptionThrowingProducer::globalEndLuminosityBlock, module configured to throw on: "
0280 << eventIDThrowOnGlobalEndLumi_;
0281 }
0282 }
0283
0284 std::unique_ptr<Cache> ExceptionThrowingProducer::beginStream(edm::StreamID streamID) const {
0285 ++nBeginStream_;
0286 if (throwInBeginStream_ && streamID.value() == kStreamToThrowOn) {
0287 throw cms::Exception("IntentionalTestException")
0288 << "ExceptionThrowingProducer::beginStream, module configured to throw during beginStream for stream: "
0289 << kStreamToThrowOn;
0290 }
0291 return std::make_unique<Cache>();
0292 }
0293
0294 void ExceptionThrowingProducer::streamBeginRun(edm::StreamID iStream,
0295 edm::Run const& run,
0296 edm::EventSetup const&) const {
0297 if (iStream < kTestStreams) {
0298 ++nStreamBeginRun_[iStream];
0299 }
0300
0301 bool expected = false;
0302 if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) ==
0303 eventIDThrowOnStreamBeginRun_ &&
0304 streamBeginRunExceptionOccurred_.compare_exchange_strong(expected, true)) {
0305
0306 streamWithBeginRunException_ = iStream.value();
0307 throw cms::Exception("IntentionalTestException")
0308 << "ExceptionThrowingProducer::streamBeginRun, module configured to throw on: "
0309 << eventIDThrowOnStreamBeginRun_;
0310 }
0311 }
0312
0313 void ExceptionThrowingProducer::streamBeginLuminosityBlock(edm::StreamID iStream,
0314 edm::LuminosityBlock const& lumi,
0315 edm::EventSetup const&) const {
0316 if (iStream < kTestStreams) {
0317 ++nStreamBeginLumi_[iStream];
0318 }
0319
0320
0321
0322 bool expected = false;
0323 if (edm::EventID(lumi.run(), lumi.id().luminosityBlock(), edm::invalidEventNumber) ==
0324 eventIDThrowOnStreamBeginLumi_ &&
0325 streamBeginLumiExceptionOccurred_.compare_exchange_strong(expected, true)) {
0326
0327 streamWithBeginLumiException_ = iStream.value();
0328
0329 throw cms::Exception("IntentionalTestException")
0330 << "ExceptionThrowingProducer::streamBeginLuminosityBlock, module configured to throw on: "
0331 << eventIDThrowOnStreamBeginLumi_;
0332 }
0333 }
0334
0335 void ExceptionThrowingProducer::streamEndLuminosityBlock(edm::StreamID iStream,
0336 edm::LuminosityBlock const& lumi,
0337 edm::EventSetup const&) const {
0338 if (iStream < kTestStreams) {
0339 ++nStreamEndLumi_[iStream];
0340 }
0341
0342 bool expected = false;
0343 if (edm::EventID(lumi.run(), lumi.id().luminosityBlock(), edm::invalidEventNumber) ==
0344 eventIDThrowOnStreamEndLumi_ &&
0345 streamEndLumiExceptionOccurred_.compare_exchange_strong(expected, true)) {
0346 throw cms::Exception("IntentionalTestException")
0347 << "ExceptionThrowingProducer::streamEndLuminosityBlock, module configured to throw on: "
0348 << eventIDThrowOnStreamEndLumi_;
0349 }
0350 }
0351
0352 void ExceptionThrowingProducer::streamEndRun(edm::StreamID iStream,
0353 edm::Run const& run,
0354 edm::EventSetup const&) const {
0355 if (iStream < kTestStreams) {
0356 ++nStreamEndRun_[iStream];
0357 }
0358
0359 bool expected = false;
0360 if (edm::EventID(run.id().run(), edm::invalidLuminosityBlockNumber, edm::invalidEventNumber) ==
0361 eventIDThrowOnStreamEndRun_ &&
0362 streamEndRunExceptionOccurred_.compare_exchange_strong(expected, true)) {
0363 throw cms::Exception("IntentionalTestException")
0364 << "ExceptionThrowingProducer::streamEndRun, module configured to throw on: " << eventIDThrowOnStreamEndRun_;
0365 }
0366 }
0367
0368 void ExceptionThrowingProducer::endStream(edm::StreamID streamID) const {
0369 ++nEndStream_;
0370 if (throwInEndStream_ && streamID.value() == kStreamToThrowOn) {
0371 throw cms::Exception("IntentionalTestException")
0372 << "ExceptionThrowingProducer::endStream, module configured to throw during endStream for stream: "
0373 << kStreamToThrowOn;
0374 }
0375 }
0376
0377 void ExceptionThrowingProducer::beginProcessBlock(edm::ProcessBlock const& processBlock) {
0378 ++nBeginProcessBlock_;
0379 if (throwInBeginProcessBlock_) {
0380 throw cms::Exception("IntentionalTestException")
0381 << "ExceptionThrowingProducer::beginProcessBlock, module configured to throw during beginProcessBlock";
0382 }
0383 }
0384
0385 void ExceptionThrowingProducer::endProcessBlock(edm::ProcessBlock const& processBlock) {
0386 ++nEndProcessBlock_;
0387 if (throwInEndProcessBlock_) {
0388 throw cms::Exception("IntentionalTestException")
0389 << "ExceptionThrowingProducer::endProcessBlock, module configured to throw during endProcessBlock";
0390 }
0391 }
0392
0393 void ExceptionThrowingProducer::beginJob() {
0394 ++nBeginJob_;
0395 if (throwInBeginJob_) {
0396 throw cms::Exception("IntentionalTestException")
0397 << "ExceptionThrowingProducer::beginJob, module configured to throw during beginJob";
0398 }
0399 }
0400
0401 void ExceptionThrowingProducer::endJob() {
0402 ++nEndJob_;
0403
0404 bool testsPass = true;
0405
0406 if (nBeginStream_.load() != expectedNBeginStream_) {
0407 edm::LogAbsolute("ExceptionThrowingProducer")
0408 << "FAILED: Unexpected number of beginStream transitions, saw: " << nBeginStream_.load()
0409 << " expected: " << expectedNBeginStream_;
0410 testsPass = false;
0411 }
0412
0413 if (nBeginProcessBlock_ != expectedNBeginProcessBlock_) {
0414 edm::LogAbsolute("ExceptionThrowingProducer")
0415 << "FAILED: Unexpected number of beginProcessBlock transitions, saw: " << nBeginProcessBlock_
0416 << " expected: " << expectedNBeginProcessBlock_;
0417 testsPass = false;
0418 }
0419
0420 if (nEndProcessBlock_ != expectedNEndProcessBlock_) {
0421 edm::LogAbsolute("ExceptionThrowingProducer")
0422 << "FAILED: Unexpected number of endProcessBlock transitions, saw: " << nEndProcessBlock_
0423 << " expected: " << expectedNEndProcessBlock_;
0424 testsPass = false;
0425 }
0426
0427 if (nEndStream_.load() != expectedNEndStream_) {
0428 edm::LogAbsolute("ExceptionThrowingProducer")
0429 << "FAILED: Unexpected number of endStream transitions, saw: " << nEndStream_.load()
0430 << " expected: " << expectedNEndStream_;
0431 testsPass = false;
0432 }
0433
0434 if (expectNoRunsProcessed_ && nGlobalBeginRun_.load() != 0) {
0435 edm::LogAbsolute("ExceptionThrowingProducer")
0436 << "FAILED: Unexpected number of globalBeginRun transitions, saw: " << nGlobalBeginRun_.load()
0437 << " expected: " << 0;
0438 testsPass = false;
0439 }
0440
0441 unsigned int totalStreamBeginLumi = 0;
0442 unsigned int i = 0;
0443 for (auto const& nStreamBeginLumi : nStreamBeginLumi_) {
0444 totalStreamBeginLumi += nStreamBeginLumi;
0445
0446
0447
0448
0449 if (nStreamBeginLumi > expectedStreamBeginLumi_ && streamWithBeginLumiException_ != kUnset) {
0450 edm::LogAbsolute("ExceptionThrowingProducer")
0451 << "FAILED: More than maximum possible number of streamBeginLumi transitions, stream " << i << " saw "
0452 << nStreamBeginLumi << " max possible " << expectedStreamBeginLumi_;
0453 testsPass = false;
0454 }
0455 unsigned int expectedStreamEndLumi =
0456 (streamWithBeginLumiException_ == i) ? nStreamBeginLumi - 1 : nStreamBeginLumi;
0457 if (nStreamEndLumi_[i] != expectedStreamEndLumi) {
0458 edm::LogAbsolute("ExceptionThrowingProducer")
0459 << "FAILED: Unexpected number of streamEndLumi transitions, stream " << i << " saw " << nStreamEndLumi_[i]
0460 << " expected " << expectedStreamEndLumi;
0461 testsPass = false;
0462 }
0463
0464 ++i;
0465 }
0466
0467 unsigned int totalStreamBeginRun = 0;
0468 i = 0;
0469 for (auto const& nStreamBeginRun : nStreamBeginRun_) {
0470 totalStreamBeginRun += nStreamBeginRun;
0471
0472
0473
0474
0475 if (nStreamBeginRun > expectedStreamBeginRun_ && streamWithBeginRunException_ != kUnset) {
0476 edm::LogAbsolute("ExceptionThrowingProducer")
0477 << "FAILED: More than maximum possible number of streamBeginRun transitions, stream " << i << " saw "
0478 << nStreamBeginRun << " max possible " << expectedStreamBeginRun_;
0479 testsPass = false;
0480 }
0481 unsigned int expectedStreamEndRun = (streamWithBeginRunException_ == i) ? nStreamBeginRun - 1 : nStreamBeginRun;
0482 if (nStreamEndRun_[i] != expectedStreamEndRun) {
0483 edm::LogAbsolute("ExceptionThrowingProducer")
0484 << "FAILED: Unexpected number of streamEndRun transitions, stream " << i << " saw " << nStreamEndRun_[i]
0485 << " expected " << expectedStreamEndRun;
0486 testsPass = false;
0487 }
0488
0489 ++i;
0490 }
0491
0492
0493
0494
0495 if (expectedGlobalBeginLumi_ > 0 && nGlobalBeginLumi_.load() < expectedGlobalBeginLumi_) {
0496 edm::LogAbsolute("ExceptionThrowingProducer")
0497 << "FAILED: Less than the expected number of globalBeginLumi transitions, expected at least "
0498 << expectedGlobalBeginLumi_ << " saw " << nGlobalBeginLumi_.load();
0499 testsPass = false;
0500 }
0501
0502
0503
0504
0505 if (expectedGlobalBeginRun_ > 0 && nGlobalBeginRun_.load() < expectedGlobalBeginRun_) {
0506 edm::LogAbsolute("ExceptionThrowingProducer")
0507 << "FAILED: Less than the expected number of globalBeginRun transitions, expected at least "
0508 << expectedGlobalBeginRun_ << " saw " << nGlobalBeginRun_.load();
0509 testsPass = false;
0510 }
0511
0512 unsigned int expectedGlobalEndLumi =
0513 globalBeginLumiExceptionOccurred_.load() ? nGlobalBeginLumi_.load() - 1 : nGlobalBeginLumi_.load();
0514 if (nGlobalEndLumi_.load() != expectedGlobalEndLumi) {
0515 edm::LogAbsolute("ExceptionThrowingProducer")
0516 << "FAILED: number of global end lumi transitions not equal to expected value, expected "
0517 << expectedGlobalEndLumi << " saw " << nGlobalEndLumi_.load();
0518 testsPass = false;
0519 }
0520
0521 unsigned int expectedGlobalEndRun =
0522 globalBeginRunExceptionOccurred_.load() ? nGlobalBeginRun_.load() - 1 : nGlobalBeginRun_.load();
0523 if (nGlobalEndRun_.load() != expectedGlobalEndRun) {
0524 edm::LogAbsolute("ExceptionThrowingProducer")
0525 << "FAILED: number of global end run transitions not equal to expected value, expected "
0526 << expectedGlobalEndRun << " saw " << nGlobalEndRun_.load();
0527 testsPass = false;
0528 }
0529
0530 edm::Service<edmtest::TestServiceOne> serviceOne;
0531 if (serviceOne->nPreBeginJob() != nBeginJob_ || serviceOne->nPostBeginJob() != nBeginJob_ ||
0532 serviceOne->nPreEndJob() != nBeginJob_ ||
0533 serviceOne->nPreModuleBeginJob() != nBeginJob_ * kNumberOfModulesWithJobTransitions ||
0534 serviceOne->nPostModuleBeginJob() != nBeginJob_ * kNumberOfModulesWithJobTransitions) {
0535 edm::LogAbsolute("ExceptionThrowingProducer")
0536 << "FAILED: Unexpected number of service transitions in TestServiceOne, beginJob and endJob";
0537 testsPass = false;
0538 }
0539
0540 if (serviceOne->nPreBeginStream() != nBeginStream_ || serviceOne->nPostBeginStream() != nBeginStream_ ||
0541 serviceOne->nPreEndStream() != nBeginStream_ || serviceOne->nPostEndStream() != nBeginStream_ ||
0542 serviceOne->nPreModuleBeginStream() != nBeginStream_ * kNumberOfModulesWithStreamTransitions ||
0543 serviceOne->nPostModuleBeginStream() != nBeginStream_ * kNumberOfModulesWithStreamTransitions ||
0544 serviceOne->nPreModuleEndStream() !=
0545 nBeginStream_ * kNumberOfModulesWithStreamTransitions - expectedOffsetNoEndStream_ ||
0546 serviceOne->nPostModuleEndStream() !=
0547 nBeginStream_ * kNumberOfModulesWithStreamTransitions - expectedOffsetNoEndStream_) {
0548 edm::LogAbsolute("ExceptionThrowingProducer")
0549 << "FAILED: Unexpected number of service transitions in TestServiceOne, beginStream and endStream";
0550 testsPass = false;
0551 }
0552
0553 if (serviceOne->nPreBeginProcessBlock() != nBeginProcessBlock_ ||
0554 serviceOne->nPostBeginProcessBlock() != nBeginProcessBlock_ ||
0555 serviceOne->nPreEndProcessBlock() != nBeginProcessBlock_ ||
0556 serviceOne->nPostEndProcessBlock() != nBeginProcessBlock_ ||
0557 serviceOne->nPreModuleBeginProcessBlock() !=
0558 nBeginProcessBlock_ * kNumberOfModulesWithProcessBlockTransitions ||
0559 serviceOne->nPostModuleBeginProcessBlock() !=
0560 nBeginProcessBlock_ * kNumberOfModulesWithProcessBlockTransitions ||
0561 serviceOne->nPreModuleEndProcessBlock() !=
0562 nBeginProcessBlock_ * kNumberOfModulesWithProcessBlockTransitions - expectedOffsetNoEndProcessBlock_ ||
0563 serviceOne->nPostModuleEndProcessBlock() !=
0564 nBeginProcessBlock_ * kNumberOfModulesWithProcessBlockTransitions - expectedOffsetNoEndProcessBlock_) {
0565 edm::LogAbsolute("ExceptionThrowingProducer") << "FAILED: Unexpected number of service transitions in "
0566 "TestServiceOne, beginProcessBlock and endProcessBlock";
0567 testsPass = false;
0568 }
0569
0570 if (serviceOne->nPreStreamBeginLumi() != totalStreamBeginLumi ||
0571 serviceOne->nPostStreamBeginLumi() != totalStreamBeginLumi ||
0572 serviceOne->nPreStreamEndLumi() != totalStreamBeginLumi ||
0573 serviceOne->nPostStreamEndLumi() != totalStreamBeginLumi ||
0574 serviceOne->nPreModuleStreamBeginLumi() != totalStreamBeginLumi * kNumberOfTestModules ||
0575 serviceOne->nPostModuleStreamBeginLumi() != totalStreamBeginLumi * kNumberOfTestModules ||
0576 serviceOne->nPreModuleStreamEndLumi() !=
0577 totalStreamBeginLumi * kNumberOfTestModules - expectedOffsetNoStreamEndLumi_ ||
0578 serviceOne->nPostModuleStreamEndLumi() !=
0579 totalStreamBeginLumi * kNumberOfTestModules - expectedOffsetNoStreamEndLumi_) {
0580 edm::LogAbsolute("ExceptionThrowingProducer")
0581 << "FAILED: Unexpected number of service transitions in TestServiceOne, stream lumi";
0582 testsPass = false;
0583 }
0584
0585 edm::Service<edmtest::TestServiceTwo> serviceTwo;
0586 if (serviceTwo->nPreStreamBeginLumi() != totalStreamBeginLumi ||
0587 serviceTwo->nPostStreamBeginLumi() != totalStreamBeginLumi ||
0588 serviceTwo->nPreStreamEndLumi() != totalStreamBeginLumi ||
0589 serviceTwo->nPostStreamEndLumi() != totalStreamBeginLumi ||
0590 serviceTwo->nPreModuleStreamBeginLumi() != totalStreamBeginLumi * kNumberOfTestModules ||
0591 serviceTwo->nPostModuleStreamBeginLumi() != totalStreamBeginLumi * kNumberOfTestModules ||
0592 serviceTwo->nPreModuleStreamEndLumi() !=
0593 totalStreamBeginLumi * kNumberOfTestModules - expectedOffsetNoStreamEndLumi_ ||
0594 serviceTwo->nPostModuleStreamEndLumi() !=
0595 totalStreamBeginLumi * kNumberOfTestModules - expectedOffsetNoStreamEndLumi_) {
0596 edm::LogAbsolute("ExceptionThrowingProducer")
0597 << "FAILED: Unexpected number of service transitions in TestServiceTwo, stream lumi";
0598 testsPass = false;
0599 }
0600
0601 unsigned int nGlobalBeginLumi = nGlobalBeginLumi_.load();
0602
0603 if (serviceOne->nPreGlobalBeginLumi() != nGlobalBeginLumi ||
0604 serviceOne->nPostGlobalBeginLumi() != nGlobalBeginLumi || serviceOne->nPreGlobalEndLumi() != nGlobalBeginLumi ||
0605 serviceOne->nPostGlobalEndLumi() != nGlobalBeginLumi ||
0606 serviceOne->nPreModuleGlobalBeginLumi() != nGlobalBeginLumi * kNumberOfTestModules ||
0607 serviceOne->nPostModuleGlobalBeginLumi() != nGlobalBeginLumi * kNumberOfTestModules ||
0608 serviceOne->nPreModuleGlobalEndLumi() !=
0609 nGlobalBeginLumi * kNumberOfTestModules - expectedOffsetNoGlobalEndLumi_ ||
0610 serviceOne->nPostModuleGlobalEndLumi() !=
0611 nGlobalBeginLumi * kNumberOfTestModules - expectedOffsetNoGlobalEndLumi_ ||
0612 serviceOne->nPreGlobalWriteLumi() != nGlobalBeginLumi - expectedOffsetNoWriteLumi_ ||
0613 serviceOne->nPostGlobalWriteLumi() != nGlobalBeginLumi - expectedOffsetNoWriteLumi_) {
0614 edm::LogAbsolute("ExceptionThrowingProducer")
0615 << "FAILED: Unexpected number of service transitions in TestServiceOne, global lumi";
0616 testsPass = false;
0617 }
0618
0619 if (serviceTwo->nPreGlobalBeginLumi() != nGlobalBeginLumi ||
0620 serviceTwo->nPostGlobalBeginLumi() != nGlobalBeginLumi || serviceTwo->nPreGlobalEndLumi() != nGlobalBeginLumi ||
0621 serviceTwo->nPostGlobalEndLumi() != nGlobalBeginLumi ||
0622 serviceTwo->nPreModuleGlobalBeginLumi() != nGlobalBeginLumi * kNumberOfTestModules ||
0623 serviceTwo->nPostModuleGlobalBeginLumi() != nGlobalBeginLumi * kNumberOfTestModules ||
0624 serviceTwo->nPreModuleGlobalEndLumi() !=
0625 nGlobalBeginLumi * kNumberOfTestModules - expectedOffsetNoGlobalEndLumi_ ||
0626 serviceTwo->nPostModuleGlobalEndLumi() !=
0627 nGlobalBeginLumi * kNumberOfTestModules - expectedOffsetNoGlobalEndLumi_ ||
0628 serviceTwo->nPreGlobalWriteLumi() != nGlobalBeginLumi - expectedOffsetNoWriteLumi_ ||
0629 serviceTwo->nPostGlobalWriteLumi() != nGlobalBeginLumi - expectedOffsetNoWriteLumi_) {
0630 edm::LogAbsolute("ExceptionThrowingProducer")
0631 << "FAILED: Unexpected number of service transitions in TestServiceTwo, global lumi";
0632 testsPass = false;
0633 }
0634
0635 if (serviceOne->nPreStreamBeginRun() != totalStreamBeginRun ||
0636 serviceOne->nPostStreamBeginRun() != totalStreamBeginRun ||
0637 serviceOne->nPreStreamEndRun() != totalStreamBeginRun ||
0638 serviceOne->nPostStreamEndRun() != totalStreamBeginRun ||
0639 serviceOne->nPreModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules ||
0640 serviceOne->nPostModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules ||
0641 serviceOne->nPreModuleStreamEndRun() !=
0642 totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_ ||
0643 serviceOne->nPostModuleStreamEndRun() !=
0644 totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_) {
0645 edm::LogAbsolute("ExceptionThrowingProducer")
0646 << "FAILED: Unexpected number of service transitions in TestServiceOne, stream run";
0647 testsPass = false;
0648 }
0649
0650 if (serviceTwo->nPreStreamBeginRun() != totalStreamBeginRun ||
0651 serviceTwo->nPostStreamBeginRun() != totalStreamBeginRun ||
0652 serviceTwo->nPreStreamEndRun() != totalStreamBeginRun ||
0653 serviceTwo->nPostStreamEndRun() != totalStreamBeginRun ||
0654 serviceTwo->nPreModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules ||
0655 serviceTwo->nPostModuleStreamBeginRun() != totalStreamBeginRun * kNumberOfTestModules ||
0656 serviceTwo->nPreModuleStreamEndRun() !=
0657 totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_ ||
0658 serviceTwo->nPostModuleStreamEndRun() !=
0659 totalStreamBeginRun * kNumberOfTestModules - expectedOffsetNoStreamEndRun_) {
0660 edm::LogAbsolute("ExceptionThrowingProducer")
0661 << "FAILED: Unexpected number of service transitions in TestServiceTwo, stream run";
0662 testsPass = false;
0663 }
0664
0665 unsigned int nGlobalBeginRun = nGlobalBeginRun_.load();
0666
0667 if (serviceOne->nPreGlobalBeginRun() != nGlobalBeginRun || serviceOne->nPostGlobalBeginRun() != nGlobalBeginRun ||
0668 serviceOne->nPreGlobalEndRun() != nGlobalBeginRun || serviceOne->nPostGlobalEndRun() != nGlobalBeginRun ||
0669 serviceOne->nPreModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules ||
0670 serviceOne->nPostModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules ||
0671 serviceOne->nPreModuleGlobalEndRun() !=
0672 nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ ||
0673 serviceOne->nPostModuleGlobalEndRun() !=
0674 nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ ||
0675 serviceOne->nPreGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_ ||
0676 serviceOne->nPostGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_) {
0677 edm::LogAbsolute("ExceptionThrowingProducer")
0678 << "FAILED: Unexpected number of service transitions in TestServiceOne, global run";
0679 testsPass = false;
0680 }
0681
0682 if (serviceTwo->nPreGlobalBeginRun() != nGlobalBeginRun || serviceTwo->nPostGlobalBeginRun() != nGlobalBeginRun ||
0683 serviceTwo->nPreGlobalEndRun() != nGlobalBeginRun || serviceTwo->nPostGlobalEndRun() != nGlobalBeginRun ||
0684 serviceTwo->nPreModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules ||
0685 serviceTwo->nPostModuleGlobalBeginRun() != nGlobalBeginRun * kNumberOfTestModules ||
0686 serviceTwo->nPreModuleGlobalEndRun() !=
0687 nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ ||
0688 serviceTwo->nPostModuleGlobalEndRun() !=
0689 nGlobalBeginRun * kNumberOfTestModules - expectedOffsetNoGlobalEndRun_ ||
0690 serviceTwo->nPreGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_ ||
0691 serviceTwo->nPostGlobalWriteRun() != nGlobalBeginRun - expectedOffsetNoWriteRun_) {
0692 edm::LogAbsolute("ExceptionThrowingProducer")
0693 << "FAILED: Unexpected number of service transitions in TestServiceTwo, global run";
0694 testsPass = false;
0695 }
0696
0697 if (verbose_) {
0698 edm::LogAbsolute("ExceptionThrowingProducer") << "nBeginJob_ = " << nBeginJob_;
0699 edm::LogAbsolute("ExceptionThrowingProducer") << "nBeginStream_ = " << nBeginStream_.load();
0700 edm::LogAbsolute("ExceptionThrowingProducer") << "nBeginProcessBlock_ = " << nBeginProcessBlock_;
0701 edm::LogAbsolute("ExceptionThrowingProducer") << "nEndProcessBlock_ = " << nEndProcessBlock_;
0702 edm::LogAbsolute("ExceptionThrowingProducer") << "nEndStream_ = " << nEndStream_.load();
0703 edm::LogAbsolute("ExceptionThrowingProducer") << "nEndJob_ = " << nEndJob_ << "\n";
0704
0705 edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalBeginLumi_ = " << nGlobalBeginLumi_;
0706 edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalEndLumi_ = " << nGlobalEndLumi_;
0707 edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalBeginRun_ = " << nGlobalBeginRun_;
0708 edm::LogAbsolute("ExceptionThrowingProducer") << "nGlobalEndRun_ = " << nGlobalEndRun_ << "\n";
0709
0710 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPreBeginJob = " << serviceOne->nPreBeginJob();
0711 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPostBeginJob = " << serviceOne->nPostBeginJob();
0712 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPreEndJob = " << serviceOne->nPreEndJob();
0713
0714 edm::LogAbsolute("ExceptionThrowingProducer")
0715 << "serviceOne->nPreModuleBeginJob = " << serviceOne->nPreModuleBeginJob();
0716 edm::LogAbsolute("ExceptionThrowingProducer")
0717 << "serviceOne->nPostModuleBeginJob = " << serviceOne->nPostModuleBeginJob() << "\n";
0718
0719 edm::LogAbsolute("ExceptionThrowingProducer")
0720 << "serviceOne->nPreBeginStream = " << serviceOne->nPreBeginStream();
0721 edm::LogAbsolute("ExceptionThrowingProducer")
0722 << "serviceOne->nPostBeginStream = " << serviceOne->nPostBeginStream();
0723 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPreEndStream = " << serviceOne->nPreEndStream();
0724 edm::LogAbsolute("ExceptionThrowingProducer") << "serviceOne->nPostEndStream = " << serviceOne->nPostEndStream();
0725
0726 edm::LogAbsolute("ExceptionThrowingProducer")
0727 << "serviceOne->nPreModuleBeginStream = " << serviceOne->nPreModuleBeginStream();
0728 edm::LogAbsolute("ExceptionThrowingProducer")
0729 << "serviceOne->nPostModuleBeginStream = " << serviceOne->nPostModuleBeginStream();
0730 edm::LogAbsolute("ExceptionThrowingProducer")
0731 << "serviceOne->nPreModuleEndStream = " << serviceOne->nPreModuleEndStream();
0732 edm::LogAbsolute("ExceptionThrowingProducer")
0733 << "serviceOne->nPostModuleEndStream = " << serviceOne->nPostModuleEndStream() << "\n";
0734
0735 edm::LogAbsolute("ExceptionThrowingProducer")
0736 << "serviceOne->nPreBeginProcessBlock = " << serviceOne->nPreBeginProcessBlock();
0737 edm::LogAbsolute("ExceptionThrowingProducer")
0738 << "serviceOne->nPostBeginProcessBlock = " << serviceOne->nPostBeginProcessBlock();
0739 edm::LogAbsolute("ExceptionThrowingProducer")
0740 << "serviceOne->nPreEndProcessBlock = " << serviceOne->nPreEndProcessBlock();
0741 edm::LogAbsolute("ExceptionThrowingProducer")
0742 << "serviceOne->nPostEndProcessBlock = " << serviceOne->nPostEndProcessBlock();
0743
0744 edm::LogAbsolute("ExceptionThrowingProducer")
0745 << "serviceOne->nPreModuleBeginProcessBlock = " << serviceOne->nPreModuleBeginProcessBlock();
0746 edm::LogAbsolute("ExceptionThrowingProducer")
0747 << "serviceOne->nPostModuleBeginProcessBlock = " << serviceOne->nPostModuleBeginProcessBlock();
0748 edm::LogAbsolute("ExceptionThrowingProducer")
0749 << "serviceOne->nPreModuleEndProcessBlock = " << serviceOne->nPreModuleEndProcessBlock();
0750 edm::LogAbsolute("ExceptionThrowingProducer")
0751 << "serviceOne->nPostModuleEndProcessBlock = " << serviceOne->nPostModuleEndProcessBlock() << "\n";
0752
0753 edm::LogAbsolute("ExceptionThrowingProducer")
0754 << "serviceOne->nPreStreamBeginLumi = " << serviceOne->nPreStreamBeginLumi();
0755 edm::LogAbsolute("ExceptionThrowingProducer")
0756 << "serviceOne->nPostStreamBeginLumi = " << serviceOne->nPostStreamBeginLumi();
0757 edm::LogAbsolute("ExceptionThrowingProducer")
0758 << "serviceOne->nPreStreamEndLumi = " << serviceOne->nPreStreamEndLumi();
0759 edm::LogAbsolute("ExceptionThrowingProducer")
0760 << "serviceOne->nPostStreamEndLumi = " << serviceOne->nPostStreamEndLumi();
0761 edm::LogAbsolute("ExceptionThrowingProducer")
0762 << "serviceOne->nPreModuleStreamBeginLumi = " << serviceOne->nPreModuleStreamBeginLumi();
0763 edm::LogAbsolute("ExceptionThrowingProducer")
0764 << "serviceOne->nPostModuleStreamBeginLumi = " << serviceOne->nPostModuleStreamBeginLumi();
0765 edm::LogAbsolute("ExceptionThrowingProducer")
0766 << "serviceOne->nPreModuleStreamEndLumi = " << serviceOne->nPreModuleStreamEndLumi();
0767 edm::LogAbsolute("ExceptionThrowingProducer")
0768 << "serviceOne->nPostModuleStreamEndLumi = " << serviceOne->nPostModuleStreamEndLumi() << "\n";
0769
0770 edm::LogAbsolute("ExceptionThrowingProducer")
0771 << "serviceOne->nPreGlobalBeginLumi = " << serviceOne->nPreGlobalBeginLumi();
0772 edm::LogAbsolute("ExceptionThrowingProducer")
0773 << "serviceOne->nPostGlobalBeginLumi = " << serviceOne->nPostGlobalBeginLumi();
0774 edm::LogAbsolute("ExceptionThrowingProducer")
0775 << "serviceOne->nPreGlobalEndLumi = " << serviceOne->nPreGlobalEndLumi();
0776 edm::LogAbsolute("ExceptionThrowingProducer")
0777 << "serviceOne->nPostGlobalEndLumi = " << serviceOne->nPostGlobalEndLumi();
0778 edm::LogAbsolute("ExceptionThrowingProducer")
0779 << "serviceOne->nPreModuleGlobalBeginLumi = " << serviceOne->nPreModuleGlobalBeginLumi();
0780 edm::LogAbsolute("ExceptionThrowingProducer")
0781 << "serviceOne->nPostModuleGlobalBeginLumi = " << serviceOne->nPostModuleGlobalBeginLumi();
0782 edm::LogAbsolute("ExceptionThrowingProducer")
0783 << "serviceOne->nPreModuleGlobalEndLumi = " << serviceOne->nPreModuleGlobalEndLumi();
0784 edm::LogAbsolute("ExceptionThrowingProducer")
0785 << "serviceOne->nPostModuleGlobalEndLumi = " << serviceOne->nPostModuleGlobalEndLumi();
0786 edm::LogAbsolute("ExceptionThrowingProducer")
0787 << "serviceOne->nPreGlobalWriteLumi = " << serviceOne->nPreGlobalWriteLumi();
0788 edm::LogAbsolute("ExceptionThrowingProducer")
0789 << "serviceOne->nPostGlobalWriteLumi = " << serviceOne->nPostGlobalWriteLumi() << "\n";
0790
0791 edm::LogAbsolute("ExceptionThrowingProducer")
0792 << "serviceOne->nPreStreamBeginRun = " << serviceOne->nPreStreamBeginRun();
0793 edm::LogAbsolute("ExceptionThrowingProducer")
0794 << "serviceOne->nPostStreamBeginRun = " << serviceOne->nPostStreamBeginRun();
0795 edm::LogAbsolute("ExceptionThrowingProducer")
0796 << "serviceOne->nPreStreamEndRun = " << serviceOne->nPreStreamEndRun();
0797 edm::LogAbsolute("ExceptionThrowingProducer")
0798 << "serviceOne->nPostStreamEndRun = " << serviceOne->nPostStreamEndRun();
0799 edm::LogAbsolute("ExceptionThrowingProducer")
0800 << "serviceOne->nPreModuleStreamBeginRun = " << serviceOne->nPreModuleStreamBeginRun();
0801 edm::LogAbsolute("ExceptionThrowingProducer")
0802 << "serviceOne->nPostModuleStreamBeginRun = " << serviceOne->nPostModuleStreamBeginRun();
0803 edm::LogAbsolute("ExceptionThrowingProducer")
0804 << "serviceOne->nPreModuleStreamEndRun = " << serviceOne->nPreModuleStreamEndRun();
0805 edm::LogAbsolute("ExceptionThrowingProducer")
0806 << "serviceOne->nPostModuleStreamEndRun = " << serviceOne->nPostModuleStreamEndRun() << "\n";
0807
0808 edm::LogAbsolute("ExceptionThrowingProducer")
0809 << "serviceOne->nPreGlobalBeginRun = " << serviceOne->nPreGlobalBeginRun();
0810 edm::LogAbsolute("ExceptionThrowingProducer")
0811 << "serviceOne->nPostGlobalBeginRun = " << serviceOne->nPostGlobalBeginRun();
0812 edm::LogAbsolute("ExceptionThrowingProducer")
0813 << "serviceOne->nPreGlobalEndRun = " << serviceOne->nPreGlobalEndRun();
0814 edm::LogAbsolute("ExceptionThrowingProducer")
0815 << "serviceOne->nPostGlobalEndRun = " << serviceOne->nPostGlobalEndRun();
0816 edm::LogAbsolute("ExceptionThrowingProducer")
0817 << "serviceOne->nPreModuleGlobalBeginRun = " << serviceOne->nPreModuleGlobalBeginRun();
0818 edm::LogAbsolute("ExceptionThrowingProducer")
0819 << "serviceOne->nPostModuleGlobalBeginRun = " << serviceOne->nPostModuleGlobalBeginRun();
0820 edm::LogAbsolute("ExceptionThrowingProducer")
0821 << "serviceOne->nPreModuleGlobalEndRun = " << serviceOne->nPreModuleGlobalEndRun();
0822 edm::LogAbsolute("ExceptionThrowingProducer")
0823 << "serviceOne->nPostModuleGlobalEndRun = " << serviceOne->nPostModuleGlobalEndRun();
0824 edm::LogAbsolute("ExceptionThrowingProducer")
0825 << "serviceOne->nPreGlobalWriteRun = " << serviceOne->nPreGlobalWriteRun();
0826 edm::LogAbsolute("ExceptionThrowingProducer")
0827 << "serviceOne->nPostGlobalWriteRun = " << serviceOne->nPostGlobalWriteRun() << "\n";
0828 }
0829
0830 if (testsPass) {
0831 edm::LogAbsolute("ExceptionThrowingProducer") << "All tests in ExceptionThrowingProducer PASSED";
0832 } else {
0833 edm::LogAbsolute("ExceptionThrowingProducer") << "At least one test in ExceptionThrowingProducer FAILED";
0834 }
0835
0836 if (throwInEndJob_) {
0837 throw cms::Exception("IntentionalTestException")
0838 << "ExceptionThrowingProducer::endJob, module configured to throw during endJob";
0839 }
0840 }
0841
0842 void ExceptionThrowingProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0843 edm::ParameterSetDescription desc;
0844 edm::EventID invalidEventID;
0845 desc.addUntracked<bool>("verbose", false);
0846 desc.addUntracked<edm::EventID>("eventIDThrowOnEvent", invalidEventID);
0847 desc.addUntracked<edm::EventID>("eventIDThrowOnGlobalBeginRun", invalidEventID);
0848 desc.addUntracked<edm::EventID>("eventIDThrowOnGlobalBeginLumi", invalidEventID);
0849 desc.addUntracked<edm::EventID>("eventIDThrowOnGlobalEndRun", invalidEventID);
0850 desc.addUntracked<edm::EventID>("eventIDThrowOnGlobalEndLumi", invalidEventID);
0851 desc.addUntracked<edm::EventID>("eventIDThrowOnStreamBeginRun", invalidEventID);
0852 desc.addUntracked<edm::EventID>("eventIDThrowOnStreamBeginLumi", invalidEventID);
0853 desc.addUntracked<edm::EventID>("eventIDThrowOnStreamEndRun", invalidEventID);
0854 desc.addUntracked<edm::EventID>("eventIDThrowOnStreamEndLumi", invalidEventID);
0855
0856 desc.addUntracked<bool>("throwInBeginJob", false);
0857 desc.addUntracked<bool>("throwInBeginStream", false);
0858 desc.addUntracked<bool>("throwInBeginProcessBlock", false);
0859 desc.addUntracked<bool>("throwInEndProcessBlock", false);
0860 desc.addUntracked<bool>("throwInEndStream", false);
0861 desc.addUntracked<bool>("throwInEndJob", false);
0862
0863 desc.addUntracked<unsigned int>("expectedNBeginJob", 1);
0864 desc.addUntracked<unsigned int>("expectedNBeginStream", 4);
0865 desc.addUntracked<unsigned int>("expectedNBeginProcessBlock", 1);
0866 desc.addUntracked<unsigned int>("expectedNEndProcessBlock", 1);
0867 desc.addUntracked<unsigned int>("expectedNEndStream", 4);
0868 desc.addUntracked<unsigned int>("expectedNEndJob", 1);
0869 desc.addUntracked<bool>("expectNoRunsProcessed", false);
0870 desc.addUntracked<unsigned int>("expectedOffsetNoEndJob", 0);
0871 desc.addUntracked<unsigned int>("expectedOffsetNoEndStream", 0);
0872 desc.addUntracked<unsigned int>("expectedOffsetNoEndProcessBlock", 0);
0873 desc.addUntracked<unsigned int>("expectedStreamBeginLumi", kUnset);
0874 desc.addUntracked<unsigned int>("expectedOffsetNoStreamEndLumi", 0);
0875 desc.addUntracked<unsigned int>("expectedGlobalBeginLumi", 0);
0876 desc.addUntracked<unsigned int>("expectedOffsetNoGlobalEndLumi", 0);
0877 desc.addUntracked<unsigned int>("expectedOffsetNoWriteLumi", 0);
0878
0879 desc.addUntracked<unsigned int>("expectedStreamBeginRun", kUnset);
0880 desc.addUntracked<unsigned int>("expectedOffsetNoStreamEndRun", 0);
0881 desc.addUntracked<unsigned int>("expectedGlobalBeginRun", 0);
0882 desc.addUntracked<unsigned int>("expectedOffsetNoGlobalEndRun", 0);
0883 desc.addUntracked<unsigned int>("expectedOffsetNoWriteRun", 0);
0884
0885 descriptions.addDefault(desc);
0886 }
0887
0888 }
0889 using edmtest::ExceptionThrowingProducer;
0890 DEFINE_FWK_MODULE(ExceptionThrowingProducer);