package org.openflamingo.mapreduce.etl.clean;
import junit.framework.Assert;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mrunit.mapreduce.MapDriver;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
/**
* Clean Mapper에 대한 단위 테스트 케이스.
*
* @author Edward KIM
* @since 0.1
*/
public class CleanMapperTest {
private Mapper mapper;
private MapDriver driver;
@Before
public void setUp() {
mapper = new CleanMapper();
driver = new MapDriver(mapper);
}
@Test
public void map1() {
Configuration conf = new Configuration();
conf.set("inputDelimiter", ",");
conf.set("outputDelimiter", ",");
conf.set("columnsToClean", "0");
conf.set("columnSize", "4");
driver.setConfiguration(conf);
driver.withInput(new LongWritable(1), new Text("a,b,c,d"));
driver.withOutput(NullWritable.get(), new Text("b,c,d"));
driver.runTest();
}
@Test
public void map2() {
Configuration conf = new Configuration();
conf.set("inputDelimiter", ",");
conf.set("outputDelimiter", ",");
conf.set("columnsToClean", "0,1");
conf.set("columnSize", "4");
driver.setConfiguration(conf);
driver.withInput(new LongWritable(1), new Text("a,b,c,d"));
driver.withOutput(NullWritable.get(), new Text("c,d"));
driver.runTest();
}
@Test(expected = IllegalArgumentException.class)
public void map3() {
Configuration conf = new Configuration();
driver.setConfiguration(conf);
driver.withInput(new LongWritable(1), new Text("a,b,c,d"));
driver.withOutput(NullWritable.get(), new Text("c,d"));
driver.runTest();
}
@Test(expected = IllegalArgumentException.class)
public void map4() {
Configuration conf = new Configuration();
conf.set("columnSize", "4");
driver.setConfiguration(conf);
driver.withInput(new LongWritable(1), new Text("a,b,c,d"));
driver.withOutput(NullWritable.get(), new Text("a,b,c,d"));
driver.runTest();
}
@Test
public void map5() throws IOException {
Configuration conf = new Configuration();
conf.set("columnsToClean", "0,1");
conf.set("columnSize", "5");
driver.setConfiguration(conf);
driver.withInput(new LongWritable(1), new Text("a,b,c,d"));
driver.run();
Assert.assertEquals(1, driver.getCounters().findCounter(CleanMapper.class.getName(), "Wrong Column Size").getValue());
}
}