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

网格计算

开发平台:

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.io;
  19. import java.io.*;
  20. import java.util.Random;
  21. import org.apache.hadoop.conf.Configurable;
  22. import org.apache.hadoop.conf.Configuration;
  23. import org.apache.hadoop.util.ReflectionUtils;
  24. import junit.framework.TestCase;
  25. /** Unit tests for WritableName. */
  26. public class TestWritableName extends TestCase {
  27.   public TestWritableName(String name) { 
  28.     super(name); 
  29.   }
  30.   /** Example class used in test cases below. */
  31.   public static class SimpleWritable implements Writable {
  32.     private static final Random RANDOM = new Random();
  33.     int state = RANDOM.nextInt();
  34.     public void write(DataOutput out) throws IOException {
  35.       out.writeInt(state);
  36.     }
  37.     public void readFields(DataInput in) throws IOException {
  38.       this.state = in.readInt();
  39.     }
  40.     public static SimpleWritable read(DataInput in) throws IOException {
  41.       SimpleWritable result = new SimpleWritable();
  42.       result.readFields(in);
  43.       return result;
  44.     }
  45.     /** Required by test code, below. */
  46.     public boolean equals(Object o) {
  47.       if (!(o instanceof SimpleWritable))
  48.         return false;
  49.       SimpleWritable other = (SimpleWritable)o;
  50.       return this.state == other.state;
  51.     }
  52.   }
  53.   private static final String testName = "mystring";
  54.   public void testGoodName() throws Exception {
  55.     Configuration conf = new Configuration();
  56.     Class<?> test = WritableName.getClass("long",conf);
  57.     assertTrue(test != null);
  58.   }
  59.   public void testSetName() throws Exception {
  60.     Configuration conf = new Configuration();
  61.     WritableName.setName(SimpleWritable.class, testName);
  62.     Class<?> test = WritableName.getClass(testName,conf);
  63.     assertTrue(test.equals(SimpleWritable.class));
  64.   }
  65.   public void testAddName() throws Exception {
  66.     Configuration conf = new Configuration();
  67.     String altName = testName + ".alt";
  68.     WritableName.addName(SimpleWritable.class, altName);
  69.     Class<?> test = WritableName.getClass(altName, conf);
  70.     assertTrue(test.equals(SimpleWritable.class));
  71.     // check original name still works
  72.     test = WritableName.getClass(testName, conf);
  73.     assertTrue(test.equals(SimpleWritable.class));
  74.   }
  75.   public void testBadName() throws Exception {
  76.     Configuration conf = new Configuration();
  77.     try {
  78.       Class<?> test = WritableName.getClass("unknown_junk",conf);
  79.       assertTrue(false);
  80.     } catch(IOException e) {
  81.       assertTrue(e.getMessage().matches(".*unknown_junk.*"));
  82.     }
  83.   }
  84. }