mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 13:03:17 +01:00
207b1c5877
c456145b2c65f580683df03bf10cd39000cf24d5 [test] add 0.19 backwards compatibility tests (Sjors Provoost) b769cd142deda74fe46e231cc7b687a86514f2f1 [test] add v0.17.1 wallet upgrade test (Sjors Provoost) 9d9390dab716f07057c94e8e21f3c7dd06192f35 [tests] add wallet backwards compatility tests (Sjors Provoost) c7ca6308968b29a0e0edc485cd06e68e5edb7c7d [scripts] support release candidates of earlier releases (Sjors Provoost) 8b1460dbd1b732f06d4cebe1fa6844286c7a0056 [tests] check v0.17.1 and v0.18.1 backwards compatibility (Sjors Provoost) ae379cf7d12943fc192d58176673bcfe7d53da53 [scripts] build earlier releases (Sjors Provoost) Pull request description: This PR adds binaries for 0.17, 0.18 and 0.19 to Travis and runs a basic block propagation test. Includes test for upgrading v0.17.1 wallets and opening master wallets with older versions. Usage: ```sh contrib/devtools/previous_release.sh -f -b v0.19.0.1 v0.18.1 v0.17.1 test/functional/backwards_compatibility.py ``` Travis caches these earlier releases, so it should be able to run these tests with little performance impact. Additional scenarios where it might be useful to run tests against earlier releases: * creating a wallet with #11403's segwit implementation, copying it to an older node and making sure the user didn't lose any funds (although this PR doesn't support `v0.15.1`) * future consensus changes * P2P changes (e.g. to make sure we don't accidentally ban old nodes) ACKs for top commit: MarcoFalke: ACK c456145b2c65f580683df03bf10cd39000cf24d5 🔨 Tree-SHA512: 360bd870603f95b14dc0cd629532cc147344f632b808617c18e1b585dfb1f082b401e5d493a48196b719e0aeaee533ae0a773dfc9f217f704aae898576c19232
114 lines
4.4 KiB
Bash
Executable File
114 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2018-2020 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
export LC_ALL=C.UTF-8
|
|
|
|
if [[ $DOCKER_NAME_TAG == centos* ]]; then
|
|
export LC_ALL=en_US.utf8
|
|
fi
|
|
if [[ $QEMU_USER_CMD == qemu-s390* ]]; then
|
|
export LC_ALL=C
|
|
fi
|
|
|
|
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
|
|
export PATH="/usr/local/opt/ccache/libexec:$PATH"
|
|
${CI_RETRY_EXE} pip3 install $PIP_PACKAGES
|
|
fi
|
|
|
|
mkdir -p "${BASE_SCRATCH_DIR}"
|
|
mkdir -p "${CCACHE_DIR}"
|
|
mkdir -p "${PREVIOUS_RELEASES_DIR}"
|
|
|
|
export ASAN_OPTIONS="detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1"
|
|
export LSAN_OPTIONS="suppressions=${BASE_BUILD_DIR}/test/sanitizer_suppressions/lsan"
|
|
export TSAN_OPTIONS="suppressions=${BASE_BUILD_DIR}/test/sanitizer_suppressions/tsan"
|
|
export UBSAN_OPTIONS="suppressions=${BASE_BUILD_DIR}/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1"
|
|
env | grep -E '^(BASE_|QEMU_|CCACHE_|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL|(ASAN|LSAN|TSAN|UBSAN)_OPTIONS|TEST_PREVIOUS_RELEASES|PREVIOUS_RELEASES_DIR))' | tee /tmp/env
|
|
if [[ $HOST = *-mingw32 ]]; then
|
|
DOCKER_ADMIN="--cap-add SYS_ADMIN"
|
|
elif [[ $BITCOIN_CONFIG = *--with-sanitizers=*address* ]]; then # If ran with (ASan + LSan), Docker needs access to ptrace (https://github.com/google/sanitizers/issues/764)
|
|
DOCKER_ADMIN="--cap-add SYS_PTRACE"
|
|
fi
|
|
|
|
export P_CI_DIR="$PWD"
|
|
|
|
if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
|
|
echo "Creating $DOCKER_NAME_TAG container to run in"
|
|
${CI_RETRY_EXE} docker pull "$DOCKER_NAME_TAG"
|
|
|
|
DOCKER_ID=$(docker run $DOCKER_ADMIN -idt \
|
|
--mount type=bind,src=$BASE_ROOT_DIR,dst=/ro_base,readonly \
|
|
--mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR \
|
|
--mount type=bind,src=$DEPENDS_DIR,dst=$DEPENDS_DIR \
|
|
--mount type=bind,src=$PREVIOUS_RELEASES_DIR,dst=$PREVIOUS_RELEASES_DIR \
|
|
-w $BASE_ROOT_DIR \
|
|
--env-file /tmp/env \
|
|
--name $CONTAINER_NAME \
|
|
$DOCKER_NAME_TAG)
|
|
|
|
DOCKER_EXEC () {
|
|
docker exec $DOCKER_ID bash -c "export PATH=$BASE_SCRATCH_DIR/bins/:\$PATH && cd $P_CI_DIR && $*"
|
|
}
|
|
else
|
|
echo "Running on host system without docker wrapper"
|
|
DOCKER_EXEC () {
|
|
bash -c "export PATH=$BASE_SCRATCH_DIR/bins/:\$PATH && cd $P_CI_DIR && $*"
|
|
}
|
|
fi
|
|
export -f DOCKER_EXEC
|
|
|
|
if [ -n "$DPKG_ADD_ARCH" ]; then
|
|
DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH"
|
|
fi
|
|
|
|
if [[ $DOCKER_NAME_TAG == centos* ]]; then
|
|
${CI_RETRY_EXE} DOCKER_EXEC yum -y install epel-release
|
|
${CI_RETRY_EXE} DOCKER_EXEC yum -y install $DOCKER_PACKAGES $PACKAGES
|
|
elif [ "$CI_USE_APT_INSTALL" != "no" ]; then
|
|
${CI_RETRY_EXE} DOCKER_EXEC apt-get update
|
|
${CI_RETRY_EXE} DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $DOCKER_PACKAGES
|
|
if [ -n "$PIP_PACKAGES" ]; then
|
|
${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES
|
|
fi
|
|
fi
|
|
|
|
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
|
|
top -l 1 -s 0 | awk ' /PhysMem/ {print}'
|
|
echo "Number of CPUs: $(sysctl -n hw.logicalcpu)"
|
|
else
|
|
DOCKER_EXEC free -m -h
|
|
DOCKER_EXEC echo "Number of CPUs \(nproc\):" \$\(nproc\)
|
|
DOCKER_EXEC echo $(lscpu | grep Endian)
|
|
DOCKER_EXEC echo "Free disk space:"
|
|
DOCKER_EXEC df -h
|
|
fi
|
|
|
|
if [ ! -d ${DIR_QA_ASSETS} ]; then
|
|
if [ "$RUN_FUZZ_TESTS" = "true" ]; then
|
|
DOCKER_EXEC git clone https://github.com/bitcoin-core/qa-assets ${DIR_QA_ASSETS}
|
|
fi
|
|
fi
|
|
export DIR_FUZZ_IN=${DIR_QA_ASSETS}/fuzz_seed_corpus/
|
|
|
|
DOCKER_EXEC mkdir -p "${BASE_SCRATCH_DIR}/sanitizer-output/"
|
|
|
|
if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
|
|
echo "Create $BASE_ROOT_DIR"
|
|
DOCKER_EXEC rsync -a /ro_base/ $BASE_ROOT_DIR
|
|
fi
|
|
|
|
if [ "$USE_BUSY_BOX" = "true" ]; then
|
|
echo "Setup to use BusyBox utils"
|
|
DOCKER_EXEC mkdir -p $BASE_SCRATCH_DIR/bins/
|
|
# tar excluded for now because it requires passing in the exact archive type in ./depends (fixed in later BusyBox version)
|
|
# find excluded for now because it does not recognize the -delete option in ./depends (fixed in later BusyBox version)
|
|
# ar excluded for now because it does not recognize the -q option in ./depends (unknown if fixed)
|
|
# shellcheck disable=SC1010
|
|
DOCKER_EXEC for util in \$\(busybox --list \| grep -v "^ar$" \| grep -v "^tar$" \| grep -v "^find$"\)\; do ln -s \$\(command -v busybox\) $BASE_SCRATCH_DIR/bins/\$util\; done
|
|
# Print BusyBox version
|
|
DOCKER_EXEC patch --help
|
|
fi
|