private Statement procedureStatement( ServerVersion serverVersion ) { if ( serverVersion.greaterThanOrEqual( v3_2_0 ) ) { return new Statement( "CALL " + GET_ROUTING_TABLE, parameters( GET_ROUTING_TABLE_PARAM, context.asMap() ) ); } else { return new Statement( "CALL " + GET_SERVERS ); } }
@Test public void prettyPrintPlanInformation() throws Exception { // given ResultSummary resultSummary = mock(ResultSummary.class); ProfiledPlan plan = mock(ProfiledPlan.class); when(plan.dbHits()).thenReturn(1000L); when(plan.records()).thenReturn(20L); when(resultSummary.hasPlan()).thenReturn(true); when(resultSummary.hasProfile()).thenReturn(true); when(resultSummary.plan()).thenReturn(plan); when(resultSummary.profile()).thenReturn(plan); when(resultSummary.resultAvailableAfter(anyObject())).thenReturn(5L); when(resultSummary.resultConsumedAfter(anyObject())).thenReturn(7L); when(resultSummary.statementType()).thenReturn(StatementType.READ_ONLY); Map<String, Value> argumentMap = Values.parameters("Version", "3.1", "Planner", "COST", "Runtime", "INTERPRETED").asMap(v -> v); when(plan.arguments()).thenReturn(argumentMap); BoltResult result = mock(BoltResult.class); when(result.getRecords()).thenReturn(Collections.emptyList()); when(result.getSummary()).thenReturn(resultSummary); // when String actual = verbosePrinter.format(result); // then argumentMap.forEach((k, v) -> { assertThat(actual, CoreMatchers.containsString("| " + k)); assertThat(actual, CoreMatchers.containsString("| " + v.toString())); }); }
when(resultSummary.resultConsumedAfter(anyObject())).thenReturn(7L); when(resultSummary.statementType()).thenReturn(StatementType.READ_ONLY); Map<String, Value> argumentMap = Values.parameters("Version", "3.1", "Planner", "COST", "Runtime", "INTERPRETED").asMap(v -> v); when(plan.arguments()).thenReturn(argumentMap);
@Test public void prettyPrintExplainInformation() throws Exception { // given ResultSummary resultSummary = mock(ResultSummary.class); ProfiledPlan plan = mock(ProfiledPlan.class); when(plan.dbHits()).thenReturn(1000L); when(plan.records()).thenReturn(20L); when(resultSummary.hasPlan()).thenReturn(true); when(resultSummary.hasProfile()).thenReturn(false); when(resultSummary.plan()).thenReturn(plan); when(resultSummary.resultAvailableAfter(anyObject())).thenReturn(5L); when(resultSummary.resultConsumedAfter(anyObject())).thenReturn(7L); when(resultSummary.statementType()).thenReturn(StatementType.READ_ONLY); Map<String, Value> argumentMap = Values.parameters("Version", "3.1", "Planner", "COST", "Runtime", "INTERPRETED").asMap(v -> v); when(plan.arguments()).thenReturn(argumentMap); BoltResult result = mock(BoltResult.class); when(result.getRecords()).thenReturn(Collections.emptyList()); when(result.getSummary()).thenReturn(resultSummary); // when String actual = plainPrinter.format(result); // then String expected = "Plan: \"EXPLAIN\"\n" + "Statement: \"READ_ONLY\"\n" + "Version: \"3.1\"\n" + "Planner: \"COST\"\n" + "Runtime: \"INTERPRETED\"\n" + "Time: 12"; Stream.of(expected.split("\n")).forEach(e -> assertThat(actual, containsString(e))); }
@Test public void withParameter() { Driver driver = GremlinDatabase.driver("//localhost:" + server.getPort()); try (Session session = driver.session()) { StatementResult result = session.run("CREATE (a:Greeting) " + "SET a.message = $message " + "RETURN a.message", parameters("message", "Hello")); String message = result.single().get(0).asString(); assertThat(message).isEqualTo("Hello"); } }
@Test public void tinkerGraph() { TinkerGraph tinkerGraph = TinkerFactory.createModern(); GraphTraversalSource graphTraversalSource = tinkerGraph.traversal(); GremlinGraphDriver driver = new GremlinGraphDriver(graphTraversalSource); List<Map<String, Object>> results; try (Session session = driver.session()) { StatementResult result = session.run( "MATCH (n:person) " + "WHERE n.age = $age " + "RETURN n.name", parameters("age", 29) ); results = result.list().stream() .map(Record::asMap) .collect(toList()); } assertThat(results) .extracting("n.name") .containsExactly("marko"); } }
@Test public void returnNodeAndRelationship() { Driver driver = GremlinDatabase.driver("//localhost:" + server.getPort()); try (Session session = driver.session()) { StatementResult result = session.run("CREATE (n1:Person {name: 'Marko'})-[r:knows {since:1999}]->(n2:Person)" + "RETURN n1,r,n2", parameters("message", "Hello")); Record record = result.single(); Node n1 = record.get("n1").asNode(); Relationship r = record.get("r").asRelationship(); Node n2 = record.get("n2").asNode(); assertThat(n1.hasLabel("Person")).isTrue(); assertThat(n1.get("name").asString()).isEqualTo("Marko"); assertThat(r.hasType("knows")).isTrue(); assertThat(r.startNodeId()).isEqualTo(n1.id()); assertThat(r.endNodeId()).isEqualTo(n2.id()); assertThat(r.get("since").asLong()).isEqualTo(1999L); assertThat(n2.hasLabel("Person")).isTrue(); } }
@Test public void createUseDriver() throws Exception { int port = gremlinServer.getPort(); // freshReadmeSnippet: createConfiguration Config config = Config.build() .withTranslation() .toConfig(); String uri = "//localhost:" + port; Driver driver = GremlinDatabase.driver(uri, config); // freshReadmeSnippet: createConfiguration // freshReadmeSnippet: useDriver try (Session session = driver.session()) { StatementResult result = session.run("CREATE (a:Greeting) " + "SET a.message = $message " + "RETURN a.message", parameters("message", "Hello")); String message = result.single().get(0).asString(); assertThat(message).isEqualTo("Hello"); } // freshReadmeSnippet: useDriver }