From 7f4b31d66f85ef628079c4b5e08f8f2d7e43a592 Mon Sep 17 00:00:00 2001 From: AngeloBusato Date: Wed, 6 Sep 2017 16:20:51 +0200 Subject: [PATCH] Fixes #483 - Allow accessing other databases via bolt --- build.gradle | 1 + docs/bolt.adoc | 138 +++++++ .../apoc.bolt.execute.createandstatistics.PNG | Bin 0 -> 28585 bytes .../apoc.bolt.execute.createwithparams.PNG | Bin 0 -> 26973 bytes docs/img/apoc.bolt.execute.nodemap.PNG | Bin 0 -> 25026 bytes docs/img/apoc.bolt.load.relmap.PNG | Bin 0 -> 25810 bytes docs/img/apoc.bolt.load.returnvirtualpath.PNG | Bin 0 -> 36102 bytes docs/img/apoc.bolt.load.scalarmulti.PNG | Bin 0 -> 21997 bytes docs/img/apoc.bolt.load.virtualnode.PNG | Bin 0 -> 25519 bytes docs/index.adoc | 4 + src/main/java/apoc/bolt/Bolt.java | 160 ++++++++ src/main/java/apoc/util/UriResolver.java | 102 ++++++ src/test/java/apoc/bolt/BoltTest.java | 343 ++++++++++++++++++ src/test/java/apoc/util/UtilTest.java | 4 +- 14 files changed, 750 insertions(+), 2 deletions(-) create mode 100644 docs/bolt.adoc create mode 100644 docs/img/apoc.bolt.execute.createandstatistics.PNG create mode 100644 docs/img/apoc.bolt.execute.createwithparams.PNG create mode 100644 docs/img/apoc.bolt.execute.nodemap.PNG create mode 100644 docs/img/apoc.bolt.load.relmap.PNG create mode 100644 docs/img/apoc.bolt.load.returnvirtualpath.PNG create mode 100644 docs/img/apoc.bolt.load.scalarmulti.PNG create mode 100644 docs/img/apoc.bolt.load.virtualnode.PNG create mode 100644 src/main/java/apoc/bolt/Bolt.java create mode 100644 src/main/java/apoc/util/UriResolver.java create mode 100644 src/test/java/apoc/bolt/BoltTest.java diff --git a/build.gradle b/build.gradle index b3b3995333..50ba89f566 100644 --- a/build.gradle +++ b/build.gradle @@ -73,6 +73,7 @@ dependencies { testCompile group: 'org.neo4j', name: 'neo4j-causal-clustering', version:neo4jVersion, classifier: "tests" testCompile group: 'org.neo4j', name: 'neo4j-kernel', version:neo4jVersion, classifier: "tests" testCompile group: 'org.neo4j', name: 'neo4j-io', version:neo4jVersion, classifier: "tests" + testCompile group: 'org.neo4j', name: 'neo4j-bolt', version: '3.0.1' compileOnly 'org.mongodb:mongodb-driver:3.2.2' testCompile 'org.mongodb:mongodb-driver:3.2.2' diff --git a/docs/bolt.adoc b/docs/bolt.adoc new file mode 100644 index 0000000000..26292d09a8 --- /dev/null +++ b/docs/bolt.adoc @@ -0,0 +1,138 @@ +Bolt procedures allows to accessing other databases via bolt protocol. + +[cols="3m,2"] +|=== +| CALL apoc.bolt.execute(urlOrKey, statement, params, config) YIELD row | access to other databases via bolt for read and write +| CALL apoc.bolt.load(urlOrKey, statement, params, config) YIELD row | access to other databases via bolt for read +|=== + +**urlOrKey** param allows users to decide if send url by apoc or if put it into neo4j.conf file. + +* **apoc** : write the complete url in his right position on the apoc. + +[source,cypher] +---- +call apoc.bolt.execute("bolt://user:password@localhost:7687","match(p:Person {name:{name}}) return p", {name:'Michael'}) +---- + +* **neo4j.conf** : here the are two choices: + +1) **complete url**: write the complete url with the param apoc.bolt.url; + +.apoc + +[source,cypher] +---- +call apoc.bolt.execute("","match(p:Person {name:{name}}) return p", {name:'Michael'}) +---- + +.neo4jConf + +[source,txt] +---- +//simple url +apoc.bolt.url=bolt://neo4j:test@localhost:7687 +---- + + +2) **by key**: set the url with a personal key apoc.bolt.yourKey.url; in this case in the apoc on the url param user has to insert the key. + +.apoc + +[source,cypher] +---- +call apoc.bolt.execute("test","match(p:Person {name:{name}}) return p", {name:'Michael'}) +---- + +.neo4jConf + +[source,txt] +---- +//with key +apoc.bolt.test.url=bolt://user:password@localhost:7687 +apoc.bolt.production.url=bolt://password:test@localhost:7688 +---- + +Config available are: + +* `statistics`: possible values are true/false, the default value is false. This config print the execution statistics; +* `virtual`: possible values are true/false, the default value is false. This config return result in virtual format and not in map format, in apoc.bolt.load. + + +== Bolt Examples + +**Return node in map format** + +[source,cypher] +---- +call apoc.bolt.execute("bolt://user:password@localhost:7687", +"match(p:Person {name:{name}}) return p", {name:'Michael'}) +---- + +image::{img}/apoc.bolt.execute.nodemap.png[width=800] + + +**Return node in virtual Node format** + +[source,cypher] +---- +call apoc.bolt.load("bolt://user:password@localhost:7687", +"match(p:Person {name:{name}}) return p", {name:'Michael'}, {virtual:true}) +---- + +image::{img}/apoc.bolt.load.virtualnode.png[width=800] + + +**Create node and return statistic** + +[source,cypher] +---- +call apoc.bolt.execute("bolt://user:password@localhost:7687", +"create(n:Node {name:{name}})", {name:'Node1'}, {statistics:true}) +---- + +image::{img}/apoc.bolt.execute.createandstatistics.png[width=800] + + +**Return more scalar values** + +[source,cypher] +---- +call apoc.bolt.execute("bolt://user:password@localhost:7687", +"match (n:Person {name:{name}}) return n.age as age, n.name as name, n.surname as surname", {name:'Michael'}) +---- + +image::{img}/apoc.bolt.execute.scalarmulti.png[width=800] + + +**Return relationship in a map format** + +[source,cypher] +---- +call apoc.bolt.load("bolt://neo4j:test@localhost:7687", +"MATCH (n:Person{name:{name}})-[r:KNOWS]->(p) return r as rel", {name:'Anne'}) +---- + +image::{img}/apoc.bolt.load.relmap.png[width=800] + + +**Return virtual path** + +[source,cypher] +---- +call apoc.bolt.load("bolt://user:password@localhost:7687", +"START n=node({idNode}) MATCH path= (n)-[r:REL_TYPE*..3]->(o) return path", {idNode:200}, {virtual:true}) +---- + +image::{img}/apoc.bolt.load.returnvirtualpath.png[width=800] + + +**Create a Node with params in input** + +[source,cypher] +---- +call apoc.bolt.execute("bolt://user:password@localhost:7687", +"CREATE (n:Car{brand:{brand},model:{model},year:{year}}) return n", {brand:'Ferrari',model:'California',year:2016}) +---- + +image::{img}/apoc.bolt.execute.createwithparams.png[width=800] diff --git a/docs/img/apoc.bolt.execute.createandstatistics.PNG b/docs/img/apoc.bolt.execute.createandstatistics.PNG new file mode 100644 index 0000000000000000000000000000000000000000..4051191beea10fca3dcf216ea4d79156e2715898 GIT binary patch literal 28585 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 O!{>P5G1k%37ylP?VvqL# literal 0 HcmV?d00001 diff --git a/docs/img/apoc.bolt.load.relmap.PNG b/docs/img/apoc.bolt.load.relmap.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9fa5181a02a89a55a7c57a02fa401f6aa5d7d3c4 GIT binary patch literal 25810 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 literal 0 HcmV?d00001 diff --git a/docs/index.adoc b/docs/index.adoc index ed51fd1fa1..db4fe4da44 100644 --- a/docs/index.adoc +++ b/docs/index.adoc @@ -176,6 +176,10 @@ include::schema.adoc[leveloffset=2] include::atomic.adoc[leveloffset=1] +== Bolt + +include::bolt.adoc[leveloffset=1] + == Appendix: Complete Overview include::overview.adoc[tags=overview,leveloffset=1] diff --git a/src/main/java/apoc/bolt/Bolt.java b/src/main/java/apoc/bolt/Bolt.java new file mode 100644 index 0000000000..45c0133980 --- /dev/null +++ b/src/main/java/apoc/bolt/Bolt.java @@ -0,0 +1,160 @@ +package apoc.bolt; + +import apoc.Description; +import apoc.result.RowResult; +import apoc.result.VirtualNode; +import apoc.result.VirtualRelationship; +import apoc.util.UriResolver; +import apoc.util.Util; +import org.neo4j.driver.internal.InternalEntity; +import org.neo4j.driver.internal.InternalPath; +import org.neo4j.driver.v1.*; +import org.neo4j.driver.v1.summary.SummaryCounters; +import org.neo4j.driver.v1.types.Node; +import org.neo4j.driver.v1.types.Path; +import org.neo4j.driver.v1.types.Relationship; +import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.graphdb.Label; +import org.neo4j.graphdb.RelationshipType; +import org.neo4j.procedure.Context; +import org.neo4j.procedure.Name; +import org.neo4j.procedure.Procedure; + +import java.net.URISyntaxException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +import static apoc.util.MapUtil.map; + +/** + * @author AgileLARUS + * @since 29.08.17 + */ +public class Bolt { + + @Context + public GraphDatabaseService db; + + @Procedure() + @Description("apoc.bolt.load(url-or-key, statement, params, config) - access to other databases via bolt for read") + public Stream load(@Name("url") String url, @Name("statement") String statement, @Name(value = "params", defaultValue = "{}") Map params, @Name(value = "config", defaultValue = "{}") Map config) throws URISyntaxException { + + if (params == null) params = Collections.emptyMap(); + if (config == null) config = Collections.emptyMap(); + boolean virtual = (boolean) config.getOrDefault("virtual", false); + boolean addStatistics = (boolean) config.getOrDefault("statistics", false); + UriResolver uri = new UriResolver(url, "bolt"); + uri.initialize(); + Driver driver = null; + Session session = null; + try { + driver = GraphDatabase.driver(uri.getUrlDriver(), AuthTokens.basic(uri.getUser(), uri.getPassword())); + session = driver.session(); + if (addStatistics) + return Stream.of(new RowResult(toMap(runStatement(statement, session, params).summary().counters()))); + + return getRowResultStream(virtual, session, params, statement); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + session.close(); + driver.close(); + } + } + + @Procedure() + @Description("apoc.bolt.execute(url-or-key, statement, params, config) - access to other databases via bolt for read") + public Stream execute(@Name("url") String url, @Name("statement") String statement, @Name(value = "params", defaultValue = "{}") Map params, @Name(value = "config", defaultValue = "{}") Map config) throws URISyntaxException { + Map configuration = new HashMap<>(config); + configuration.remove("virtual"); + return load(url, statement, params, configuration); + } + + private StatementResult runStatement(@Name("statement") String statement, Session session, Map finalParams) { + return session.writeTransaction((Transaction tx) -> tx.run(statement, finalParams)); + } + + private Stream getRowResultStream(boolean virtual, Session session, Map params, String statement) { + return runStatement(statement, session, params).list().stream() + .map(record -> record.fields()) + .map(fields -> { + Map map = new HashMap<>(); + for (int i = 0; i < fields.size(); i++) { + String key = fields.get(i).key(); + Object value = fields.get(i).value().asObject(); + if (value instanceof Path) map.putAll(toPath(value, virtual, key)); + else if (value instanceof Node) map.putAll(toNode(value, key, virtual)); + else if (value instanceof Relationship) map.putAll(toRelationship(value, map, key, virtual)); + else map.put(key, value); + } + return map; + }) + .map(resultMap -> new RowResult(resultMap)); + } + + private Map toNode(Object value, String key, boolean virtual) { + Value internalValue = ((InternalEntity) value).asValue(); + Node node = internalValue.asNode(); + if (virtual) { + VirtualNode virtualNode = new VirtualNode(node.id(), db); + node.labels().forEach(l -> virtualNode.addLabel(Label.label(l))); + node.asMap().entrySet().iterator().forEachRemaining(i -> virtualNode.setProperty(i.getKey(), i.getValue())); + return Util.map(key, virtualNode); + } else + return Util.map(key, Util.map("entityType", internalValue.type().name(), "labels", node.labels(), "id", node.id(), "properties", node.asMap())); + } + + private Map toRelationship(Object value, Map map, String key, boolean virtual) { + Value internalValue = ((InternalEntity) value).asValue(); + Relationship relationship = internalValue.asRelationship(); + if (virtual) { + VirtualNode start = new VirtualNode(relationship.startNodeId(), db); + VirtualNode end = new VirtualNode(relationship.endNodeId(), db); + if (map.values().contains(start) && map.values().contains(end)) + return map; + VirtualRelationship virtualRelationship = new VirtualRelationship(start, end, RelationshipType.withName(relationship.type())); + relationship.asMap().entrySet().iterator().forEachRemaining(i -> virtualRelationship.setProperty(i.getKey(), i.getValue())); + return Util.map(key, virtualRelationship); + } else + return Util.map(key, Util.map("entityType", internalValue.type().name(), "type", relationship.type(), "id", relationship.id(), "start", relationship.startNodeId(), "end", relationship.endNodeId(), "properties", relationship.asMap())); + } + + private Map toPath(Object value, boolean virtual, String key) { + Map map = new HashMap<>(); + InternalPath value1 = (InternalPath) value; + Path path = value1.asValue().asPath(); + path.spliterator().forEachRemaining(segment -> { + if (virtual) { + VirtualNode startNode = new VirtualNode(segment.start().id(), db); + segment.start().labels().forEach(l -> startNode.addLabel(Label.label(l))); + segment.start().asMap().entrySet().iterator().forEachRemaining(p -> startNode.setProperty(p.getKey(), p.getValue())); + VirtualNode endNode = new VirtualNode(segment.end().id(), db); + segment.end().labels().forEach(l -> endNode.addLabel(Label.label(l))); + segment.end().asMap().entrySet().iterator().forEachRemaining(p -> endNode.setProperty(p.getKey(), p.getValue())); + map.put(key, Util.map("start", startNode, "end", endNode)); + } else + map.put(key, Util.map("entityType", "NODE", "startLabels", segment.start().labels(), "startId", segment.start().id(), "type", segment.relationship().type(), "endLabels", segment.end().labels(), + "endId", segment.end().id(), "startProperties", segment.start().asMap(), "relProperties", segment.relationship().asMap(), "endProperties", segment.end().asMap())); + }); + return map; + } + + private Map toMap(SummaryCounters resultSummary) { + return map( + "nodesCreated", resultSummary.nodesCreated(), + "nodesDeleted", resultSummary.nodesDeleted(), + "labelsAdded", resultSummary.labelsAdded(), + "labelsRemoved", resultSummary.labelsRemoved(), + "relationshipsCreated", resultSummary.relationshipsCreated(), + "relationshipsDeleted", resultSummary.relationshipsDeleted(), + "propertiesSet", resultSummary.propertiesSet(), + "constraintsAdded", resultSummary.constraintsAdded(), + "constraintsRemoved", resultSummary.constraintsRemoved(), + "indexesAdded", resultSummary.indexesAdded(), + "indexesRemoved", resultSummary.indexesRemoved() + ); + } + +} diff --git a/src/main/java/apoc/util/UriResolver.java b/src/main/java/apoc/util/UriResolver.java new file mode 100644 index 0000000000..37fa584bea --- /dev/null +++ b/src/main/java/apoc/util/UriResolver.java @@ -0,0 +1,102 @@ +package apoc.util; + + +import apoc.ApocConfiguration; + +import java.net.URI; +import java.net.URISyntaxException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author AgileLARUS + * @since 03.09.17 + */ +public class UriResolver { + + private String user; + private String password; + private String urlDriver; + private int port; + private String context; + private String query; + private String url; + private String prefix; + private Map queryParams; + + public UriResolver(String url, String prefix) throws URISyntaxException { + this.url = url; + this.prefix = prefix; + } + + public String getUser() { + return user; + } + + public String getPassword() { + return password; + } + + public String getUrlDriver() { + return urlDriver; + } + + public int getPort() { + return port; + } + + public String getContext() { + return context; + } + + public String getQuery() { + return query; + } + + public Map getQueryParams() { + return queryParams; + } + + private String getUri(String key, String prefix) { + String keyUrl = prefix + "." + key + ".url"; + if (key == null || key.equals("")) + key = ApocConfiguration.get("bolt.url", key); + else if (ApocConfiguration.isEnabled(keyUrl)) + key = ApocConfiguration.get(keyUrl, key); + + return key; + } + + public void initialize() throws URISyntaxException { + this.url = getUri(this.url, this.prefix); + URI uri; + try { + uri = new URI(this.url); + } catch (URISyntaxException e) { + throw new URISyntaxException(e.getInput(), e.getMessage()); + } + if (uri.getUserInfo() != null) { + String[] userInfoArray = uri.getUserInfo().split(":"); + this.user = userInfoArray[0]; + this.password = userInfoArray[1]; + } else + throw new RuntimeException("user and password don't defined check your URL or if you use a key the property in your neo4j.conf file"); + this.context = uri.getPath(); + this.urlDriver = uri.getScheme() + "://" + uri.getHost(); + this.port = uri.getPort(); + this.query = uri.getQuery(); + if (this.query != null) + this.queryParams = getQueryParams(uri); + } + + private Map getQueryParams(URI uri) { + Map queryParamsMap = new HashMap<>(); + String[] pairs = uri.getQuery().split("&"); + for (String pair : pairs) { + int index = pair.indexOf("="); + if (index != -1) + queryParamsMap.put(pair.substring(0, index), pair.substring(index + 1)); + } + return queryParamsMap; + } +} diff --git a/src/test/java/apoc/bolt/BoltTest.java b/src/test/java/apoc/bolt/BoltTest.java new file mode 100644 index 0000000000..32c163e7f8 --- /dev/null +++ b/src/test/java/apoc/bolt/BoltTest.java @@ -0,0 +1,343 @@ +package apoc.bolt; + +import apoc.util.TestUtil; +import apoc.util.Util; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.graphdb.Label; +import org.neo4j.graphdb.Node; +import org.neo4j.graphdb.Relationship; +import org.neo4j.test.TestGraphDatabaseFactory; + +import java.net.ConnectException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static apoc.util.TestUtil.testCall; +import static apoc.util.TestUtil.testResult; +import static org.junit.Assert.*; + +/** + * @author AgileLARUS + * @since 29.08.17 + */ +public class BoltTest { + + private static final String BOLT_URL = "'bolt://neo4j:test@localhost:7687'"; + protected static GraphDatabaseService db; + + @BeforeClass + public static void setUp() throws Exception { + db = new TestGraphDatabaseFactory().newImpermanentDatabaseBuilder().newGraphDatabase(); + TestUtil.registerProcedure(db, Bolt.class); + } + + @AfterClass + public static void tearDown() { + db.shutdown(); + } + + //DATASET + /* + CREATE (p:Person {name:'Michael',surname:'Jordan',age:54, state:true}) + CREATE (q:Person {name:'Tom',surname:'Burton',age:23}) + CREATE (p:Person {name:'John',surname:'William',age:22}) + CREATE (q)-[:KNOWS{since:2016}]->(p) + */ + + @Test + public void testLoadNodeVirtual() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match(p:Person {name:{name}}) return p', {name:'Michael'}, {virtual:true})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Node node = (Node) row.get("p"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("Michael", node.getProperty("name")); + assertEquals("Jordan", node.getProperty("surname")); + assertEquals(true, node.getProperty("state")); + assertEquals(54L, node.getProperty("age")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadNodesVirtual() throws Exception { + TestUtil.ignoreException(() -> { + testResult(db, "call apoc.bolt.load(" + BOLT_URL + ",'match(n) return n', {}, {virtual:true})", r -> { + assertNotNull(r); + Map row = r.next(); + Map result = (Map) row.get("row"); + Node node = (Node) result.get("n"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("Tom", node.getProperty("name")); + assertEquals("Burton", node.getProperty("surname")); + assertEquals(23L, node.getProperty("age")); + row = r.next(); + result = (Map) row.get("row"); + node = (Node) result.get("n"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("John", node.getProperty("name")); + assertEquals("William", node.getProperty("surname")); + assertEquals(22L, node.getProperty("age")); + row = r.next(); + result = (Map) row.get("row"); + node = (Node) result.get("n"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("Michael", node.getProperty("name")); + assertEquals("Jordan", node.getProperty("surname")); + assertEquals(true, node.getProperty("state")); + assertEquals(54L, node.getProperty("age")); + + }); + }, ConnectException.class); + } + + @Test + public void testLoadPathVirtual() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + + ",'START neo=node({idNode}) MATCH path= (neo)-[r:KNOWS*..4]->(other) return path', {idNode:1}, {virtual:true})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map path = (Map) row.get("path"); + Node start = (Node) path.get("start"); + assertEquals(true, start.hasLabel(Label.label("Person"))); + assertEquals("Tom", start.getProperty("name")); + assertEquals("Burton", start.getProperty("surname")); + assertEquals(23L, start.getProperty("age")); + Node end = (Node) path.get("end"); + assertEquals(true, end.hasLabel(Label.label("Person"))); + assertEquals("John", end.getProperty("name")); + assertEquals("William", end.getProperty("surname")); + assertEquals(22L, end.getProperty("age")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadRel() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match(p)-[r]->(c) return r', {}, {virtual:true})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Relationship rel = (Relationship) row.get("r"); + assertEquals("KNOWS", rel.getType().name()); + assertEquals(2016L, rel.getProperty("since")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadRelsAndNodes() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match(p)-[r]->(c) return *', {}, {virtual:true})", r -> { + Map result = (Map) r.get("row"); + Node node = (Node) result.get("p"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("Tom", node.getProperty("name")); + assertEquals("Burton", node.getProperty("surname")); + assertEquals(23L, node.getProperty("age")); + node = (Node) result.get("c"); + assertEquals(true, node.hasLabel(Label.label("Person"))); + assertEquals("John", node.getProperty("name")); + assertEquals("William", node.getProperty("surname")); + assertEquals(22L, node.getProperty("age")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadNullParams() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(\"bolt://neo4j:test@localhost:7687\",\"match(p:Person {name:'Michael'}) return p\")", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map node = (Map) row.get("p"); + assertTrue(node.containsKey("entityType")); + assertEquals("NODE", node.get("entityType")); + assertTrue(node.containsKey("properties")); + Map properties = (Map) node.get("properties"); + assertEquals("Michael", properties.get("name")); + assertEquals("Jordan", properties.get("surname")); + assertEquals(54L, properties.get("age")); + assertEquals(true, properties.get("state")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadNode() throws Exception { + TestUtil.ignoreException(() -> { + TestUtil.testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match (p:Person {name:{name}}) return p', {name:'Michael'})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map node = (Map) row.get("p"); + assertTrue(node.containsKey("entityType")); + assertEquals("NODE", node.get("entityType")); + assertTrue(node.containsKey("properties")); + Map properties = (Map) node.get("properties"); + assertEquals("Michael", properties.get("name")); + assertEquals("Jordan", properties.get("surname")); + assertEquals(54L, properties.get("age")); + assertEquals(true, properties.get("state")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadScalarSingleReusult() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match (n:Person {name:{name}}) return n.age as Age', {name:'Michael'})", (r) -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + assertTrue(row.containsKey("Age")); + assertEquals(54L, row.get("Age")); + + }); + }, ConnectException.class); + } + + @Test + public void testLoadMixedContent() throws Exception { + TestUtil.ignoreException(() -> { + TestUtil.testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match (n:Person {name:{name}}) return n.age, n.name, n.state', {name:'Michael'})", + r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + assertTrue(row.containsKey("n.age")); + assertEquals(54L, row.get("n.age")); + assertTrue(row.containsKey("n.name")); + assertEquals("Michael", row.get("n.name")); + assertTrue(row.containsKey("n.state")); + assertEquals(true, row.get("n.state")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadList() throws Exception { + TestUtil.ignoreException(() -> { + TestUtil.testCall(db, "call apoc.bolt.load(" + BOLT_URL + + ",'match (p:Person {name:{name}}) with collect({personName:p.name}) as rows return rows', {name:'Michael'})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + List p = (List) row.get("rows"); + Map result = (Map) p.get(0); + assertTrue(result.containsKey("personName")); + assertEquals("Michael", result.get("personName")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadMap() throws Exception { + TestUtil.ignoreException(() -> { + TestUtil.testCall(db, "call apoc.bolt.load(" + BOLT_URL + + ",'match (p:Person {name:{name}}) with p,collect({personName:p.name}) as rows return p{.*, rows:rows}', {name:'Michael'})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map p = (Map) row.get("p"); + assertTrue(p.containsKey("name")); + assertEquals("Michael", p.get("name")); + assertTrue(p.containsKey("age")); + assertEquals(54L, p.get("age")); + assertTrue(p.containsKey("surname")); + assertEquals("Jordan", p.get("surname")); + assertTrue(p.containsKey("state")); + assertEquals(true, p.get("state")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadPath() throws Exception { + TestUtil.ignoreException(() -> { + TestUtil.testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'START neo=node({idNode}) MATCH path= (neo)-[r:KNOWS*..4]->(other) return path', {idNode:1})", r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map path = (Map) row.get("path"); + + assertEquals("KNOWS", path.get("type")); + assertEquals(Arrays.asList("Person"), path.get("startLabels")); + assertEquals(Arrays.asList("Person"), path.get("endLabels")); + + Map startProperties = (Map) path.get("startProperties"); + assertEquals("Tom", startProperties.get("name")); + assertEquals("Burton", startProperties.get("surname")); + assertEquals(23L, startProperties.get("age")); + + Map endProperties = (Map) path.get("endProperties"); + assertEquals("John", endProperties.get("name")); + assertEquals("William", endProperties.get("surname")); + assertEquals(22L, endProperties.get("age")); + + Map relProperties = (Map) path.get("relProperties"); + assertEquals(2016L, relProperties.get("since")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadRels() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, "call apoc.bolt.load(" + BOLT_URL + ",'match (n)-[r]->(c) return r as rel', {})", (r) -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map rel = (Map) row.get("rel"); + assertEquals(1L, rel.get("start")); + assertEquals(8L, rel.get("end")); + assertEquals("RELATIONSHIP", rel.get("entityType")); + assertEquals("KNOWS", rel.get("type")); + Map properties = (Map) rel.get("properties"); + assertEquals(2016L, properties.get("since")); + }); + }, ConnectException.class); + } + + @Test + public void testLoadCreateNodeStatistic() throws Exception { + TestUtil.ignoreException(() -> { + testResult(db, "call apoc.bolt.execute(" + BOLT_URL + ",'create(n:Node {name:{name}})', {name:'Node1'}, {statistics:true})", Collections.emptyMap(), + r -> { + assertNotNull(r); + Map row = r.next(); + Map result = (Map) row.get("row"); + assertEquals(1L, toLong(result.get("nodesCreated"))); + assertEquals(1L, toLong(result.get("labelsAdded"))); + assertEquals(1L, toLong(result.get("propertiesSet"))); + assertEquals(false, r.hasNext()); + }); + }, ConnectException.class); + } + + @Test + public void testLoadNoVirtual() throws Exception { + TestUtil.ignoreException(() -> { + testCall(db, + "call apoc.bolt.load(\"bolt://neo4j:test@localhost:7687\",\"match(p:Person {name:'Michael'}) return p\", {}, {virtual:false, test:false})", + r -> { + assertNotNull(r); + Map row = (Map) r.get("row"); + Map node = (Map) row.get("p"); + assertTrue(node.containsKey("entityType")); + assertEquals("NODE", node.get("entityType")); + assertTrue(node.containsKey("properties")); + Map properties = (Map) node.get("properties"); + assertEquals("Michael", properties.get("name")); + assertEquals("Jordan", properties.get("surname")); + assertEquals(54L, properties.get("age")); + assertEquals(true, properties.get("state")); + }); + }, ConnectException.class); + } + + private long toLong(Object value) { + return Util.toLong(value); + } +} + diff --git a/src/test/java/apoc/util/UtilTest.java b/src/test/java/apoc/util/UtilTest.java index e6c199d894..3e18616a06 100644 --- a/src/test/java/apoc/util/UtilTest.java +++ b/src/test/java/apoc/util/UtilTest.java @@ -69,7 +69,7 @@ public void testPartitionList() throws Exception { assertEquals(10,Util.partitionSubList(list,11).count()); assertEquals(10,Util.partitionSubList(list,20).count()); } - + @Test public void cleanPassword() throws Exception { String url = "http://%slocalhost:7474/path?query#ref"; @@ -80,4 +80,4 @@ public void cleanPassword() throws Exception { public void mergeNullMaps() { assertNotNull(Util.merge(null, null)); } -} +} \ No newline at end of file