package tap.core; import static org.junit.Assert.*; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.PrintStream; import java.util.Date; import java.util.StringTokenizer; import org.joda.time.*; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import tap.CommandOptions; import tap.Phase; import tap.Pipe; import tap.Tap; import tap.TapMapper; import tap.TapReducer; import tap.formats.tapproto.Testmsg; public class IdentityTests { @Test public void Test1() { String[] args = {"IdentityTest1", "-i", "share/test_data.avro", "-o", "/tmp/out", "-f"}; CommandOptions o = new CommandOptions(args); Tap tap = new Tap(o).named(o.program); //use an identity mapper and identity reducer. tap.createPhase().reads(o.input).of(Record1.class).sortBy("group extra").writes(o.output); int rc = tap.make(); Assert.assertEquals(0, rc); File f = new File(o.output+"/part-00000.avro"); System.out.println(f.length()); Assert.assertTrue(f.exists()); //should compare against pre-defined output. } @Test public void Test2() { String[] args = {"IdentityTest2", "-i", "share/test_data.avro", "-o", "/tmp/out", "-f"}; CommandOptions o = new CommandOptions(args); Tap tap = new Tap(o).named(o.program); //identity reducer tap.createPhase().reads(o.input).map(MapperRecord1Record2.class).sortBy("group2").writes(o.output); int rc = tap.make(); Assert.assertEquals(0, rc); File f = new File(o.output+"/part-00000.avro"); System.out.println(f.length()); Assert.assertTrue(f.exists()); //should compare against pre-defined output. } @Test public void Test3() { String[] args = {"IdentityMapper", "-i", "share/test_data.avro", "-o", "/tmp/out", "-f"}; CommandOptions o = new CommandOptions(args); Tap tap = new Tap(o).named(o.program); //identity mapper tap.createPhase().reads(o.input).of(Record1.class).reduce(ReducerRecord1Record1.class).groupBy("group").sortBy("extra, subsort").writes(o.output); int rc = tap.make(); Assert.assertEquals(0, rc); File f = new File(o.output+"/part-00000.avro"); System.out.println(f.length()); Assert.assertTrue(f.exists()); //should compare against pre-defined output. } public static class Record1 { public String group; public String extra; public String subsort; } public static class Record2 { public String group2; public String extra2; } public static class MapperRecord1Record2 extends TapMapper<Record1, Record2> { static Record2 outrec = new Record2(); public void map(Record1 in, Pipe<Record2> out) { outrec.group2 = in.group; outrec.extra2 = in.extra; out.put(outrec); } } public static class ReducerRecord1Record1 extends TapReducer<Record1,Record1> { private Record1 outrec = new Record1(); @Override public void reduce(Pipe<Record1> in, Pipe<Record1> out) { for (Record1 rec : in) { outrec.group = rec.group; outrec.extra = rec.extra; outrec.subsort = rec.subsort; out.put(outrec); } } } }