#!/bin/bash function print_usage_and_exit { echo "./run --test-suite test_suite [--unstable]" echo "Required arguments:" echo -e " --test-suite test_suite\trun test_suite scenarios, test_suite must be test folder in tck_engine/tests." echo -e " --name name\tunique identifer of test_suite and its parameters" echo "Optional arguments:" echo -e " --unstable\trun unstable scenarios" echo -e " --memgraph-params \"param1=value1 param2=value2\"\tcommand line arguments for memgraph" exit 1 } # exit if any subcommand returns a non-zero status set -e # read arguments unstable=false memgraph_params="" loglevel=2 while [[ $# -gt 0 ]]; do case $1 in --unstable) unstable=true shift ;; --verbose) loglevel=0 shift ;; --memgraph-params) if [ $# -eq 1 ]; then print_usage_and_exit fi memgraph_params=$2 shift shift ;; --name) if [ $# -eq 1 ]; then print_usage_and_exit fi name=$2 shift shift ;; --test-suite) if [ $# -eq 1 ]; then print_usage_and_exit fi test_suite=$2 shift shift ;; *) # unknown option print_usage_and_exit ;; esac done if [[ "$test_suite" = "" ]]; then print_usage_and_exit fi # save the path where this script is script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" memgraph_src_dir=${script_dir}/../.. memgraph_build_dir=${memgraph_src_dir}/build if [ ! -d ${memgraph_build_dir} ]; then memgraph_build_dir=${memgraph_src_dir}/build_debug fi memgraph_binary=${memgraph_build_dir}/memgraph # activate virtualenv source $script_dir/ve3/bin/activate # get full path to memgraph config for interpreted queries config_path="${memgraph_src_dir}/config/testing.conf" # run scenarios cd ${script_dir} tck_flags="--root tck_engine/tests/$test_suite --test-name $name --no-side-effects --db memgraph" if [[ $unstable = true ]]; then tck_flags="$tck_flags --unstable" fi # the script has to be careful because memgraph process will be detached set +e # run memgraph MEMGRAPH_CONFIG="$config_path" "$memgraph_binary" --min-log-level=$loglevel "$memgraph_params" 1>&2 & background_pid=$! function cleanup_and_exit { kill -9 $background_pid sleep 2 exit $1 } sleep 2 python3 tck_engine/test_executor.py $tck_flags cleanup_and_exit $?