name: Daily on: pull_request: branches: # any PR to a release branch. - '[0-9].[0-9]' schedule: - cron: '0 0 * * *' workflow_dispatch: inputs: valgrind: description: 'with valgrind' default: '1' tls: description: 'with tls' default: '1' iothreads: description: 'with io threads' default: '1' freebsd: description: 'with freebsd' default: '1' redistests: description: 'with redis tests' default: '1' moduleapi: description: 'with module api tests' default: '1' sentinel: description: 'with sentinel tests' default: '1' cluster: description: 'with cluster tests' default: '1' test_args: description: 'extra test arguments' default: '' cluster_test_args: description: 'extra cluster / sentinel test arguments' default: '' jobs: test-ubuntu-jemalloc: runs-on: ubuntu-latest if: github.repository == 'redis/redis' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make REDIS_CFLAGS='-Werror -DREDIS_TEST' - name: testprep run: sudo apt-get install tcl8.6 tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} - name: unittest run: ./src/redis-server test all test-ubuntu-libc-malloc: runs-on: ubuntu-latest if: github.repository == 'redis/redis' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make MALLOC=libc - name: testprep run: sudo apt-get install tcl8.6 tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-ubuntu-no-malloc-usable-size: runs-on: ubuntu-latest if: github.repository == 'redis/redis' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make MALLOC=libc CFLAGS=-DNO_MALLOC_USABLE_SIZE - name: testprep run: sudo apt-get install tcl8.6 tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-ubuntu-32bit: runs-on: ubuntu-latest if: github.repository == 'redis/redis' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: | sudo apt-get update && sudo apt-get install libc6-dev-i386 make 32bit REDIS_CFLAGS='-Werror -DREDIS_TEST' - name: testprep run: sudo apt-get install tcl8.6 tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: | make -C tests/modules 32bit # the script below doesn't have an argument, we must build manually ahead of time ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} - name: unittest run: ./src/redis-server test all test-ubuntu-tls: runs-on: ubuntu-latest if: github.repository == 'redis/redis' && github.event.inputs.tls != '0' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: | make BUILD_TLS=yes - name: testprep run: | sudo apt-get install tcl8.6 tclx tcl-tls ./utils/gen-test-certs.sh - name: test if: github.event.inputs.redistests != '0' run: | ./runtest --accurate --verbose --tls --dump-logs ${{github.event.inputs.test_args}} ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: | ./runtest-moduleapi --verbose --tls ${{github.event.inputs.test_args}} ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: | ./runtest-sentinel --tls ${{github.event.inputs.cluster_test_args}} ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: | ./runtest-cluster --tls ${{github.event.inputs.cluster_test_args}} ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-ubuntu-io-threads: runs-on: ubuntu-latest if: github.repository == 'redis/redis' && github.event.inputs.iothreads != '0' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: | make - name: testprep run: sudo apt-get install tcl8.6 tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --config io-threads 4 --config io-threads-do-reads yes --accurate --verbose --tags network --dump-logs ${{github.event.inputs.test_args}} - name: cluster tests run: ./runtest-cluster --config io-threads 4 --config io-threads-do-reads yes ${{github.event.inputs.cluster_test_args}} test-valgrind: runs-on: ubuntu-latest if: github.repository == 'redis/redis' && github.event.inputs.valgrind != '0' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make valgrind REDIS_CFLAGS='-Werror -DREDIS_TEST' - name: testprep run: | sudo apt-get update sudo apt-get install tcl8.6 tclx valgrind -y - name: test if: github.event.inputs.redistests != '0' run: ./runtest --valgrind --verbose --clients 1 --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 ${{github.event.inputs.test_args}} - name: unittest run: | valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/redis-server test all if grep -q 0x err.txt; then cat err.txt; exit 1; fi test-valgrind-no-malloc-usable-size: runs-on: ubuntu-latest if: github.repository == 'redis/redis' && github.event.inputs.valgrind != '0' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE" - name: testprep run: | sudo apt-get update sudo apt-get install tcl8.6 tclx valgrind -y - name: test if: github.event.inputs.redistests != '0' run: /runtest --valgrind --verbose --clients 1 --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 ${{github.event.inputs.test_args}} test-centos7-jemalloc: runs-on: ubuntu-latest if: github.repository == 'redis/redis' container: centos:7 timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: | yum -y install gcc make make - name: testprep run: yum -y install which tcl tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-centos7-tls: runs-on: ubuntu-latest if: github.repository == 'redis/redis' && github.event.inputs.tls != '0' container: centos:7 timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: | yum -y install centos-release-scl epel-release yum -y install devtoolset-7 openssl-devel openssl scl enable devtoolset-7 "make BUILD_TLS=yes" - name: testprep run: | yum -y install tcl tcltls tclx ./utils/gen-test-certs.sh - name: test if: github.event.inputs.redistests != '0' run: | ./runtest --accurate --verbose --tls --dump-logs ${{github.event.inputs.test_args}} ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: | ./runtest-moduleapi --verbose --tls ${{github.event.inputs.test_args}} ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests if: github.event.inputs.sentinel != '0' run: | ./runtest-sentinel --tls ${{github.event.inputs.cluster_test_args}} ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: | ./runtest-cluster --tls ${{github.event.inputs.cluster_test_args}} ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-macos-latest: runs-on: macos-latest if: github.repository == 'redis/redis' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: make run: make - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --no-latency --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-freebsd: runs-on: macos-latest if: github.repository == 'redis/redis' && github.event.inputs.freebsd != '0' timeout-minutes: 14400 steps: - uses: actions/checkout@v2 - name: test uses: vmactions/freebsd-vm@v0.1.4 with: usesh: true sync: rsync prepare: pkg install -y bash gmake lang/tcl86 lang/tclx run: > gmake && if [ ${{github.event.inputs.redistests}} != '0' ] ; then ./runtest --accurate --verbose --no-latency --dump-logs ${{github.event.inputs.test_args}} ; fi && if [ ${{github.event.inputs.moduleapi}} != '0' ] ; then MAKE=gmake ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} ; fi && if [ ${{github.event.inputs.sentinel}} != '0' ] ; then ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} ; fi && if [ ${{github.event.inputs.cluster}} != '0' ] ; then ./runtest-cluster ${{github.event.inputs.cluster_test_args}} ; fi test-alpine-jemalloc: runs-on: ubuntu-latest if: github.repository == 'redis/redis' container: alpine:latest steps: - uses: actions/checkout@v2 - name: make run: | apk add build-base make REDIS_CFLAGS='-Werror' - name: testprep run: apk add tcl procps tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}} test-alpine-libc-malloc: runs-on: ubuntu-latest if: github.repository == 'redis/redis' container: alpine:latest steps: - uses: actions/checkout@v2 - name: make run: | apk add build-base make REDIS_CFLAGS='-Werror' USE_JEMALLOC=no CFLAGS=-DUSE_MALLOC_USABLE_SIZE - name: testprep run: apk add tcl procps tclx - name: test if: github.event.inputs.redistests != '0' run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}} - name: module api test if: github.event.inputs.moduleapi != '0' run: ./runtest-moduleapi --verbose ${{github.event.inputs.test_args}} - name: sentinel tests run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}} - name: cluster tests if: github.event.inputs.cluster != '0' run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}