package com.thinkaurelius.faunus.mapreduce.sideeffect; import com.thinkaurelius.faunus.BaseTest; import com.thinkaurelius.faunus.FaunusVertex; import com.thinkaurelius.faunus.Holder; import com.thinkaurelius.faunus.Tokens; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Vertex; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver; import java.util.Map; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class CommitVerticesMapReduceTest extends BaseTest { MapReduceDriver<NullWritable, FaunusVertex, LongWritable, Holder, NullWritable, FaunusVertex> mapReduceDriver; public void setUp() { mapReduceDriver = new MapReduceDriver<NullWritable, FaunusVertex, LongWritable, Holder, NullWritable, FaunusVertex>(); mapReduceDriver.setMapper(new CommitVerticesMapReduce.Map()); mapReduceDriver.setCombiner(new CommitVerticesMapReduce.Combiner()); mapReduceDriver.setReducer(new CommitVerticesMapReduce.Reduce()); } public void testKeepAllVertices() throws Exception { Configuration config = CommitVerticesMapReduce.createConfiguration(Tokens.Action.KEEP); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> graph = runWithGraph(startPath(generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config), Vertex.class), mapReduceDriver); assertEquals(graph.size(), 6); assertEquals(graph.get(1l).pathCount(), 1); assertEquals(graph.get(2l).pathCount(), 1); assertEquals(graph.get(3l).pathCount(), 1); assertEquals(graph.get(4l).pathCount(), 1); assertEquals(graph.get(5l).pathCount(), 1); assertEquals(graph.get(6l).pathCount(), 1); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_DROPPED).getValue(), 0); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_KEPT).getValue(), 6); } public void testDropAllVertices() throws Exception { Configuration config = CommitVerticesMapReduce.createConfiguration(Tokens.Action.DROP); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> results = runWithGraph(startPath(generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config), Vertex.class), mapReduceDriver); assertEquals(results.size(), 0); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_DROPPED).getValue(), 6); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_KEPT).getValue(), 0); } public void testKeepProjectVertices() throws Exception { Configuration config = CommitVerticesMapReduce.createConfiguration(Tokens.Action.KEEP); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> graph = generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config); graph.get(5l).startPath(); graph.get(3l).startPath(); graph = runWithGraph(graph, mapReduceDriver); assertEquals(graph.size(), 2); assertEquals(graph.get(5l).pathCount(), 1); assertEquals(graph.get(3l).pathCount(), 1); assertFalse(graph.get(5l).getEdges(Direction.BOTH).iterator().hasNext()); assertFalse(graph.get(3l).getEdges(Direction.BOTH).iterator().hasNext()); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_DROPPED).getValue(), 4); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_KEPT).getValue(), 2); } public void testDropProjectVertices() throws Exception { Configuration config = CommitVerticesMapReduce.createConfiguration(Tokens.Action.KEEP); mapReduceDriver.withConfiguration(config); Map<Long, FaunusVertex> graph = generateGraph(BaseTest.ExampleGraph.TINKERGRAPH, config); graph.get(1l).startPath(); graph.get(2l).startPath(); graph.get(4l).startPath(); graph.get(6l).startPath(); graph = runWithGraph(graph, mapReduceDriver); assertEquals(graph.size(), 4); assertEquals(graph.get(1l).pathCount(), 1); assertEquals(graph.get(2l).pathCount(), 1); assertEquals(graph.get(4l).pathCount(), 1); assertEquals(graph.get(6l).pathCount(), 1); for (FaunusVertex vertex : graph.values()) { assertFalse(vertex.getEdges(Direction.BOTH, "created").iterator().hasNext()); } assertTrue(graph.get(1l).getEdges(Direction.BOTH, "knows").iterator().hasNext()); assertFalse(graph.get(1l).getEdges(Direction.IN, "knows").iterator().hasNext()); assertTrue(graph.get(2l).getEdges(Direction.BOTH, "knows").iterator().hasNext()); assertFalse(graph.get(2l).getEdges(Direction.OUT, "knows").iterator().hasNext()); assertTrue(graph.get(4l).getEdges(Direction.BOTH, "knows").iterator().hasNext()); assertFalse(graph.get(4l).getEdges(Direction.OUT, "knows").iterator().hasNext()); assertFalse(graph.get(6l).getEdges(Direction.BOTH).iterator().hasNext()); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_DROPPED).getValue(), 2); assertEquals(mapReduceDriver.getCounters().findCounter(CommitVerticesMapReduce.Counters.VERTICES_KEPT).getValue(), 4); } }