test.cc
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:10k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. #include "test.hh"
  19. #include <vector>
  20. int main()
  21. {
  22.   org::apache::hadoop::record::test::RecRecord1 r1;
  23.   org::apache::hadoop::record::test::RecRecord1 r2;
  24.   {
  25.     hadoop::FileOutStream ostream;
  26.     ostream.open("/tmp/hadooptmp.dat", true);
  27.     hadoop::RecordWriter writer(ostream, hadoop::kBinary);
  28.     r1.setBoolVal(true);
  29.     r1.setByteVal((int8_t)0x66);
  30.     r1.setFloatVal(3.145);
  31.     r1.setDoubleVal(1.5234);
  32.     r1.setIntVal(4567);
  33.     r1.setLongVal(0x5a5a5a5a5a5aLL);
  34.     std::string& s = r1.getStringVal();
  35.     s = "random text";
  36.     writer.write(r1);
  37.     ostream.close();
  38.     hadoop::FileInStream istream;
  39.     istream.open("/tmp/hadooptmp.dat");
  40.     hadoop::RecordReader reader(istream, hadoop::kBinary);
  41.     reader.read(r2);
  42.     if (r1 == r2) {
  43.       printf("Binary archive test passed.n");
  44.     } else {
  45.       printf("Binary archive test failed.n");
  46.     }
  47.     istream.close();
  48.   }
  49.   {
  50.     hadoop::FileOutStream ostream;
  51.     ostream.open("/tmp/hadooptmp.txt", true);
  52.     hadoop::RecordWriter writer(ostream, hadoop::kCSV);
  53.     r1.setBoolVal(true);
  54.     r1.setByteVal((int8_t)0x66);
  55.     r1.setFloatVal(3.145);
  56.     r1.setDoubleVal(1.5234);
  57.     r1.setIntVal(4567);
  58.     r1.setLongVal(0x5a5a5a5a5a5aLL);
  59.     std::string& s = r1.getStringVal();
  60.     s = "random text";
  61.     writer.write(r1);
  62.     ostream.close();
  63.     hadoop::FileInStream istream;
  64.     istream.open("/tmp/hadooptmp.txt");
  65.     hadoop::RecordReader reader(istream, hadoop::kCSV);
  66.     reader.read(r2);
  67.     if (r1 == r2) {
  68.       printf("CSV archive test passed.n");
  69.     } else {
  70.       printf("CSV archive test failed.n");
  71.     }
  72.     istream.close();
  73.   }
  74.   {
  75.     hadoop::FileOutStream ostream;
  76.     ostream.open("/tmp/hadooptmp.xml", true);
  77.     hadoop::RecordWriter writer(ostream, hadoop::kXML);
  78.     r1.setBoolVal(true);
  79.     r1.setByteVal((int8_t)0x66);
  80.     r1.setFloatVal(3.145);
  81.     r1.setDoubleVal(1.5234);
  82.     r1.setIntVal(4567);
  83.     r1.setLongVal(0x5a5a5a5a5a5aLL);
  84.     std::string& s = r1.getStringVal();
  85.     s = "random text";
  86.     writer.write(r1);
  87.     ostream.close();
  88.     hadoop::FileInStream istream;
  89.     istream.open("/tmp/hadooptmp.xml");
  90.     hadoop::RecordReader reader(istream, hadoop::kXML);
  91.     reader.read(r2);
  92.     if (r1 == r2) {
  93.       printf("XML archive test passed.n");
  94.     } else {
  95.       printf("XML archive test failed.n");
  96.     }
  97.     istream.close();
  98.   }
  99.   
  100.   /* 
  101.    * Tests to check for versioning functionality
  102.    */
  103.   
  104.   // basic test
  105.   // write out a record and its type info, read it back using its typeinfo
  106.   {
  107.     hadoop::FileOutStream ostream, ortistream;
  108.     ostream.open("/tmp/hadooptmp.dat", true);
  109.     ortistream.open("/tmp/hadooprti.dat", true);
  110.     hadoop::RecordWriter writer(ostream, hadoop::kBinary);
  111.     hadoop::RecordWriter writerRti(ortistream, hadoop::kBinary);
  112.     r1.setBoolVal(true);
  113.     r1.setByteVal((int8_t)0x66);
  114.     r1.setFloatVal(3.145);
  115.     r1.setDoubleVal(1.5234);
  116.     r1.setIntVal(4567);
  117.     r1.setLongVal(0x5a5a5a5a5a5aLL);
  118.     std::string& s = r1.getStringVal();
  119.     s = "random text";
  120.     writer.write(r1);
  121.     ostream.close();
  122.     // write out rti info
  123.     writerRti.write(org::apache::hadoop::record::test::RecRecord1::getTypeInfo());
  124.     ortistream.close();
  125.     // read
  126.     hadoop::FileInStream istream;
  127.     istream.open("/tmp/hadooptmp.dat");
  128.     hadoop::RecordReader reader(istream, hadoop::kBinary);
  129.     hadoop::FileInStream irtistream;
  130.     irtistream.open("/tmp/hadooprti.dat");
  131.     hadoop::RecordReader readerRti(irtistream, hadoop::kBinary);
  132.     hadoop::RecordTypeInfo rti;
  133.     readerRti.read(rti);
  134.     irtistream.close();
  135.     org::apache::hadoop::record::test::RecRecord1::setTypeFilter(rti);
  136.     reader.read(r2);
  137.     if (r1 == r2) {
  138.       printf("Basic versioning test passed.n");
  139.     } else {
  140.       printf("Basic versioning test failed.n");
  141.     }
  142.     istream.close();
  143.   }     
  144.   
  145.   // versioning:write out a record and its type info, read back a similar record using the written record's typeinfo
  146.   {
  147.     hadoop::FileOutStream ostream, ortistream;
  148.     ostream.open("/tmp/hadooptmp.dat", true);
  149.     ortistream.open("/tmp/hadooprti.dat", true);
  150.     hadoop::RecordWriter writer(ostream, hadoop::kBinary);
  151.     hadoop::RecordWriter writerRti(ortistream, hadoop::kBinary);
  152.     // we create an array of records to write
  153.     std::vector<org::apache::hadoop::record::test::RecRecordOld*> recsWrite;
  154.     int i, j, k, l;
  155.     char buf[1000];
  156.     for (i=0; i<5; i++) {
  157.       org::apache::hadoop::record::test::RecRecordOld* ps1Rec = 
  158.         new org::apache::hadoop::record::test::RecRecordOld();
  159.       sprintf(buf, "This is record s1: %d", i);
  160.       ps1Rec->getName().assign(buf);
  161.       for (j=0; j<3; j++) {
  162.         ps1Rec->getIvec().push_back((int64_t)(i+j));
  163.       }
  164.       for (j=0; j<2; j++) {
  165.         std::vector<org::apache::hadoop::record::test::RecRecord0>* pVec = 
  166.           new std::vector<org::apache::hadoop::record::test::RecRecord0>();
  167.         for (k=0; k<3; k++) {
  168.           org::apache::hadoop::record::test::RecRecord0 *psRec = 
  169.             new org::apache::hadoop::record::test::RecRecord0();
  170.           sprintf(buf, "This is record s: (%d: %d)", j, k);
  171.           psRec->getStringVal().assign(buf);
  172.         }
  173.         ps1Rec->getSvec().push_back(*pVec);
  174.       }
  175.       sprintf(buf, "This is record s: %d", i);
  176.       ps1Rec->getInner().getStringVal().assign(buf);
  177.       for (l=0; l<2; l++) {
  178.         std::vector<std::vector<std::string> >* ppVec =
  179.           new std::vector<std::vector<std::string> >();
  180.         for (j=0; j<2; j++) {
  181.           std::vector< std::string >* pVec =
  182.             new std::vector< std::string >();
  183.           for (k=0; k<3; k++) {
  184.             sprintf(buf, "THis is a nested string: (%d: %d: %d)", l, j, k);
  185.             std::string* s = new std::string((const char*)buf);
  186.             pVec->push_back(*s);
  187.           }
  188.         }
  189.         ps1Rec->getStrvec().push_back(*ppVec);
  190.       }
  191.       ps1Rec->setI1(100+i);
  192.       ps1Rec->getMap1()[23] = "23";
  193.       ps1Rec->getMap1()[11] = "11";
  194.       std::map<int32_t, int64_t>* m1 = new std::map<int32_t, int64_t>();
  195.       std::map<int32_t, int64_t>* m2 = new std::map<int32_t, int64_t>();
  196.       (*m1)[5] = 5;
  197.       (*m1)[10] = 10;
  198.       (*m2)[15] = 15;
  199.       (*m2)[20] = 20;
  200.       ps1Rec->getMvec1().push_back(*m1);
  201.       ps1Rec->getMvec1().push_back(*m2);
  202.       ps1Rec->getMvec2().push_back(*m1);
  203.       recsWrite.push_back(ps1Rec);
  204.     }
  205.     // write out to file
  206.     for (unsigned int i=0; i<recsWrite.size(); i++) {
  207.       writer.write(*(recsWrite[i]));
  208.     }
  209.     ostream.close();
  210.     // write out rti info
  211.     writerRti.write(org::apache::hadoop::record::test::RecRecordOld::getTypeInfo());
  212.     ortistream.close();
  213.     // read
  214.     hadoop::FileInStream istream;
  215.     istream.open("/tmp/hadooptmp.dat");
  216.     hadoop::RecordReader reader(istream, hadoop::kBinary);
  217.     hadoop::FileInStream irtistream;
  218.     irtistream.open("/tmp/hadooprti.dat");
  219.     hadoop::RecordReader readerRti(irtistream, hadoop::kBinary);
  220.     hadoop::RecordTypeInfo rti;
  221.     readerRti.read(rti);
  222.     irtistream.close();
  223.     org::apache::hadoop::record::test::RecRecordNew::setTypeFilter(rti);
  224.     
  225.     // read records
  226.     std::vector<org::apache::hadoop::record::test::RecRecordNew*> recsRead;
  227.     for (unsigned int i=0; i<recsWrite.size(); i++) {
  228.       org::apache::hadoop::record::test::RecRecordNew* ps2Rec = 
  229.         new org::apache::hadoop::record::test::RecRecordNew();
  230.       reader.read(*ps2Rec);
  231.       recsRead.push_back(ps2Rec);
  232.     }
  233.     istream.close();
  234.     // compare
  235.     bool pass = true;
  236.     for (unsigned int i=0; i<recsRead.size(); i++) {
  237.       org::apache::hadoop::record::test::RecRecordNew* ps2In = recsRead[i];
  238.       org::apache::hadoop::record::test::RecRecordOld* ps1Out = recsWrite[i];
  239.       if (!ps2In->getName2().empty()) {
  240.         printf("Error in s2: name2n");
  241.         pass = false;
  242.       }
  243.       if (!(ps2In->getInner() == ps1Out->getInner())) {
  244.         printf("error in s2: s1 structn");
  245.         pass = false;
  246.       }
  247.       if (0 != ps2In->getIvec().size()) {
  248.         printf("error in s2: ivecn");
  249.         pass = false;
  250.       }
  251.       if (0 != ps2In->getSvec().size()) {
  252.         printf("error in s2: svecn");
  253.         pass = false;
  254.       }
  255.       for (unsigned int j=0; j<ps2In->getStrvec().size(); j++) {
  256.         ::std::vector< ::std::vector< ::std::string > >& ss2Vec = ps2In->getStrvec()[j];
  257.         ::std::vector< ::std::vector< ::std::string > >& ss1Vec = ps1Out->getStrvec()[j];
  258.         for (unsigned int k=0; k<ss2Vec.size(); k++) {
  259.           ::std::vector< ::std::string >& s2Vec = ss2Vec[k];
  260.           ::std::vector< ::std::string >& s1Vec = ss1Vec[k];
  261.           for (unsigned int l=0; l<s2Vec.size(); l++) {
  262.             if (s2Vec[l] != s1Vec[l]) {
  263.               printf("Error in s2: s2Vecn");
  264.               pass = false;
  265.             }
  266.           }
  267.         }
  268.       }
  269.       if (0 != ps2In->getMap1().size()) {
  270.         printf("Error in s2: map1n");
  271.         pass = false;
  272.       }
  273.       for (unsigned int j=0; j<ps2In->getMvec2().size(); j++) {
  274.         if (ps2In->getMvec2()[j] != ps1Out->getMvec2()[j]) {
  275.           printf("Error in s2: mvec2n");
  276.           pass = false;
  277.         }
  278.       }
  279.     }
  280.   
  281.     if (pass)   
  282.       printf("Versioning test passed.n");
  283.   }     
  284.    
  285.   return 0;
  286. }