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

网格计算

开发平台:

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 java.util.Map;
  22. import junit.framework.TestCase;
  23. /**
  24.  * Tests SortedMapWritable
  25.  */
  26. public class TestSortedMapWritable extends TestCase {
  27.   /** the test */
  28.   @SuppressWarnings("unchecked")
  29.   public void testSortedMapWritable() {
  30.     Text[] keys = {
  31.         new Text("key1"),
  32.         new Text("key2"),
  33.         new Text("key3"),
  34.     };
  35.     
  36.     BytesWritable[] values = {
  37.         new BytesWritable("value1".getBytes()),
  38.         new BytesWritable("value2".getBytes()),
  39.         new BytesWritable("value3".getBytes())
  40.     };
  41.     SortedMapWritable inMap = new SortedMapWritable();
  42.     for (int i = 0; i < keys.length; i++) {
  43.       inMap.put(keys[i], values[i]);
  44.     }
  45.     
  46.     assertEquals(0, inMap.firstKey().compareTo(keys[0]));
  47.     assertEquals(0, inMap.lastKey().compareTo(keys[2]));
  48.     SortedMapWritable outMap = new SortedMapWritable(inMap);
  49.     assertEquals(inMap.size(), outMap.size());
  50.     
  51.     for (Map.Entry<WritableComparable, Writable> e: inMap.entrySet()) {
  52.       assertTrue(outMap.containsKey(e.getKey()));
  53.       assertEquals(0, ((WritableComparable) outMap.get(e.getKey())).compareTo(
  54.           e.getValue()));
  55.     }
  56.     
  57.     // Now for something a little harder...
  58.     
  59.     Text[] maps = {
  60.         new Text("map1"),
  61.         new Text("map2")
  62.     };
  63.     
  64.     SortedMapWritable mapOfMaps = new SortedMapWritable();
  65.     mapOfMaps.put(maps[0], inMap);
  66.     mapOfMaps.put(maps[1], outMap);
  67.     
  68.     SortedMapWritable copyOfMapOfMaps = new SortedMapWritable(mapOfMaps);
  69.     for (int i = 0; i < maps.length; i++) {
  70.       assertTrue(copyOfMapOfMaps.containsKey(maps[i]));
  71.       SortedMapWritable a = (SortedMapWritable) mapOfMaps.get(maps[i]);
  72.       SortedMapWritable b = (SortedMapWritable) copyOfMapOfMaps.get(maps[i]);
  73.       assertEquals(a.size(), b.size());
  74.       for (Writable key: a.keySet()) {
  75.         assertTrue(b.containsKey(key));
  76.         
  77.         // This will work because we know what we put into each set
  78.         
  79.         WritableComparable aValue = (WritableComparable) a.get(key);
  80.         WritableComparable bValue = (WritableComparable) b.get(key);
  81.         assertEquals(0, aValue.compareTo(bValue));
  82.       }
  83.     }
  84.   }
  85.   
  86.   /**
  87.    * Test that number of "unknown" classes is propagated across multiple copies.
  88.    */
  89.   @SuppressWarnings("deprecation")
  90.   public void testForeignClass() {
  91.     SortedMapWritable inMap = new SortedMapWritable();
  92.     inMap.put(new Text("key"), new UTF8("value"));
  93.     inMap.put(new Text("key2"), new UTF8("value2"));
  94.     SortedMapWritable outMap = new SortedMapWritable(inMap);
  95.     SortedMapWritable copyOfCopy = new SortedMapWritable(outMap);
  96.     assertEquals(1, copyOfCopy.getNewClasses());
  97.   }
  98. }