@Test public void shouldStart() { boolean actual = neo4jContainer.isRunning(); assertThat(actual).isTrue(); try (Driver driver = GraphDatabase .driver(neo4jContainer.getBoltUrl(), AuthTokens.basic("neo4j", "password")); Session session = driver.session() ) { long one = session.run("RETURN 1", Collections.emptyMap()).next().get(0).asLong(); assertThat(one).isEqualTo(1L); } catch (Exception e) { fail(e.getMessage()); } }
public BoltNeo4jMapsTupleIterator(StatementResult statementResult) { super( statementResult, statementResult.keys() ); }
@Test public void calls_procedures_with_simple_input_type_returning_record_with_primitive_fields() { try ( Driver driver = GraphDatabase.driver( graphDb.boltURI(), configuration() ); Session session = driver.session() ) { assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput11('string') YIELD field04 AS p RETURN p" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput12(42)" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput13(42)" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput14(4.2)" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput15(true)" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput16(false)" ).single() ).isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput17({foo:'bar'})" ).single() ) .isNotNull(); assertThat( session.run( "CALL " + procedureNamespace + ".simpleInput21()" ).single() ).isNotNull(); } }
@Test public void create() { List<Map<String, Object>> results = asList( getRow(1), getRow(2), getRow(3) ); StatementResult statementResult = new GremlinServerStatementResult(serverInfo, statement, results.iterator(), converter); assertThat(statementResult.keys()).containsExactly(KEY1, KEY2); assertThat(statementResult.peek().get(KEY1).asInt()).isEqualTo(1); assertThat(statementResult.hasNext()).isTrue(); assertThat(statementResult.next().get(KEY1).asInt()).isEqualTo(1); assertThat(statementResult.hasNext()).isTrue(); assertThat(statementResult.next().get(KEY1).asInt()).isEqualTo(2); assertThat(statementResult.hasNext()).isTrue(); //see org.neo4j.driver.internal.InternalStatementResult#list() assertThat(statementResult.list()).hasSize(1); assertThat(statementResult.hasNext()).isFalse(); assertThat(statementResult.summary().server()).isEqualTo(serverInfo); }
public BoltContentHandler(StatementResult statementResult, ResultHandler rh) { if (statementResult != null) this.records = statementResult.list(); // don't use streaming mode else this.records = new ArrayList<Record>(); this.reloaded = new Reloaded(rh.getDbAccess()); }
private StatementResult mockResult(List<String> cols, Object... data) { StatementResult result = mock(StatementResult.class); Statement statement = mock(Statement.class); ResultSummary summary = mock(ResultSummary.class); when(summary.statement()).thenReturn(statement); when(result.keys()).thenReturn(cols); List<Record> records = new ArrayList<>(); List<Object> input = asList(data); int width = cols.size(); for (int row = 0; row < input.size() / width; row++) { records.add(record(cols, input.subList(row * width, (row + 1) * width))); } when(result.list()).thenReturn(records); when(result.consume()).thenReturn(summary); when(result.summary()).thenReturn(summary); return result; }
@Override public GraphQueryResult execute(String query, Map<String, Object> statementParameters) { try { Driver driver = GraphDatabase.driver(url, auth); try { try (Session session = driver.session()) { Neo4jBoltBuffer buffer = new Neo4jBoltBuffer(); long startTime = System.currentTimeMillis(); StatementResult statementResult = session.run(query, statementParameters); buffer.addColumns(statementResult.keys()); for (Record record : statementResult.list()) { // Add row buffer.addRow(record.asMap()); } buffer.addResultSummary(statementResult.consume()); long endTime = System.currentTimeMillis(); return new Neo4jBoltQueryResult(endTime - startTime, buffer); } } finally { driver.closeAsync(); } } catch (UnresolvedAddressException e) { throw new ClientException(e.getMessage()); } }
@Test public void prettyPrintDuration() throws Exception { // given StatementResult statementResult = mock(StatementResult.class); List<String> keys = asList("d"); when(statementResult.summary()).thenReturn(mock(ResultSummary.class)); when(statementResult.keys()).thenReturn(keys); Value duration = new DurationValue(new InternalIsoDuration(1, 2, 3, 4)); Record record = new InternalRecord(keys, new Value[]{duration}); // when String actual = verbosePrinter.format(new BoltResult(asList(record), statementResult)); // then assertThat(actual, containsString("| P1M2DT3.000000004S |")); }
@Override public void close() { // if there is no current transaction available, the response is already closed. if (transactionManager.getCurrentTransaction() != null) { // release the response resource result.consume(); } }
@Test public void consume() { List<Map<String, Object>> results = asList( getRow(1), getRow(2) ); StatementResult statementResult = new GremlinServerStatementResult(serverInfo, statement, results.iterator(), converter); assertThat(statementResult.hasNext()).isTrue(); assertThat(statementResult.consume().server()).isEqualTo(serverInfo); assertThat(statementResult.hasNext()).isFalse(); }
@Override public Response<RowModel> execute(DefaultRequest query) { final List<RowModel> rowModels = new ArrayList<>(); String[] columns = null; for (Statement statement : query.getStatements()) { StatementResult result = executeRequest(statement); if (columns == null) { try { List<String> columnSet = result.keys(); columns = columnSet.toArray(new String[columnSet.size()]); } catch (ClientException e) { throw new CypherException(e.code(), e.getMessage(), e); } } try (RowModelResponse rowModelResponse = new RowModelResponse(result, transactionManager, entityAdapter)) { RowModel model; while ((model = rowModelResponse.next()) != null) { rowModels.add(model); } result.consume(); } } return new MultiStatementBasedResponse(columns, rowModels); }
public Node findAssociatedEntity(Transaction tx, Object[] keyValues, String associationrole) { Map<String, Object> params = params( keyValues ); String query = getFindAssociatedEntityQuery( associationrole ); if ( query != null ) { StatementResult statementResult = tx.run( query, params ); if ( statementResult.hasNext() ) { return statementResult.single().get( 0 ).asNode(); } } return null; }
private void validateNativeQuery(StatementResult result) { try { result.hasNext(); } catch (ClientException e) { throw log.nativeQueryException( e.code(), e.getMessage(), null ); } }
private int getTotalCelLocationNodes() { Session session = this.driver.session(); int count = session.run("MATCH (n:" + NodeTypes.CELLULAR_LOCATION + ") RETURN count(n) AS count") .peek().get("count").asInt(); session.close(); return count; // return this.session.run("MATCH (n:" + NodeTypes.CELLULAR_LOCATION + ") RETURN count(n) AS count") // .peek().get("count").asInt(); }
@Procedure() @Description("apoc.bolt.load(url-or-key, kernelTransaction, params, config) - access to other databases via bolt for read") public Stream<RowResult> load(@Name("url") String url, @Name("kernelTransaction") String statement, @Name(value = "params", defaultValue = "{}") Map<String, Object> params, @Name(value = "config", defaultValue = "{}") Map<String, Object> 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); boolean readOnly = (boolean) config.getOrDefault("readOnly", true); Config driverConfig = toDriverConfig(config.getOrDefault("driverConfig", map())); UriResolver uri = new UriResolver(url, "bolt"); uri.initialize(); try (Driver driver = GraphDatabase.driver(uri.getConfiguredUri(), uri.getToken(), driverConfig); Session session = driver.session()) { if (addStatistics) return Stream.of(new RowResult(toMap(runStatement(statement, session, params, readOnly).summary().counters()))); else return getRowResultStream(virtual, session, params, statement, readOnly); } catch (Exception e) { throw new RuntimeException("It's not possible to create a connection due to: " + e.getMessage()); } }
/** * @throws SessionExpiredException when server no longer serves writes anymore */ @Nonnull private Optional<BoltResult> getBoltResult(@Nonnull String cypher, @Nonnull Map<String, Object> queryParams) throws SessionExpiredException { StatementResult statementResult = session.run(new Statement(cypher, queryParams)); if (statementResult == null) { return Optional.empty(); } // calling list() is what actually executes cypher on the server List<Record> list = statementResult.list(); return Optional.of(new BoltResult(list, statementResult)); }