//package com.linkedin.camus.etl.kafka.mapred; // // //import com.linkedin.camus.coders.Partitioner; //import com.linkedin.camus.etl.IEtlKey; //import com.linkedin.camus.etl.kafka.coders.DefaultPartitioner; //import com.linkedin.camus.etl.kafka.common.DateUtils; //import com.linkedin.camus.etl.kafka.common.EtlKey; //import org.apache.hadoop.conf.Configuration; //import org.apache.hadoop.mapred.TaskAttemptID; //import org.apache.hadoop.mapreduce.JobContext; //import org.apache.hadoop.mapreduce.TaskAttemptContext; //import org.junit.After; //import org.junit.Before; //import org.junit.Test; // //import java.io.IOException; // //import static junit.framework.Assert.assertEquals; //import static junit.framework.Assert.assertTrue; // //public class EtlMultiOutputCommitterTest implements Partitioner { // // TaskAttemptContext taskAttemptContext; // EtlMultiOutputFormat etlMultiOutputFormat; // EtlMultiOutputFormat.EtlMultiOutputCommitter committer; // Configuration configuration; // // @Before // public void setup() throws IOException { // configuration = new Configuration(); // configuration.set(EtlMultiOutputFormat.ETL_DEFAULT_PARTITIONER_CLASS, "com.linkedin.camus.etl.kafka.coders.DefaultPartitioner"); // taskAttemptContext = new TaskAttemptContext(configuration, new TaskAttemptID()); // etlMultiOutputFormat = new EtlMultiOutputFormat(); // committer = (EtlMultiOutputFormat.EtlMultiOutputCommitter) etlMultiOutputFormat.getOutputCommitter(taskAttemptContext); // } // // @After // public void tearDown() { // EtlMultiOutputFormat.resetPartitioners(); // } // // @Test // public void testWorkingFilenameIsCorrectUsingDefaultPartitioner() throws IOException { // long now = System.currentTimeMillis(); // EtlKey key = new EtlKey("topic", "1", 0); // key.setTime(now); // // assertEquals("data.topic.1.0." + convertTime(now), etlMultiOutputFormat.getWorkingFileName(taskAttemptContext, key)); // } // // @Test // public void testWorkingFilenameRemovesDotsFromTopicName() throws IOException { // long now = System.currentTimeMillis(); // EtlKey key = new EtlKey("topic.name", "1", 0); // key.setTime(now); // // assertEquals("data.topic_name.1.0." + convertTime(now), etlMultiOutputFormat.getWorkingFileName(taskAttemptContext, key)); // } // // @Test // public void testPartitionedFilenameIsCorrectUsingDefaultPartitioner() throws IOException { // String workingFilename = "data.topic-name.1.0.1361656800000-m-00000.avro"; // assertEquals("topic-name/hourly/2013/02/23/14/topic-name.1.0.10.10000.avro", // committer.getPartitionedPath(taskAttemptContext, workingFilename, 10, 10000)); // } // // @Test // public void testDefaultPartitionerIsTheDefault() { // assertTrue(EtlMultiOutputFormat.getDefaultPartitioner(taskAttemptContext) instanceof DefaultPartitioner); // } // // @Test // public void testConfiguredDefaultPartitionerIsCorrect() throws ClassNotFoundException { // taskAttemptContext.getConfiguration().set(EtlMultiOutputFormat.ETL_DEFAULT_PARTITIONER_CLASS, // "com.linkedin.camus.etl.kafka.mapred.EtlMultiOutputCommitterTest"); // assertTrue(EtlMultiOutputFormat.getDefaultPartitioner(taskAttemptContext) instanceof EtlMultiOutputCommitterTest); // } // // @Test // public void testPerTopicPartitioner() throws IOException { // taskAttemptContext.getConfiguration().set(EtlMultiOutputFormat.ETL_DEFAULT_PARTITIONER_CLASS + ".test-topic", // "com.linkedin.camus.etl.kafka.mapred.EtlMultiOutputCommitterTest"); // assertTrue(EtlMultiOutputFormat.getDefaultPartitioner(taskAttemptContext) instanceof DefaultPartitioner); // assertTrue(EtlMultiOutputFormat.getPartitioner(taskAttemptContext, "unknown-topic") instanceof DefaultPartitioner); // assertTrue(EtlMultiOutputFormat.getPartitioner(taskAttemptContext, "test-topic") instanceof EtlMultiOutputCommitterTest); // } // // @Test // public void testDefaultOutputCodecIsDeflate() { // assertEquals("deflate", EtlMultiOutputFormat.getEtlOutputCodec(taskAttemptContext)); // } // // @Test // public void testSetOutputCodec() { // EtlMultiOutputFormat.setEtlOutputCodec(taskAttemptContext, "snappy"); // assertEquals("snappy", EtlMultiOutputFormat.getEtlOutputCodec(taskAttemptContext)); // } // // public long convertTime(long time) { // long outfilePartitionMs = EtlMultiOutputFormat.getEtlOutputFileTimePartitionMins(taskAttemptContext) * 60000L; // return DateUtils.getPartition(outfilePartitionMs, time); // } // // @Override // public String encodePartition(JobContext context, IEtlKey etlKey) { // return null; // } // // @Override // public String generatePartitionedPath(JobContext context, String topic, int brokerId, int partitionId, String encodedPartition) { // return null; // } //}