Fixed LDBC test index creation for Neo4j.

Reviewers: teon.banek

Reviewed By: teon.banek

Differential Revision: https://phabricator.memgraph.io/D824
This commit is contained in:
Matej Ferencevic 2017-09-22 13:38:49 +02:00
parent acb102de65
commit e224199b36
2 changed files with 36 additions and 17 deletions

View File

@ -1,26 +1,41 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import sys
from neo4j.v1 import GraphDatabase, basic_auth
def parse_args():
argp = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
argp.add_argument('indexfile', help='File with indexes that should be created.')
argp.add_argument('--host', default='127.0.0.1', help='Database host.')
argp.add_argument('--port', default='7687', help='Database port.')
argp.add_argument('--username', default='', help='Database username.')
argp.add_argument('--password', default='', help='Database password.')
argp.add_argument('--database', default='memgraph',
choices=('memgraph', 'neo4j'), help='Database used.')
return argp.parse_args()
# Parse args
args = parse_args()
# Initialize driver and create session.
port = sys.argv[2] if len(sys.argv) > 2 else '7687'
driver = GraphDatabase.driver('bolt://localhost:%s' % port,
auth=basic_auth('', ''),
driver = GraphDatabase.driver('bolt://{}:{}'.format(args.host, args.port),
auth=basic_auth(args.username, args.password),
encrypted=False)
session = driver.session()
# The fist program argument is path to a file with indexes.
try:
with open(sys.argv[1], "r") as f:
for line in f.readlines():
session.run(line.strip()).consume()
print("%s -> DONE" % line.strip())
print("All indexes were created.")
except:
print("Frist argument is path to a file with indexes.")
with open(args.indexfile, "r") as f:
for line in f.readlines():
session.run(line.strip()).consume()
print("%s -> DONE" % line.strip())
if args.database == "neo4j":
print("Waiting for indexes to be fully created...")
session.run("CALL db.awaitIndexes(14400);").consume()
print("All indexes were created.")
# Do the cleanup.
session.close()

View File

@ -71,15 +71,15 @@ class Neo:
def start(self):
# create home directory
self.home_dir = tempfile.mkdtemp(dir="/dev/shm")
self.home_dir = tempfile.mkdtemp(dir=self.dataset)
neo4j_dir = os.path.join(BASE_DIR, "libs", "neo4j")
try:
os.symlink(os.path.join(neo4j_dir, "lib"),
os.path.join(self.home_dir, "lib"))
os.symlink(os.path.join(self.dataset, "neo4j"),
os.path.join(self.home_dir, "data"))
shutil.copytree(os.path.join(self.dataset, "neo4j"),
os.path.join(self.home_dir, "data"))
conf_dir = os.path.join(self.home_dir, "conf")
conf_file = os.path.join(conf_dir, "neo4j.conf")
os.mkdir(conf_dir)
@ -156,10 +156,11 @@ LDBC_DEFAULT_PROPERTIES = \
'ldbc_driver_default.properties')
def create_index(port):
def create_index(port, database):
index_file = os.path.join(SCRIPT_DIR, 'ldbc-snb-impls',
'snb-interactive-neo4j', 'scripts', 'indexCreation.neo4j')
subprocess.check_call(('ve3/bin/python3', 'index_creation.py', index_file, port),
subprocess.check_call(('ve3/bin/python3', 'index_creation.py', '--port',
port, '--database', database, index_file),
cwd=SCRIPT_DIR)
time.sleep(1.0)
@ -181,8 +182,11 @@ def main():
try:
if db:
db.start()
time.sleep(10.0)
if args.create_index:
create_index(args.port)
create_index(args.port, args.run_db.lower())
time.sleep(10.0)
# Run LDBC driver.
cp = 'target/jeeves-0.3-SNAPSHOT.jar:{}'.format(LDBC_INTERACTIVE_NEO4J)