package hip.ch8.minimrcluster;
import com.google.common.collect.Lists;
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
import java.io.*;
import java.util.List;
public class IdentityMiniTest extends ClusterMapReduceTestCase {
public void testIdentity() throws Exception {
JobConf conf = createJobConf();
createInput();
conf.setNumReduceTasks(1);
conf.setInputFormat(KeyValueTextInputFormat.class);
conf.setMapOutputKeyClass(Text.class);
conf.setMapOutputValueClass(Text.class);
FileInputFormat.setInputPaths(conf, getInputDir());
FileOutputFormat.setOutputPath(conf, getOutputDir());
RunningJob runningJob = JobClient.runJob(conf);
assertTrue(runningJob.isSuccessful());
Path[] outputFiles = FileUtil.stat2Paths(
getFileSystem().listStatus(getOutputDir(),
new Utils.OutputFileUtils.OutputFilesFilter()));
assertEquals("Unexpected number of output files: " + outputFiles.length, 1, outputFiles.length);
InputStream is = getFileSystem().open(outputFiles[0]);
List<String> lines = IOUtils.readLines(is);
assertEquals("Unexpected number of lines: " + lines.size(), 1, lines.size());
assertEquals("foo\tbar", lines.get(0));
is.close();
}
private void createInput() throws Exception {
OutputStream os = getFileSystem().create(new Path(getInputDir(),
"text.txt"));
Writer wr = new OutputStreamWriter(os);
for(String inp : Lists.newArrayList("foo\tbar")) {
wr.write(inp+"\n");
}wr.close();
}
}