ipfs-cluster/sharness/lib/test-lib.sh
Hector Sanjuan 69ffd20dbf Generate secret by default.
This:

* Takes CLUSTER_SECRET as the secret whenever it is defined
* Generates the secret by default in other cases
* Only prompts with -s, -custom-secret.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2017-07-25 00:16:07 +02:00

97 lines
2.4 KiB
Bash
Executable File

# Sharness test framework for ipfs-cluster
#
# We are using sharness (https://github.com/mlafeldt/sharness)
# which was extracted from the Git test framework.
SHARNESS_LIB="lib/sharness/sharness.sh"
# Daemons output will be redirected to...
IPFS_OUTPUT="/dev/null" # change for debugging
# IPFS_OUTPUT="/dev/stderr" # change for debugging
. "$SHARNESS_LIB" || {
echo >&2 "Cannot source: $SHARNESS_LIB"
echo >&2 "Please check Sharness installation."
exit 1
}
which jq >/dev/null 2>&1
if [ $? -eq 0 ]; then
test_set_prereq JQ
fi
# Set prereqs
test_ipfs_init() {
which docker >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Docker not found"
exit 1
fi
if docker ps --format '{{.Names}}' | egrep -q '^ipfs$'; then
echo "ipfs container already running"
else
docker run --name ipfs -d -p 127.0.0.1:5001:5001 ipfs/go-ipfs > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error running go-ipfs in docker."
exit 1
fi
sleep 6
fi
test_set_prereq IPFS
}
test_ipfs_running() {
if curl -s "localhost:5001/api/v0/version" > /dev/null; then
test_set_prereq IPFS
else
echo "IPFS is not running"
exit 1
fi
}
test_cluster_init() {
which ipfs-cluster-service >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "ipfs-cluster-service not found"
exit 1
fi
which ipfs-cluster-ctl >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "ipfs-cluster-ctl not found"
exit 1
fi
export CLUSTER_TEMP_DIR=`mktemp -d cluster-XXXXX`
ipfs-cluster-service -f --config "$CLUSTER_TEMP_DIR" init >"$IPFS_OUTPUT" 2>&1
if [ $? -ne 0 ]; then
echo "error initializing ipfs cluster"
exit 1
fi
ipfs-cluster-service --config "$CLUSTER_TEMP_DIR" >"$IPFS_OUTPUT" 2>&1 &
export CLUSTER_D_PID=$!
sleep 5
test_set_prereq CLUSTER
}
test_cluster_config() {
export CLUSTER_CONFIG_PATH="${CLUSTER_TEMP_DIR}/service.json"
export CLUSTER_CONFIG_ID=`jq --raw-output ".id" $CLUSTER_CONFIG_PATH`
export CLUSTER_CONFIG_PK=`jq --raw-output ".private_key" $CLUSTER_CONFIG_PATH`
[ "$CLUSTER_CONFIG_ID" != "null" ] && [ "$CLUSTER_CONFIG_PK" != "null" ]
}
cluster_id() {
echo "$CLUSTER_CONFIG_ID"
}
# Cleanup functions
test_clean_ipfs(){
docker kill ipfs
docker rm ipfs
sleep 1
}
test_clean_cluster(){
kill -1 "$CLUSTER_D_PID"
rm -rf "$CLUSTER_TEMP_DIR"
}