12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env bash
- CONTAINER_NAME=${CONTAINER_NAME:-s3test-instance}
- CONF_FILE=${CONF_FILE:-s3tests.conf}
- WEED_BIN=${WEED_BIN:-../../../weed/weed}
- TEST_RAW_OUTPUT_FILE=${TEST_RAW_OUTPUT_FILE:-compat.raw.txt}
- TEST_PROCESSED_OUTPUT_FILE=${TEST_PROCESSED_OUTPUT_FILE:-compat.summary.txt}
- # Set up debugging for this bash script if DEBUG is set
- if [ -n "${DEBUG}" ]; then
- echo -e "DEBUG set [${DEBUG}], enabling debugging output...";
- set -ex
- fi
- # Reset from possible previous test run
- killall -9 weed || echo "already stopped"
- rm -Rf tmp
- mkdir tmp
- docker stop $CONTAINER_NAME || echo "already stopped"
- # Ensure ulimit is set to reasonable value
- ulimit -n 10000
- # Start weed w/ filer + s3 in the background
- $WEED_BIN server \
- -filer \
- -s3 \
- -volume.max 0 \
- -master.volumeSizeLimitMB 5 \
- -dir "$(pwd)/tmp" \
- 1>&2>weed.log &
- # Wait for master to start up
- echo -e "\n[info] waiting for master @ 9333...";
- until curl --output /dev/null --silent --head --fail http://127.0.0.1:9333; do
- printf '.';
- sleep 5;
- done
- sleep 3;
- # Wait for s3 to start up
- echo -e "\n[info] waiting for S3 @ 8333...";
- until curl --output /dev/null --silent --fail http://127.0.0.1:8333; do
- printf '.';
- sleep 5;
- done
- sleep 3;
- # Determine whether docker net
- DOCKER_NET_HOST_ARGS=""
- if [ -n "${DOCKER_NET_HOST}" ]; then
- DOCKER_NET_HOST_ARGS="--net=host"
- echo -e "\n[info] setting docker to het nost"
- fi
- echo -e "\n[warn] You may have to run with UNFILTERED=y to disable output filtering, if you get the broken pipe error";
- echo -e "\n[info] running tests with unfiltered output...";
- docker run \
- --name $CONTAINER_NAME \
- --rm \
- ${DOCKER_NET_HOST_ARGS} \
- -e S3TEST_CONF=$CONF_FILE \
- -v "$(pwd)"/$CONF_FILE:/s3-tests/s3tests.conf \
- -it \
- s3tests \
- ./virtualenv/bin/nosetests \
- s3tests_boto3/functional/test_s3.py \
- -v \
- -a 'resource=object,!bucket-policy,!versioning,!encryption' \
- | tee ${TEST_RAW_OUTPUT_FILE}
- # If the summary logs are present, process them
- if [ -f "${TEST_RAW_OUTPUT_FILE}" ]; then
- cat ${TEST_RAW_OUTPUT_FILE} | sed -n -e '/botocore.hooks/!p;//q' | tee ${TEST_PROCESSED_OUTPUT_FILE}
- echo -e "\n[info] ✅ Successfully wrote processed output @ [${TEST_PROCESSED_OUTPUT_FILE}]";
- if [ -z "${TEST_KEEP_RAW_OUTPUT}" ]; then
- echo -e "\n[info] removing test raw output file @ [${TEST_RAW_OUTPUT_FILE}] (to disable this, set TEST_KEEP_RAW_OUTPUT=y)...";
- rm -rf ${TEST_RAW_OUTPUT_FILE};
- fi
- else
- echo -e "\n[warn] failed to find raw output @ [${TEST_RAW_OUTPUT_FILE}]";
- fi
- echo -e "\n[info] stopping [${CONTAINER_NAME}] container...";
- docker stop $CONTAINER_NAME || echo "[info] already stopped";
- echo -e "\n[info] stopping seaweedfs processes (all, via kill -9)...";
- killall -9 weed;
|