diff --git a/tests/public_benchmark/ldbc/index_creation.py b/tests/public_benchmark/ldbc/index_creation.py index cfac956ea..3f5df6844 100755 --- a/tests/public_benchmark/ldbc/index_creation.py +++ b/tests/public_benchmark/ldbc/index_creation.py @@ -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() diff --git a/tests/public_benchmark/ldbc/run_benchmark b/tests/public_benchmark/ldbc/run_benchmark index 56824e562..445598d73 100755 --- a/tests/public_benchmark/ldbc/run_benchmark +++ b/tests/public_benchmark/ldbc/run_benchmark @@ -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)