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

网格计算

开发平台:

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.streaming;
  19. import junit.framework.TestCase;
  20. import java.io.*;
  21. /**
  22.  * This class tests hadoopStreaming in MapReduce local mode.
  23.  * This testcase looks at different cases of tab position in input. 
  24.  */
  25. public class TestStreamingKeyValue extends TestCase
  26. {
  27.   protected File INPUT_FILE = new File("input.txt");
  28.   protected File OUTPUT_DIR = new File("stream_out");
  29.   // First line of input has 'key' 'tab' 'value'
  30.   // Second line of input starts with a tab character. 
  31.   // So, it has empty key and the whole line as value.
  32.   // Third line of input does not have any tab character.
  33.   // So, the whole line is the key and value is empty.
  34.   protected String input = 
  35.     "roses are tredtntviolets are bluenbunnies are pinkn" +
  36.     "this is for testing a bigtinput linen" +
  37.     "small inputn";
  38.   protected String outputExpect = 
  39.     "tviolets are bluenbunnies are pinktn" + 
  40.     "roses are tredtn" +
  41.     "small inputtn" +
  42.     "this is for testing a bigtinput linen";
  43.   private StreamJob job;
  44.   public TestStreamingKeyValue() throws IOException
  45.   {
  46.     UtilTest utilTest = new UtilTest(getClass().getName());
  47.     utilTest.checkUserDir();
  48.     utilTest.redirectIfAntJunit();
  49.   }
  50.   protected void createInput() throws IOException
  51.   {
  52.     DataOutputStream out = new DataOutputStream(
  53.        new FileOutputStream(INPUT_FILE.getAbsoluteFile()));
  54.     out.write(input.getBytes("UTF-8"));
  55.     out.close();
  56.   }
  57.   protected String[] genArgs() {
  58.     return new String[] {
  59.       "-input", INPUT_FILE.getAbsolutePath(),
  60.       "-output", OUTPUT_DIR.getAbsolutePath(),
  61.       "-mapper", "cat",
  62.       "-jobconf", "keep.failed.task.files=true",
  63.       "-jobconf", "stream.non.zero.exit.is.failure=true",
  64.       "-jobconf", "stream.tmpdir="+System.getProperty("test.build.data","/tmp")
  65.     };
  66.   }
  67.   
  68.   public void testCommandLine()
  69.   {
  70.     String outFileName = "part-00000";
  71.     File outFile = null;
  72.     try {
  73.       try {
  74.         OUTPUT_DIR.getAbsoluteFile().delete();
  75.       } catch (Exception e) {
  76.       }
  77.       createInput();
  78.       boolean mayExit = false;
  79.       // During tests, the default Configuration will use a local mapred
  80.       // So don't specify -config or -cluster
  81.       job = new StreamJob(genArgs(), mayExit);      
  82.       job.go();
  83.       outFile = new File(OUTPUT_DIR, outFileName).getAbsoluteFile();
  84.       String output = StreamUtil.slurp(outFile);
  85.       System.err.println("outEx1=" + outputExpect);
  86.       System.err.println("  out1=" + output);
  87.       assertEquals(outputExpect, output);
  88.     } catch(Exception e) {
  89.       failTrace(e);
  90.     } finally {
  91.       outFile.delete();
  92.       File outFileCRC = new File(OUTPUT_DIR,
  93.                           "." + outFileName + ".crc").getAbsoluteFile();
  94.       INPUT_FILE.delete();
  95.       outFileCRC.delete();
  96.       OUTPUT_DIR.getAbsoluteFile().delete();
  97.     }
  98.   }
  99.   private void failTrace(Exception e)
  100.   {
  101.     StringWriter sw = new StringWriter();
  102.     e.printStackTrace(new PrintWriter(sw));
  103.     fail(sw.toString());
  104.   }
  105.   public static void main(String[]args) throws Exception
  106.   {
  107.     new TestStreamingKeyValue().testCommandLine();
  108.   }
  109. }