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

网格计算

开发平台:

Java

  1. /**
  2.  * Copyright 2007 The Apache Software Foundation
  3.  *
  4.  * Licensed to the Apache Software Foundation (ASF) under one
  5.  * or more contributor license agreements.  See the NOTICE file
  6.  * distributed with this work for additional information
  7.  * regarding copyright ownership.  The ASF licenses this file
  8.  * to you under the Apache License, Version 2.0 (the
  9.  * "License"); you may not use this file except in compliance
  10.  * with the License.  You may obtain a copy of the License at
  11.  *
  12.  *     http://www.apache.org/licenses/LICENSE-2.0
  13.  *
  14.  * Unless required by applicable law or agreed to in writing, software
  15.  * distributed under the License is distributed on an "AS IS" BASIS,
  16.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17.  * See the License for the specific language governing permissions and
  18.  * limitations under the License.
  19.  */
  20. package org.apache.hadoop.io;
  21. import org.apache.hadoop.conf.Configuration;
  22. import org.apache.hadoop.fs.FileSystem;
  23. import org.apache.hadoop.fs.Path;
  24. import junit.framework.TestCase;
  25. public class TestMapFile extends TestCase {
  26.   private static Configuration conf = new Configuration();
  27.   /**
  28.    * Test getClosest feature.
  29.    * @throws Exception
  30.    */
  31.   public void testGetClosest() throws Exception {
  32.     // Write a mapfile of simple data: keys are 
  33.     Path dirName = new Path(System.getProperty("test.build.data",".") +
  34.       getName() + ".mapfile"); 
  35.     FileSystem fs = FileSystem.getLocal(conf);
  36.     Path qualifiedDirName = fs.makeQualified(dirName);
  37.     // Make an index entry for every third insertion.
  38.     MapFile.Writer.setIndexInterval(conf, 3);
  39.     MapFile.Writer writer = new MapFile.Writer(conf, fs,
  40.       qualifiedDirName.toString(), Text.class, Text.class);
  41.     // Assert that the index interval is 1
  42.     assertEquals(3, writer.getIndexInterval());
  43.     // Add entries up to 100 in intervals of ten.
  44.     final int FIRST_KEY = 10;
  45.     for (int i = FIRST_KEY; i < 100; i += 10) {
  46.       String iStr = Integer.toString(i);
  47.       Text t = new Text("00".substring(iStr.length()) + iStr);
  48.       writer.append(t, t);
  49.     }
  50.     writer.close();
  51.     // Now do getClosest on created mapfile.
  52.     MapFile.Reader reader = new MapFile.Reader(fs, qualifiedDirName.toString(),
  53.       conf);
  54.     Text key = new Text("55");
  55.     Text value = new Text();
  56.     Text closest = (Text)reader.getClosest(key, value);
  57.     // Assert that closest after 55 is 60
  58.     assertEquals(new Text("60"), closest);
  59.     // Get closest that falls before the passed key: 50
  60.     closest = (Text)reader.getClosest(key, value, true);
  61.     assertEquals(new Text("50"), closest);
  62.     // Test get closest when we pass explicit key
  63.     final Text TWENTY = new Text("20");
  64.     closest = (Text)reader.getClosest(TWENTY, value);
  65.     assertEquals(TWENTY, closest);
  66.     closest = (Text)reader.getClosest(TWENTY, value, true);
  67.     assertEquals(TWENTY, closest);
  68.     // Test what happens at boundaries.  Assert if searching a key that is
  69.     // less than first key in the mapfile, that the first key is returned.
  70.     key = new Text("00");
  71.     closest = (Text)reader.getClosest(key, value);
  72.     assertEquals(FIRST_KEY, Integer.parseInt(closest.toString()));
  73.     
  74.     // If we're looking for the first key before, and we pass in a key before 
  75.     // the first key in the file, we should get null
  76.     closest = (Text)reader.getClosest(key, value, true);
  77.     assertNull(closest);
  78.     
  79.     // Assert that null is returned if key is > last entry in mapfile.
  80.     key = new Text("99");
  81.     closest = (Text)reader.getClosest(key, value);
  82.     assertNull(closest);
  83.     // If we were looking for the key before, we should get the last key
  84.     closest = (Text)reader.getClosest(key, value, true);
  85.     assertEquals(new Text("90"), closest);
  86.   }
  87. }