From ab602b88deaa39ec00aec36a2df6c091c092fd99 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 5 Aug 2014 23:13:19 +0200 Subject: [PATCH] Add Makefiles and simple test suite --- Makefile | 10 +++++ cmd/khepri/Makefile | 7 ++++ test/fake-data.tar.gz | Bin 0 -> 177445 bytes test/run.sh | 90 ++++++++++++++++++++++++++++++++++++++++++ test/test-backup.sh | 5 +++ 5 files changed, 112 insertions(+) create mode 100644 Makefile create mode 100644 cmd/khepri/Makefile create mode 100644 test/fake-data.tar.gz create mode 100755 test/run.sh create mode 100755 test/test-backup.sh diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..f19fe3742 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +.PHONY: clean all test + +test: + go test + $(MAKE) -C cmd/khepri + test/run.sh cmd/khepri/khepri + +clean: + go clean + $(MAKE) -C cmd/khepri test diff --git a/cmd/khepri/Makefile b/cmd/khepri/Makefile new file mode 100644 index 000000000..d1d610c91 --- /dev/null +++ b/cmd/khepri/Makefile @@ -0,0 +1,7 @@ +.PHONY: clean all test + +test: + go build + +clean: + go clean diff --git a/test/fake-data.tar.gz b/test/fake-data.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..526b65a641d7145704c1a3402f834ab880da76f7 GIT binary patch literal 177445 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

A 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 F{{w2avNZqz literal 0 HcmV?d00001 diff --git a/test/run.sh b/test/run.sh new file mode 100755 index 000000000..77ca7d75b --- /dev/null +++ b/test/run.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +set -e + +export khepri="${1:-khepri}"; shift +export dir=$(dirname "$0") +export fake_data_file="${dir}/fake-data.tar.gz" + +k() { + "${khepri}" "$@" +} + +prepare() { + export BASE="$(mktemp --tmpdir --directory khepri-testsuite-XXXXXX)" + export KHEPRI_REPOSITORY="${BASE}/khepri-backup" + export DATADIR="${BASE}/fake-data" + debug "repository is at ${KHEPRI_REPOSITORY}" + + mkdir -p "$DATADIR" + (cd "$DATADIR"; tar xz) < "$fake_data_file" + debug "extracted fake data to ${DATADIR}" +} + +cleanup() { + if [ "$DEBUG" = "1" ]; then + debug "leaving dir ${BASE}" + return + fi + + rm -rf "${BASE}" + debug "removed dir ${BASE}" + unset BASE + unset KHEPRI_REPOSITORY +} + +msg() { + printf "%s: %s\n" "$(basename "$0" .sh)" "$*" +} + +pass() { + printf "\e[32m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*" +} + +err() { + printf "\e[31m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*" +} + +debug() { + if [ "$DEBUG" = "1" ]; then + printf "\e[33m%s: %s\e[39m\n" "$(basename "$0" .sh)" "$*" + fi +} + +fail() { + err "$@" + exit 1 +} + +run() { + if [ "$DEBUG" = "1" ]; then + "$@" + else + "$@" > /dev/null + fi +} + +export -f k prepare cleanup msg debug pass err fail run + +if [ ! -x "$khepri" ]; then + fail khepri binary not found! +fi + +if [ "$#" -gt 0 ]; then + testfiles="$1" +else + testfiles=(${dir}/test-*.sh) +fi + +echo "testfiles: $testfiles" + +for testfile in "$testfiles"; do + current=$(basename "${testfile}" .sh) + + bash "${testfile}" + if [ "$?" != "0" ]; then + err "${current} failed!" + else + pass "${current} pass" + fi +done diff --git a/test/test-backup.sh b/test/test-backup.sh new file mode 100755 index 000000000..72d4a29b4 --- /dev/null +++ b/test/test-backup.sh @@ -0,0 +1,5 @@ +prepare +run k backup "${BASE}/fake-data" +run k restore "$(k list ref)" "${BASE}/fake-data-restore" +diff -aur "${BASE}/fake-data" "${BASE}/fake-data-restore" +cleanup