Move cron tests to GitHub actions

This patch moves the sanitizer, abi breakage and memory leak
tests from travis to github actions.
This commit is contained in:
Sven Klemm 2020-07-07 00:09:39 +02:00 committed by Sven Klemm
parent 5bb4bfdf50
commit c4aa8cf7cf
4 changed files with 64 additions and 56 deletions

57
.github/workflows/cron-tests.yaml vendored Normal file
View File

@ -0,0 +1,57 @@
name: Additional tests
on:
schedule:
# run daily 20:00 on master branch
- cron: '0 20 * * *'
push:
branches:
- prerelease_test
jobs:
abi_breakage:
name: ABI Breakage PG${{ matrix.pg }}
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
pg: [11, 12]
env:
PG_MAJOR: ${{ matrix.pg }}
PG_MINOR_COMPILE: 0
steps:
- name: Checkout TimescaleDB
uses: actions/checkout@v2
- name: ABI Test
run: |
./scripts/docker-run-abi-test.sh
sanitizer:
name: ASAN and UBSAN
runs-on: ubuntu-18.04
strategy:
fail-fast: false
steps:
- name: Checkout TimescaleDB
uses: actions/checkout@v2
- name: Sanitizer
run: |
./scripts/test_sanitizers.sh
memory_leak:
name: Memory leak on insert
runs-on: ubuntu-18.04
strategy:
fail-fast: false
env:
PG_VERSION: 12.3
steps:
- name: Checkout TimescaleDB
uses: actions/checkout@v2
- name: Memory test
run: |
./scripts/docker-run-memory-test.sh

View File

@ -73,55 +73,6 @@ jobs:
after_script:
- docker rm -f docker_arm_emulator
- if: (type = cron) OR (branch = prerelease_test)
stage: test
name: "ABI breakage smoketest 11.0"
before_install:
install:
after_failure:
after_script:
script:
- PG_MAJOR=11 PG_MINOR_COMPILE=0 bash -x ./scripts/docker-run-abi-test.sh
- if: (type = cron) OR (branch = prerelease_test)
stage: test
name: "ABI breakage smoketest 12.0"
before_install:
install:
after_failure:
after_script:
script:
- PG_MAJOR=12 PG_MINOR_COMPILE=0 bash -x ./scripts/docker-run-abi-test.sh
# Memory spike test when running out of order random inserts into timescaledb database
- if: (type = cron) OR (branch = prerelease_test)
stage: test
name: "Memory leak on insert tests"
before_install:
install:
after_failure:
after_success:
after_script:
env:
- PG_VERSION=12.3
before_script:
script:
- bash ./scripts/docker-run-memory-test.sh
# Sanitizer tests
- if: (type = cron) OR (branch = prerelease_test)
stage: test
name: "ASAN and UBSAN tests"
before_install:
install:
after_failure:
before_script:
script:
# TEST_MAX specifies the maximum test # to go up to
- TIMESCALE_DIR=$TRAVIS_BUILD_DIR bash ./scripts/test_sanitizers.sh
after_script:
- kill $(jobs -p) # kill job that prints repeatedly
# Coverity tests
- if: (branch = coverity_scan) OR (branch = coverity_scan_11)

View File

@ -34,28 +34,28 @@ create_base_container() {
# Run a Postgres container
docker run -u postgres -d --name $1 -v ${BASE_DIR}:/src -v ${COMPILE_VOLUME}:/compile $2
# Install build dependencies
docker exec -u root -it $1 /bin/bash -c "apk add --no-cache --virtual .build-deps coreutils dpkg-dev gcc libc-dev make util-linux-dev diffutils cmake bison flex openssl-dev && mkdir -p /build/debug"
docker exec -u root $1 /bin/bash -c "apk add --no-cache --virtual .build-deps coreutils dpkg-dev gcc libc-dev make util-linux-dev diffutils cmake bison flex openssl-dev && mkdir -p /build/debug"
# Copy the source files to build directory
docker exec -u root -it $1 /bin/bash -c "cp -a /src/{src,sql,scripts,test,tsl,CMakeLists.txt,timescaledb.control.in,version.config} /build/ && cd /build/debug/ && CFLAGS=-Werror cmake .. -DCMAKE_BUILD_TYPE=Debug -DREGRESS_CHECKS=OFF && make -C /build/debug install && chown -R postgres /build"
docker exec -u root $1 /bin/bash -c "cp -a /src/{src,sql,scripts,test,tsl,CMakeLists.txt,timescaledb.control.in,version.config} /build/ && cd /build/debug/ && CFLAGS=-Werror cmake .. -DCMAKE_BUILD_TYPE=Debug -DREGRESS_CHECKS=OFF && make -C /build/debug install && chown -R postgres /build"
}
create_base_container $CONTAINER_NAME_COMPILE $PG_IMAGE_TAG_COMPILE
docker exec -u root -it $CONTAINER_NAME_COMPILE /bin/bash -c "cp /build/debug/src/*.so /compile && cp /build/debug/src/loader/*.so /compile"
docker exec -u root $CONTAINER_NAME_COMPILE /bin/bash -c "cp /build/debug/src/*.so /compile && cp /build/debug/src/loader/*.so /compile"
docker rm -f $CONTAINER_NAME_COMPILE
create_base_container $CONTAINER_NAME_RUN $PG_IMAGE_TAG_RUN
docker exec -u root -it $CONTAINER_NAME_RUN /bin/bash -c "cp /compile/* \`pg_config --pkglibdir\`/"
docker exec -u root $CONTAINER_NAME_RUN /bin/bash -c "cp /compile/* \`pg_config --pkglibdir\`/"
# Run tests, allow continuation after error to get regressions.diffs
set +e
docker exec -u postgres -it ${CONTAINER_NAME_RUN} /bin/bash -c "make -C /build/debug regresscheck TEST_INSTANCE_OPTS='--temp-instance=/tmp/pgdata --temp-config=/build/test/postgresql.conf'"
docker exec -u postgres ${CONTAINER_NAME_RUN} /bin/bash -c "make -C /build/debug regresscheck TEST_INSTANCE_OPTS='--temp-instance=/tmp/pgdata --temp-config=/build/test/postgresql.conf'"
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
docker exec -it ${CONTAINER_NAME_RUN} cat /build/debug/test/regression.diffs
docker exec ${CONTAINER_NAME_RUN} cat /build/debug/test/regression.diffs
fi
exit $EXIT_CODE

View File

@ -39,7 +39,7 @@ cleanup() {
docker_exec() {
# Echo to stderr
>&2 echo -e "\033[1m$1\033[0m: $2"
docker exec -it $1 /bin/bash -c "$2"
docker exec $1 /bin/bash -c "$2"
}
wait_for_pg() {