Search in sources :

Example 11 with Session

use of org.neo4j.driver.Session in project beam by apache.

the class Neo4jIOIT method testWriteUnwind.

@Test
public void testWriteUnwind() throws Exception {
    PCollection<String> stringsCollections = writeUnwindPipeline.apply(Create.of(Arrays.asList("one", "two", "three")));
    // Every row is represented by a Map<String, Object> in the parameters map.
    // We accumulate the rows and 'unwind' those to Neo4j for performance reasons.
    // 
    SerializableFunction<String, Map<String, Object>> parametersMapper = name -> Collections.singletonMap("name", name);
    Neo4jIO.WriteUnwind<String> read = Neo4jIO.<String>writeUnwind().withDriverConfiguration(Neo4jTestUtil.getDriverConfiguration(containerHostname, containerPort)).withSessionConfig(SessionConfig.forDatabase(Neo4jTestUtil.NEO4J_DATABASE)).withBatchSize(5000).withUnwindMapName("rows").withCypher("UNWIND $rows AS row MERGE(n:Num { name : row.name })").withParametersFunction(parametersMapper).withCypherLogging();
    stringsCollections.apply(read);
    // Now run this pipeline
    // 
    PipelineResult pipelineResult = writeUnwindPipeline.run();
    Assert.assertEquals(PipelineResult.State.DONE, pipelineResult.getState());
    // 
    try (Driver driver = Neo4jTestUtil.getDriver(containerHostname, containerPort)) {
        try (Session session = Neo4jTestUtil.getSession(driver, true)) {
            List<String> names = session.readTransaction(tx -> {
                List<String> list = new ArrayList<>();
                Result result = tx.run("MATCH(n:Num) RETURN n.name");
                while (result.hasNext()) {
                    Record record = result.next();
                    list.add(record.get(0).asString());
                }
                return list;
            });
            assertThat(names, containsInAnyOrder("one", "two", "three"));
        }
    }
}
Also used : Session(org.neo4j.driver.Session) Arrays(java.util.Arrays) SerializableCoder(org.apache.beam.sdk.coders.SerializableCoder) BeforeClass(org.junit.BeforeClass) IsIterableContainingInOrder.contains(org.hamcrest.collection.IsIterableContainingInOrder.contains) DockerImageName(org.testcontainers.utility.DockerImageName) IsIterableContainingInAnyOrder.containsInAnyOrder(org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder) PipelineResult(org.apache.beam.sdk.PipelineResult) RunWith(org.junit.runner.RunWith) SerializableFunction(org.apache.beam.sdk.transforms.SerializableFunction) ImmutableMap(org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap) ArrayList(java.util.ArrayList) Create(org.apache.beam.sdk.transforms.Create) Map(java.util.Map) TestPipeline(org.apache.beam.sdk.testing.TestPipeline) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Row(org.apache.beam.sdk.values.Row) DoFn(org.apache.beam.sdk.transforms.DoFn) AfterClass(org.junit.AfterClass) Driver(org.neo4j.driver.Driver) Neo4jContainer(org.testcontainers.containers.Neo4jContainer) PAssert(org.apache.beam.sdk.testing.PAssert) Test(org.junit.Test) JUnit4(org.junit.runners.JUnit4) PCollection(org.apache.beam.sdk.values.PCollection) Schema(org.apache.beam.sdk.schemas.Schema) Result(org.neo4j.driver.Result) List(java.util.List) Rule(org.junit.Rule) SessionConfig(org.neo4j.driver.SessionConfig) ParDo(org.apache.beam.sdk.transforms.ParDo) Assert(org.junit.Assert) Collections(java.util.Collections) Record(org.neo4j.driver.Record) ArrayList(java.util.ArrayList) PipelineResult(org.apache.beam.sdk.PipelineResult) Driver(org.neo4j.driver.Driver) PipelineResult(org.apache.beam.sdk.PipelineResult) Result(org.neo4j.driver.Result) Record(org.neo4j.driver.Record) ImmutableMap(org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap) Map(java.util.Map) Session(org.neo4j.driver.Session) Test(org.junit.Test)

Example 12 with Session

use of org.neo4j.driver.Session in project spring-boot by spring-projects.

the class Neo4jHealthIndicatorTests method mockDriver.

private Driver mockDriver(ResultSummary resultSummary, String version, String edition) {
    Result statementResult = mockStatementResult(resultSummary, version, edition);
    Session session = mock(Session.class);
    given(session.run(anyString())).willReturn(statementResult);
    Driver driver = mock(Driver.class);
    given(driver.session(any(SessionConfig.class))).willReturn(session);
    return driver;
}
Also used : Driver(org.neo4j.driver.Driver) SessionConfig(org.neo4j.driver.SessionConfig) Result(org.neo4j.driver.Result) Session(org.neo4j.driver.Session)

