Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit c517169

Browse files
committed
include functions on algo.list()
1 parent 99d3884 commit c517169

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

algo/src/main/java/org/neo4j/graphalgo/ListProc.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,17 @@
3131

3232
public class ListProc {
3333

34-
private static final String QUERY = "CALL dbms.procedures() " +
34+
private static final String QUERY =
35+
" CALL dbms.procedures() " +
3536
" YIELD name, signature, description " +
3637
" WHERE name starts with 'algo.' AND name <> 'algo.list' AND ($name IS NULL OR name CONTAINS $name) " +
37-
" RETURN name, signature, description ORDER BY name";
38+
" RETURN name, signature, description, 'procedure' AS type " +
39+
" ORDER BY name UNION " +
40+
" CALL dbms.functions() " +
41+
" YIELD name, signature, description " +
42+
" WHERE name starts with 'algo.' AND ($name IS NULL OR name CONTAINS $name) " +
43+
" RETURN name, signature, description, 'function' AS type " +
44+
" ORDER BY name";
3845

3946
@Context
4047
public GraphDatabaseService db;
@@ -49,11 +56,13 @@ public static class ListResult {
4956
public String name;
5057
public String description;
5158
public String signature;
59+
public String type;
5260

5361
public ListResult(Map<String, Object> row) {
5462
this.name = (String) row.get("name");
5563
this.description = (String) row.get("description");
5664
this.signature = (String) row.get("signature");
65+
this.type = (String) row.get("type");
5766
}
5867
}
5968
}

tests/src/test/java/org/neo4j/graphalgo/algo/ListProcTest.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,25 @@
1818
*/
1919
package org.neo4j.graphalgo.algo;
2020

21+
import org.junit.AfterClass;
2122
import org.junit.BeforeClass;
2223
import org.junit.ClassRule;
2324
import org.junit.Test;
2425
import org.neo4j.graphalgo.ListProc;
2526
import org.neo4j.graphalgo.PageRankProc;
27+
import org.neo4j.graphalgo.linkprediction.LinkPrediction;
28+
import org.neo4j.graphdb.GraphDatabaseService;
29+
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
2630
import org.neo4j.kernel.impl.proc.Procedures;
31+
import org.neo4j.kernel.internal.GraphDatabaseAPI;
32+
import org.neo4j.test.TestGraphDatabaseFactory;
2733
import org.neo4j.test.rule.ImpermanentDatabaseRule;
2834

35+
import java.util.Arrays;
36+
import java.util.Collection;
2937
import java.util.List;
3038
import java.util.stream.Collectors;
39+
import java.util.stream.Stream;
3140

3241
import static java.util.Arrays.asList;
3342
import static java.util.Collections.*;
@@ -40,28 +49,44 @@
4049
public class ListProcTest {
4150
@ClassRule
4251
public static ImpermanentDatabaseRule DB = new ImpermanentDatabaseRule();
52+
public static final List<String> PROCEDURES = asList("algo.pageRank", "algo.pageRank.stream");
53+
public static final List<String> FUNCTIONS = Arrays.asList("algo.linkprediction.adamicAdar", "algo.linkprediction.commonNeighbors", "algo.linkprediction.preferentialAttachment", "algo.linkprediction.resourceAllocation", "algo.linkprediction.sameCommunity",
54+
"algo.linkprediction.totalNeighbors");
55+
public static final List<String> ALL = Stream.of(PROCEDURES, FUNCTIONS).flatMap(Collection::stream).collect(Collectors.toList());
4356

4457
@BeforeClass
4558
public static void setUp() throws Exception {
4659
Procedures procedures = DB.getDependencyResolver().resolveDependency(Procedures.class);
4760
procedures.registerProcedure(ListProc.class);
4861
procedures.registerProcedure(PageRankProc.class);
62+
procedures.registerFunction(LinkPrediction.class);
63+
}
64+
65+
@AfterClass
66+
public static void tearDown() {
67+
DB.shutdown();
4968
}
5069

5170
@Test
52-
public void list() throws Exception {
53-
assertEquals(asList("algo.pageRank","algo.pageRank.stream"), listProcs(null));
54-
assertEquals(asList("algo.pageRank","algo.pageRank.stream"), listProcs("page"));
71+
public void listProcedures() throws Exception {
72+
assertEquals(ALL, listProcs(null));
73+
assertEquals(PROCEDURES, listProcs("page"));
5574
assertEquals(singletonList("algo.pageRank.stream"), listProcs("stream"));
5675
assertEquals(emptyList(), listProcs("foo"));
5776
}
5877

59-
private List<String> listProcs(Object name) {
60-
return DB.execute("CALL algo.list($name)", singletonMap("name", name)).<String>columnAs("name").stream().collect(Collectors.toList());
78+
@Test
79+
public void listFunctions() throws Exception {
80+
assertEquals(FUNCTIONS, listProcs("linkprediction"));
6181
}
82+
6283
@Test
6384
public void listEmpty() throws Exception {
64-
assertEquals(asList("algo.pageRank","algo.pageRank.stream"),
85+
assertEquals(ALL,
6586
DB.execute("CALL algo.list()").<String>columnAs("name").stream().collect(Collectors.toList()));
6687
}
88+
89+
private List<String> listProcs(Object name) {
90+
return DB.execute("CALL algo.list($name)", singletonMap("name", name)).<String>columnAs("name").stream().collect(Collectors.toList());
91+
}
6792
}

0 commit comments

Comments
 (0)