Skip to content

chore(deps): bump the cargo-updates group across 1 directory with 22 updates #1176

chore(deps): bump the cargo-updates group across 1 directory with 22 updates

chore(deps): bump the cargo-updates group across 1 directory with 22 updates #1176

Workflow file for this run

name: Tests
# Prose and the site cannot break a Rust build, and a change confined to them
# would otherwise run the full matrix including the Docker-backed driver suites.
#
# Markdown is safe to ignore here because no crate pulls it into the build: there
# is no `include_str!` of a .md file, no `#[doc = include_str!]`, and no `readme`
# key in any manifest. Re-check that before assuming it still holds.
#
# paths-ignore skips only when *every* changed file matches, so a pull request
# touching code and docs together still runs.
on:
push:
branches: [main, dev]
paths-ignore:
- '**/*.md'
- 'web/**'
- '.github/workflows/web.yml'
pull_request:
branches: [main, dev]
paths-ignore:
- '**/*.md'
- 'web/**'
- '.github/workflows/web.yml'
workflow_call:
workflow_dispatch:
permissions:
contents: read
# The group name must be a literal, not ${{ github.workflow }}: under
# workflow_call that expression resolves to the *calling* workflow, so Release
# invoking tests.yml and style.yml would put both — and the Release run itself,
# whose group differs only by case — in one group and cancel them all.
concurrency:
group: tests-${{ github.ref }}
cancel-in-progress: true
jobs:
deterministic-tests:
name: Deterministic Tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
mold \
pkg-config \
libssl-dev \
libdbus-1-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev
- name: Setup Rust cache
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
shared-key: ci-deterministic
cache-targets: true
cache-on-failure: true
- name: Run deterministic workspace tests
run: cargo test --workspace --locked --features "sqlite,postgres,mysql,mssql,mongodb,redis,dynamodb,cloudwatch,influxdb,clickhouse,aws"
driver-live-integration:
name: Driver Live Integration
runs-on: ubuntu-latest
timeout-minutes: 45
needs: deterministic-tests
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
mold \
pkg-config \
libssl-dev \
libdbus-1-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev
- name: Setup Rust cache
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
shared-key: ci-live-integration
cache-targets: true
cache-on-failure: true
# Testcontainers pulls images lazily at test time, so concurrent test
# binaries race to pull the same tag and anonymous Docker Hub throttling
# aborts mid-stream ("bytes remaining on stream"). Pulling everything
# up front, serially and with retries, removes that failure mode.
- name: Pre-pull container images
run: |
images=(
postgres:16
pgvector/pgvector:0.8.0-pg16
mysql:8.4
mongo:7
redis:7
grokzen/redis-cluster:7.0.10
clickhouse/clickhouse-server:25.8.30.16
mcr.microsoft.com/mssql/server:2022-latest
amazon/dynamodb-local:latest
influxdb:2.7
influxdb:1.8
minio/minio:RELEASE.2025-09-07T16-13-09Z
localstack/localstack:3
)
for image in "${images[@]}"; do
for attempt in 1 2 3; do
if docker pull --quiet "$image"; then
break
fi
if [ "$attempt" = 3 ]; then
echo "failed to pull $image after 3 attempts" >&2
exit 1
fi
sleep $((attempt * 15))
done
done
- name: Run PostgreSQL live integration tests
run: cargo test -p dbflux_driver_postgres --locked --test live_integration -- --ignored
- name: Run MySQL live integration tests
run: cargo test -p dbflux_driver_mysql --locked --test live_integration -- --ignored
- name: Run MongoDB live integration tests
run: cargo test -p dbflux_driver_mongodb --locked --test live_integration -- --ignored
- name: Run Redis live integration tests
run: cargo test -p dbflux_driver_redis --locked --test live_integration -- --ignored
# The all-in-one cluster image publishes fixed host ports (7000-7005),
# so this suite runs single-threaded to avoid two test binaries racing
# to bind the same ports.
- name: Run Redis Cluster live integration tests
run: cargo test -p dbflux_driver_redis --locked --test live_cluster -- --ignored --test-threads=1
- name: Run Redis RDB analyzer live integration tests
run: cargo test -p dbflux_driver_redis --locked --test live_rdb -- --ignored
- name: DynamoDB live integration
run: cargo test -p dbflux_driver_dynamodb --locked --test live_integration -- --ignored
- name: Run S3 live integration tests
run: cargo test -p dbflux_driver_s3 --locked --test live_integration -- --ignored
- name: Run SQLite live integration tests
run: cargo test -p dbflux_driver_sqlite --locked --test live_integration
# MSSQL, InfluxDB, and ClickHouse spin up one container per test (the SQL
# Server image is ~2 GB), so these suites run single-threaded to avoid
# exhausting the runner with concurrent containers.
- name: Run MSSQL live integration tests
run: cargo test -p dbflux_driver_mssql --locked --test live_integration -- --ignored --test-threads=1
- name: Run MSSQL DDL integration tests
run: cargo test -p dbflux_driver_mssql --locked --test ddl_integration -- --ignored --test-threads=1
- name: Run MSSQL instance catalog tests
run: cargo test -p dbflux_driver_mssql --locked --test instance_catalog -- --ignored --test-threads=1
- name: Run InfluxDB live integration tests
run: cargo test -p dbflux_driver_influxdb --locked --test live_integration -- --ignored --test-threads=1
- name: Run ClickHouse live integration tests
run: cargo test -p dbflux_driver_clickhouse --locked --test live_integration -- --ignored --test-threads=1
# Each test spins up its own LocalStack container (~1.3 GB image), so
# this suite runs single-threaded like the MSSQL/InfluxDB/ClickHouse
# suites above.
- name: Run CloudWatch live integration tests
run: cargo test -p dbflux_driver_cloudwatch --locked --test live_integration -- --ignored --test-threads=1
# Redshift has no Docker-based emulator; these tests hit a real Amazon
# Redshift cluster and only run when the DBFLUX_TEST_REDSHIFT_* secrets
# are configured (never true on a fork PR, which gets no secrets), so
# the step reports a clean skip rather than failing.
- name: Run Redshift live integration tests
if: ${{ env.DBFLUX_TEST_REDSHIFT_HOST != '' }}
env:
DBFLUX_TEST_REDSHIFT_HOST: ${{ secrets.DBFLUX_TEST_REDSHIFT_HOST }}
DBFLUX_TEST_REDSHIFT_PORT: ${{ secrets.DBFLUX_TEST_REDSHIFT_PORT }}
DBFLUX_TEST_REDSHIFT_USER: ${{ secrets.DBFLUX_TEST_REDSHIFT_USER }}
DBFLUX_TEST_REDSHIFT_PASSWORD: ${{ secrets.DBFLUX_TEST_REDSHIFT_PASSWORD }}
DBFLUX_TEST_REDSHIFT_DATABASE: ${{ secrets.DBFLUX_TEST_REDSHIFT_DATABASE }}
run: cargo test -p dbflux_driver_redshift --locked --test live_integration -- --ignored
cross-platform-check:
name: Cross-platform check ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 90
# GPUI carries a large amount of platform-specific code; a macOS- or
# Windows-only break otherwise surfaces only when build.yml runs at release
# or nightly tag time. A lightweight `cargo check` on each platform catches
# it in the PR instead. Full test execution stays on Linux above.
strategy:
fail-fast: false
matrix:
include:
# Native arm64; vendored-openssl matches build.yml (the runner has no
# pkg-config-discoverable OpenSSL, so openssl-sys must build it).
- os: macos-14
extra_features: ",vendored-openssl"
# Native x86_64-msvc; OpenSSL is resolved on the runner as in build.yml.
- os: windows-latest
extra_features: ""
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
with:
components: rust-src
- name: Setup Rust cache
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
shared-key: ci-cross-check-${{ matrix.os }}
cache-targets: true
cache-on-failure: true
- name: Cargo check
run: cargo check --workspace --locked --features "sqlite,postgres,mysql,mssql,mongodb,redis,dynamodb,cloudwatch,influxdb,clickhouse,aws${{ matrix.extra_features }}"