blob: b2537041d666f8f4f7e7cae90dd5bd1acbae44ec [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.chukwa.extraction.demux.processor.mapper;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import org.apache.hadoop.chukwa.extraction.demux.processor.mapper.JobLog.JobLogLine;
import org.apache.hadoop.chukwa.extraction.engine.ChukwaRecord;
import org.apache.hadoop.chukwa.extraction.engine.ChukwaRecordKey;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;
import junit.framework.TestCase;
public class TestJobLogEntry extends TestCase {
private ArrayList<String> testLogList = new ArrayList<String>();
protected void setUp() throws Exception {
super.setUp();
InputStream stream = this.getClass().getResourceAsStream("/org/apache/hadoop/chukwa/extraction/demux/processor/mapper/TestJobLog.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
while(true) {
String line = br.readLine();
if(line == null)
break;
testLogList.add(line);
}
stream = this.getClass().getResourceAsStream("/org/apache/hadoop/chukwa/extraction/demux/processor/mapper/Hadoop18JobHistoryLog.txt");
br = new BufferedReader(new InputStreamReader(stream));
while(true) {
String line = br.readLine();
if(line == null)
break;
testLogList.add(line);
}
}
public void testJobLogEntry() {
JobLog jobLog = new JobLog();
JobLogLine log = jobLog.getJobLogLine(testLogList.get(0));
assertEquals("Meta", log.getLogType());
assertEquals("1", log.get("VERSION"));
assertEquals(0l, log.getTimestamp());
log = jobLog.getJobLogLine(testLogList.get(1));
assertEquals("JobData", log.getLogType());
assertEquals("hdfs://test33/tmp/hadoop-gmon/mapred/system/job_200903062215_0577/job\\.xml", log.get("JOBCONF"));
assertEquals("job_200903062215_0577", log.get("JOBID"));
assertEquals("grep-search", log.get("JOBNAME"));
assertEquals("gmon", log.get("USER"));
assertEquals("1236386525570", log.get("SUBMIT_TIME"));
assertEquals(1236386525570l, log.getTimestamp());
log = jobLog.getJobLogLine(testLogList.get(2));
assertEquals(1236386525570l, log.getTimestamp());
log = jobLog.getJobLogLine(testLogList.get(4));
assertEquals("TaskData", log.getLogType());
assertEquals("", log.get("SPLITS"));
assertEquals(1236386529449l, log.getTimestamp());
log = jobLog.getJobLogLine(testLogList.get(72));
assertEquals("TaskData", log.getLogType());
assertEquals("{(org\\.apache\\.hadoop\\.mapred\\.Task$Counter)(Map-Reduce Framework)[(REDUCE_INPUT_GROUPS)(Reduce input groups)(0)][(COMBINE_OUTPUT_RECORDS)(Combine output records)(0)][(REDUCE_SHUFFLE_BYTES)(Reduce shuffle bytes)(0)][(REDUCE_OUTPUT_RECORDS)(Reduce output records)(0)][(SPILLED_RECORDS)(Spilled Records)(0)][(COMBINE_INPUT_RECORDS)(Combine input records)(0)][(REDUCE_INPUT_RECORDS)(Reduce input records)(0)]}", log.get("COUNTERS"));
log = jobLog.getJobLogLine(testLogList.get(73));
HashMap<String, Long> counters = log.getCounterHash().flat();
assertEquals("1", counters.get("Counter:org.apache.hadoop.mapred.JobInProgress$Counter:TOTAL_LAUNCHED_REDUCES").toString());
assertEquals("20471", counters.get("Counter:FileSystemCounters:HDFS_BYTES_READ").toString());
log = jobLog.getJobLogLine("");
assertTrue(log==null);
log = jobLog.getJobLogLine("Job JOBID=\"job_200903042324_8630\" FINISH_TIME=\"1236527538594\" JOB_STATUS=\"SUCCESS\" FINISHED_MAPS=\"10\" FINISHED_REDUCES=\"8\" FAILED_MAPS=\"0\" FAILED_REDUCES=\"0\" COUNTERS=\"input records:0,Map-Reduce Framework.Reduce input records:57038\"");
// print all key-values
for(String line : testLogList) {
log = jobLog.getJobLogLine(line);
if(log == null) {
continue;
}
System.out.println(log.getLogType());
for(Entry<String, String> entry : log.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// list all counters for this entry
for(Entry<String, Long> entry : log.getCounterHash().flat().entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println();
}
}
}