File indexing completed on 2024-04-06 12:05:05
0001
0002
0003
0004
0005 #include "cppunit/extensions/HelperMacros.h"
0006
0007 #include "DataFormats/Provenance/interface/ProcessHistoryID.h"
0008 #include "DataFormats/Provenance/interface/ProcessConfiguration.h"
0009 #include "DataFormats/Provenance/interface/ProcessHistory.h"
0010
0011 #include "DataFormats/Provenance/interface/IndexIntoFile.h"
0012
0013 #include <string>
0014 #include <iostream>
0015 #include <memory>
0016
0017 using namespace edm;
0018
0019 class TestIndexIntoFile1 : public CppUnit::TestFixture {
0020 CPPUNIT_TEST_SUITE(TestIndexIntoFile1);
0021 CPPUNIT_TEST(testRunOrLumiEntry);
0022 CPPUNIT_TEST(testRunOrLumiIndexes);
0023 CPPUNIT_TEST(testEventEntry);
0024 CPPUNIT_TEST(testSortedRunOrLumiItr);
0025 CPPUNIT_TEST(testKeys);
0026 CPPUNIT_TEST(testConstructor);
0027 CPPUNIT_TEST_SUITE_END();
0028
0029 public:
0030 static const IndexIntoFile::EntryType kRun = IndexIntoFile::kRun;
0031 static const IndexIntoFile::EntryType kLumi = IndexIntoFile::kLumi;
0032 static const IndexIntoFile::EntryType kEvent = IndexIntoFile::kEvent;
0033 static const IndexIntoFile::EntryType kEnd = IndexIntoFile::kEnd;
0034
0035 void setUp() {
0036
0037 nullPHID = ProcessHistoryID();
0038
0039 ProcessConfiguration pc;
0040 auto processHistory1 = std::make_unique<ProcessHistory>();
0041 ProcessHistory& ph1 = *processHistory1;
0042 processHistory1->push_back(pc);
0043 fakePHID1 = ph1.id();
0044
0045 auto processHistory2 = std::make_unique<ProcessHistory>();
0046 ProcessHistory& ph2 = *processHistory2;
0047 processHistory2->push_back(pc);
0048 processHistory2->push_back(pc);
0049 fakePHID2 = ph2.id();
0050
0051 auto processHistory3 = std::make_unique<ProcessHistory>();
0052 ProcessHistory& ph3 = *processHistory3;
0053 processHistory3->push_back(pc);
0054 processHistory3->push_back(pc);
0055 processHistory3->push_back(pc);
0056 fakePHID3 = ph3.id();
0057 }
0058
0059 void tearDown() {}
0060
0061 void testRunOrLumiEntry();
0062 void testRunOrLumiIndexes();
0063 void testEventEntry();
0064 void testSortedRunOrLumiItr();
0065 void testKeys();
0066 void testConstructor();
0067
0068 ProcessHistoryID nullPHID;
0069 ProcessHistoryID fakePHID1;
0070 ProcessHistoryID fakePHID2;
0071 ProcessHistoryID fakePHID3;
0072 };
0073
0074
0075 CPPUNIT_TEST_SUITE_REGISTRATION(TestIndexIntoFile1);
0076
0077 void TestIndexIntoFile1::testRunOrLumiEntry() {
0078 edm::IndexIntoFile::RunOrLumiEntry r1;
0079 CPPUNIT_ASSERT(r1.orderPHIDRun() == edm::IndexIntoFile::invalidEntry);
0080 CPPUNIT_ASSERT(r1.orderPHIDRunLumi() == edm::IndexIntoFile::invalidEntry);
0081 CPPUNIT_ASSERT(r1.entry() == edm::IndexIntoFile::invalidEntry);
0082 CPPUNIT_ASSERT(r1.processHistoryIDIndex() == edm::IndexIntoFile::invalidIndex);
0083 CPPUNIT_ASSERT(r1.run() == edm::IndexIntoFile::invalidRun);
0084 CPPUNIT_ASSERT(r1.lumi() == edm::IndexIntoFile::invalidLumi);
0085 CPPUNIT_ASSERT(r1.beginEvents() == edm::IndexIntoFile::invalidEntry);
0086 CPPUNIT_ASSERT(r1.endEvents() == edm::IndexIntoFile::invalidEntry);
0087
0088 edm::IndexIntoFile::RunOrLumiEntry r2(1, 2, 3, 4, 5, 6, 7, 8);
0089
0090 CPPUNIT_ASSERT(r2.orderPHIDRun() == 1);
0091 CPPUNIT_ASSERT(r2.orderPHIDRunLumi() == 2);
0092 CPPUNIT_ASSERT(r2.entry() == 3);
0093 CPPUNIT_ASSERT(r2.processHistoryIDIndex() == 4);
0094 CPPUNIT_ASSERT(r2.run() == 5);
0095 CPPUNIT_ASSERT(r2.lumi() == 6);
0096 CPPUNIT_ASSERT(r2.beginEvents() == 7);
0097 CPPUNIT_ASSERT(r2.endEvents() == 8);
0098
0099 CPPUNIT_ASSERT(r2.isRun() == false);
0100
0101 edm::IndexIntoFile::RunOrLumiEntry r3(1, 2, 3, 4, 5, edm::IndexIntoFile::invalidLumi, 7, 8);
0102
0103 CPPUNIT_ASSERT(r3.isRun() == true);
0104
0105 r3.setOrderPHIDRun(11);
0106 CPPUNIT_ASSERT(r3.orderPHIDRun() == 11);
0107 r3.setProcessHistoryIDIndex(12);
0108 CPPUNIT_ASSERT(r3.processHistoryIDIndex() == 12);
0109 r3.setOrderPHIDRun(1);
0110
0111 CPPUNIT_ASSERT(!(r2 < r3));
0112 CPPUNIT_ASSERT(!(r3 < r2));
0113
0114 edm::IndexIntoFile::RunOrLumiEntry r4(10, 1, 1, 4, 5, 6, 7, 8);
0115 CPPUNIT_ASSERT(r2 < r4);
0116 CPPUNIT_ASSERT(!(r4 < r2));
0117
0118 edm::IndexIntoFile::RunOrLumiEntry r5(1, 10, 1, 4, 5, 6, 7, 8);
0119 CPPUNIT_ASSERT(r2 < r5);
0120 CPPUNIT_ASSERT(!(r5 < r2));
0121
0122 edm::IndexIntoFile::RunOrLumiEntry r6(1, 2, 10, 4, 5, 6, 7, 8);
0123 CPPUNIT_ASSERT(r2 < r6);
0124 CPPUNIT_ASSERT(!(r6 < r2));
0125
0126 r3.setOrderPHIDRunLumi(1001);
0127 CPPUNIT_ASSERT(r3.orderPHIDRunLumi() == 1001);
0128 }
0129
0130 void TestIndexIntoFile1::testRunOrLumiIndexes() {
0131 edm::IndexIntoFile::RunOrLumiIndexes r1(1, 2, 3, 4);
0132 CPPUNIT_ASSERT(r1.processHistoryIDIndex() == 1);
0133 CPPUNIT_ASSERT(r1.run() == 2);
0134 CPPUNIT_ASSERT(r1.lumi() == 3);
0135 CPPUNIT_ASSERT(r1.indexToGetEntry() == 4);
0136 CPPUNIT_ASSERT(r1.beginEventNumbers() == -1);
0137 CPPUNIT_ASSERT(r1.endEventNumbers() == -1);
0138
0139 r1.setBeginEventNumbers(11);
0140 r1.setEndEventNumbers(12);
0141 CPPUNIT_ASSERT(r1.beginEventNumbers() == 11);
0142 CPPUNIT_ASSERT(r1.endEventNumbers() == 12);
0143
0144 CPPUNIT_ASSERT(r1.isRun() == false);
0145
0146 edm::IndexIntoFile::RunOrLumiIndexes r2(1, 2, edm::IndexIntoFile::invalidLumi, 4);
0147 CPPUNIT_ASSERT(r2.isRun() == true);
0148
0149 edm::IndexIntoFile::RunOrLumiIndexes r3(1, 2, 3, 4);
0150 CPPUNIT_ASSERT(!(r1 < r3));
0151 CPPUNIT_ASSERT(!(r3 < r1));
0152
0153 edm::IndexIntoFile::RunOrLumiIndexes r4(11, 2, 3, 4);
0154 CPPUNIT_ASSERT(r1 < r4);
0155 CPPUNIT_ASSERT(!(r4 < r1));
0156
0157 edm::IndexIntoFile::RunOrLumiIndexes r5(1, 11, 1, 4);
0158 CPPUNIT_ASSERT(r1 < r5);
0159 CPPUNIT_ASSERT(!(r5 < r1));
0160
0161 edm::IndexIntoFile::RunOrLumiIndexes r6(1, 2, 11, 4);
0162 CPPUNIT_ASSERT(r1 < r6);
0163 CPPUNIT_ASSERT(!(r6 < r1));
0164
0165 Compare_Index_Run c;
0166 CPPUNIT_ASSERT(!c(r1, r6));
0167 CPPUNIT_ASSERT(!c(r6, r1));
0168 CPPUNIT_ASSERT(c(r1, r5));
0169 CPPUNIT_ASSERT(!c(r5, r1));
0170 CPPUNIT_ASSERT(c(r1, r4));
0171 CPPUNIT_ASSERT(!c(r4, r1));
0172
0173 Compare_Index c1;
0174 CPPUNIT_ASSERT(!c1(r1, r5));
0175 CPPUNIT_ASSERT(!c1(r5, r1));
0176 CPPUNIT_ASSERT(c1(r1, r4));
0177 CPPUNIT_ASSERT(!c1(r4, r1));
0178 }
0179
0180 void TestIndexIntoFile1::testEventEntry() {
0181 edm::IndexIntoFile::EventEntry e1;
0182 CPPUNIT_ASSERT(e1.event() == edm::IndexIntoFile::invalidEvent);
0183 CPPUNIT_ASSERT(e1.entry() == edm::IndexIntoFile::invalidEntry);
0184
0185 edm::IndexIntoFile::EventEntry e2(100, 200);
0186 CPPUNIT_ASSERT(e2.event() == 100);
0187 CPPUNIT_ASSERT(e2.entry() == 200);
0188
0189 edm::IndexIntoFile::EventEntry e3(100, 300);
0190 edm::IndexIntoFile::EventEntry e4(200, 300);
0191 edm::IndexIntoFile::EventEntry e5(200, 100);
0192
0193 CPPUNIT_ASSERT(e2 == e3);
0194 CPPUNIT_ASSERT(!(e3 == e4));
0195
0196 CPPUNIT_ASSERT(e3 < e4);
0197 CPPUNIT_ASSERT(e3 < e5);
0198 CPPUNIT_ASSERT(!(e4 < e5));
0199 }
0200
0201 void TestIndexIntoFile1::testSortedRunOrLumiItr() {
0202 edm::IndexIntoFile indexIntoFile0;
0203 CPPUNIT_ASSERT(indexIntoFile0.empty());
0204 edm::IndexIntoFile::SortedRunOrLumiItr iter(&indexIntoFile0, 0);
0205 CPPUNIT_ASSERT(iter.indexIntoFile() == &indexIntoFile0);
0206 CPPUNIT_ASSERT(iter.runOrLumi() == 0);
0207 ++iter;
0208 CPPUNIT_ASSERT(iter.runOrLumi() == 0);
0209 CPPUNIT_ASSERT(iter == indexIntoFile0.beginRunOrLumi());
0210 CPPUNIT_ASSERT(iter == indexIntoFile0.endRunOrLumi());
0211
0212 edm::IndexIntoFile indexIntoFile;
0213 indexIntoFile.addEntry(fakePHID1, 1, 1, 1, 0);
0214 indexIntoFile.addEntry(fakePHID1, 1, 1, 2, 1);
0215 indexIntoFile.addEntry(fakePHID1, 1, 1, 0, 0);
0216 indexIntoFile.addEntry(fakePHID1, 1, 2, 1, 2);
0217 indexIntoFile.addEntry(fakePHID1, 1, 2, 2, 3);
0218 indexIntoFile.addEntry(fakePHID1, 1, 2, 3, 4);
0219 indexIntoFile.addEntry(fakePHID1, 1, 2, 0, 1);
0220 indexIntoFile.addEntry(fakePHID1, 1, 1, 3, 5);
0221 indexIntoFile.addEntry(fakePHID1, 1, 1, 4, 6);
0222 indexIntoFile.addEntry(fakePHID1, 1, 1, 0, 0);
0223 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0224 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0225
0226 CPPUNIT_ASSERT(!indexIntoFile.empty());
0227
0228 unsigned count = 0;
0229 IndexIntoFile::SortedRunOrLumiItr runOrLumi = indexIntoFile.beginRunOrLumi();
0230 for (IndexIntoFile::SortedRunOrLumiItr endRunOrLumi = indexIntoFile.endRunOrLumi(); runOrLumi != endRunOrLumi;
0231 ++runOrLumi) {
0232 long long beginEventNumbers;
0233 long long endEventNumbers;
0234 IndexIntoFile::EntryNumber_t beginEventEntry;
0235 IndexIntoFile::EntryNumber_t endEventEntry;
0236 runOrLumi.getRange(beginEventNumbers, endEventNumbers, beginEventEntry, endEventEntry);
0237
0238 if (count == 0) {
0239 CPPUNIT_ASSERT(runOrLumi.isRun());
0240 CPPUNIT_ASSERT(beginEventNumbers == -1);
0241 CPPUNIT_ASSERT(endEventNumbers == -1);
0242 CPPUNIT_ASSERT(beginEventEntry == -1);
0243 CPPUNIT_ASSERT(endEventEntry == -1);
0244 } else if (count == 3) {
0245 CPPUNIT_ASSERT(!runOrLumi.isRun());
0246 CPPUNIT_ASSERT(beginEventNumbers == 4);
0247 CPPUNIT_ASSERT(endEventNumbers == 7);
0248 CPPUNIT_ASSERT(beginEventEntry == 2);
0249 CPPUNIT_ASSERT(endEventEntry == 5);
0250
0251 IndexIntoFile::RunOrLumiIndexes const& indexes = runOrLumi.runOrLumiIndexes();
0252 CPPUNIT_ASSERT(indexes.processHistoryIDIndex() == 0);
0253 CPPUNIT_ASSERT(indexes.run() == 1U);
0254 CPPUNIT_ASSERT(indexes.lumi() == 2U);
0255 CPPUNIT_ASSERT(indexes.indexToGetEntry() == 3);
0256 CPPUNIT_ASSERT(indexes.beginEventNumbers() == 4);
0257 CPPUNIT_ASSERT(indexes.endEventNumbers() == 7);
0258 }
0259
0260 CPPUNIT_ASSERT(runOrLumi.runOrLumi() == count);
0261 ++count;
0262 }
0263 CPPUNIT_ASSERT(count == 4U);
0264 CPPUNIT_ASSERT(runOrLumi.runOrLumi() == 4U);
0265 ++runOrLumi;
0266 CPPUNIT_ASSERT(runOrLumi.runOrLumi() == 4U);
0267
0268 CPPUNIT_ASSERT(runOrLumi == indexIntoFile.endRunOrLumi());
0269 CPPUNIT_ASSERT(!(runOrLumi == indexIntoFile.beginRunOrLumi()));
0270 CPPUNIT_ASSERT(!(iter == indexIntoFile.beginRunOrLumi()));
0271
0272 CPPUNIT_ASSERT(!(runOrLumi != indexIntoFile.endRunOrLumi()));
0273 CPPUNIT_ASSERT(runOrLumi != indexIntoFile.beginRunOrLumi());
0274 CPPUNIT_ASSERT(iter != indexIntoFile.beginRunOrLumi());
0275 }
0276
0277 void TestIndexIntoFile1::testKeys() {
0278 IndexIntoFile::IndexRunKey key1(1, 2);
0279 CPPUNIT_ASSERT(key1.processHistoryIDIndex() == 1);
0280 CPPUNIT_ASSERT(key1.run() == 2);
0281
0282 IndexIntoFile::IndexRunKey key2(1, 2);
0283 CPPUNIT_ASSERT(!(key1 < key2));
0284 CPPUNIT_ASSERT(!(key2 < key1));
0285
0286 IndexIntoFile::IndexRunKey key3(1, 3);
0287 CPPUNIT_ASSERT(key1 < key3);
0288 CPPUNIT_ASSERT(!(key3 < key1));
0289
0290 IndexIntoFile::IndexRunKey key4(10, 1);
0291 CPPUNIT_ASSERT(key1 < key4);
0292 CPPUNIT_ASSERT(!(key4 < key1));
0293
0294 IndexIntoFile::IndexRunLumiKey k1(1, 2, 3);
0295 CPPUNIT_ASSERT(k1.processHistoryIDIndex() == 1);
0296 CPPUNIT_ASSERT(k1.run() == 2);
0297 CPPUNIT_ASSERT(k1.lumi() == 3);
0298
0299 IndexIntoFile::IndexRunLumiKey k2(1, 2, 3);
0300 CPPUNIT_ASSERT(!(k1 < k2));
0301 CPPUNIT_ASSERT(!(k2 < k1));
0302
0303 IndexIntoFile::IndexRunLumiKey k3(1, 2, 4);
0304 CPPUNIT_ASSERT(k1 < k3);
0305 CPPUNIT_ASSERT(!(k3 < k1));
0306
0307 IndexIntoFile::IndexRunLumiKey k4(1, 3, 1);
0308 CPPUNIT_ASSERT(k1 < k4);
0309 CPPUNIT_ASSERT(!(k4 < k1));
0310
0311 IndexIntoFile::IndexRunLumiKey k5(11, 1, 1);
0312 CPPUNIT_ASSERT(k1 < k5);
0313 CPPUNIT_ASSERT(!(k5 < k1));
0314
0315 IndexIntoFile::IndexRunLumiEventKey e1(1, 2, 3, 4);
0316 CPPUNIT_ASSERT(e1.processHistoryIDIndex() == 1);
0317 CPPUNIT_ASSERT(e1.run() == 2);
0318 CPPUNIT_ASSERT(e1.lumi() == 3);
0319 CPPUNIT_ASSERT(e1.event() == 4);
0320
0321 IndexIntoFile::IndexRunLumiEventKey e2(1, 2, 3, 4);
0322 CPPUNIT_ASSERT(!(e1 < e2));
0323 CPPUNIT_ASSERT(!(e2 < e1));
0324
0325 IndexIntoFile::IndexRunLumiEventKey e3(1, 2, 3, 5);
0326 CPPUNIT_ASSERT(e1 < e3);
0327 CPPUNIT_ASSERT(!(e3 < e1));
0328
0329 IndexIntoFile::IndexRunLumiEventKey e4(1, 2, 11, 1);
0330 CPPUNIT_ASSERT(e1 < e4);
0331 CPPUNIT_ASSERT(!(e4 < e1));
0332
0333 IndexIntoFile::IndexRunLumiEventKey e5(1, 11, 1, 1);
0334 CPPUNIT_ASSERT(e1 < e5);
0335 CPPUNIT_ASSERT(!(e5 < e1));
0336
0337 IndexIntoFile::IndexRunLumiEventKey e6(11, 1, 1, 1);
0338 CPPUNIT_ASSERT(e1 < e6);
0339 CPPUNIT_ASSERT(!(e6 < e1));
0340 }
0341
0342 void TestIndexIntoFile1::testConstructor() {
0343 edm::IndexIntoFile indexIntoFile;
0344 CPPUNIT_ASSERT(indexIntoFile.runOrLumiEntries().empty());
0345 CPPUNIT_ASSERT(indexIntoFile.processHistoryIDs().empty());
0346 CPPUNIT_ASSERT(indexIntoFile.eventEntries().empty());
0347 CPPUNIT_ASSERT(indexIntoFile.eventNumbers().empty());
0348 CPPUNIT_ASSERT(indexIntoFile.setRunOrLumiEntries().empty());
0349 CPPUNIT_ASSERT(indexIntoFile.setProcessHistoryIDs().empty());
0350
0351 std::vector<LuminosityBlockNumber_t> lumis;
0352 lumis.push_back(1);
0353 edm::IndexIntoFile::IndexIntoFileItr iter = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0354 iter.getLumisInRun(lumis);
0355 CPPUNIT_ASSERT(lumis.empty());
0356 }