package com.thinkaurelius.faunus.mapreduce.transform; import com.thinkaurelius.faunus.BaseTest; import com.thinkaurelius.faunus.FaunusVertex; import com.thinkaurelius.faunus.mapreduce.FaunusCompiler; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver; import java.util.Map; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class VertexMapTest extends BaseTest { MapReduceDriver<NullWritable, FaunusVertex, NullWritable, FaunusVertex, NullWritable, FaunusVertex> mapReduceDriver; public void setUp() { mapReduceDriver = new MapReduceDriver<NullWritable, FaunusVertex, NullWritable, FaunusVertex, NullWritable, FaunusVertex>(); mapReduceDriver.setMapper(new VertexMap.Map()); mapReduceDriver.setReducer(new Reducer<NullWritable, FaunusVertex, NullWritable, FaunusVertex>()); } public void testVerticesWith() throws Exception { Configuration config = VertexMap.createConfiguration(1, 2, 2346); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> graph = runWithGraph(generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config), mapReduceDriver); assertTrue(graph.get(1l).hasPaths()); assertTrue(graph.get(2l).hasPaths()); assertFalse(graph.get(3l).hasPaths()); assertFalse(graph.get(4l).hasPaths()); assertFalse(graph.get(5l).hasPaths()); assertFalse(graph.get(6l).hasPaths()); assertEquals(graph.get(1l).pathCount(), 1l); assertEquals(graph.get(2l).pathCount(), 1l); assertEquals(graph.get(3l).pathCount(), 0l); assertEquals(graph.get(4l).pathCount(), 0l); assertEquals(graph.get(5l).pathCount(), 0l); assertEquals(graph.get(6l).pathCount(), 0l); assertEquals(mapReduceDriver.getCounters().findCounter(VertexMap.Counters.VERTICES_PROCESSED).getValue(), 2); identicalStructure(graph, ExampleGraph.TINKERGRAPH); } public void testVerticesWithPaths() throws Exception { Configuration config = VertexMap.createConfiguration(1, 2, 2346, 2345, 3333, 1, 1, 2); config.setBoolean(FaunusCompiler.PATH_ENABLED, true); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> graph = runWithGraph(generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config), mapReduceDriver); assertTrue(graph.get(1l).hasPaths()); assertTrue(graph.get(2l).hasPaths()); assertFalse(graph.get(3l).hasPaths()); assertFalse(graph.get(4l).hasPaths()); assertFalse(graph.get(5l).hasPaths()); assertFalse(graph.get(6l).hasPaths()); assertEquals(graph.get(1l).pathCount(), 1l); assertEquals(graph.get(2l).pathCount(), 1l); assertEquals(graph.get(3l).pathCount(), 0l); assertEquals(graph.get(4l).pathCount(), 0l); assertEquals(graph.get(5l).pathCount(), 0l); assertEquals(graph.get(6l).pathCount(), 0l); assertEquals(graph.get(1l).getPaths().size(), 1l); assertEquals(graph.get(2l).getPaths().size(), 1l); assertEquals(graph.get(3l).getPaths().size(), 0l); assertEquals(graph.get(4l).getPaths().size(), 0l); assertEquals(graph.get(5l).getPaths().size(), 0l); assertEquals(graph.get(6l).getPaths().size(), 0l); assertEquals(graph.get(1l).getPaths().get(0).size(), 1l); assertEquals(graph.get(2l).getPaths().get(0).size(), 1l); assertEquals(graph.get(1l).getPaths().get(0).get(0).getId(), 1l); assertEquals(graph.get(2l).getPaths().get(0).get(0).getId(), 2l); assertEquals(mapReduceDriver.getCounters().findCounter(VertexMap.Counters.VERTICES_PROCESSED).getValue(), 2); identicalStructure(graph, ExampleGraph.TINKERGRAPH); } }