Package com.tinkerpop.blueprints.util.wrappers.partition

Source Code of com.tinkerpop.blueprints.util.wrappers.partition.PartitionGraphTest

package com.tinkerpop.blueprints.util.wrappers.partition;

import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.EdgeTestSuite;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.GraphTestSuite;
import com.tinkerpop.blueprints.IndexTestSuite;
import com.tinkerpop.blueprints.IndexableGraphTestSuite;
import com.tinkerpop.blueprints.TestSuite;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.VertexTestSuite;
import com.tinkerpop.blueprints.impls.GraphTest;
import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
import com.tinkerpop.blueprints.util.io.gml.GMLReaderTestSuite;
import com.tinkerpop.blueprints.util.io.graphml.GraphMLReaderTestSuite;
import com.tinkerpop.blueprints.util.io.graphson.GraphSONReaderTestSuite;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashSet;

/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class PartitionGraphTest extends GraphTest {

    public void testVertexTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new VertexTestSuite(this));
        printTestPerformance("VertexTestSuite", this.stopWatch());
    }

    public void testEdgeTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new EdgeTestSuite(this));
        printTestPerformance("EdgeTestSuite", this.stopWatch());
    }

    public void testGraphTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new GraphTestSuite(this));
        printTestPerformance("GraphTestSuite", this.stopWatch());
    }

    public void testIndexableGraphTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new IndexableGraphTestSuite(this));
        printTestPerformance("IndexableGraphTestSuite", this.stopWatch());
    }

    public void testIndexTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new IndexTestSuite(this));
        printTestPerformance("IndexTestSuite", this.stopWatch());
    }

    public void testGraphMLReaderTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new GraphMLReaderTestSuite(this));
        printTestPerformance("GraphMLReaderTestSuite", this.stopWatch());
    }

    public void testGMLReaderTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new GMLReaderTestSuite(this));
        printTestPerformance("GMLReaderTestSuite", this.stopWatch());
    }

    public void testGraphSONReaderTestSuite() throws Exception {
        this.stopWatch();
        doTestSuite(new GraphSONReaderTestSuite(this));
        printTestPerformance("GraphSONReaderTestSuite", this.stopWatch());
    }

    public Graph generateGraph() {
        return generateGraph("");
    }

    public Graph generateGraph(final String graphDirectoryName) {
        return new PartitionIndexableGraph<TinkerGraph>(new TinkerGraph(), "_writeGraph", "writeGraph", new HashSet<String>(Arrays.asList("writeGraph")));
    }


    public void doTestSuite(final TestSuite testSuite) throws Exception {
        for (Method method : testSuite.getClass().getDeclaredMethods()) {
            if (method.getName().startsWith("test")) {
                System.out.println("Testing " + method.getName() + "...");
                method.invoke(testSuite);
            }
        }
    }

    public void testVerticesSeparatedByEdgeInDifferentPartition() {
        TinkerGraph rawGraph = new TinkerGraph();
        PartitionIndexableGraph graph = new PartitionIndexableGraph(rawGraph, "_writeGraph", "p1");
        Vertex inp1 = graph.addVertex("inp1");

        graph.setWritePartition("p2");
        Vertex inp2 = graph.addVertex("inp2");
        inp2.setProperty("key","value");

        graph.setWritePartition("p3");
        graph.addEdge("inp3", inp1, inp2, "links");

        assertNull(graph.getVertex("inp2"));
        graph.addReadPartition("p2");
        graph.addReadPartition("p3");

        assertNotNull(graph.getVertex("inp1"));
        assertNotNull(graph.getVertex("inp2"));
        assertTrue(graph.getVertex("inp1").getEdges(Direction.OUT).iterator().hasNext());

        graph.removeReadPartition("p2");
        assertTrue(graph.getVertex("inp1").getEdges(Direction.OUT).iterator().hasNext());

        // the vertex at the end of this traversal is in the p2 partition which was removed above.  it should return
        // null, throw exception, something....
        assertNull(graph.getVertex("inp1").getEdges(Direction.OUT).iterator().next().getVertex(Direction.IN));
    }

    public void testSpecificBehavior() {
        TinkerGraph rawGraph = new TinkerGraph();
        PartitionIndexableGraph graph = new PartitionIndexableGraph(rawGraph, "_writeGraph", "a");
        assertEquals(graph.getReadPartitions().size(), 1);
        assertTrue(graph.getReadPartitions().contains("a"));
        assertEquals(graph.getWritePartition(), "a");

        Vertex marko = graph.addVertex(null);
        Vertex rawMarko = ((PartitionVertex) marko).getBaseVertex();
        assertEquals(marko.getPropertyKeys().size(), 0);
        assertEquals(rawMarko.getPropertyKeys().size(), 1);
        assertNull(marko.getProperty("_writeGraph"));
        assertEquals(rawMarko.getProperty("_writeGraph"), "a");
        assertEquals(((PartitionVertex) marko).getPartition(), "a");
        assertEquals(count(graph.getVertices()), 1);
        assertEquals(graph.getVertices().iterator().next(), marko);
        assertEquals(count(graph.getEdges()), 0);

        graph.setWritePartition("b");
        assertEquals(graph.getReadPartitions().size(), 1);
        assertTrue(graph.getReadPartitions().contains("a"));
        assertEquals(graph.getWritePartition(), "b");
        Vertex peter = graph.addVertex(null);
        Vertex rawPeter = ((PartitionVertex) peter).getBaseVertex();
        assertEquals(peter.getPropertyKeys().size(), 0);
        assertEquals(rawPeter.getPropertyKeys().size(), 1);
        assertNull(peter.getProperty("_writeGraph"));
        assertEquals(rawPeter.getProperty("_writeGraph"), "b");
        assertEquals(((PartitionVertex) peter).getPartition(), "b");
        assertEquals(count(graph.getVertices()), 1);
        assertEquals(graph.getVertices().iterator().next(), marko);
        assertEquals(count(graph.getEdges()), 0);

        graph.removeReadPartition("a");
        assertEquals(graph.getReadPartitions().size(), 0);
        assertEquals(graph.getWritePartition(), "b");
        assertEquals(count(graph.getVertices()), 0);
        assertEquals(count(graph.getEdges()), 0);
        graph.addReadPartition("b");
        assertEquals(graph.getReadPartitions().size(), 1);
        assertTrue(graph.getReadPartitions().contains("b"));
        assertEquals(graph.getWritePartition(), "b");
        assertEquals(count(graph.getVertices()), 1);
        assertEquals(graph.getVertices().iterator().next(), peter);
        assertEquals(count(graph.getEdges()), 0);

        graph.addReadPartition("a");
        assertEquals(graph.getReadPartitions().size(), 2);
        assertTrue(graph.getReadPartitions().contains("a"));
        assertTrue(graph.getReadPartitions().contains("b"));
        assertEquals(graph.getWritePartition(), "b");
        assertEquals(count(graph.getVertices()), 2);
        assertEquals(count(graph.getEdges()), 0);

        graph.setWritePartition("c");
        assertEquals(graph.getReadPartitions().size(), 2);
        assertTrue(graph.getReadPartitions().contains("a"));
        assertTrue(graph.getReadPartitions().contains("b"));
        assertEquals(graph.getWritePartition(), "c");
        Edge knows = graph.addEdge(null, marko, peter, "knows");
        Edge rawKnows = ((PartitionEdge) knows).getBaseEdge();
        assertEquals(count(graph.getVertices()), 2);
        assertEquals(count(graph.getEdges()), 0);
        graph.addReadPartition("c");
        assertEquals(count(graph.getVertices()), 2);
        assertEquals(count(graph.getEdges()), 1);
        assertEquals(knows.getPropertyKeys().size(), 0);
        assertEquals(rawKnows.getPropertyKeys().size(), 1);
        assertNull(knows.getProperty("_writeGraph"));
        assertEquals(rawKnows.getProperty("_writeGraph"), "c");
        assertEquals(((PartitionEdge) knows).getPartition(), "c");
        assertEquals(graph.getEdges().iterator().next(), knows);

        graph.removeReadPartition("a");
        graph.removeReadPartition("b");
        assertEquals(graph.getReadPartitions().size(), 1);
        assertTrue(graph.getReadPartitions().contains("c"));
        assertEquals(graph.getWritePartition(), "c");
        assertEquals(count(graph.getVertices()), 0);
        assertEquals(count(graph.getEdges()), 1);
        assertNull(knows.getVertex(Direction.IN));
        assertNull(knows.getVertex(Direction.OUT));

        // testing indices
        /*marko.setProperty("name", "marko");
        peter.setProperty("name", "peter");
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "marko")), 0);
        graph.addReadPartition("a");
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "marko")), 1);
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "peter")), 0);
        assertEquals(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "marko").next(), marko);
        graph.removeReadPartition("a");
        graph.addReadPartition("b");
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "peter")), 1);
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "marko")), 0);
        assertEquals(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "peter").next(), peter);
        graph.addReadPartition("a");
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "peter")), 1);
        assertEquals(count(graph.getIndex(Index.VERTICES, Vertex.class).get("name", "marko")), 1);

        assertEquals(count(graph.getIndex(Index.EDGES, Edge.class).get("label", "knows")), 1);
        assertEquals(graph.getIndex(Index.EDGES, Edge.class).get("label", "knows").next(), knows);
        graph.removeReadPartition("c");
        assertEquals(count(graph.getIndex(Index.EDGES, Edge.class).get("label", "knows")), 0);
        */

        graph.shutdown();
    }
}
TOP

Related Classes of com.tinkerpop.blueprints.util.wrappers.partition.PartitionGraphTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.