TestJobHistoryParsing.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.mapred;
  19. import java.io.IOException;
  20. import java.io.PrintWriter;
  21. import java.util.ArrayList;
  22. import java.util.Map;
  23. import org.apache.hadoop.fs.FileSystem;
  24. import org.apache.hadoop.fs.Path;
  25. import org.apache.hadoop.mapred.JobHistory.*;
  26. import junit.framework.TestCase;
  27. public class TestJobHistoryParsing  extends TestCase {
  28.   ArrayList<PrintWriter> historyWriter = new ArrayList<PrintWriter>();
  29.   /**
  30.    * Listener for a test history log file, it populates JobHistory.JobInfo 
  31.    * object with data from log file. 
  32.    */
  33.   static class TestListener implements Listener {
  34.     JobInfo job;
  35.     TestListener(JobInfo job) {
  36.       this.job = job;
  37.     }
  38.     // JobHistory.Listener implementation 
  39.     public void handle(RecordTypes recType, 
  40.                        Map<JobHistory.Keys, String> values)
  41.     throws IOException {
  42.       if (recType == JobHistory.RecordTypes.Job) {
  43.         job.handle(values);
  44.       }
  45.     }
  46.   }
  47.   public void testHistoryParsing() throws IOException {
  48.     // open a test history file
  49.     Path historyDir = new Path(System.getProperty("test.build.data", "."), 
  50.                                 "history");
  51.     FileSystem fs = FileSystem.getLocal(new JobConf());
  52.     if (!fs.mkdirs(historyDir)) {
  53.       fail("Failed to create history directory");
  54.     }
  55.     Path historyLog = new Path(historyDir, "testlog");
  56.     PrintWriter out = new PrintWriter(fs.create(historyLog));
  57.     historyWriter.add(out);
  58.     // log keys and values into history
  59.     String value1 = "Value has equal=to, "quotes" and spaces in it";
  60.     String value2 = "Value has n new line n and " + 
  61.                     "dot followed by new line .n in it ";
  62.     String value3 = "Value has characters: " +
  63.                     "`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./" +
  64.                     "~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"'ZXCVBNM<>?" + 
  65.                     "tbnf"n in it";
  66.     String value4 = "Value ends with escape\";
  67.     String value5 = "Value ends with \" \.n";
  68.     
  69.     // Log the history version
  70.     JobHistory.MetaInfoManager.logMetaInfo(historyWriter);
  71.     
  72.     JobHistory.log(historyWriter, RecordTypes.Job, 
  73.                    new JobHistory.Keys[] {Keys.JOBTRACKERID, 
  74.                                           Keys.TRACKER_NAME, 
  75.                                           Keys.JOBNAME, 
  76.                                           Keys.JOBCONF,
  77.                                           Keys.USER},
  78.                    new String[] {value1, value2, value3, value4, value5});
  79.     // close history file
  80.     out.close();
  81.     historyWriter.remove(out);
  82.     // parse history
  83.     String jobId = "job_200809171136_0001"; // random jobid for tesing 
  84.     JobHistory.JobInfo job = new JobHistory.JobInfo(jobId);
  85.     JobHistory.parseHistoryFromFS(historyLog.toString(), 
  86.                  new TestListener(job), fs);
  87.     // validate keys and values
  88.     assertEquals(value1, job.get(Keys.JOBTRACKERID));
  89.     assertEquals(value2, job.get(Keys.TRACKER_NAME));
  90.     assertEquals(value3, job.get(Keys.JOBNAME));
  91.     assertEquals(value4, job.get(Keys.JOBCONF));
  92.     assertEquals(value5, job.get(Keys.USER));
  93.   }
  94. }