Skip to content

Commit 755dcd6

Browse files
committed
More splits
Signed-off-by: Adam Gutglick <adam@spiraldb.com>
1 parent 731e9b3 commit 755dcd6

3 files changed

Lines changed: 376 additions & 332 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 332 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ name: Linters and Tests
22

33
# Concurrency control:
44
# - PRs: new commits on a feature branch will cancel in-progress (outdated) runs.
5-
# - Push to develop: runs queue sequentially, never cancelled. This allows us to have benchmarks
6-
# run on every commit for our benchmarks website.
5+
# - Push to develop: runs queue sequentially, never cancelled.
76
# - `workflow_dispatch`: groups by branch and queues if run on develop.
87
concurrency:
98
group: ${{ github.workflow }}-${{ github.ref }}
@@ -292,313 +291,6 @@ jobs:
292291
exit 1
293292
fi
294293
295-
rust-coverage:
296-
name: "Rust tests (coverage) (${{ matrix.suite }})"
297-
timeout-minutes: 30
298-
permissions:
299-
id-token: write
300-
strategy:
301-
matrix:
302-
include:
303-
- suite: tests
304-
runs-on: >-
305-
${{ github.repository == 'vortex-data/vortex'
306-
&& format('runs-on={0}/runner=amd64-large/image=ubuntu24-full-x64-pre-v2/tag=rust-coverage-suite-{1}', github.run_id, matrix.suite)
307-
|| 'ubuntu-latest' }}
308-
env:
309-
RUSTFLAGS: "-Cinstrument-coverage -A warnings"
310-
CARGO_INCREMENTAL: 0 # Disable incremental compilation to get accurate coverage
311-
LLVM_PROFILE_FILE: "target/coverage/vortex-%p-%m.profraw"
312-
GRCOV_OUTPUT_FILE: "target/coverage/vortex.lcov"
313-
steps:
314-
- uses: runs-on/action@v2
315-
if: github.repository == 'vortex-data/vortex'
316-
with:
317-
sccache: s3
318-
- uses: actions/checkout@v6
319-
- uses: ./.github/actions/setup-prebuild
320-
- name: Rust Tests
321-
if: ${{ matrix.suite == 'tests' }}
322-
run: |
323-
cargo nextest run --locked --workspace --all-features --no-fail-fast
324-
- name: Generate coverage report
325-
run: |
326-
grcov . --binary-path target/debug/ -s . -t lcov --llvm --ignore-not-existing \
327-
--threads $(nproc) \
328-
--ignore '../*' --ignore '/*' --ignore 'fuzz/*' --ignore 'vortex-bench/*' \
329-
--ignore 'home/*' --ignore 'xtask/*' --ignore 'target/*' --ignore 'vortex-error/*' \
330-
--ignore 'vortex-python/*' --ignore 'vortex-jni/*' --ignore 'vortex-flatbuffers/*' \
331-
--ignore 'vortex-proto/*' --ignore 'vortex-tui/*' --ignore 'vortex-datafusion/examples/*' \
332-
--ignore 'vortex-ffi/examples/*' --ignore '*/arbitrary/*' --ignore '*/arbitrary.rs' --ignore 'vortex-cxx/*' \
333-
--ignore benchmarks/* --ignore 'vortex-test/*' \
334-
-o ${{ env.GRCOV_OUTPUT_FILE }}
335-
- name: Codecov
336-
uses: codecov/codecov-action@v5
337-
with:
338-
name: run-${{ matrix.suite }}
339-
files: ${{ env.GRCOV_OUTPUT_FILE }}
340-
disable_search: true
341-
flags: ${{ matrix.suite }}
342-
use_oidc: true
343-
344-
rust-test-sanitizer:
345-
strategy:
346-
fail-fast: false
347-
matrix:
348-
include:
349-
# We don't run memory sanitizer as it provides many false positives
350-
# for std
351-
- sanitizer: asan
352-
sanitizer_flags: "-Zsanitizer=address,leak"
353-
- sanitizer: tsan
354-
sanitizer_flags: "-Zsanitizer=thread"
355-
name: "Rust tests (${{ matrix.sanitizer }})"
356-
runs-on: >-
357-
${{ github.repository == 'vortex-data/vortex'
358-
&& format('runs-on={0}/pool=amd64-medium-pre-v2/tag=rust-test-sanitizer', github.run_id)
359-
|| 'ubuntu-latest' }}
360-
timeout-minutes: 30
361-
env:
362-
ASAN_OPTIONS: "symbolize=1:check_initialization_order=1:detect_leaks=1:leak_check_at_exit=1"
363-
LSAN_OPTIONS: "report_objects=1"
364-
ASAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
365-
MSAN_OPTIONS: "symbolize=1"
366-
MSAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
367-
TSAN_OPTIONS: "symbolize=1:suppressions=${{ github.workspace }}/vortex-ffi/tsan_suppressions.txt"
368-
TSAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
369-
VORTEX_SKIP_SLOW_TESTS: "1"
370-
# -Cunsafe-allow-abi-mismatch=sanitizer: libraries like compiler_builtins
371-
# unset -Zsanitizer flag and we should allow that.
372-
RUSTFLAGS: "-A warnings -Cunsafe-allow-abi-mismatch=sanitizer -C debuginfo=2 -C opt-level=0 -C strip=none"
373-
steps:
374-
- uses: runs-on/action@v2
375-
if: github.repository == 'vortex-data/vortex'
376-
with:
377-
sccache: s3
378-
- uses: actions/checkout@v6
379-
- uses: ./.github/actions/setup-prebuild
380-
- name: Install Rust nightly toolchain
381-
run: |
382-
rustup toolchain install $NIGHTLY_TOOLCHAIN
383-
rustup component add --toolchain $NIGHTLY_TOOLCHAIN rust-src rustfmt clippy llvm-tools-preview
384-
- name: Build tests with sanitizer
385-
run: |
386-
RUSTFLAGS="${RUSTFLAGS} ${{ matrix.sanitizer_flags }}" \
387-
cargo +$NIGHTLY_TOOLCHAIN build --locked --all-features \
388-
--target x86_64-unknown-linux-gnu -Zbuild-std \
389-
-p vortex-buffer -p vortex-fastlanes -p vortex-fsst -p vortex-alp -p vortex-array
390-
391-
- name: Run tests with sanitizer
392-
run: |
393-
RUSTFLAGS="${RUSTFLAGS} ${{ matrix.sanitizer_flags }}" \
394-
cargo +$NIGHTLY_TOOLCHAIN nextest run --locked --all-features \
395-
--target x86_64-unknown-linux-gnu --no-fail-fast -Zbuild-std \
396-
-p vortex-buffer -p vortex-fastlanes -p vortex-fsst -p vortex-alp -p vortex-array
397-
398-
# vortex-ffi requires --no-default-features as otherwise we pull in
399-
# Mimalloc which interferes with sanitizers
400-
# cargo nextest reports less sanitizer issues than cargo test
401-
# TODO(myrrc): remove --no-default-features once we make Mimalloc opt-in
402-
- name: Run vortex-ffi tests with sanitizer
403-
run: |
404-
RUSTFLAGS="${RUSTFLAGS} ${{ matrix.sanitizer_flags }}" \
405-
cargo +$NIGHTLY_TOOLCHAIN test --locked --no-default-features \
406-
--target x86_64-unknown-linux-gnu --no-fail-fast -Zbuild-std \
407-
-p vortex-ffi -- --no-capture
408-
409-
rust-ffi-test-sanitizer:
410-
strategy:
411-
fail-fast: false
412-
matrix:
413-
include:
414-
# We don't run memory sanitizer as it's clang-only and provides many
415-
# false positives for Catch2
416-
- sanitizer: asan
417-
sanitizer_flags: "-Zsanitizer=address,leak"
418-
- sanitizer: tsan
419-
sanitizer_flags: "-Zsanitizer=thread"
420-
name: "Rust/C++ FFI tests (${{ matrix.sanitizer }})"
421-
timeout-minutes: 30
422-
env:
423-
ASAN_OPTIONS: "symbolize=1:check_initialization_order=1:detect_leaks=1:leak_check_at_exit=1"
424-
LSAN_OPTIONS: "report_objects=1"
425-
ASAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
426-
MSAN_OPTIONS: "symbolize=1"
427-
MSAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
428-
TSAN_OPTIONS: "symbolize=1"
429-
TSAN_SYMBOLIZER_PATH: "/usr/bin/llvm-symbolizer"
430-
VORTEX_SKIP_SLOW_TESTS: "1"
431-
# -Cunsafe-allow-abi-mismatch=sanitizer: libraries like compiler_builtins
432-
# unset -Zsanitizer flag and we should allow that.
433-
runs-on: >-
434-
${{ github.repository == 'vortex-data/vortex'
435-
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre-v2/tag=rust-ffi-test-sanitizer', github.run_id)
436-
|| 'ubuntu-latest' }}
437-
steps:
438-
- uses: runs-on/action@v2
439-
if: github.repository == 'vortex-data/vortex'
440-
with:
441-
sccache: s3
442-
- uses: actions/checkout@v6
443-
- uses: ./.github/actions/setup-prebuild
444-
- name: Install rustfilt
445-
run: |
446-
cargo install rustfilt
447-
- name: Install Rust nightly toolchain
448-
run: |
449-
rustup toolchain install $NIGHTLY_TOOLCHAIN
450-
rustup component add --toolchain $NIGHTLY_TOOLCHAIN rust-src rustfmt clippy llvm-tools-preview
451-
- name: Build FFI library
452-
run: |
453-
# TODO(myrrc): remove --no-default-features
454-
RUSTFLAGS="-A warnings -Cunsafe-allow-abi-mismatch=sanitizer \
455-
-C debuginfo=2 -C opt-level=0 -C strip=none -Zexternal-clangrt \
456-
${{ matrix.sanitizer_flags }}" \
457-
cargo +$NIGHTLY_TOOLCHAIN build --locked --no-default-features \
458-
--target x86_64-unknown-linux-gnu -Zbuild-std \
459-
-p vortex-ffi
460-
- name: Build FFI library tests
461-
run: |
462-
cd vortex-ffi
463-
cmake -Bbuild -DBUILD_TESTS=1 -DSANITIZER=${{ matrix.sanitizer }} -DTARGET_TRIPLE="x86_64-unknown-linux-gnu"
464-
cmake --build build -j
465-
- name: Run tests
466-
run: |
467-
set -o pipefail
468-
./vortex-ffi/build/test/vortex_ffi_test 2>&1 | rustfilt -i-
469-
470-
cuda-build-lint:
471-
if: github.repository == 'vortex-data/vortex'
472-
name: "CUDA build & lint"
473-
timeout-minutes: 30
474-
runs-on: runs-on=${{ github.run_id }}/runner=gpu/tag=cuda-build
475-
steps:
476-
- uses: runs-on/action@v2
477-
with:
478-
sccache: s3
479-
- uses: actions/checkout@v6
480-
- uses: ./.github/actions/setup-rust
481-
with:
482-
repo-token: ${{ secrets.GITHUB_TOKEN }}
483-
- uses: ./.github/actions/check-rebuild
484-
with:
485-
command: >-
486-
cargo build --profile ci --locked --all-features --all-targets
487-
-p vortex-cuda -p vortex-cub -p vortex-nvcomp
488-
-p gpu-scan-cli -p vortex-test-e2e-cuda
489-
- name: Clippy CUDA crates
490-
run: |
491-
cargo clippy --profile ci --locked --all-features --all-targets \
492-
-p vortex-cuda \
493-
-p vortex-cub \
494-
-p vortex-nvcomp \
495-
-p gpu-scan-cli \
496-
-p vortex-test-e2e-cuda \
497-
-- -D warnings
498-
499-
cuda-test:
500-
if: github.repository == 'vortex-data/vortex'
501-
name: "CUDA tests"
502-
timeout-minutes: 30
503-
runs-on: runs-on=${{ github.run_id }}/runner=gpu/tag=cuda-tests
504-
steps:
505-
- uses: runs-on/action@v2
506-
with:
507-
sccache: s3
508-
- name: Display NVIDIA SMI details
509-
run: |
510-
nvidia-smi
511-
nvidia-smi -L
512-
nvidia-smi -q -d Memory
513-
- uses: actions/checkout@v6
514-
- uses: ./.github/actions/setup-rust
515-
with:
516-
repo-token: ${{ secrets.GITHUB_TOKEN }}
517-
- name: Install nextest
518-
uses: taiki-e/install-action@v2
519-
with:
520-
tool: nextest
521-
- name: Rust Tests
522-
env:
523-
FLAT_LAYOUT_INLINE_ARRAY_NODE: true
524-
run: |
525-
cargo nextest run \
526-
--cargo-profile ci \
527-
--locked \
528-
-p vortex-file \
529-
-p vortex-cuda \
530-
-p vortex-cub \
531-
-p vortex-nvcomp \
532-
-p vortex-test-e2e-cuda \
533-
--all-features \
534-
--no-fail-fast \
535-
--target x86_64-unknown-linux-gnu \
536-
--verbose
537-
538-
cuda-test-sanitizer:
539-
if: github.repository == 'vortex-data/vortex'
540-
name: "CUDA tests (${{ matrix.sanitizer }})"
541-
timeout-minutes: 30
542-
runs-on: runs-on=${{ github.run_id }}/runner=gpu/tag=cuda-test-sanitizer
543-
strategy:
544-
fail-fast: false
545-
matrix:
546-
include:
547-
- sanitizer: memcheck
548-
runner_flags: "--tool memcheck --leak-check=full --error-exitcode 1"
549-
# TODO(joe): try to re-enable racecheck, it is hanging in CI.
550-
# - sanitizer: racecheck
551-
# runner_flags: "--tool racecheck --error-exitcode 1"
552-
- sanitizer: synccheck
553-
runner_flags: "--tool synccheck --error-exitcode 1"
554-
- sanitizer: initcheck
555-
runner_flags: "--tool initcheck --error-exitcode 1"
556-
steps:
557-
- uses: runs-on/action@v2
558-
with:
559-
sccache: s3
560-
- name: Display NVIDIA SMI details
561-
run: |
562-
nvidia-smi
563-
nvidia-smi -L
564-
nvidia-smi -q -d Memory
565-
- uses: actions/checkout@v6
566-
- uses: ./.github/actions/setup-rust
567-
with:
568-
repo-token: ${{ secrets.GITHUB_TOKEN }}
569-
- name: Build tests
570-
run: cargo test --profile ci --locked -p vortex-cuda --all-features --target x86_64-unknown-linux-gnu --no-run
571-
- name: "CUDA - ${{ matrix.sanitizer }}"
572-
env:
573-
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER: "compute-sanitizer ${{ matrix.runner_flags }}"
574-
run: cargo test --profile ci --locked -p vortex-cuda --all-features --target x86_64-unknown-linux-gnu
575-
576-
cuda-test-cudf:
577-
if: github.repository == 'vortex-data/vortex'
578-
name: "CUDA tests (cudf)"
579-
timeout-minutes: 30
580-
runs-on: runs-on=${{ github.run_id }}/runner=gpu/tag=cuda-test-cudf
581-
steps:
582-
- uses: runs-on/action@v2
583-
with:
584-
sccache: s3
585-
- name: Display NVIDIA SMI details
586-
run: |
587-
nvidia-smi
588-
nvidia-smi -L
589-
nvidia-smi -q -d Memory
590-
- uses: actions/checkout@v6
591-
- uses: ./.github/actions/setup-rust
592-
with:
593-
repo-token: ${{ secrets.GITHUB_TOKEN }}
594-
- name: Build cudf test library
595-
run: cargo build --profile ci --locked -p vortex-test-e2e-cuda --target x86_64-unknown-linux-gnu
596-
- name: Download and run cudf-test-harness
597-
run: |
598-
curl -fsSL https://github.com/vortex-data/cudf-test-harness/releases/latest/download/cudf-test-harness-x86_64.tar.gz | tar -xz
599-
cd cudf-test-harness-x86_64
600-
compute-sanitizer --tool memcheck --error-exitcode 1 ./cudf-test-harness check $GITHUB_WORKSPACE/target/x86_64-unknown-linux-gnu/ci/libvortex_test_e2e_cuda.so
601-
602294
rust-test-other:
603295
name: "Rust tests (${{ matrix.os }})"
604296
timeout-minutes: 30
@@ -758,29 +450,6 @@ jobs:
758450
- run: wasmer run ./target/wasm32-wasip1/ci/wasm-test.wasm
759451
working-directory: ./wasm-test
760452

761-
miri:
762-
name: "Rust tests (miri)"
763-
runs-on: >-
764-
${{ github.repository == 'vortex-data/vortex'
765-
&& format('runs-on={0}/runner=amd64-medium/image=ubuntu24-full-x64-pre-v2/tag=rust-miri', github.run_id)
766-
|| 'ubuntu-latest' }}
767-
timeout-minutes: 30
768-
env:
769-
MIRIFLAGS: -Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation -Zmiri-env-forward=RUST_BACKTRACE
770-
RUSTFLAGS: "-A warnings"
771-
RUST_BACKTRACE: full
772-
steps:
773-
- uses: runs-on/action@v2
774-
if: github.repository == 'vortex-data/vortex'
775-
with:
776-
sccache: s3
777-
- uses: actions/checkout@v6
778-
- uses: ./.github/actions/setup-prebuild
779-
- name: Install nightly with miri
780-
run: rustup toolchain install $NIGHTLY_TOOLCHAIN --component rust-src,rustfmt,clippy,miri
781-
- name: Run Miri
782-
run: cargo +$NIGHTLY_TOOLCHAIN miri nextest run --no-fail-fast -p vortex-buffer -p vortex-ffi
783-
784453
generated-files:
785454
name: "Check generated source files are up to date"
786455
runs-on: >-

0 commit comments

Comments
 (0)