From 231beb5c3fc50f40e31b9e00237c67f267188057 Mon Sep 17 00:00:00 2001 From: KatolaZ Date: Wed, 9 Aug 2017 09:53:34 +0100 Subject: preliminary testbed --- test/create_testbed.sh | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ test/destroy_testbed.sh | 22 ++++++++++++++++++ test/scorsh_functions | 56 +++++++++++++++++++++++++++++++++++++++++++++ test/scorsh_testsuite | 57 +++++++++++++++++++++++++++++++++++++++++++++ test/test_spec | 27 ++++++++++++++++++++++ 5 files changed, 223 insertions(+) create mode 100755 test/create_testbed.sh create mode 100755 test/destroy_testbed.sh create mode 100644 test/scorsh_functions create mode 100644 test/scorsh_testsuite create mode 100644 test/test_spec diff --git a/test/create_testbed.sh b/test/create_testbed.sh new file mode 100755 index 0000000..42fc0a7 --- /dev/null +++ b/test/create_testbed.sh @@ -0,0 +1,61 @@ +#!/bin/sh +## +## This script is part of the scorsh testbed. It must be executed by +## the scorsh_testsuite script +## + +. ./scorsh_functions + +### remove the directories if they exist already +[ -d ${REMOTE_REPO} ] && rm -rf ${REMOTE_REPO} +[ -d ${LOCAL_REPO} ] && rm -rf ${LOCAL_REPO} + +### create the repository +git init --bare ${REMOTE_REPO} +check "[ $? -eq 0 ]" $0 "create_remote_repo" + +### clone it +git clone ${REMOTE_REPO} ${LOCAL_REPO} +check "[ $? -eq 0 ]" $0 "clone_remote_repo" + + + + + +### create the directory where scorsh will be cloned +mkdir ${SCORSH_REPO} +check "[ $? -eq 0 ]" $0 "create_scorsh_repo_folder" + +### clone the scorsh repo +olddir=$(pwd) +cd ${SCORSH_REPO} +git clone ${SCORSH_URL} ./ +check "[ $? -eq 0 ]" $0 "clone_scorsh_repo" +cd ${olddir} + +### make the scorshd executable +olddir=$(pwd) +cd ${SCORSH_REPO} +make +check "[ $? -eq 0 ]" $0 "make_scorshd" +cd ${olddir} + + +### create the directory where the scorsh app will run +mkdir ${SCORSH_APP} +check "[ $? -eq 0 ]" $0 "create_scorsh_app_folder" + + +### create spool directory +mkdir "${SCORSH_APP}/spool" +check "[ -$? -eq 0 ]" $0 "create_spool_folder" + + +### configure the remote to be used with scorsh +cd ${REMOTE_REPO} +git config -f scorsh scorsh.spooldir $(realpath "${SCORSH_APP}/spool") +check "[ $? -eq 0 ]" $0 "config_remote_repo" +cd - + + +return_results diff --git a/test/destroy_testbed.sh b/test/destroy_testbed.sh new file mode 100755 index 0000000..afae2e3 --- /dev/null +++ b/test/destroy_testbed.sh @@ -0,0 +1,22 @@ +#!/bin/sh + + +. ./scorsh_functions + +### kill scroshd, if it's running +if [ -f "${SCORSH_APP}/scorshd.pid" ]; then + kill -9 $(cat "${SCORSH_APP}/scorshd.pid") +fi + +### remove all the folders +rm -rf ${SCORSH_REPO} +rm -rf ${SCORSH_APP} +rm -rf ${REMOTE_REPO} +rm -rf ${LOCAL_REPO} + +check "[ ! -d \"${SCORSH_REPO}\" ]" $0 "remove_scorsh_repo" +check "[ ! -d \"${SCORSH_APP}\" ]" $0 "remove_scorsh_app" +check "[ ! -d \"${REMOTE_REPO}\" ]" $0 "remove_remote_repo" +check "[ ! -d \"${LOCAL_REPO}\" ]" $0 "remove_local_repo" + +return_results diff --git a/test/scorsh_functions b/test/scorsh_functions new file mode 100644 index 0000000..1917188 --- /dev/null +++ b/test/scorsh_functions @@ -0,0 +1,56 @@ +#!/bin/sh + +STATUS_FILE=./.exit_status + +## func +failed(){ + + TEST_NAME="$1" + TEST_SECTION="$2" + + echo "[\033[31mFAILED\033[0m] -- ${TEST_NAME}:${TEST_SECTION} " + FAILED_TESTS=$((${FAILED_TESTS} + 1)) +} + +## func +passed(){ + + TEST_NAME="$1" + TEST_SECTION="$2" + + echo "[\033[32mPASSED\033[0m] -- ${TEST_NAME}:${TEST_SECTION} " + PASSED_TESTS=$((${PASSED_TESTS} + 1)) +} + + +## func +check(){ + + EXPR="$1" + TEST_NAME="$2" + TEST_SECTION="$3" + + TOT_TESTS=$((${TOT_TESTS} + 1)) + + ##echo "EXPR: ${EXPR}" + if $(echo ${EXPR}) ; then + passed ${TEST_NAME} ${TEST_SECTION} + else + failed ${TEST_NAME} ${TEST_SECTION} + fi +} + +## func +report_results(){ + + echo -n "TOTAL_TESTS: ${TOT_TESTS} -- " + echo -n "\033[32mPASSED: ${PASSED_TESTS}\033[0m -- " + echo "\033[31mFAILED: ${FAILED_TESTS}\033[0m " +} + +# func +return_results(){ + echo "TOT_TESTS=${TOT_TESTS};PASSED_TESTS=${PASSED_TESTS};FAILED_TESTS=${FAILED_TESTS};">${STATUS_FILE} +} + + diff --git a/test/scorsh_testsuite b/test/scorsh_testsuite new file mode 100644 index 0000000..57954f7 --- /dev/null +++ b/test/scorsh_testsuite @@ -0,0 +1,57 @@ +#!/bin/sh + +#### +## +## testsuite for SCORSH +## + +if [ $# -lt 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +. ./scorsh_functions + +[ -f "$1" ] || ( echo "Unable to open file $1" && exit 2 ) + +. "$1" + + +trap cleanup 0 HUP INT TRAP TERM QUIT + +## func +cleanup(){ + ## do stuff here + rm -rf ${SCORSH_REPO} + rm -rf ${SCORSH_APP} + rm -rf ${REMOTE_REPO} + rm -rf ${LOCAL_REPO} + + echo "Exiting..." +} + +## func +run_tests(){ + + for t in $TESTS; do + export PASSED_TESTS FAILED_TESTS TOT_TESTS + echo "\033[4;7;36m-+-+- running tests in $t -+-+-\033[0m" + $t + eval $(cat ${STATUS_FILE}) + echo "\033[35m-------------------------------------------------------------\033[0m" + + done + export PASSED_TESTS FAILED_TESTS TOT_TESTS +} + + +## main + +export SCORSH_URL SCORSH_REPO SCORSH_APP REMOTE_REPO LOCAL_REPO +PASSED_TESTS=0 +FAILED_TESTS=0 +TOT_TESTS=0 + +run_tests + +report_results diff --git a/test/test_spec b/test/test_spec new file mode 100644 index 0000000..ba0ba55 --- /dev/null +++ b/test/test_spec @@ -0,0 +1,27 @@ +## +## Definition of constants to be used by the testbed +## + +## SCORSH_URL: URL of the git repo for scorsh +SCORSH_URL="http://github.com/dyne/scorsh" + +## SCORSH_REPO: folder where the scorsh repo will be cloned +SCORSH_REPO=$(realpath "./scorsh/") + +## SCORSH_APP: path where the scorsh app will be installed +SCORSH_APP=$(realpath "./scorsh_app/") + +## REMOTE_REPO: path of the folder where the "remote" repo will be +## created +REMOTE_REPO=$(realpath "./testbed_remote.git") + +## LOCAL_REPO: folder where REMOTE_REPO will be cloned +LOCAL_REPO=$(realpath "./testbed_repo") + + +TESTS="\ +./create_testbed.sh \ +./destroy_testbed.sh \ +" + +##./destroy_testbed.sh \ -- cgit v1.2.3