Skip to content

chore: Rename test-all-tables.sh to compare-all-tables.sh (#264) #128

chore: Rename test-all-tables.sh to compare-all-tables.sh (#264)

chore: Rename test-all-tables.sh to compare-all-tables.sh (#264) #128

name: TPC-DS Conformance
on:
push:
branches: [ main, master ]
paths:
- 'tpcdsgen/**'
- '.github/**'
pull_request:
branches: [ main, master ]
paths:
- 'tpcdsgen/**'
- '.github/**'
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
# Conformance testing against the Java / Trino reference implementation.
conformance-tests:
name: Conformance Tests (Java)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust dependencies
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Build Rust table generators
run: |
cargo build --release -p tpcdsgen
- name: Run conformance tests (Rust vs Java)
run: |
cd tpcdsgen
./scripts/compare-all-tables.sh
# Conformance testing against the C dsdgen reference implementation.
conformance-tests-c:
name: Conformance Tests (C dsdgen)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust dependencies
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Build Rust table generators
run: |
cargo build --release -p tpcdsgen
- name: Run conformance tests (Rust --compat c vs C dsdgen)
run: |
cd tpcdsgen
./scripts/compare-all-tables.sh --compat c
# Performance benchmarks (optional - only on main)
benchmarks:
name: Performance Benchmarks
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
needs: conformance-tests
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust dependencies
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Build release binaries
run: |
cargo build --release -p tpcdsgen
- name: Run benchmarks
run: |
# Generate all tables and time it using the unified CLI
mkdir -p /tmp/bench
time ./target/release/tpcdsgen --scale 1 --directory /tmp/bench
- name: Upload benchmark results
uses: actions/upload-artifact@v7
with:
name: benchmark-results
path: /tmp/bench/
retention-days: 30