
The core idea was to take a lot of the stuff from the C unity framework and adapt it a bit here. Each file in the `unit` directory that starts with `test_` is automatically assumed to be a test suite. Within each file, all functions that start with `test_` are assumed to be a test. See unit/README.md for details about the implementation. Instead of compiling basically a net new binary, the way the tests are compiled is that the main valkey server is compiled as a static archive, which we then compile the individual test files against to create a new test executable. This is not all that important now, other than it makes the compilation simpler, but what it will allow us to do is overwrite functions in the archive to enable mocking for cross compilation unit functions. There are also ways to enable mocking from within the same compilation unit, but I don't know how important this is. Tests are also written in one of two styles: 1. Including the header file and directly calling functions from the archive. 2. Importing the original file, and then calling the functions. This second approach is cool because we can call static functions. It won't mess up the archive either. --------- Signed-off-by: Madelyn Olson <madelyneolson@gmail.com>
1070 lines
49 KiB
YAML
1070 lines
49 KiB
YAML
name: Daily
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
# any PR to a release branch.
|
|
- '[0-9].[0-9]'
|
|
schedule:
|
|
- cron: '0 0 * * *'
|
|
workflow_dispatch:
|
|
inputs:
|
|
skipjobs:
|
|
description: 'jobs to skip (delete the ones you wanna keep, do not leave empty)'
|
|
default: 'valgrind,sanitizer,tls,freebsd,macos,alpine,32bit,iothreads,ubuntu,centos,malloc,specific,fortify,reply-schema'
|
|
skiptests:
|
|
description: 'tests to skip (delete the ones you wanna keep, do not leave empty)'
|
|
default: 'valkey,modules,sentinel,cluster,unittest'
|
|
test_args:
|
|
description: 'extra test arguments'
|
|
default: ''
|
|
cluster_test_args:
|
|
description: 'extra cluster / sentinel test arguments'
|
|
default: ''
|
|
use_repo:
|
|
description: 'repo owner and name'
|
|
default: 'valkey-io/valkey'
|
|
use_git_ref:
|
|
description: 'git branch or sha to use'
|
|
default: 'unstable'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
|
|
test-ubuntu-jemalloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'ubuntu')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make all-with-unit-tests SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
- name: legacy unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-server test all --accurate
|
|
- name: new unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-unit-tests --accurate
|
|
|
|
test-ubuntu-jemalloc-fortify:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'fortify')
|
|
container: ubuntu:lunar
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
apt-get update && apt-get install -y make gcc-13
|
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
|
|
make CC=gcc SERVER_CFLAGS='-Werror -DSERVER_TEST -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
|
- name: testprep
|
|
run: apt-get install -y tcl8.6 tclx procps
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
- name: legacy unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-server test all --accurate
|
|
- name: new unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: make valkey-unit-tests && ./src/valkey-unit-tests --accurate
|
|
|
|
test-ubuntu-libc-malloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'malloc')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make MALLOC=libc SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-ubuntu-no-malloc-usable-size:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'malloc')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make MALLOC=libc CFLAGS=-DNO_MALLOC_USABLE_SIZE SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-ubuntu-32bit:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, '32bit')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
sudo apt-get update && sudo apt-get install libc6-dev-i386
|
|
make 32bit SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
make -C tests/modules 32bit # the script below doesn't have an argument, we must build manually ahead of time
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
- name: legacy unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-server test all --accurate
|
|
- name: new unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-unit-tests --accurate
|
|
|
|
test-ubuntu-tls:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
make BUILD_TLS=yes SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx tcl-tls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --accurate --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel --tls ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: |
|
|
./runtest-cluster --tls ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-ubuntu-tls-no-tls:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
make BUILD_TLS=yes SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx tcl-tls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: |
|
|
./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-ubuntu-io-threads:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'iothreads')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
make SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
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
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster --config io-threads 4 --config io-threads-do-reads yes ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-ubuntu-reclaim-cache:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'specific')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
make SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install vmtouch
|
|
mkdir /tmp/master
|
|
mkdir /tmp/slave
|
|
- name: warm up
|
|
run: |
|
|
./src/valkey-server --daemonize yes --logfile /dev/null
|
|
./src/valkey-benchmark -n 1 > /dev/null
|
|
./src/valkey-cli save | grep OK > /dev/null
|
|
vmtouch -v ./dump.rdb > /dev/null
|
|
- name: test
|
|
run: |
|
|
echo "test SAVE doesn't increase cache"
|
|
CACHE0=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE0"
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/master --port 8080 --repl-diskless-sync no --pidfile /tmp/master/valkey.pid --rdbcompression no --enable-debug-command yes
|
|
./src/valkey-cli -p 8080 debug populate 10000 k 102400
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/slave --port 8081 --repl-diskless-load disabled --rdbcompression no
|
|
./src/valkey-cli -p 8080 save > /dev/null
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
|
|
echo "test replication doesn't increase cache"
|
|
./src/valkey-cli -p 8081 REPLICAOF 127.0.0.1 8080 > /dev/null
|
|
while [ $(./src/valkey-cli -p 8081 info replication | grep "master_link_status:down") ]; do sleep 1; done;
|
|
sleep 1 # wait for the completion of cache reclaim bio
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
VMOUT=$(vmtouch -v /tmp/slave/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
|
|
echo "test reboot doesn't increase cache"
|
|
PID=$(cat /tmp/master/valkey.pid)
|
|
kill -15 $PID
|
|
while [ -x /proc/${PID} ]; do sleep 1; done
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/master --port 8080
|
|
while [ $(./src/valkey-cli -p 8080 info persistence | grep "loading:1") ]; do sleep 1; done;
|
|
sleep 1 # wait for the completion of cache reclaim bio
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
|
|
test-valgrind-test:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !contains(github.event.inputs.skiptests, 'valkey')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make valgrind SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
|
|
test-valgrind-misc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !(contains(github.event.inputs.skiptests, 'modules') && contains(github.event.inputs.skiptests, 'unittest'))
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make valgrind SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, '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/valkey-server test all --valgrind
|
|
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
|
|
|
test-valgrind-no-malloc-usable-size-test:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !contains(github.event.inputs.skiptests, 'valkey')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE -DSERVER_TEST" SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
|
|
test-valgrind-no-malloc-usable-size-misc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !(contains(github.event.inputs.skiptests, 'modules') && contains(github.event.inputs.skiptests, 'unittest'))
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE -DSERVER_TEST" SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, '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/valkey-server test all --valgrind
|
|
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
|
|
|
test-sanitizer-address:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer')
|
|
timeout-minutes: 14400
|
|
strategy:
|
|
matrix:
|
|
compiler: [ gcc, clang ]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make all-with-unit-tests SANITIZER=address SERVER_CFLAGS='-DSERVER_TEST -Werror -DDEBUG_ASSERTIONS'
|
|
- name: testprep
|
|
# Work around ASAN issue, see https://github.com/google/sanitizers/issues/1716
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
sudo sysctl vm.mmap_rnd_bits=28
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
- name: legacy unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-server test all
|
|
- name: new unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-unit-tests
|
|
|
|
test-sanitizer-undefined:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer')
|
|
timeout-minutes: 14400
|
|
strategy:
|
|
matrix:
|
|
compiler: [ gcc, clang ]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make all-with-unit-tests SANITIZER=undefined SERVER_CFLAGS='-DSERVER_TEST -Werror' LUA_DEBUG=yes # we (ab)use this flow to also check Lua C API violations
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
- name: legacy unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-server test all --accurate
|
|
- name: new unit tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: ./src/valkey-unit-tests --accurate
|
|
|
|
test-centos7-jemalloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'centos')
|
|
container: centos:7
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
yum -y install gcc make
|
|
make SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: yum -y install which tcl tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-centos7-tls-module:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
container: centos:7
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- 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=module SERVER_CFLAGS='-Werror'"
|
|
- name: testprep
|
|
run: |
|
|
yum -y install tcl tcltls tclx
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --accurate --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: |
|
|
./runtest-cluster --tls-module ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-centos7-tls-module-no-tls:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
container: centos:7
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- 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=module SERVER_CFLAGS='-Werror'"
|
|
- name: testprep
|
|
run: |
|
|
yum -y install tcl tcltls tclx
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: |
|
|
./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-macos-latest:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !(contains(github.event.inputs.skiptests, 'valkey') && contains(github.event.inputs.skiptests, 'modules'))
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror'
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
|
|
|
|
test-macos-latest-sentinel:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror'
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-macos-latest-cluster:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !contains(github.event.inputs.skiptests, 'cluster')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror'
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
build-macos:
|
|
strategy:
|
|
matrix:
|
|
os: [macos-11, macos-13]
|
|
runs-on: ${{ matrix.os }}
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- uses: maxim-lobanov/setup-xcode@v1
|
|
with:
|
|
xcode-version: latest
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror -DSERVER_TEST'
|
|
|
|
test-freebsd:
|
|
runs-on: macos-12
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'freebsd')
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: test
|
|
uses: cross-platform-actions/action@v0.22.0
|
|
with:
|
|
operating_system: freebsd
|
|
environment_variables: MAKE
|
|
version: 13.2
|
|
shell: bash
|
|
run: |
|
|
sudo pkg install -y bash gmake lang/tcl86 lang/tclx
|
|
gmake
|
|
./runtest --single unit/keyspace --single unit/auth --single unit/networking --single unit/protocol
|
|
|
|
test-alpine-jemalloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'alpine')
|
|
container: alpine:latest
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
apk add build-base
|
|
make SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: apk add tcl procps tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
test-alpine-libc-malloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'alpine')
|
|
container: alpine:latest
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: |
|
|
apk add build-base
|
|
make SERVER_CFLAGS='-Werror' USE_JEMALLOC=no CFLAGS=-DUSE_MALLOC_USABLE_SIZE
|
|
- name: testprep
|
|
run: apk add tcl procps tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster ${{github.event.inputs.cluster_test_args}}
|
|
|
|
reply-schemas-validator:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 14400
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' || (github.event_name != 'workflow_dispatch' && github.repository == 'valkey-io/valkey')) &&
|
|
!contains(github.event.inputs.skipjobs, 'reply-schema')
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror -DLOG_REQ_RES'
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --log-req-res --no-latency --dont-clean --force-resp3 --tags -slow --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --log-req-res --no-latency --dont-clean --force-resp3 --dont-pre-clean --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel --log-req-res --dont-clean --force-resp3 ${{github.event.inputs.cluster_test_args}}
|
|
- name: cluster tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'cluster')
|
|
run: ./runtest-cluster --log-req-res --dont-clean --force-resp3 ${{github.event.inputs.cluster_test_args}}
|
|
- name: Install Python dependencies
|
|
uses: py-actions/py-dependency-install@v4
|
|
with:
|
|
path: "./utils/req-res-validator/requirements.txt"
|
|
- name: validator
|
|
run: ./utils/req-res-log-validator.py --verbose --fail-missing-reply-schemas ${{ (!contains(github.event.inputs.skiptests, 'valkey') && !contains(github.event.inputs.skiptests, 'module') && !contains(github.event.inputs.sentinel, 'valkey') && !contains(github.event.inputs.skiptests, 'cluster')) && github.event.inputs.test_args == '' && github.event.inputs.cluster_test_args == '' && '--fail-commands-not-all-hit' || '' }}
|
|
|