Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
8d28c55
chore: asynchronous IO for connection fiber
kostasrim Nov 17, 2025
ec18a18
simple workflows + testing infra
kostasrim Nov 28, 2025
d587691
revert logs
kostasrim Nov 28, 2025
334ade2
helio
kostasrim Nov 28, 2025
f5b2787
try to manually trigger v2 regtest workflow
kostasrim Nov 28, 2025
74428b5
revert
kostasrim Nov 28, 2025
ae7188d
try
kostasrim Nov 28, 2025
1a5c383
fixes
kostasrim Nov 28, 2025
380cfde
comments
kostasrim Dec 2, 2025
5eb6dc9
comments
kostasrim Dec 3, 2025
4664e4b
comments
kostasrim Dec 3, 2025
53b70fa
comments
kostasrim Dec 4, 2025
dcb1594
order
kostasrim Dec 4, 2025
cd236ab
handle migrations
kostasrim Dec 4, 2025
2c5fc71
helio
kostasrim Dec 5, 2025
79a9370
fixes
kostasrim Dec 5, 2025
619ac9f
tests
kostasrim Dec 5, 2025
0f2c0be
fixes
kostasrim Dec 8, 2025
1c0b157
revert helio
kostasrim Dec 8, 2025
ed237d1
chore: helio
kostasrim Dec 9, 2025
da8ba1d
fix broken
kostasrim Dec 9, 2025
3e4727d
CI
kostasrim Dec 9, 2025
05181be
Merge branch 'main' into kpr31
kostasrim Dec 9, 2025
ee632c5
skip
kostasrim Dec 9, 2025
0b2b127
Merge branch 'main' into kpr31
kostasrim Dec 9, 2025
8cc279a
helio
kostasrim Dec 9, 2025
d8f3f03
pop
kostasrim Dec 9, 2025
af32a6e
manual trigger
kostasrim Dec 9, 2025
fbf0266
helio
kostasrim Dec 10, 2025
6210e17
one to rull them all
kostasrim Dec 10, 2025
b657fe8
pollhup on migration path
kostasrim Dec 10, 2025
bb4e230
preemption point
kostasrim Dec 10, 2025
ba35ecb
reset for all conn
kostasrim Dec 10, 2025
10d96d0
comments
kostasrim Dec 10, 2025
21a3fab
remove
kostasrim Dec 10, 2025
146ed0d
revert
kostasrim Dec 10, 2025
7221f9b
revert
kostasrim Dec 10, 2025
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
14 changes: 12 additions & 2 deletions .github/actions/regression-tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ inputs:
epoll:
required: false
type: string
df-arg:
default: ""
required: false
type: string

runs:
using: "composite"
# bring back timeouts once composite actions start supporting them
Expand Down Expand Up @@ -70,14 +75,19 @@ 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
echo "df-arg: experimental io loop v2"
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
80 changes: 80 additions & 0 deletions .github/workflows/ioloop-v2-regtests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: RegTests IoLoopV2

# Manually triggered only
on:
workflow_dispatch:

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/dragonfly_${timestamp}
fi

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