
This commit does four things: 1. On various images, the linker was not able to correctly load the flto optimizations from the archive generated for unit tests, and was throwing errors. I was able to solve this by updating the plugin for the fortify test, but was unable to reproduce it on the ASAN tests or find a solution. So I decided to go with a single solution for now, which was to just disable the linker optimizations for those tests. This shouldn't weaken the protections provided by ASAN. 2. The change to remove flto for some reason caused some odd inlining behavior in the intset test, that I wasn't really able to understand. The error was basically that we were doing a 4 byte write, starting at byte offset 8, for the first addition to listpack that was of size 10. Practically this has no effect, since I'm not aware of any allocator that would give us a 10 byte block as opposed to 12 (or more likely 16) bytes. The isn't the correct behavior, since an uninitialized listpack defaults to 16bit encoding, which should only be writing 2 bytes. I rabbit holed like 2 hours into this, and gave up and just ignored the warning on the file. 3. Now that address sanitizer was correctly running, it picked up two issues. A memory leak and uninitialized value, so those were easy to fix. 4. There is also a small change to the fortify to build the test up front instead of later, this is just to be consistent with other tests and has no functional change. Signed-off-by: Madelyn Olson <madelyneolson@gmail.com>
1076 lines
51 KiB
YAML
1076 lines
51 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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 all-with-unit-tests CC=gcc OPT=-O3 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: ./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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 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}}"
|
|
# On centos7 actions/checkout@v4 does not work, so we use v3
|
|
# ref. https://github.com/actions/checkout/issues/1487
|
|
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
|
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}}"
|
|
# On centos7 actions/checkout@v4 does not work, so we use v3
|
|
# ref. https://github.com/actions/checkout/issues/1487
|
|
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
|
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}}"
|
|
# On centos7 actions/checkout@v4 does not work, so we use v3
|
|
# ref. https://github.com/actions/checkout/issues/1487
|
|
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
repository: ${{ env.GITHUB_REPOSITORY }}
|
|
ref: ${{ env.GITHUB_HEAD_REF }}
|
|
- name: test
|
|
uses: cross-platform-actions/action@5800fa0060a22edf69992a779adac3d2bb3a6f8a # 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
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@30aa0023464ed4b5b116bd9fbdab87acf01a484e # v4.1.0
|
|
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' || '' }}
|
|
|