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

网格计算

开发平台:

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. package org.apache.hadoop.record;
  19. import java.io.IOException;
  20. import junit.framework.*;
  21. import java.io.File;
  22. import java.io.FileInputStream;
  23. import java.io.FileOutputStream;
  24. import java.util.ArrayList;
  25. import java.util.TreeMap;
  26. /**
  27.  */
  28. public class TestRecordIO extends TestCase {
  29.     
  30.   public TestRecordIO(String testName) {
  31.     super(testName);
  32.   }
  33.   protected void setUp() throws Exception {
  34.   }
  35.   protected void tearDown() throws Exception {
  36.   }
  37.     
  38.   public void testBinary() {
  39.     File tmpfile;
  40.     try {
  41.       tmpfile = File.createTempFile("hadooprec", ".dat");
  42.       FileOutputStream ostream = new FileOutputStream(tmpfile);
  43.       BinaryRecordOutput out = new BinaryRecordOutput(ostream);
  44.       RecRecord1 r1 = new RecRecord1();
  45.       r1.setBoolVal(true);
  46.       r1.setByteVal((byte)0x66);
  47.       r1.setFloatVal(3.145F);
  48.       r1.setDoubleVal(1.5234);
  49.       r1.setIntVal(-4567);
  50.       r1.setLongVal(-2367L);
  51.       r1.setStringVal("random text");
  52.       r1.setBufferVal(new Buffer());
  53.       r1.setVectorVal(new ArrayList<String>());
  54.       r1.setMapVal(new TreeMap<String,String>());
  55.       RecRecord0 r0 = new RecRecord0();
  56.       r0.setStringVal("other random text");
  57.       r1.setRecordVal(r0);
  58.       r1.serialize(out, "");
  59.       ostream.close();
  60.       FileInputStream istream = new FileInputStream(tmpfile);
  61.       BinaryRecordInput in = new BinaryRecordInput(istream);
  62.       RecRecord1 r2 = new RecRecord1();
  63.       r2.deserialize(in, "");
  64.       istream.close();
  65.       tmpfile.delete();
  66.       assertTrue("Serialized and deserialized records do not match.", r1.equals(r2));
  67.     } catch (IOException ex) {
  68.       ex.printStackTrace();
  69.     } 
  70.   }
  71.     
  72.   public void testCsv() {
  73.     File tmpfile;
  74.     try {
  75.       tmpfile = File.createTempFile("hadooprec", ".txt");
  76.       FileOutputStream ostream = new FileOutputStream(tmpfile);
  77.       CsvRecordOutput out = new CsvRecordOutput(ostream);
  78.       RecRecord1 r1 = new RecRecord1();
  79.       r1.setBoolVal(true);
  80.       r1.setByteVal((byte)0x66);
  81.       r1.setFloatVal(3.145F);
  82.       r1.setDoubleVal(1.5234);
  83.       r1.setIntVal(4567);
  84.       r1.setLongVal(0x5a5a5a5a5a5aL);
  85.       r1.setStringVal("random text");
  86.       r1.setBufferVal(new Buffer());
  87.       r1.setVectorVal(new ArrayList<String>());
  88.       r1.setMapVal(new TreeMap<String,String>());
  89.       RecRecord0 r0 = new RecRecord0();
  90.       r0.setStringVal("other random text");
  91.       r1.setRecordVal(r0);
  92.       r1.serialize(out, "");
  93.       ostream.close();
  94.       FileInputStream istream = new FileInputStream(tmpfile);
  95.       CsvRecordInput in = new CsvRecordInput(istream);
  96.       RecRecord1 r2 = new RecRecord1();
  97.       r2.deserialize(in, "");
  98.       istream.close();
  99.       tmpfile.delete();
  100.       assertTrue("Serialized and deserialized records do not match.", r1.equals(r2));
  101.             
  102.     } catch (IOException ex) {
  103.       ex.printStackTrace();
  104.     }
  105.   }
  106.   public void testToString() {
  107.     try {
  108.       RecRecord1 r1 = new RecRecord1();
  109.       r1.setBoolVal(true);
  110.       r1.setByteVal((byte)0x66);
  111.       r1.setFloatVal(3.145F);
  112.       r1.setDoubleVal(1.5234);
  113.       r1.setIntVal(4567);
  114.       r1.setLongVal(0x5a5a5a5a5a5aL);
  115.       r1.setStringVal("random text");
  116.       byte[] barr = new byte[256];
  117.       for (int idx = 0; idx < 256; idx++) {
  118.         barr[idx] = (byte) idx;
  119.       }
  120.       r1.setBufferVal(new Buffer(barr));
  121.       r1.setVectorVal(new ArrayList<String>());
  122.       r1.setMapVal(new TreeMap<String,String>());
  123.       RecRecord0 r0 = new RecRecord0();
  124.       r0.setStringVal("other random text");
  125.       r1.setRecordVal(r0);
  126.       System.err.println("Illustrating toString bug"+r1.toString());
  127.       System.err.println("Illustrating toString bug"+r1.toString());
  128.     } catch (Throwable ex) {
  129.       assertTrue("Record.toString cannot be invoked twice in succession."+
  130.                  "This bug has been fixed in the latest version.", false);
  131.     }
  132.   }
  133.     
  134.   public void testXml() {
  135.     File tmpfile;
  136.     try {
  137.       tmpfile = File.createTempFile("hadooprec", ".xml");
  138.       FileOutputStream ostream = new FileOutputStream(tmpfile);
  139.       XmlRecordOutput out = new XmlRecordOutput(ostream);
  140.       RecRecord1 r1 = new RecRecord1();
  141.       r1.setBoolVal(true);
  142.       r1.setByteVal((byte)0x66);
  143.       r1.setFloatVal(3.145F);
  144.       r1.setDoubleVal(1.5234);
  145.       r1.setIntVal(4567);
  146.       r1.setLongVal(0x5a5a5a5a5a5aL);
  147.       r1.setStringVal("ran02dom &lt; %text<&moreuffff");
  148.       r1.setBufferVal(new Buffer());
  149.       r1.setVectorVal(new ArrayList<String>());
  150.       r1.setMapVal(new TreeMap<String,String>());
  151.       RecRecord0 r0 = new RecRecord0();
  152.       r0.setStringVal("other %rando07m &amp; >&more text");
  153.       r1.setRecordVal(r0);
  154.       r1.serialize(out, "");
  155.       ostream.close();
  156.       FileInputStream istream = new FileInputStream(tmpfile);
  157.       XmlRecordInput in = new XmlRecordInput(istream);
  158.       RecRecord1 r2 = new RecRecord1();
  159.       r2.deserialize(in, "");
  160.       istream.close();
  161.       tmpfile.delete();
  162.       assertTrue("Serialized and deserialized records do not match.", r1.equals(r2));
  163.     } catch (IOException ex) {
  164.       ex.printStackTrace();
  165.     } 
  166.   }
  167.     
  168.   public void testCloneable() {
  169.     RecRecord1 r1 = new RecRecord1();
  170.     r1.setBoolVal(true);
  171.     r1.setByteVal((byte)0x66);
  172.     r1.setFloatVal(3.145F);
  173.     r1.setDoubleVal(1.5234);
  174.     r1.setIntVal(-4567);
  175.     r1.setLongVal(-2367L);
  176.     r1.setStringVal("random text");
  177.     r1.setBufferVal(new Buffer());
  178.     r1.setVectorVal(new ArrayList<String>());
  179.     r1.setMapVal(new TreeMap<String,String>());
  180.     RecRecord0 r0 = new RecRecord0();
  181.     r0.setStringVal("other random text");
  182.     r1.setRecordVal(r0);
  183.     try {
  184.       RecRecord1 r2 = (RecRecord1) r1.clone();
  185.       assertTrue("Cloneable semantics violated. r1==r2", r1 != r2);
  186.       assertTrue("Cloneable semantics violated. r1.getClass() != r2.getClass()",
  187.                  r1.getClass() == r2.getClass());
  188.       assertTrue("Cloneable semantics violated. !r2.equals(r1)", r2.equals(r1));
  189.     } catch (final CloneNotSupportedException ex) {
  190.       ex.printStackTrace();
  191.     }
  192.   }
  193. }