/** * Insert an extremely simple graph and start * TASK_COUNT simultaneous readers in an executor with * THREAD_COUNT threads. * * @throws Exception */ @Test public void concurrentReadsOnSingleTransaction() throws Exception { initializeGraph(); PropertyKey id = tx.getPropertyKey("uid"); // Tail many concurrent readers on a single transaction CountDownLatch startLatch = new CountDownLatch(TASK_COUNT); CountDownLatch stopLatch = new CountDownLatch(TASK_COUNT); for (int i = 0; i < TASK_COUNT; i++) { int vertexid = RandomGenerator.randomInt(0, VERTEX_COUNT); EdgeLabel elabel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, vertexid, elabel.name(), EDGE_COUNT * 2, id.name())); startLatch.countDown(); } stopLatch.await(); }
for (int i = 0; i < TASK_COUNT; i++) { int vertexid = RandomGenerator.randomInt(0, VERTEX_COUNT); EdgeLabel elabel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, vertexid, elabel.name(), EDGE_COUNT * 2, id.name())); startLatch.countDown();
EdgeLabel knows = tx.getEdgeLabel("knows"); PropertyKey weight = tx.getPropertyKey("weight");
assertTrue(tx.containsVertexLabel("person")); PropertyKey name = tx.getPropertyKey("name"); EdgeLabel knows = tx.getEdgeLabel("knows"); VertexLabel person = tx.getVertexLabel("person"); PropertyKey uid = tx.getPropertyKey("uid");
Edge e = v.addEdge("knows", v); assertTrue(tx.containsRelationType("knows")); assertNotNull(tx.getEdgeLabel(e.label()));
connect = tx.getEdgeLabel("connect"); related = tx.getEdgeLabel("related");
vs[i] = tx.addVertex("name", "v" + i); EdgeLabel[] labelsV = {tx.getEdgeLabel("connect"), tx.getEdgeLabel("friend"), tx.getEdgeLabel("knows")}; EdgeLabel[] labelsU = {tx.getEdgeLabel("connectDesc"), tx.getEdgeLabel("friendDesc"), tx.getEdgeLabel("knows")}; for (int i = 1; i < noVertices; i++) { for (TitanVertex vertex : new TitanVertex[]{v, u}) {
/** * Insert an extremely simple graph and start * TASK_COUNT simultaneous readers in an executor with * THREAD_COUNT threads. * * @throws Exception */ @Test public void concurrentReadsOnSingleTransaction() throws Exception { TitanKey id = tx.getPropertyKey("uid"); // Tail many concurrent readers on a single transaction CountDownLatch startLatch = new CountDownLatch(TASK_COUNT); CountDownLatch stopLatch = new CountDownLatch(TASK_COUNT); for (int i = 0; i < TASK_COUNT; i++) { int nodeid = RandomGenerator.randomInt(0, NODE_COUNT); TitanLabel rel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, nodeid, rel, EDGE_COUNT * 2, id)); startLatch.countDown(); } stopLatch.await(); }
/** * Insert an extremely simple graph and start * TASK_COUNT simultaneous readers in an executor with * THREAD_COUNT threads. * * @throws Exception */ @Test public void concurrentReadsOnSingleTransaction() throws Exception { initializeGraph(); PropertyKey id = tx.getPropertyKey("uid"); // Tail many concurrent readers on a single transaction CountDownLatch startLatch = new CountDownLatch(TASK_COUNT); CountDownLatch stopLatch = new CountDownLatch(TASK_COUNT); for (int i = 0; i < TASK_COUNT; i++) { int nodeid = RandomGenerator.randomInt(0, NODE_COUNT); EdgeLabel rel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, nodeid, rel, EDGE_COUNT * 2, id)); startLatch.countDown(); } stopLatch.await(); }
Runnable relMaker = new FixedRelationshipMaker(tx, id, tx.getEdgeLabel("dummyRelationship")); for (int i = 0; i < TASK_COUNT; i++) { int nodeid = RandomGenerator.randomInt(0, NODE_COUNT); EdgeLabel rel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, nodeid, rel, EDGE_COUNT * 2, id)); startLatch.countDown();
for (int i = 0; i < TASK_COUNT; i++) { int nodeid = RandomGenerator.randomInt(0, NODE_COUNT); TitanLabel rel = tx.getEdgeLabel("rel" + RandomGenerator.randomInt(0, REL_COUNT)); executor.execute(new SimpleReader(tx, startLatch, stopLatch, nodeid, rel, EDGE_COUNT * 2, id)); startLatch.countDown();
public void neighborhoodTest() { testCreateAndRetrieveComprehensive(); log.debug("Neighborhood:"); TitanVertex n1 = tx.getVertex("name", "Node1"); TitanVertexQuery q = n1.query().direction(OUT).types(tx.getEdgeLabel("connect")); VertexList res = q.vertexIds(); assertEquals(1, res.size()); TitanVertex n2 = tx.getVertex("name", "Node2"); assertEquals(n2.getID(), res.getID(0)); }
EdgeLabel connect = tx.getEdgeLabel("connect"); assertNotNull(connect); EdgeLabel knows = tx.getEdgeLabel("knows"); assertNotNull(knows); assertTrue(knows.isEdgeLabel()); connect = tx.getEdgeLabel("connect"); assertEquals(connect.getName(), "connect"); assertTrue(connect.isDirected()); weight = tx.getPropertyKey("weight"); id = tx.getPropertyKey("uid"); knows = tx.getEdgeLabel("knows"); log.debug("Loaded edge types"); n2 = getVertex(name, "Node2"); assertEquals(1, Iterables.size(n2.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(1, Iterables.size(n1.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(2, Iterables.size(n1.getEdges())); e = Iterables.getOnlyElement(n2.getTitanEdges(OUT, tx.getEdgeLabel("knows"))); assertTrue(e.getProperty(weight).equals(3.0)); assertEquals("HasProperties TitanRelation", e.getProperty(name)); n3 = e.getVertex(IN); e = Iterables.getOnlyElement(n3.getTitanEdges(OUT, tx.getEdgeLabel("knows"))); assertEquals(111, e.getProperty(id));
assertEquals(connect, tx.getEdgeLabel(etNames[0])); assertEquals(name, tx.getPropertyKey(etNames[1])); assertEquals(knows, tx.getEdgeLabel(etNames[3])); assertTrue(knows.isEdgeLabel()); connect = tx.getEdgeLabel(etNames[0]); assertEquals(connect.getName(), etNames[0]); assertTrue(connect.isDirected()); weight = tx.getPropertyKey(etNames[2]); id = tx.getPropertyKey("uid"); knows = tx.getEdgeLabel(etNames[3]); log.debug("Loaded edge types"); n2 = tx.getVertex(name, "Node2"); assertEquals(1, Iterables.size(n2.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(1, Iterables.size(n1.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(2, Iterables.size(n1.getEdges())); e = Iterables.getOnlyElement(n2.getTitanEdges(OUT, tx.getEdgeLabel("knows"))); assertEquals(3.0, e.getProperty(weight)); assertEquals("HasProperties TitanRelation", e.getProperty(name)); n3 = e.getVertex(IN); e = Iterables.getOnlyElement(n3.getTitanEdges(OUT, tx.getEdgeLabel("knows"))); assertEquals(111, e.getProperty(id)); e = Iterables.getOnlyElement(n2.getTitanEdges(OUT, tx.getEdgeLabel("knows")));
assertEquals(nodeIds[i], n.getID()); knows = tx.getEdgeLabel("knows"); for (int i = 0; i < noNodes; i++) { TitanVertex n = nodes[i]; assertEquals(connectOff.length + knowsOff.length, Iterables.size(n.getEdges(OUT))); assertEquals(connectOff.length, Iterables.size(n.getEdges(OUT, "connect"))); assertEquals(connectOff.length * 2, Iterables.size(n.getTitanEdges(BOTH, tx.getEdgeLabel("connect")))); assertEquals(knowsOff.length * 2, Iterables.size(n.getTitanEdges(BOTH, knows)), i);
EdgeLabel knows = tx.getEdgeLabel("knows"); PropertyKey weight = tx.getPropertyKey("weight");
assertEquals(nodeIds[i], n.getLongId()); EdgeLabel knows = tx.getEdgeLabel("knows"); for (int i = 0; i < noNodes; i++) { TitanVertex n = nodes[i]; assertEquals(connectOff.length + knowsOff.length, Iterables.size(n.getEdges(OUT))); assertEquals(connectOff.length, Iterables.size(n.getEdges(OUT, "connect"))); assertEquals(connectOff.length * 2, Iterables.size(n.getTitanEdges(BOTH, tx.getEdgeLabel("connect")))); assertEquals(knowsOff.length * 2, Iterables.size(n.getTitanEdges(BOTH, knows)), i);
connect = tx.getEdgeLabel("connect"); related = tx.getEdgeLabel("related"); connect = tx.getEdgeLabel("connect"); related = tx.getEdgeLabel("related"); v1 = tx.getVertex(v1.getLongId()); connect = tx.getEdgeLabel("connect"); related = tx.getEdgeLabel("related"); v1 = tx.getVertex(v1.getLongId());
assertTrue(tx.containsVertexLabel("person")); PropertyKey name = tx.getPropertyKey("name"); EdgeLabel knows = tx.getEdgeLabel("knows"); VertexLabel person = tx.getVertexLabel("person"); PropertyKey uid = tx.getPropertyKey("uid");
Edge e = v.addEdge("knows",v); assertTrue(tx.containsRelationType("knows")); assertNotNull(tx.getEdgeLabel(e.getLabel()));