Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/actions/regression-tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ inputs:
epoll:
required: false
type: string
df-arg:
required: false
type: string

runs:
using: "composite"
Expand All @@ -55,14 +58,18 @@ runs:
export ROOT_DIR="${GITHUB_WORKSPACE}/tests/dragonfly/valkey_search"
export UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 # to crash on errors

if [[ "${{inputs.df-arg}}" == 'experimental_io_loop_v2' ]]; then
export DF_ARG="--df experimental_io_loop_v2=true"
fi

if [[ "${{inputs.epoll}}" == 'epoll' ]]; then
export FILTER="${{inputs.filter}} and not exclude_epoll"
# Run only replication tests with epoll
timeout 80m pytest -m "$FILTER" --durations=10 --timeout=300 --color=yes --json-report --json-report-file=report.json dragonfly --df force_epoll=true --log-cli-level=INFO || code=$?
timeout 80m pytest -m "$FILTER" --durations=10 --timeout=300 --color=yes --json-report --json-report-file=report.json dragonfly $DF_ARG --df force_epoll=true --log-cli-level=INFO || code=$?
else
export FILTER="${{inputs.filter}}"
# Run only replication tests with iouring
timeout 80m pytest -m "$FILTER" --durations=10 --timeout=300 --color=yes --json-report --json-report-file=report.json dragonfly --log-cli-level=INFO || code=$?
timeout 80m pytest -m "$FILTER" --durations=10 --timeout=300 --color=yes --json-report --json-report-file=report.json dragonfly $DF_ARG --log-cli-level=INFO || code=$?
fi

# timeout returns 124 if we exceeded the timeout duration
Expand Down
81 changes: 81 additions & 0 deletions .github/workflows/ioloop-v2-regtests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: RegTests IoLoopV2

# Manually triggered only
on:
workflow_dispatch:
push:

jobs:
build:
strategy:
matrix:
# Test of these containers
container: ["ubuntu-dev:20"]
proactor: [Uring]
build-type: [Debug, Release]
runner: [ubuntu-latest, [self-hosted, linux, ARM64]]

runs-on: ${{ matrix.runner }}

container:
image: ghcr.io/romange/${{ matrix.container }}
options: --security-opt seccomp=unconfined --sysctl "net.ipv6.conf.all.disable_ipv6=0"
volumes:
- /var/crash:/var/crash

steps:
- uses: actions/checkout@v5
with:
submodules: true

- name: Print environment info
run: |
cat /proc/cpuinfo
ulimit -a
env

- name: Configure & Build
run: |
# -no-pie to disable address randomization so we could symbolize stacktraces
cmake -B ${GITHUB_WORKSPACE}/build -DCMAKE_BUILD_TYPE=${{matrix.build-type}} -GNinja \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DPRINT_STACKTRACES_ON_SIGNAL=ON \
-DCMAKE_CXX_FLAGS=-no-pie -DHELIO_STACK_CHECK:STRING=4096

cd ${GITHUB_WORKSPACE}/build && ninja dragonfly
pwd
ls -l ..

- name: Run regression tests action
uses: ./.github/actions/regression-tests
with:
dfly-executable: dragonfly
gspace-secret: ${{ secrets.GSPACES_BOT_DF_BUILD }}
build-folder-name: build
filter: ${{ matrix.build-type == 'Release' && 'not debug_only and not tls' || 'not opt_only and not tls' }}
aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_S3_ACCESS_SECRET }}
s3-bucket: ${{ secrets.S3_REGTEST_BUCKET }}
df-arg: "experimental_io_loop_v2"

- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: logs
path: /tmp/failed/*

- name: Copy binary on a self hosted runner
if: failure()
run: |
# We must use sh syntax.
if [ "$RUNNER_ENVIRONMENT" = "self-hosted" ]; then
cd ${GITHUB_WORKSPACE}/build
timestamp=$(date +%Y-%m-%d_%H:%M:%S)
mv ./dragonfly /var/crash/dragonfy_${timestamp}
fi

lint-test-chart:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: ./.github/actions/lint-test-chart
Loading
Loading