Search in sources :

Example 11 with InternalRelation

use of org.janusgraph.graphdb.internal.InternalRelation in project janusgraph by JanusGraph.

the class AbstractTypedRelation method it.

@Override
public InternalRelation it() {
    InternalVertex v = getVertex(0);
    if (v == v.it())
        return this;
    InternalRelation next = (InternalRelation) RelationIdentifier.get(this).findRelation(tx());
    if (next == null)
        throw InvalidElementException.removedException(this);
    return next;
}
Also used : InternalVertex(org.janusgraph.graphdb.internal.InternalVertex) InternalRelation(org.janusgraph.graphdb.internal.InternalRelation)

Example 12 with InternalRelation

use of org.janusgraph.graphdb.internal.InternalRelation in project janusgraph by JanusGraph.

the class VertexIDAssignerTest method testIDAssignment.

@Test
public void testIDAssignment() {
    LongSet vertexIds = new LongHashSet();
    LongSet relationIds = new LongHashSet();
    int totalRelations = 0;
    int totalVertices = 0;
    for (int trial = 0; trial < 10; trial++) {
        for (boolean flush : new boolean[] { true, false }) {
            final JanusGraph graph = getInMemoryGraph(false, false);
            int numVertices = 1000;
            final List<JanusGraphVertex> vertices = new ArrayList<>(numVertices);
            final List<InternalRelation> relations = new ArrayList<>();
            JanusGraphVertex old = null;
            totalRelations += 2 * numVertices;
            totalVertices += numVertices;
            try {
                for (int i = 0; i < numVertices; i++) {
                    JanusGraphVertex next = graph.addVertex();
                    InternalRelation edge = null;
                    if (old != null) {
                        edge = (InternalRelation) old.addEdge("knows", next);
                    }
                    InternalRelation property = (InternalRelation) next.property("age", 25);
                    if (flush) {
                        idAssigner.assignID((InternalVertex) next, next.vertexLabel());
                        idAssigner.assignID(property);
                        if (edge != null)
                            idAssigner.assignID(edge);
                    }
                    relations.add(property);
                    if (edge != null)
                        relations.add(edge);
                    vertices.add(next);
                    old = next;
                }
                if (!flush)
                    idAssigner.assignIDs(relations);
                // Check if we should have exhausted the id pools
                if (totalRelations > maxIDAssignments || totalVertices > maxIDAssignments)
                    fail();
                // Verify that ids are set and unique
                for (JanusGraphVertex v : vertices) {
                    assertTrue(v.hasId());
                    long id = v.longId();
                    assertTrue(id > 0 && id < Long.MAX_VALUE);
                    assertTrue(vertexIds.add(id));
                }
                for (InternalRelation r : relations) {
                    assertTrue(r.hasId());
                    long id = r.longId();
                    assertTrue(id > 0 && id < Long.MAX_VALUE);
                    assertTrue(relationIds.add(id));
                }
            } catch (IDPoolExhaustedException e) {
                // Since the id assignment process is randomized, we divide by 3/2 to account for minor variations
                assertTrue("Max Avail: " + maxIDAssignments + " vs. [" + totalVertices + "," + totalRelations + "]", totalRelations >= maxIDAssignments / 3 * 2 || totalVertices >= maxIDAssignments / 3 * 2);
            } finally {
                graph.tx().rollback();
                graph.close();
            }
        }
    }
}
Also used : LongHashSet(com.carrotsearch.hppc.LongHashSet) LongSet(com.carrotsearch.hppc.LongSet) JanusGraph(org.janusgraph.core.JanusGraph) JanusGraphVertex(org.janusgraph.core.JanusGraphVertex) ArrayList(java.util.ArrayList) IDPoolExhaustedException(org.janusgraph.graphdb.database.idassigner.IDPoolExhaustedException) InternalRelation(org.janusgraph.graphdb.internal.InternalRelation) Test(org.junit.Test)

Aggregations

InternalRelation (org.janusgraph.graphdb.internal.InternalRelation)12 InternalVertex (org.janusgraph.graphdb.internal.InternalVertex)7 InternalRelationType (org.janusgraph.graphdb.internal.InternalRelationType)4 Entry (org.janusgraph.diskstorage.Entry)2 IndexEntry (org.janusgraph.diskstorage.indexing.IndexEntry)2 CompositeIndexType (org.janusgraph.graphdb.types.CompositeIndexType)2 MixedIndexType (org.janusgraph.graphdb.types.MixedIndexType)2 JanusGraphSchemaVertex (org.janusgraph.graphdb.types.vertices.JanusGraphSchemaVertex)2 LongArrayList (com.carrotsearch.hppc.LongArrayList)1 LongHashSet (com.carrotsearch.hppc.LongHashSet)1 LongSet (com.carrotsearch.hppc.LongSet)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ArrayList (java.util.ArrayList)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 ConcurrentMap (java.util.concurrent.ConcurrentMap)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 EdgeLabel (org.janusgraph.core.EdgeLabel)1 JanusGraph (org.janusgraph.core.JanusGraph)1 JanusGraphVertex (org.janusgraph.core.JanusGraphVertex)1