Search in sources :

Example 1 with Session

use of iaik.pkcs.pkcs11.Session in project neo4j by neo4j.

the class ProcedureTest method calls_simplistic_procedure.

@Test
public void calls_simplistic_procedure() {
    try (Driver driver = GraphDatabase.driver(graphDb.boltURI(), configuration());
        Session session = driver.session()) {
        StatementResult result = session.run("CALL " + procedureNamespace + ".theAnswer()");
        assertThat(result.single().get("value").asLong()).isEqualTo(42L);
    }
}
Also used : StatementResult(org.neo4j.driver.v1.StatementResult) Driver(org.neo4j.driver.v1.Driver) Session(org.neo4j.driver.v1.Session) Test(org.junit.Test)

Example 2 with Session

use of iaik.pkcs.pkcs11.Session in project neo4j by neo4j.

the class BoltCausalClusteringIT method sessionShouldExpireOnLeaderSwitch.

@Test
public void sessionShouldExpireOnLeaderSwitch() throws Exception {
    // given
    cluster = clusterRule.withNumberOfReadReplicas(0).startCluster();
    CoreClusterMember leader = cluster.awaitLeader();
    Driver driver = GraphDatabase.driver(leader.routingURI(), AuthTokens.basic("neo4j", "neo4j"));
    try (Session session = driver.session()) {
        session.run("CREATE (n:Person {name: 'Jim'})").consume();
        // when
        switchLeader(leader);
        session.run("CREATE (n:Person {name: 'Mark'})").consume();
        fail("Should have thrown exception");
    } catch (SessionExpiredException sep) {
        // then
        assertEquals(String.format("Server at %s no longer accepts writes", leader.boltAdvertisedAddress()), sep.getMessage());
    } finally {
        driver.close();
    }
}
Also used : CoreClusterMember(org.neo4j.causalclustering.discovery.CoreClusterMember) Driver(org.neo4j.driver.v1.Driver) SessionExpiredException(org.neo4j.driver.v1.exceptions.SessionExpiredException) Session(org.neo4j.driver.v1.Session) RoutingNetworkSession(org.neo4j.driver.internal.RoutingNetworkSession) Test(org.junit.Test)

Example 3 with Session

use of iaik.pkcs.pkcs11.Session in project neo4j by neo4j.

the class BoltCausalClusteringIT method shouldSendRequestsToNewlyAddedReadReplicas.

@Test
public void shouldSendRequestsToNewlyAddedReadReplicas() throws Throwable {
    // given
    cluster = clusterRule.withNumberOfReadReplicas(1).withSharedCoreParams(stringMap(CausalClusteringSettings.cluster_routing_ttl.name(), "1s")).startCluster();
    CoreClusterMember leader = cluster.awaitLeader();
    Driver driver = GraphDatabase.driver(leader.routingURI(), AuthTokens.basic("neo4j", "neo4j"));
    String bookmark = inExpirableSession(driver, (d) -> d.session(AccessMode.WRITE), (session) -> {
        try (Transaction tx = session.beginTransaction()) {
            tx.run("CREATE (p:Person {name: {name} })", Values.parameters("name", "Jim"));
            tx.success();
        }
        return session.lastBookmark();
    });
    // when
    Set<String> readReplicas = new HashSet<>();
    for (ReadReplica readReplica : cluster.readReplicas()) {
        readReplicas.add(readReplica.boltAdvertisedAddress());
    }
    for (int i = 10; i <= 13; i++) {
        ReadReplica newReadReplica = cluster.addReadReplicaWithId(i);
        readReplicas.add(newReadReplica.boltAdvertisedAddress());
        newReadReplica.start();
    }
    assertEventually("Failed to send requests to all servers", () -> {
        for (// don't care about cores
        int i = 0; // don't care about cores
        i < cluster.readReplicas().size(); // don't care about cores
        i++) {
            try (Session session = driver.session(AccessMode.READ)) {
                BoltServerAddress boltServerAddress = ((RoutingNetworkSession) session).address();
                executeReadQuery(bookmark, session);
                readReplicas.remove(boltServerAddress.toString());
            } catch (Throwable throwable) {
                return false;
            }
        }
        // have sent something to all replicas
        return readReplicas.size() == 0;
    }, is(true), 30, SECONDS);
}
Also used : ReadReplica(org.neo4j.causalclustering.discovery.ReadReplica) Transaction(org.neo4j.driver.v1.Transaction) CoreClusterMember(org.neo4j.causalclustering.discovery.CoreClusterMember) Driver(org.neo4j.driver.v1.Driver) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) RoutingNetworkSession(org.neo4j.driver.internal.RoutingNetworkSession) HashSet(java.util.HashSet) Session(org.neo4j.driver.v1.Session) RoutingNetworkSession(org.neo4j.driver.internal.RoutingNetworkSession) BoltServerAddress(org.neo4j.driver.internal.net.BoltServerAddress) Test(org.junit.Test)

Example 4 with Session

use of iaik.pkcs.pkcs11.Session in project neo4j by neo4j.

the class BoltCausalClusteringIT method shouldUseBookmarkFromAWriteSessionInAReadSession.

