Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-31 04:19:43

0001 /*sageTest and 
0002     Reads and comapres them.
0003 
0004    The Init/EventMessage(s) are ONLY dumped if they are different 
0005    (Shouldn't be in this original code).
0006 
0007 Disclaimer: Most of the code here is randomly written during
0008                testing various parts, its not a supported testing code.
0009                Changes can and will be made, when and if required.
0010 
0011 */
0012 
0013 #include <iostream>
0014 #include "IOPool/Streamer/interface/MsgTools.h"
0015 #include "IOPool/Streamer/interface/EventMsgBuilder.h"
0016 #include "IOPool/Streamer/interface/InitMsgBuilder.h"
0017 #include "IOPool/Streamer/interface/InitMessage.h"
0018 #include "IOPool/Streamer/interface/EventMessage.h"
0019 
0020 #include "FWCore/Utilities/interface/Adler32Calculator.h"
0021 #include "FWCore/Utilities/interface/Exception.h"
0022 #include "IOPool/Streamer/interface/DumpTools.h"
0023 #include "zlib.h"
0024 
0025 int main() try {
0026   using namespace edm::streamer;
0027 
0028   typedef std::vector<uint8> Buffer;
0029   Buffer buf(2024);
0030   Buffer buf2(2024);
0031 
0032   // ----------- init
0033 
0034   char psetid[] = "1234567890123456";
0035   char test_value[] = "This is a test, This is a";
0036   Strings hlt_names;
0037   Strings l1_names;
0038 
0039   hlt_names.push_back("a");
0040   hlt_names.push_back("b");
0041   hlt_names.push_back("c");
0042   hlt_names.push_back("d");
0043   hlt_names.push_back("e");
0044   hlt_names.push_back("f");
0045   hlt_names.push_back("g");
0046   hlt_names.push_back("h");
0047   hlt_names.push_back("i");
0048 
0049   l1_names.push_back("t10");
0050   l1_names.push_back("t11");
0051   l1_names.push_back("t12");
0052   l1_names.push_back("t13");
0053   l1_names.push_back("t14");
0054   l1_names.push_back("t15");
0055   l1_names.push_back("t16");
0056   l1_names.push_back("t17");
0057   l1_names.push_back("t18");
0058   l1_names.push_back("t19");
0059   l1_names.push_back("t20");
0060 
0061   char reltag[] = "CMSSW_0_8_0_pre7";
0062   std::string processName = "HLT";
0063   std::string outputModuleLabel = "HLTOutput";
0064 
0065   uLong crc = crc32(0L, Z_NULL, 0);
0066   Bytef* crcbuf = (Bytef*)outputModuleLabel.data();
0067   crc = crc32(crc, crcbuf, outputModuleLabel.length());
0068 
0069   uint32 adler32_chksum = (uint32)cms::Adler32((char*)&test_value[0], sizeof(test_value));
0070 
0071   InitMsgBuilder init(&buf[0],
0072                       buf.size(),
0073                       12,
0074                       Version((const uint8*)psetid),
0075                       (const char*)reltag,
0076                       processName.c_str(),
0077                       outputModuleLabel.c_str(),
0078                       crc,
0079                       hlt_names,
0080                       hlt_names,
0081                       l1_names,
0082                       adler32_chksum);
0083 
0084   init.setDataLength(sizeof(test_value));
0085   std::copy(&test_value[0], &test_value[0] + sizeof(test_value), init.dataAddress());
0086 
0087   InitMsgView view(&buf[0]);
0088   uint8 psetid2[16];
0089   Strings hlt2;
0090   Strings l12;
0091   view.pset(psetid2);
0092   view.hltTriggerNames(hlt2);
0093   view.l1TriggerNames(l12);
0094 
0095   uint32 adler32_2 = view.adler32_chksum();
0096 
0097   InitMsgBuilder init2(&buf2[0],
0098                        buf2.size(),
0099                        view.run(),
0100                        Version((const uint8*)psetid2),
0101                        view.releaseTag().c_str(),
0102                        processName.c_str(),
0103                        outputModuleLabel.c_str(),
0104                        crc,
0105                        hlt2,
0106                        hlt2,
0107                        l12,
0108                        adler32_2);
0109 
0110   init2.setDataLength(view.descLength());
0111   std::copy(view.descData(), view.descData() + view.size(), init2.dataAddress());
0112 
0113   if (equal(&buf[0], &buf[0] + view.size(), buf2.begin()) == false) {
0114     std::cerr << "Init buffers not the same!\n";
0115     dumpInit(&buf[0]);
0116     dumpInit(&buf2[0]);
0117     abort();
0118   }
0119 
0120   // ------- event
0121 
0122   std::vector<bool> l1bit(16);
0123   uint8 hltbits[] = "4567";
0124   const int hltsize = (sizeof(hltbits) - 1) * 4;
0125 
0126   l1bit[0] = true;
0127   l1bit[4] = true;
0128   l1bit[8] = false;
0129   l1bit[12] = true;
0130   l1bit[1] = true;
0131   l1bit[5] = false;
0132   l1bit[9] = false;
0133   l1bit[13] = false;
0134   l1bit[2] = false;
0135   l1bit[6] = true;
0136   l1bit[10] = true;
0137   l1bit[14] = false;
0138   l1bit[3] = false;
0139   l1bit[7] = false;
0140   l1bit[11] = true;
0141   l1bit[15] = true;
0142 
0143   adler32_chksum = (uint32)cms::Adler32((char*)&test_value[0], sizeof(test_value));
0144   std::string host_name = "mytestnode.cms";
0145 
0146   EventMsgBuilder emb(
0147       &buf[0], buf.size(), 45, 2020, 2, 0xdeadbeef, 3, l1bit, hltbits, hltsize, adler32_chksum, host_name.c_str());
0148 
0149   emb.setOrigDataSize(78);
0150   emb.setEventLength(sizeof(test_value));
0151   std::copy(&test_value[0], &test_value[0] + sizeof(test_value), emb.eventAddr());
0152 
0153   // ------ check for sameness
0154 
0155   EventMsgView eview(&buf[0]);
0156 
0157   std::vector<bool> l1_out;
0158   uint8 hlt_out[10];
0159   eview.l1TriggerBits(l1_out);
0160   eview.hltTriggerBits(hlt_out);
0161   adler32_2 = eview.adler32_chksum();
0162   std::string host_name2 = eview.hostName();
0163 
0164   EventMsgBuilder emb2(&buf2[0],
0165                        buf.size(),
0166                        eview.run(),
0167                        eview.event(),
0168                        eview.lumi(),
0169                        eview.outModId(),
0170                        eview.droppedEventsCount(),
0171                        l1_out,
0172                        hlt_out,
0173                        hltsize,
0174                        adler32_2,
0175                        host_name2.c_str());
0176 
0177   emb2.setOrigDataSize(eview.origDataSize());
0178   emb2.setEventLength(eview.eventLength());
0179   std::copy(eview.eventData(), eview.eventData() + eview.eventLength(), emb2.eventAddr());
0180 
0181   if (equal(&buf[0], &buf[0] + emb.size(), buf2.begin()) == false) {
0182     std::cerr << "event messages not the same\n";
0183     std::cerr << "size 1st=" << emb.size() << "\n"
0184               << "size 2nd=" << emb2.size() << "\n";
0185 
0186     dumpEvent(&buf[0]);
0187     dumpEvent(&buf2[0]);
0188     abort();
0189   }
0190   return 0;
0191 } catch (cms::Exception const& e) {
0192   std::cerr << e.explainSelf() << std::endl;
0193   return 1;
0194 }