CMS 3D CMS Logo

ConcurrentIOVAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FWCore/Integration
4 // Class: ConcurrentIOVAnalyzer
5 //
11 // Original Author: Chris Jones
12 // Created: Fri Jun 24 19:13:25 EDT 2005
13 
27 
29 
30 #include <vector>
31 
32 namespace edmtest {
33 
35  public:
37 
38  void analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const override;
39 
41 
42  private:
54  };
55 
57  : checkExpectedValues_{pset.getUntrackedParameter<bool>("checkExpectedValues")},
58  esTokenFromESSource_{esConsumes(pset.getUntrackedParameter<edm::ESInputTag>("fromSource"))},
59  esTokenFromESProducer_{esConsumes(edm::ESInputTag("", "fromESProducer"))},
60  expectedESAcquireTestResults_{pset.getUntrackedParameter<std::vector<int>>("expectedESAcquireTestResults")},
61  expectedUniquePtrTestValue_{pset.getUntrackedParameter<int>("expectedUniquePtrTestValue")},
62  expectedOptionalTestValue_{pset.getUntrackedParameter<int>("expectedOptionalTestValue")} {
63  if (!expectedESAcquireTestResults_.empty()) {
64  esTokenFromAcquireIntESProducer_ = esConsumes(edm::ESInputTag("", "fromAcquireIntESProducer"));
65  }
66  if (expectedUniquePtrTestValue_ != 0) {
67  esTokenUniquePtrTestValue_ = esConsumes(edm::ESInputTag("", "uniquePtr"));
68  esTokenLambdaUniquePtrTestValue_ = esConsumes(edm::ESInputTag("", "uniquePtrLambda"));
69  }
70  if (expectedOptionalTestValue_ != 0) {
71  esTokenOptionalTestValue_ = esConsumes(edm::ESInputTag("", "optional"));
72  esTokenLambdaOptionalTestValue_ = esConsumes(edm::ESInputTag("", "optionalLambda"));
73  }
74  }
75 
77  auto lumiNumber = event.eventAuxiliary().luminosityBlock();
78 
79  edm::ESHandle<IOVTestInfo> iovTestInfoFromESSource = eventSetup.getHandle(esTokenFromESSource_);
80  edm::ESHandle<IOVTestInfo> iovTestInfoFromESProducer = eventSetup.getHandle(esTokenFromESProducer_);
81 
82  ESTestRecordI esTestRecordI = eventSetup.get<ESTestRecordI>();
83  edm::ValidityInterval iov = esTestRecordI.validityInterval();
84 
85  if (iovTestInfoFromESSource->iovStartLumi_ != iov.first().luminosityBlockNumber() ||
86  iovTestInfoFromESSource->iovEndLumi_ != iov.last().luminosityBlockNumber() ||
87  iovTestInfoFromESSource->iovIndex_ != esTestRecordI.iovIndex() ||
88  iovTestInfoFromESSource->cacheIdentifier_ != esTestRecordI.cacheIdentifier()) {
89  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
90  << " values read from ESSource do not agree with record";
91  }
92 
93  if (iovTestInfoFromESProducer->iovStartLumi_ != iov.first().luminosityBlockNumber() ||
94  iovTestInfoFromESProducer->iovEndLumi_ != iov.last().luminosityBlockNumber() ||
95  iovTestInfoFromESProducer->iovIndex_ != esTestRecordI.iovIndex() ||
96  iovTestInfoFromESProducer->cacheIdentifier_ != esTestRecordI.cacheIdentifier()) {
97  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
98  << " values read from ESProducer do not agree with record";
99  }
100 
101  // First cacheIdentifier in the test is actually 3 (0, 1, and 2 just are ignored)
102  unsigned int cacheIdentifier = esTestRecordI.cacheIdentifier();
103  if (cacheIdentifier < expectedESAcquireTestResults_.size()) {
104  int testResult = eventSetup.getData(esTokenFromAcquireIntESProducer_).value();
105  if (testResult != expectedESAcquireTestResults_[cacheIdentifier]) {
106  throw cms::Exception("TestFailure")
107  << "ConcurrentIOVAnalyzer::analyze,"
108  << " unexpected value for EventSetup acquire test.\n"
109  << "Expected = " << expectedESAcquireTestResults_[cacheIdentifier] << " result = " << testResult
110  << " cacheIdentifier = " << cacheIdentifier << "\n";
111  }
112  }
113 
114  if (expectedUniquePtrTestValue_ != 0) {
116  throw cms::Exception("TestFailure")
117  << "ConcurrentIOVAnalyzer::analyze,"
118  << " value for unique_ptr test from EventSetup does not match expected value";
119  }
121  throw cms::Exception("TestFailure")
122  << "ConcurrentIOVAnalyzer::analyze,"
123  << " value for lambda unique_ptr test from EventSetup does not match expected value";
124  }
125  }
126 
127  if (expectedOptionalTestValue_ != 0) {
129  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
130  << " value for optional test from EventSetup does not match expected value";
131  }
133  throw cms::Exception("TestFailure")
134  << "ConcurrentIOVAnalyzer::analyze,"
135  << " value for lambda optional test from EventSetup does not match expected value";
136  }
137  }
138 
139  if (!checkExpectedValues_) {
140  return;
141  }
142 
143  // cacheIdentifier starts at 2 for beginRun and 3 is next here for the first lumi
144  if (lumiNumber == 1) {
145  if (iovTestInfoFromESProducer->iovStartLumi_ != 1 || iovTestInfoFromESProducer->iovEndLumi_ != 3 ||
146  iovTestInfoFromESProducer->cacheIdentifier_ != 3) {
147  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
148  << " values read from ESProducer do not agree with expected values";
149  }
150  }
151  if (lumiNumber == 2) {
152  if (iovTestInfoFromESProducer->iovStartLumi_ != 1 || iovTestInfoFromESProducer->iovEndLumi_ != 3 ||
153  iovTestInfoFromESProducer->cacheIdentifier_ != 3) {
154  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
155  << " values read from ESProducer do not agree with expected values";
156  }
157  }
158  if (lumiNumber == 3) {
159  if (iovTestInfoFromESProducer->iovStartLumi_ != 1 || iovTestInfoFromESProducer->iovEndLumi_ != 3 ||
160  iovTestInfoFromESProducer->cacheIdentifier_ != 3) {
161  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
162  << " values read from ESProducer do not agree with expected values";
163  }
164  }
165  if (lumiNumber == 4) {
166  if (iovTestInfoFromESProducer->iovStartLumi_ != 4 || iovTestInfoFromESProducer->iovEndLumi_ != 5 ||
167  iovTestInfoFromESProducer->cacheIdentifier_ != 4) {
168  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
169  << " values read from ESProducer do not agree with expected values";
170  }
171  }
172  if (lumiNumber == 5) {
173  if (iovTestInfoFromESProducer->iovStartLumi_ != 4 || iovTestInfoFromESProducer->iovEndLumi_ != 5 ||
174  iovTestInfoFromESProducer->cacheIdentifier_ != 4) {
175  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
176  << " values read from ESProducer do not agree with expected values";
177  }
178  }
179  if (lumiNumber == 6) {
180  if (iovTestInfoFromESProducer->iovStartLumi_ != 6 || iovTestInfoFromESProducer->iovEndLumi_ != 6 ||
181  iovTestInfoFromESProducer->cacheIdentifier_ != 5) {
182  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
183  << " values read from ESProducer do not agree with expected values";
184  }
185  }
186  if (lumiNumber == 7) {
187  if (iovTestInfoFromESProducer->iovStartLumi_ != 7 || iovTestInfoFromESProducer->iovEndLumi_ != 7 ||
188  iovTestInfoFromESProducer->cacheIdentifier_ != 6) {
189  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
190  << " values read from ESProducer do not agree with expected values";
191  }
192  }
193  if (lumiNumber == 8) {
194  if (iovTestInfoFromESProducer->iovStartLumi_ != 8 || iovTestInfoFromESProducer->iovEndLumi_ != 8 ||
195  iovTestInfoFromESProducer->cacheIdentifier_ != 7) {
196  throw cms::Exception("TestFailure") << "ConcurrentIOVAnalyzer::analyze,"
197  << " values read from ESProducer do not agree with expected values";
198  }
199  }
200  }
201 
204  desc.addUntracked<bool>("checkExpectedValues", true);
205  desc.addUntracked<edm::ESInputTag>("fromSource", edm::ESInputTag("", ""));
206  desc.addUntracked<std::vector<int>>("expectedESAcquireTestResults", std::vector<int>());
207  desc.addUntracked<int>("expectedUniquePtrTestValue", 0);
208  desc.addUntracked<int>("expectedOptionalTestValue", 0);
209  descriptions.addDefault(desc);
210  }
211 } // namespace edmtest
212 using namespace edmtest;
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
unsigned int iovEndLumi_
Definition: IOVTestInfo.h:24
ConcurrentIOVAnalyzer(edm::ParameterSet const &)
unsigned int iovIndex_
Definition: IOVTestInfo.h:25
static void fillDescriptions(edm::ConfigurationDescriptions &)
edm::ESGetToken< ESTestDataI, ESTestRecordI > esTokenLambdaUniquePtrTestValue_
edm::ESGetToken< IOVTestInfo, ESTestRecordI > const esTokenFromESProducer_
unsigned long long cacheIdentifier() const
edm::ESGetToken< ESTestDataI, ESTestRecordI > esTokenLambdaOptionalTestValue_
edm::ESGetToken< ESTestDataI, ESTestRecordI > esTokenOptionalTestValue_
void addDefault(ParameterSetDescription const &psetDescription)
edm::ESGetToken< IOVTestInfo, ESTestRecordI > const esTokenFromESSource_
unsigned int iovStartLumi_
Definition: IOVTestInfo.h:22
std::vector< int > expectedESAcquireTestResults_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void analyze(edm::StreamID, edm::Event const &, edm::EventSetup const &) const override
unsigned long long cacheIdentifier_
Definition: IOVTestInfo.h:26
ValidityInterval validityInterval() const
edm::ESGetToken< ESTestDataI, ESTestRecordI > esTokenUniquePtrTestValue_
Definition: event.py:1
edm::ESGetToken< ESTestDataI, ESTestRecordI > esTokenFromAcquireIntESProducer_