package com.github.minyk.morphlinesmr.partitioner;
import junit.framework.Assert;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.MRJobConfig;
import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created by drake on 10/10/14.
*/
public class ExceptionPartitionerTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionPartitionerTest.class);
ExceptionPartitioner partitioner;
MapReduceDriver driver;
// This values are count from zero.
private final int NORMAL_REDUCER_MAXIMUM = 7;
private final int EXCEPTION_REDUCER_MAXIMUM = 1;
@Before
public void setUp() {
driver = new MapReduceDriver();
driver.getConfiguration().set(ExceptionPartitioner.EXCEPRION_REDUCERS, String.valueOf(EXCEPTION_REDUCER_MAXIMUM + 1));
driver.getConfiguration().set(MRJobConfig.NUM_REDUCES, String.valueOf(NORMAL_REDUCER_MAXIMUM + EXCEPTION_REDUCER_MAXIMUM + 2));
partitioner = new ExceptionPartitioner();
partitioner.setConf(driver.getConfiguration());
}
@Test
public void testNormalCase() {
int result = partitioner.getPartition(new Text("syslog,sshd"), new Text("1"), NORMAL_REDUCER_MAXIMUM + EXCEPTION_REDUCER_MAXIMUM + 2);
LOGGER.info("Normal Case result: " + result);
Assert.assertFalse(result > NORMAL_REDUCER_MAXIMUM);
}
@Test
public void testExceptionCase() {
int result = partitioner.getPartition(new Text(ExceptionPartitioner.EXCEPTION_KEY_VALUE), new Text("1"), NORMAL_REDUCER_MAXIMUM + EXCEPTION_REDUCER_MAXIMUM + 2);
LOGGER.info("Exception Case result: " + result);
Assert.assertFalse(result <= NORMAL_REDUCER_MAXIMUM);
}
}