Example 13 with Session

use of org.neo4j.driver.Session in project spring-boot by spring-projects.

the class Neo4jHealthIndicatorTests method neo4jIsUpWithOneSessionExpiredException.

@Test
void neo4jIsUpWithOneSessionExpiredException() {
    ResultSummary resultSummary = ResultSummaryMock.createResultSummary("My Home", "");
    Session session = mock(Session.class);
    Result statementResult = mockStatementResult(resultSummary, "4711", "some edition");
    AtomicInteger count = new AtomicInteger();
    given(session.run(anyString())).will((invocation) -> {
        if (count.compareAndSet(0, 1)) {
            throw new SessionExpiredException("Session expired");
        }
        return statementResult;
    });
    Driver driver = mock(Driver.class);
    given(driver.session(any(SessionConfig.class))).willReturn(session);
    Neo4jHealthIndicator healthIndicator = new Neo4jHealthIndicator(driver);
    Health health = healthIndicator.health();
    assertThat(health.getStatus()).isEqualTo(Status.UP);
    assertThat(health.getDetails()).containsEntry("server", "4711@My Home");
    then(session).should(times(2)).close();
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Health(org.springframework.boot.actuate.health.Health) ResultSummary(org.neo4j.driver.summary.ResultSummary) Driver(org.neo4j.driver.Driver) SessionConfig(org.neo4j.driver.SessionConfig) SessionExpiredException(org.neo4j.driver.exceptions.SessionExpiredException) Session(org.neo4j.driver.Session) Result(org.neo4j.driver.Result) Test(org.junit.jupiter.api.Test)

Example 14 with Session

use of org.neo4j.driver.Session in project spring-boot by spring-projects.

the class MockedDriverConfiguration method driver.

@Bean
Driver driver() {
    Driver driver = mock(Driver.class);
    TypeSystem typeSystem = mock(TypeSystem.class);
    Session session = mock(Session.class);
    given(driver.defaultTypeSystem()).willReturn(typeSystem);
    given(driver.session(ArgumentMatchers.any(SessionConfig.class))).willReturn(session);
    return driver;
}
Also used : TypeSystem(org.neo4j.driver.types.TypeSystem) Driver(org.neo4j.driver.Driver) SessionConfig(org.neo4j.driver.SessionConfig) Session(org.neo4j.driver.Session) Bean(org.springframework.context.annotation.Bean)

Example 15 with Session

use of org.neo4j.driver.Session in project zeppelin by apache.

the class Neo4jConnectionManager method execute.

public List<Record> execute(String cypherQuery, InterpreterContext interpreterContext) {
    Map<String, Object> params = new HashMap<>();
    if (interpreterContext != null) {
        ResourcePool resourcePool = interpreterContext.getResourcePool();
        Set<String> keys = extractParams(cypherQuery, PROPERTY_PATTERN, REPLACE_CURLY_BRACKETS);
        keys.addAll(extractParams(cypherQuery, $_PATTERN, REPLACE_$));
        for (String key : keys) {
            Resource resource = resourcePool.get(key);
            if (resource != null) {
                params.put(key, resource.get());
            }
        }
    }
    LOGGER.debug("Executing cypher query {} with params {}", cypherQuery, params);
    try (Session session = getSession()) {
        final Result result = params.isEmpty() ? session.run(cypherQuery) : session.run(cypherQuery, params);
        return result.list();
    }
}
Also used : HashMap(java.util.HashMap) Resource(org.apache.zeppelin.resource.Resource) ResourcePool(org.apache.zeppelin.resource.ResourcePool) Session(org.neo4j.driver.Session) Result(org.neo4j.driver.Result)

Aggregations

Session (org.neo4j.driver.Session)24 Driver (org.neo4j.driver.Driver)20 Result (org.neo4j.driver.Result)17 Test (org.junit.Test)13 FakeSession (org.neo4j.shell.test.bolt.FakeSession)10 FakeDriver (org.neo4j.shell.test.bolt.FakeDriver)9 Test (org.junit.jupiter.api.Test)6 SessionConfig (org.neo4j.driver.SessionConfig)6 Record (org.neo4j.driver.Record)5 SessionExpiredException (org.neo4j.driver.exceptions.SessionExpiredException)4 HashMap (java.util.HashMap)3 BeforeClass (org.junit.BeforeClass)3 ClientException (org.neo4j.driver.exceptions.ClientException)3 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 List (java.util.List)2 Map (java.util.Map)2 PipelineResult (org.apache.beam.sdk.PipelineResult)2 SerializableCoder (org.apache.beam.sdk.coders.SerializableCoder)2