@Test
public void shouldUseBookmarkFromAWriteSessionInAReadSession() throws Throwable {
    // given
    cluster = clusterRule.withNumberOfReadReplicas(1).startCluster();
    CoreClusterMember leader = cluster.awaitLeader();
    ReadReplica readReplica = cluster.getReadReplicaById(0);
    readReplica.txPollingClient().stop();
    Driver driver = GraphDatabase.driver(leader.directURI(), AuthTokens.basic("neo4j", "neo4j"));
    String bookmark = inExpirableSession(driver, (d) -> d.session(AccessMode.WRITE), (session) -> {
        try (Transaction tx = session.beginTransaction()) {
            tx.run("CREATE (p:Person {name: {name} })", Values.parameters("name", "Jim"));
            tx.run("CREATE (p:Person {name: {name} })", Values.parameters("name", "Alistair"));
            tx.run("CREATE (p:Person {name: {name} })", Values.parameters("name", "Mark"));
            tx.run("CREATE (p:Person {name: {name} })", Values.parameters("name", "Chris"));
            tx.success();
        }
        return session.lastBookmark();
    });
    assertNotNull(bookmark);
    readReplica.txPollingClient().start();
    driver = GraphDatabase.driver(readReplica.directURI(), AuthTokens.basic("neo4j", "neo4j"));
    try (Session session = driver.session(AccessMode.READ)) {
        try (Transaction tx = session.beginTransaction(bookmark)) {
            Record record = tx.run("MATCH (n:Person) RETURN COUNT(*) AS count").next();
            tx.success();
            assertEquals(4, record.get("count").asInt());
        }
    }
}
Also used : ReadReplica(org.neo4j.causalclustering.discovery.ReadReplica) Transaction(org.neo4j.driver.v1.Transaction) CoreClusterMember(org.neo4j.causalclustering.discovery.CoreClusterMember) Driver(org.neo4j.driver.v1.Driver) Record(org.neo4j.driver.v1.Record) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Session(org.neo4j.driver.v1.Session) RoutingNetworkSession(org.neo4j.driver.internal.RoutingNetworkSession) Test(org.junit.Test)

Example 5 with Session

use of iaik.pkcs.pkcs11.Session in project neo4j by neo4j.

the class BoltCausalClusteringIT method shouldHandleLeaderSwitch.

@Test
public void shouldHandleLeaderSwitch() throws Exception {
    // given
    cluster = clusterRule.startCluster();
    CoreClusterMember leader = cluster.awaitLeader();
    try (Driver driver = GraphDatabase.driver(leader.routingURI(), AuthTokens.basic("neo4j", "neo4j"))) {
        // when
        try (Session session = driver.session()) {
            try (Transaction tx = session.beginTransaction()) {
                switchLeader(leader);
                tx.run("CREATE (person:Person {name: {name}, title: {title}})", parameters("name", "Webber", "title", "Mr"));
                tx.success();
            } catch (SessionExpiredException ignored) {
            // expected
            }
        }
        String bookmark = inExpirableSession(driver, Driver::session, s -> {
            try (Transaction tx = s.beginTransaction()) {
                tx.run("CREATE (person:Person {name: {name}, title: {title}})", parameters("name", "Webber", "title", "Mr"));
                tx.success();
            } catch (SessionExpiredException ignored) {
            }
            return s.lastBookmark();
        });
        // then
        try (Session session = driver.session(AccessMode.READ)) {
            try (Transaction tx = session.beginTransaction(bookmark)) {
                Record record = tx.run("MATCH (n:Person) RETURN COUNT(*) AS count").next();
                tx.success();
                assertEquals(1, record.get("count").asInt());
            }
        }
    }
}
Also used : Transaction(org.neo4j.driver.v1.Transaction) CoreClusterMember(org.neo4j.causalclustering.discovery.CoreClusterMember) Driver(org.neo4j.driver.v1.Driver) SessionExpiredException(org.neo4j.driver.v1.exceptions.SessionExpiredException) Record(org.neo4j.driver.v1.Record) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Session(org.neo4j.driver.v1.Session) RoutingNetworkSession(org.neo4j.driver.internal.RoutingNetworkSession) Test(org.junit.Test)

Aggregations

Session (com.trilead.ssh2.Session)43 Session (org.neo4j.driver.v1.Session)38 Connection (com.trilead.ssh2.Connection)32 IOException (java.io.IOException)30 Test (org.junit.Test)29 InputStream (java.io.InputStream)28 Driver (org.neo4j.driver.v1.Driver)27 StatementResult (org.neo4j.driver.v1.StatementResult)20 TokenException (iaik.pkcs.pkcs11.TokenException)15 P11TokenException (org.xipki.security.exception.P11TokenException)15 Record (org.neo4j.driver.v1.Record)12 Session (iaik.pkcs.pkcs11.Session)10 SecretKey (iaik.pkcs.pkcs11.objects.SecretKey)10 ValuedSecretKey (iaik.pkcs.pkcs11.objects.ValuedSecretKey)10 DSAPrivateKey (iaik.pkcs.pkcs11.objects.DSAPrivateKey)9 ECPrivateKey (iaik.pkcs.pkcs11.objects.ECPrivateKey)9 PrivateKey (iaik.pkcs.pkcs11.objects.PrivateKey)9 RSAPrivateKey (iaik.pkcs.pkcs11.objects.RSAPrivateKey)9 SM2PrivateKey (iaik.pkcs.pkcs11.objects.SM2PrivateKey)9 CoreClusterMember (org.neo4j.causalclustering.discovery.CoreClusterMember)9