/* Copyright 2012-2013 Fabian Steeg. Licensed under the Eclipse Public License 1.0 */ package org.lobid.lodmill.hadoop; import java.io.IOException; import java.util.Arrays; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mrunit.TestDriver; import org.apache.hadoop.mrunit.mapreduce.MapDriver; import org.apache.hadoop.mrunit.mapreduce.ReduceDriver; import org.junit.Before; import org.junit.Test; import org.lobid.lodmill.hadoop.NTriplesToJsonLd.NTriplesToJsonLdMapper; import org.lobid.lodmill.hadoop.NTriplesToJsonLd.NTriplesToJsonLdReducer; /** * Test the {@link NTriplesToJsonLd} class with a lobid item. * * @author Fabian Steeg (fsteeg) */ @SuppressWarnings("javadoc") public final class UnitTestItemNTriplesToJsonLd { private static final String TRIPLE_ID = "http://lobid.org/item/BT000000079:GA+644"; private static final String PARENT_ID = "http://lobid.org/resource/BT000000079"; private static final String TRIPLE_URI = "<" + TRIPLE_ID + ">"; private static final String TRIPLE_1 = TRIPLE_URI + "<http://purl.org/vocab/frbr/core#owner>" + "<http://lobid.org/organisation/DE-Sol1>."; private static final String TRIPLE_2 = TRIPLE_URI + "<http://purl.org/vocab/frbr/core#exemplarOf>" + "<" + PARENT_ID + ">."; private static final String INDEX = "lobid-index"; private static final String TYPE = "json-ld-lobid-item"; private MapDriver<LongWritable, Text, Text, Text> mapDriver; private ReduceDriver<Text, Text, Text, Text> reduceDriver; @Before public void setUp() { final NTriplesToJsonLdMapper mapper = new NTriplesToJsonLdMapper(); final NTriplesToJsonLdReducer reducer = new NTriplesToJsonLdReducer(); mapDriver = MapDriver.newMapDriver(mapper); reduceDriver = ReduceDriver.newReduceDriver(reducer); setConfiguration(mapDriver); setConfiguration(reduceDriver); } private static void setConfiguration(TestDriver<?, ?, ?, ?, ?> driver) { driver.getConfiguration().set(NTriplesToJsonLd.INDEX_NAME, INDEX); driver.getConfiguration().set(NTriplesToJsonLd.INDEX_TYPE, TYPE); driver.getConfiguration().set("es.mapping.parent", NTriplesToJsonLd.INTERNAL_PARENT); } @Test public void testMapper() throws IOException { mapDriver.addInput(new LongWritable(), new Text(TRIPLE_1)); mapDriver.addInput(new LongWritable(), new Text(TRIPLE_2)); mapDriver.withOutput(new Text(TRIPLE_URI), new Text(TRIPLE_1)).withOutput( new Text(TRIPLE_URI), new Text(TRIPLE_2)); mapDriver.runTest(); } @Test public void testReducer() throws IOException { reduceDriver.withInput(new Text(TRIPLE_URI), Arrays.asList(new Text(TRIPLE_1), new Text(TRIPLE_2))); reduceDriver .withOutput( new Text(""), new Text( "{\"internal_parent\":\"http:\\/\\/lobid.org\\/resource\\/BT000000079\",\"internal_id\":\"http:\\/\\/lobid.org\\/item\\/BT000000079:GA+644\",\"@graph\":[{\"http:\\/\\/purl.org\\/vocab\\/frbr\\/core#owner\":[{\"@id\":\"http:\\/\\/lobid.org\\/organisation\\/DE-Sol1\"}],\"http:\\/\\/purl.org\\/vocab\\/frbr\\/core#exemplarOf\":[{\"@id\":\"http:\\/\\/lobid.org\\/resource\\/BT000000079\"}],\"@id\":\"http:\\/\\/lobid.org\\/item\\/BT000000079:GA+644\"}]}")); reduceDriver.runTest(); } }