package com.ontology2.bakemono.joins; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.input.FileSplit; import org.junit.Before; import org.junit.Test; import java.io.IOException; import static com.ontology2.bakemono.joins.SetJoinMapper.INPUTS; import static org.mockito.Mockito.*; public class TestFetchTriplesWithMatchingObjectsMapper { private FetchTriplesWithMatchingObjectsMapper that; private Mapper.Context setupContext; private Mapper.Context mapContext; @Before public void setup() throws IOException, InterruptedException { that=new FetchTriplesWithMatchingObjectsMapper(); setupContext = mock(Mapper.Context.class); mapContext=mock(Mapper.Context.class); stub(setupContext.getConfiguration()).toReturn( new Configuration() {{ set(INPUTS + ".1", "s3n://basekb-sandbox/2013-11-10/uniqSubjects"); set(INPUTS + ".2", "s3n://basekb-now/2013-11-10/sieved/links/"); }} ); } @Test public void processItemFromObjectList() throws IOException, InterruptedException { stubPath("s3n://basekb-sandbox/2013-11-10/uniqSubjects/m-32194.gz"); that.setup(setupContext); that.map( new LongWritable(1) , new Text("<http://rdf.example.com/DOOM>") , mapContext); verify(mapContext).write( argThat(new TaggedItemMatcher<Text>(new TaggedTextItem("<http://rdf.example.com/DOOM>", 1))), argThat(new TaggedItemMatcher<Text>(new TaggedTextItem("", 1))) ); } @Test public void processItemFromFactList() throws IOException, InterruptedException { stubPath("s3n://basekb-now/2013-11-10/sieved/links/m-23456.gz"); that.setup(setupContext); String fact="<http://rdf.example.com/A> <http://rdf.example.com/B> <http://rdf.example.com/C> ."; that.map( new LongWritable(1) , new Text(fact) , mapContext); verify(mapContext).write( argThat(new TaggedItemMatcher<Text>(new TaggedTextItem("<http://rdf.example.com/C>", 2))), argThat(new TaggedItemMatcher<Text>(new TaggedTextItem(fact, 2))) ); } private void stubPath(String pathString) { stub(setupContext.getInputSplit()).toReturn( new FileSplit( new Path(pathString) ,0 ,0 ,null ) ); } }