package com.linkedin.camus.etl.kafka.coders; import com.linkedin.camus.etl.kafka.common.EtlKey; import com.linkedin.camus.etl.kafka.partitioner.DefaultPartitioner; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.mapreduce.Job; import org.junit.Test; import java.io.IOException; import static org.junit.Assert.assertTrue; public class TestDefaultPartitioner { @Test public void testGeneratePartitionPath() throws IOException { // generatePartitionPath() should take a timestamp and return a formatted string by default Configuration testConfiguration = new Configuration(); Job testJob = new Job(new Configuration()); DefaultPartitioner testPartitioner = new DefaultPartitioner(); testPartitioner.setConf(testConfiguration); String actualResult = testPartitioner.generatePartitionedPath(testJob, "testTopic", "1406777693000"); String expectedResult = "testTopic/hourly/2014/07/30/20"; assertTrue(actualResult.equals(expectedResult)); actualResult = testPartitioner.generateFileName(testJob, "testTopic", "testBrokerId", 123, 100, 500, "1406777693000"); expectedResult = "testTopic.testBrokerId.123.100.500.1406777693000"; assertTrue(actualResult.equals(expectedResult)); } @Test public void testEncodedPartition() throws IOException { EtlKey testEtlKey = new EtlKey(); testEtlKey.setTime(1400549463000L); Configuration testConfiguration = new Configuration(); Job testJob = new Job(new Configuration()); DefaultPartitioner testPartitioner = new DefaultPartitioner(); testPartitioner.setConf(testConfiguration); String actualResult = testPartitioner.encodePartition(testJob, testEtlKey); String expectedResult = "1400547600000"; assertTrue(actualResult.equals(expectedResult)); } }