Add support for Bolt v4(.1) (#10)
* Added handshake support * Add support for v4 hello and goodbye * Add support for pulling n results * Add support for transactions * Add pull n for the dump * Add support for NOOP * Add support for multiple queries * Update bolt session to support qid * Update drivers test with multiple versions and go * Extract failure handling into a function * Use unique ptr instead of optional for query execution * Destroy stream before query execution Co-authored-by: Antonio Andelic <antonio.andelic@memgraph.io>
This commit is contained in:
36
tests/drivers/javascript/v4_1/basic.js
Normal file
36
tests/drivers/javascript/v4_1/basic.js
Normal file
@@ -0,0 +1,36 @@
|
||||
var neo4j = require('neo4j-driver');
|
||||
var driver = neo4j.driver("bolt://localhost:7687",
|
||||
neo4j.auth.basic("neo4j", "1234"),
|
||||
{ encrypted: 'ENCRYPTION_OFF' });
|
||||
var session = driver.session();
|
||||
|
||||
function die() {
|
||||
session.close();
|
||||
driver.close();
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
function run_query(query, callback) {
|
||||
var run = session.run(query, {});
|
||||
run.then(callback).catch(function (error) {
|
||||
console.log(error);
|
||||
die();
|
||||
});
|
||||
}
|
||||
|
||||
run_query("MATCH (n) DETACH DELETE n", function (result) {
|
||||
console.log("Database cleared.");
|
||||
run_query("CREATE (alice: Person {name: 'Alice', age: 22})", function (result) {
|
||||
console.log("Record created.");
|
||||
run_query("MATCH (n) RETURN n", function (result) {
|
||||
console.log("Record matched.");
|
||||
var alice = result.records[0].get("n");
|
||||
if(alice.labels[0] != "Person" || alice.properties["name"] != "Alice"){
|
||||
console.log("Data doesn't match!");
|
||||
die();
|
||||
}
|
||||
console.log("All ok!");
|
||||
driver.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
51
tests/drivers/javascript/v4_1/max_query_length.js
Normal file
51
tests/drivers/javascript/v4_1/max_query_length.js
Normal file
@@ -0,0 +1,51 @@
|
||||
// Determines how long could be a query executed
|
||||
// from JavaScript driver.
|
||||
//
|
||||
// Performs binary search until the maximum possible
|
||||
// query size has found.
|
||||
|
||||
// init driver
|
||||
var neo4j = require('neo4j-driver');
|
||||
var driver = neo4j.driver("bolt://localhost:7687",
|
||||
neo4j.auth.basic("", ""),
|
||||
{ encrypted: 'ENCRYPTION_OFF' });
|
||||
|
||||
// init state
|
||||
var property_size = 0;
|
||||
var min_len = 1;
|
||||
var max_len = 1000000;
|
||||
|
||||
// hacking with JS and callbacks concept
|
||||
function serial_execution() {
|
||||
var next_size = [Math.floor((min_len + max_len) / 2)];
|
||||
setInterval(function() {
|
||||
if (next_size.length > 0) {
|
||||
property_size = next_size.pop();
|
||||
var query = "CREATE (n {name:\"" +
|
||||
(new Array(property_size)).join("a")+ "\"})";
|
||||
var session = driver.session();
|
||||
session.run(query, {}).then(function (result) {
|
||||
console.log("Success with the query length " + query.length);
|
||||
if (min_len == max_len || property_size + 1 > max_len) {
|
||||
console.log("\nThe max length of a query from JS driver is: " +
|
||||
query.length + "\n");
|
||||
session.close();
|
||||
driver.close();
|
||||
process.exit(0);
|
||||
}
|
||||
min_len = property_size + 1;
|
||||
next_size.push(Math.floor((min_len + max_len) / 2));
|
||||
}).catch(function (error) {
|
||||
console.log("Failure with the query length " + query.length);
|
||||
max_len = property_size - 1;
|
||||
next_size.push(Math.floor((min_len + max_len) / 2));
|
||||
}).then(function(){
|
||||
session.close();
|
||||
});
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
// execution
|
||||
console.log("\nDetermine how long can be a query sent from JavaScript driver.");
|
||||
serial_execution(); // I don't like JavaScript
|
||||
17
tests/drivers/javascript/v4_1/run.sh
Executable file
17
tests/drivers/javascript/v4_1/run.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
if ! which node >/dev/null; then
|
||||
echo "Please install nodejs!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d node_modules ]; then
|
||||
# Driver generated with: `npm install neo4j-driver`
|
||||
npm install neo4j-driver
|
||||
fi
|
||||
|
||||
node basic.js
|
||||
node max_query_length.js
|
||||
Reference in New Issue
Block a user