@Test public void testGetEdgesToTarget() { final GraphManager gm = emf.createEdgeManager( scope ); Id sourceId1 = new SimpleId( "source1" ); Id sourceId2 = new SimpleId( "source2" ); Id targetId1 = new SimpleId( "target" ); Edge testTargetEdge = createEdge( sourceId1, "test", targetId1, System.currentTimeMillis() ); gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); Edge testTarget2Edge = createEdge( sourceId2, "edgeType1", targetId1, System.currentTimeMillis() ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); Edge test2TargetEdge = createEdge( sourceId1, "edgeType1", targetId1, System.currentTimeMillis() ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null ); Edge test3TargetEdge = createEdge( sourceId1, "edgeType2", targetId1, System.currentTimeMillis() ); gm.writeEdge( test3TargetEdge ).toBlocking().singleOrDefault( null ); int count = gm.getEdgeTypesToTarget( new SimpleSearchEdgeType(targetId1, null, null) ) .count().toBlocking().last(); assertEquals( 3, count ); count = gm.getEdgeTypesToTarget( new SimpleSearchEdgeType(targetId1, "edgeType", null) ) .count().toBlocking().last(); assertEquals( 2, count ); }
@Test public void testWriteReadEdgeTypesSourceTypesPrefix() { final GraphManager gm = emf.createEdgeManager( scope ); Id sourceId = new SimpleId( "source" ); Id targetId = new SimpleId( "target" ); Edge testTargetEdge = createEdge( sourceId, "test1edge1", targetId, System.currentTimeMillis() ); gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); Edge testTarget2Edge = createEdge( sourceId, "test1edge2", targetId, System.currentTimeMillis() ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); Edge test2TargetEdge = createEdge( sourceId, "test2edge1", targetId, System.currentTimeMillis() ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null ); //get our 2 edge types Observable<String> edges = gm.getEdgeTypesFromSource( new SimpleSearchEdgeType( testTargetEdge.getSourceNode(), "test1", null ) ); Iterator<String> results = edges.toBlocking().getIterator(); assertEquals( "Edges correct", "test1edge1", results.next() ); assertEquals( "Edges correct", "test1edge2", results.next() ); assertFalse( "No more edges", results.hasNext() ); edges = gm.getEdgeTypesFromSource( new SimpleSearchEdgeType( testTargetEdge.getSourceNode(), "test2", null ) ); results = edges.toBlocking().getIterator(); assertEquals( "Edges correct", "test2edge1", results.next() ); assertFalse( "No more edges", results.hasNext() ); }
@Test public void testWriteReadEdgeTypesTargetTypesPrefix() { final GraphManager gm = emf.createEdgeManager( scope ); Id targetId = new SimpleId( "target" ); Id sourceId = new SimpleId( "source" ); Edge testTargetEdge = createEdge( sourceId, "test1edge1", targetId, System.currentTimeMillis() ); gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); Edge testTarget2Edge = createEdge( sourceId, "test1edge2", targetId, System.currentTimeMillis() ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); Edge test2TargetEdge = createEdge( sourceId, "test2edge1", targetId, System.currentTimeMillis() ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null ); //get our 2 edge types Observable<String> edges = gm.getEdgeTypesToTarget( new SimpleSearchEdgeType( testTargetEdge.getTargetNode(), "test1", null ) ); Iterator<String> results = edges.toBlocking().getIterator(); assertEquals( "Edges correct", "test1edge1", results.next() ); assertEquals( "Edges correct", "test1edge2", results.next() ); assertFalse( "No more edges", results.hasNext() ); edges = gm.getEdgeTypesToTarget( new SimpleSearchEdgeType( testTargetEdge.getTargetNode(), "test2", null ) ); results = edges.toBlocking().getIterator(); assertEquals( "Edges correct", "test2edge1", results.next() ); assertFalse( "No more edges", results.hasNext() ); }
@Test public void testSourceSubTypes() { //now test sub edges final GraphManager gm = emf.createEdgeManager( scope ); Id sourceId = new SimpleId( "source" ); Id targetId1target1 = new SimpleId( "type1target1" ); Id targetId1target2 = new SimpleId( "type1target2" ); Id targetId2 = new SimpleId( "type2target2" ); Edge testTargetEdge = createEdge( sourceId, "test", targetId1target1, System.currentTimeMillis() ); gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); Edge testTarget2Edge = createEdge( sourceId, "test", targetId1target2, System.currentTimeMillis() ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); Edge test2TargetEdge = createEdge( sourceId, "test", targetId2, System.currentTimeMillis() ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null ); Observable<String> edges = gm.getIdTypesFromSource( new SimpleSearchIdType( testTargetEdge.getSourceNode(), "test", "type1", null ) ); Iterator<String> results = edges.toBlocking().getIterator(); assertEquals( "Types correct", targetId1target1.getType(), results.next() ); assertEquals( "Types correct", targetId1target2.getType(), results.next() ); assertFalse( "No results", results.hasNext() ); //now get types for test2 edges = gm.getIdTypesFromSource( new SimpleSearchIdType( testTargetEdge.getSourceNode(), "test", "type2", null ) ); results = edges.toBlocking().getIterator(); assertEquals( "Types correct", targetId2.getType(), results.next() ); assertFalse( "No results", results.hasNext() ); }
gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null );
@Test public void testTargetSubTypes() { //now test sub edges final GraphManager gm = emf.createEdgeManager( scope ); Id targetId = new SimpleId( "target" ); Id sourceId1target1 = new SimpleId( "type1source1" ); Id sourceId1target2 = new SimpleId( "type1source2" ); Id sourceId2 = new SimpleId( "type2source2" ); Edge testTargetEdge = createEdge( sourceId1target1, "test", targetId, System.currentTimeMillis() ); gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); Edge testTarget2Edge = createEdge( sourceId1target2, "test", targetId, System.currentTimeMillis() ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); Edge test2TargetEdge = createEdge( sourceId2, "test", targetId, System.currentTimeMillis() ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null ); Observable<String> edges = gm.getIdTypesToTarget( new SimpleSearchIdType( testTargetEdge.getTargetNode(), "test", "type1", null ) ); Iterator<String> results = edges.toBlocking().getIterator(); assertEquals( "Types correct", sourceId1target1.getType(), results.next() ); assertEquals( "Types correct", sourceId1target2.getType(), results.next() ); assertFalse( "No results", results.hasNext() ); //now get types for test2 edges = gm.getIdTypesToTarget( new SimpleSearchIdType( testTargetEdge.getTargetNode(), "test", "type2", null ) ); results = edges.toBlocking().getIterator(); assertEquals( "Types correct", sourceId2.getType(), results.next() ); assertFalse( "No results", results.hasNext() ); }
gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); gm.writeEdge( testTarget2Edge ).toBlocking().singleOrDefault( null ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null );
gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); gm.writeEdge( testTargetEdge2 ).toBlocking().singleOrDefault( null ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null );
gm.writeEdge( testTargetEdge ).toBlocking().singleOrDefault( null ); gm.writeEdge( testTargetEdge2 ).toBlocking().singleOrDefault( null ); gm.writeEdge( test2TargetEdge ).toBlocking().singleOrDefault( null );
gm.writeEdge( edge1 ).toBlocking().singleOrDefault( null ); gm.writeEdge( edge2 ).toBlocking().singleOrDefault( null );
gm.writeEdge( edge1 ).toBlocking().singleOrDefault( null ); gm.writeEdge( edge2 ).toBlocking().singleOrDefault( null );
gm.writeEdge( edge1 ).toBlocking().singleOrDefault( null ); gm.writeEdge( edge2 ).toBlocking().singleOrDefault( null );
@Test public void testWriteReadEdgeTypeVersionSource() throws TimeoutException, InterruptedException { GraphManager gm = emf.createEdgeManager( scope ); final long earlyVersion = 1000l; Edge edge = createEdge( "source", "test", "target", earlyVersion ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByEdgeType search = createSearchByEdge( edge.getSourceNode(), edge.getType(), edge.getTimestamp(), null ); Observable<MarkedEdge> edges = gm.loadEdgesFromSource( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //now test with an earlier version, we shouldn't get the edge back search = createSearchByEdge( edge.getSourceNode(), edge.getType(), earlyVersion - 1, null ); edges = gm.loadEdgesFromSource( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Earlier version should not be returned", returned ); }
@Test public void testWriteReadEdgeTypeTarget() throws TimeoutException, InterruptedException { GraphManager gm = emf.createEdgeManager( scope ); Edge edge = createEdge( "source", "test", "target" ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByEdgeType search = createSearchByEdge( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), null ); Observable<MarkedEdge> edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //change edge type to be invalid, shouldn't get a result search = createSearchByEdge( edge.getTargetNode(), edge.getType() + "invalid", edge.getTimestamp(), null ); edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Invalid type should not be returned", returned ); }
@Test public void testWriteReadEdgeDeleteTarget() { GraphManager gm = emf.createEdgeManager( scope ); Edge edge = createEdge( "source", "test", "target" ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByEdgeType search = createSearchByEdge( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), null ); Observable<MarkedEdge> edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); SearchByIdType searchById = createSearchByEdgeAndId( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), edge.getSourceNode().getType(), null ); edges = gm.loadEdgesToTargetByType( searchById ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //now delete it gm.markEdge( edge ).toBlocking().last(); //now test retrieval, should be null edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "No edge returned", returned ); //no search by type, should be null as well edges = gm.loadEdgesToTargetByType( searchById ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "No edge returned", returned ); }
@Test public void testWriteReadEdgeTypeVersionTarget() throws TimeoutException, InterruptedException { GraphManager gm = emf.createEdgeManager( scope ); final long earlyVersion = 10000l; Edge edge = createEdge( "source", "test", "target", earlyVersion ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByEdgeType search = createSearchByEdge( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), null ); Observable<MarkedEdge> edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //change edge type to be invalid, shouldn't get a result search = createSearchByEdge( edge.getTargetNode(), edge.getType(), earlyVersion - 1, null ); edges = gm.loadEdgesToTarget( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Earlier version should not be returned", returned ); }
@Test public void testWriteReadEdgeTypeSource() throws TimeoutException, InterruptedException { GraphManager gm = emf.createEdgeManager( scope ); Edge edge = createEdge( "source", "test", "target" ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByEdgeType search = createSearchByEdge( edge.getSourceNode(), edge.getType(), edge.getTimestamp(), null ); Observable<MarkedEdge> edges = gm.loadEdgesFromSource( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().last(); assertEquals( "Correct edge returned", edge, returned ); //change edge type to be invalid, shouldn't get a result search = createSearchByEdge( edge.getSourceNode(), edge.getType() + "invalid", edge.getTimestamp(), null ); edges = gm.loadEdgesFromSource( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Invalid type should not be returned", returned ); }
returned = edges.toBlocking().singleOrDefault( null ); returned = edges.toBlocking().singleOrDefault( null ); returned = gm.loadEdgeVersions( searchByEdge ).toBlocking().singleOrDefault( null );
@Test public void testWriteReadEdgeTypeTargetTypeSource() { GraphManager gm = emf.createEdgeManager( scope ); Edge edge = createEdge( "source", "test", "target" ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByIdType search = createSearchByEdgeAndId( edge.getSourceNode(), edge.getType(), edge.getTimestamp(), edge.getTargetNode().getType(), null ); Observable<MarkedEdge> edges = gm.loadEdgesFromSourceByType( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //change edge type to be invalid, shouldn't get a result search = createSearchByEdgeAndId( edge.getSourceNode(), edge.getType(), edge.getTimestamp(), edge.getTargetNode().getType() + "invalid", null ); edges = gm.loadEdgesFromSourceByType( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Invalid type should not be returned", returned ); }
@Test public void testWriteReadEdgeTypeTargetTypeTarget() { GraphManager gm = emf.createEdgeManager( scope ); ; Edge edge = createEdge( "source", "test", "target" ); gm.writeEdge( edge ).toBlocking().last(); //now test retrieving it SearchByIdType search = createSearchByEdgeAndId( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), edge.getSourceNode().getType(), null ); Observable<MarkedEdge> edges = gm.loadEdgesToTargetByType( search ); //implicitly blows up if more than 1 is returned from "single" Edge returned = edges.toBlocking().single(); assertEquals( "Correct edge returned", edge, returned ); //change edge type to be invalid, shouldn't get a result search = createSearchByEdgeAndId( edge.getTargetNode(), edge.getType(), edge.getTimestamp(), edge.getSourceNode().getType() + "invalid", null ); edges = gm.loadEdgesToTargetByType( search ); //implicitly blows up if more than 1 is returned from "single" returned = edges.toBlocking().singleOrDefault( null ); assertNull( "Invalid type should not be returned", returned ); }