mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
update session initializers on neo4j
This commit is contained in:
parent
b7e0f35cd2
commit
c00dec63ec
@ -24,6 +24,8 @@ import org.apache.logging.log4j.Logger;
|
|||||||
import org.neo4j.driver.AuthTokens;
|
import org.neo4j.driver.AuthTokens;
|
||||||
import org.neo4j.driver.Driver;
|
import org.neo4j.driver.Driver;
|
||||||
import org.neo4j.driver.GraphDatabase;
|
import org.neo4j.driver.GraphDatabase;
|
||||||
|
import org.neo4j.driver.*;
|
||||||
|
import org.neo4j.driver.async.AsyncSession;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -32,6 +34,7 @@ public class Neo4JSpace implements AutoCloseable {
|
|||||||
private final static Logger logger = LogManager.getLogger(Neo4JSpace.class);
|
private final static Logger logger = LogManager.getLogger(Neo4JSpace.class);
|
||||||
private final String space;
|
private final String space;
|
||||||
private Driver driver;
|
private Driver driver;
|
||||||
|
private SessionConfig sessionConfig;
|
||||||
|
|
||||||
public Neo4JSpace(String space, NBConfiguration cfg) {
|
public Neo4JSpace(String space, NBConfiguration cfg) {
|
||||||
this.space = space;
|
this.space = space;
|
||||||
@ -40,6 +43,10 @@ public class Neo4JSpace implements AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Driver initializeDriver(NBConfiguration cfg) {
|
private Driver initializeDriver(NBConfiguration cfg) {
|
||||||
|
SessionConfig.Builder builder = SessionConfig.builder();
|
||||||
|
cfg.getOptional("database").ifPresent(builder::withDatabase);
|
||||||
|
this.sessionConfig = builder.build();
|
||||||
|
|
||||||
String dbURI = cfg.get("db_uri");
|
String dbURI = cfg.get("db_uri");
|
||||||
Optional<String> usernameOpt = cfg.getOptional("username");
|
Optional<String> usernameOpt = cfg.getOptional("username");
|
||||||
Optional<String> passwordOpt = cfg.getOptional("password");
|
Optional<String> passwordOpt = cfg.getOptional("password");
|
||||||
@ -84,6 +91,7 @@ public class Neo4JSpace implements AutoCloseable {
|
|||||||
.add(Param.required("db_uri", String.class))
|
.add(Param.required("db_uri", String.class))
|
||||||
.add(Param.optional("username", String.class))
|
.add(Param.optional("username", String.class))
|
||||||
.add(Param.optional("password", String.class))
|
.add(Param.optional("password", String.class))
|
||||||
|
.add(Param.optional("database", String.class))
|
||||||
.asReadOnly();
|
.asReadOnly();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,6 +99,14 @@ public class Neo4JSpace implements AutoCloseable {
|
|||||||
return driver;
|
return driver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AsyncSession newAsyncSession() {
|
||||||
|
return driver.session(AsyncSession.class,sessionConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Session newSession() {
|
||||||
|
return driver.session(sessionConfig);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws Exception {
|
public void close() throws Exception {
|
||||||
if (driver != null){
|
if (driver != null){
|
||||||
|
@ -35,7 +35,7 @@ public class Neo4JAsyncAutoCommitOpDispenser extends Neo4JBaseOpDispenser {
|
|||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JAsyncAutoCommitOp> createOpFunc() {
|
public LongFunction<Neo4JAsyncAutoCommitOp> createOpFunc() {
|
||||||
return l -> new Neo4JAsyncAutoCommitOp(
|
return l -> new Neo4JAsyncAutoCommitOp(
|
||||||
spaceFunc.apply(l).getDriver().session(AsyncSession.class),
|
asyncSessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class Neo4JAsyncReadTxnOpDispenser extends Neo4JBaseOpDispenser {
|
|||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JAsyncReadTxnOp> createOpFunc() {
|
public LongFunction<Neo4JAsyncReadTxnOp> createOpFunc() {
|
||||||
return l -> new Neo4JAsyncReadTxnOp(
|
return l -> new Neo4JAsyncReadTxnOp(
|
||||||
spaceFunc.apply(l).getDriver().session(AsyncSession.class),
|
asyncSessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class Neo4JAsyncWriteTxnOpDispenser extends Neo4JBaseOpDispenser {
|
|||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JAsyncWriteTxnOp> createOpFunc() {
|
public LongFunction<Neo4JAsyncWriteTxnOp> createOpFunc() {
|
||||||
return l -> new Neo4JAsyncWriteTxnOp(
|
return l -> new Neo4JAsyncWriteTxnOp(
|
||||||
spaceFunc.apply(l).getDriver().session(AsyncSession.class),
|
asyncSessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,9 @@ import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser;
|
|||||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||||
|
|
||||||
import org.neo4j.driver.Query;
|
import org.neo4j.driver.Query;
|
||||||
|
import org.neo4j.driver.Session;
|
||||||
|
import org.neo4j.driver.SessionConfig;
|
||||||
|
import org.neo4j.driver.async.AsyncSession;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.function.LongFunction;
|
import java.util.function.LongFunction;
|
||||||
@ -35,6 +38,8 @@ public abstract class Neo4JBaseOpDispenser extends BaseOpDispenser<Neo4JBaseOp,
|
|||||||
protected final LongFunction<Query> queryFunc;
|
protected final LongFunction<Query> queryFunc;
|
||||||
protected final LongFunction<Map> paramFunc;
|
protected final LongFunction<Map> paramFunc;
|
||||||
protected final LongFunction<Neo4JBaseOp> opFunc;
|
protected final LongFunction<Neo4JBaseOp> opFunc;
|
||||||
|
protected final LongFunction<Session> sessionFunc;
|
||||||
|
protected final LongFunction<AsyncSession> asyncSessionFunc;
|
||||||
|
|
||||||
public Neo4JBaseOpDispenser(Neo4JDriverAdapter adapter, ParsedOp op, LongFunction<Neo4JSpace> spaceFunc, String requiredTemplateKey) {
|
public Neo4JBaseOpDispenser(Neo4JDriverAdapter adapter, ParsedOp op, LongFunction<Neo4JSpace> spaceFunc, String requiredTemplateKey) {
|
||||||
super(adapter, op);
|
super(adapter, op);
|
||||||
@ -43,6 +48,8 @@ public abstract class Neo4JBaseOpDispenser extends BaseOpDispenser<Neo4JBaseOp,
|
|||||||
this.paramFunc = createParamFunc(op);
|
this.paramFunc = createParamFunc(op);
|
||||||
this.queryFunc = createQueryFunc();
|
this.queryFunc = createQueryFunc();
|
||||||
this.opFunc = (LongFunction<Neo4JBaseOp>) createOpFunc();
|
this.opFunc = (LongFunction<Neo4JBaseOp>) createOpFunc();
|
||||||
|
this.sessionFunc = getSessionFunction(spaceFunc,op);
|
||||||
|
this.asyncSessionFunc = getAsyncSessionFunction(spaceFunc,op);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LongFunction<Map> createParamFunc(ParsedOp op) {
|
private LongFunction<Map> createParamFunc(ParsedOp op) {
|
||||||
@ -50,6 +57,24 @@ public abstract class Neo4JBaseOpDispenser extends BaseOpDispenser<Neo4JBaseOp,
|
|||||||
.orElse(l -> Collections.emptyMap());
|
.orElse(l -> Collections.emptyMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LongFunction<Session> getSessionFunction(LongFunction<Neo4JSpace> spaceFunc, ParsedOp op) {
|
||||||
|
LongFunction<SessionConfig.Builder> scbF = (long l) -> SessionConfig.builder();
|
||||||
|
scbF = op.enhanceFuncOptionally(scbF,"database",String.class,SessionConfig.Builder::withDatabase);
|
||||||
|
LongFunction<SessionConfig.Builder> finalScbF = scbF;
|
||||||
|
LongFunction<SessionConfig> scF = (long l) -> finalScbF.apply(l).build();
|
||||||
|
return (long l) -> spaceFunc.apply(l).getDriver().session(Session.class,scF.apply(l));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private LongFunction<AsyncSession> getAsyncSessionFunction(LongFunction<Neo4JSpace> spaceFunc, ParsedOp op) {
|
||||||
|
LongFunction<SessionConfig.Builder> scbF = (long l) -> SessionConfig.builder();
|
||||||
|
scbF = op.enhanceFuncOptionally(scbF,"database",String.class,SessionConfig.Builder::withDatabase);
|
||||||
|
LongFunction<SessionConfig.Builder> finalScbF = scbF;
|
||||||
|
LongFunction<SessionConfig> scF = (long l) -> finalScbF.apply(l).build();
|
||||||
|
return (long l) -> spaceFunc.apply(l).getDriver().session(AsyncSession.class,scF.apply(l));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference:
|
* Reference:
|
||||||
* - https://neo4j.com/docs/api/java-driver/current/org.neo4j.driver/org/neo4j/driver/Query.html#withParameters(java.util.Map)
|
* - https://neo4j.com/docs/api/java-driver/current/org.neo4j.driver/org/neo4j/driver/Query.html#withParameters(java.util.Map)
|
||||||
|
@ -35,7 +35,7 @@ public class Neo4JSyncAutoCommitOpDispenser extends Neo4JBaseOpDispenser {
|
|||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JSyncAutoCommitOp> createOpFunc() {
|
public LongFunction<Neo4JSyncAutoCommitOp> createOpFunc() {
|
||||||
return l -> new Neo4JSyncAutoCommitOp(
|
return l -> new Neo4JSyncAutoCommitOp(
|
||||||
spaceFunc.apply(l).getDriver().session(Session.class),
|
sessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,6 @@ import io.nosqlbench.adapter.neo4j.ops.Neo4JSyncReadTxnOp;
|
|||||||
import io.nosqlbench.adapter.neo4j.Neo4JSpace;
|
import io.nosqlbench.adapter.neo4j.Neo4JSpace;
|
||||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||||
|
|
||||||
import org.neo4j.driver.Session;
|
|
||||||
|
|
||||||
import java.util.function.LongFunction;
|
import java.util.function.LongFunction;
|
||||||
|
|
||||||
|
|
||||||
@ -35,7 +33,7 @@ public class Neo4JSyncReadTxnOpDispenser extends Neo4JBaseOpDispenser {
|
|||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JSyncReadTxnOp> createOpFunc() {
|
public LongFunction<Neo4JSyncReadTxnOp> createOpFunc() {
|
||||||
return l -> new Neo4JSyncReadTxnOp(
|
return l -> new Neo4JSyncReadTxnOp(
|
||||||
spaceFunc.apply(l).getDriver().session(Session.class),
|
sessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,19 @@ import java.util.function.LongFunction;
|
|||||||
|
|
||||||
public class Neo4JSyncWriteTxnOpDispenser extends Neo4JBaseOpDispenser {
|
public class Neo4JSyncWriteTxnOpDispenser extends Neo4JBaseOpDispenser {
|
||||||
|
|
||||||
public Neo4JSyncWriteTxnOpDispenser(Neo4JDriverAdapter adapter, ParsedOp op, LongFunction<Neo4JSpace> spaceFunc, String requiredTemplateKey) {
|
public Neo4JSyncWriteTxnOpDispenser(
|
||||||
|
Neo4JDriverAdapter adapter,
|
||||||
|
ParsedOp op,
|
||||||
|
LongFunction<Neo4JSpace> spaceFunc,
|
||||||
|
String requiredTemplateKey
|
||||||
|
) {
|
||||||
super(adapter, op, spaceFunc, requiredTemplateKey);
|
super(adapter, op, spaceFunc, requiredTemplateKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LongFunction<Neo4JSyncWriteTxnOp> createOpFunc() {
|
public LongFunction<Neo4JSyncWriteTxnOp> createOpFunc() {
|
||||||
return l -> new Neo4JSyncWriteTxnOp(
|
return l -> new Neo4JSyncWriteTxnOp(
|
||||||
spaceFunc.apply(l).getDriver().session(Session.class),
|
sessionFunc.apply(l),
|
||||||
queryFunc.apply(l)
|
queryFunc.apply(l)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user