memgraph/tools/tests/test_mg_import_csv
Marko Culinovic b59edf1640 Add support for node label, rel type and quote
Summary:
New flags are introduced.
1) `node-label` flag can be specified multiple times to add
extra labels to all nodes
2) `relationship-type` overwrites relationship types from file
with given flag value
3) `quote` is used to specify quotation character

Added tests for new flags.

Reviewers: teon.banek, msantl

Reviewed By: teon.banek

Subscribers: mferencevic, pullbot

Differential Revision: https://phabricator.memgraph.io/D1514
2018-07-31 13:28:58 +02:00

66 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
'''Run mg_import_csv and test that recovery works with mg_recovery_check.'''
import argparse
import subprocess
import os
import tempfile
_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
def parse_args():
argp = argparse.ArgumentParser(description=__doc__)
argp.add_argument('--mg-import-csv', required=True,
help='Path to mg_import_csv executable.')
argp.add_argument('--mg-recovery-check', required=True,
help='Path to mg_recovery_check executable.')
return argp.parse_args()
def main():
args = parse_args()
comment_nodes = os.path.join(_SCRIPT_DIR, 'csv', 'comment_nodes.csv')
comment_nodes_2 = os.path.join(_SCRIPT_DIR, 'csv', 'comment_nodes_2.csv')
forum_nodes = os.path.join(_SCRIPT_DIR, 'csv', 'forum_nodes.csv')
relationships_0 = os.path.join(_SCRIPT_DIR, 'csv', 'relationships_0.csv')
relationships_1 = os.path.join(_SCRIPT_DIR, 'csv', 'relationships_1.csv')
with tempfile.TemporaryDirectory(suffix='-durability',
dir=_SCRIPT_DIR) as durability_dir:
snapshot_dir = os.path.join(durability_dir, 'snapshots')
os.makedirs(snapshot_dir, exist_ok=True)
out_snapshot = os.path.join(snapshot_dir, 'snapshot')
mg_import_csv = [args.mg_import_csv, '--nodes', comment_nodes,
'--nodes={}'.format(forum_nodes),
'--node-label', 'First', '--node-label', 'Second',
'--relationships={}'.format(relationships_0),
'--relationships', relationships_1,
'--out', out_snapshot, '--csv-delimiter=|',
'--quote', 'Ö', # test multi-char quote
'--array-delimiter=;']
subprocess.check_call(mg_import_csv)
mg_recovery_check = [args.mg_recovery_check,
'--durability-dir', durability_dir,
'--gtest_filter=*RecoveryTest*:-*RelationshipType*'] # noqa
subprocess.check_call(mg_recovery_check)
# New snapshot to test relationship type flag and single-char quote
out_snapshot = os.path.join(snapshot_dir, 'snapshot2')
mg_import_csv = [args.mg_import_csv, '--nodes', comment_nodes_2,
'--nodes={}'.format(forum_nodes),
'--relationships={}'.format(relationships_0),
'--relationships', relationships_1,
'--relationship-type', "TYPE",
'--out', out_snapshot, '--csv-delimiter=|',
'--quote', '\"', '--array-delimiter=;']
subprocess.check_call(mg_import_csv)
mg_recovery_check = [args.mg_recovery_check,
'--durability-dir', durability_dir,
'--gtest_filter=*RelationshipType*:*Quote*']
subprocess.check_call(mg_recovery_check)
if __name__ == '__main__':
main()