Skip to content

Properly await for all futures in Future for TelemetryDriver #284

Properly await for all futures in Future for TelemetryDriver

Properly await for all futures in Future for TelemetryDriver #284

Workflow file for this run

name: CI
on:
pull_request:
branches:
- main
- "v[0-9]+.*"
push:
branches:
- main
- "v[0-9]+.*"
env:
RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1
jobs:
pr-status-checks:
name: Pull Request Status Checks
runs-on: ubuntu-latest
needs:
- docs
- deny
- clippy
- fmt
- check-features
- test
- minimal-versions
steps:
- run: exit 0
docs:
name: Doc checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Nightly Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- uses: Swatinem/rust-cache@v2
- name: Run doc checks
run: |
cargo doc --lib --no-deps --all-features --document-private-items
env:
RUSTDOCFLAGS: --cfg docsrs -Dwarnings --cfg tokio_unstable --cfg foundations_unstable
RUSTFLAGS: --cfg docsrs -Dwarnings --cfg tokio_unstable --cfg foundations_unstable
# based on tokio minver cbecm
minimal-versions:
name: minimal-versions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Nightly Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack
- uses: Swatinem/rust-cache@v2
- name: Check minimal versions
env:
# empty those flags!
RUSTFLAGS:
run: |
# Remove dev-dependencies from Cargo.toml to prevent the next `cargo update`
# from determining minimal versions based on dev-dependencies.
cargo hack --remove-dev-deps --workspace
# Update Cargo.lock to minimal version dependencies.
cargo update -Z minimal-versions
cargo hack check --all-features --ignore-private
- name: Check minimal versions with unstable features
env:
RUSTFLAGS: --cfg tokio_unstable --cfg foundations_unstable
run: |
# Remove dev-dependencies from Cargo.toml to prevent the next `cargo update`
# from determining minimal versions based on dev-dependencies.
cargo hack --remove-dev-deps --workspace
# Update Cargo.lock to minimal version dependencies.
cargo update -Z minimal-versions
cargo hack check --all-features --ignore-private
deny:
name: Cargo deny checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run cargo deny checks
uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check
clippy:
name: Clippy checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Run Clippy
run: |
cargo clippy --all-targets -- \
-D warnings \
-D unreachable_pub \
-D clippy::await_holding_lock \
-D clippy::clone_on_ref_ptr
env:
RUSTFLAGS: -Dwarnings --cfg tokio_unstable --cfg foundations_unstable
fmt:
name: fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
# Check fmt
- name: "rustfmt --check"
# Workaround for rust-lang/cargo#7732
# based on tokio's ci job
run: |
if ! rustfmt --check --edition 2021 $(git ls-files '*.rs'); then
printf "Please run \`rustfmt --edition 2021 \$(git ls-files '*.rs')\` to fix rustfmt errors.\n" >&2
exit 1
fi
check-features:
name: Check feature combinations
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo hack
uses: taiki-e/install-action@cargo-hack
- name: Check
run: ./scripts/check-features.sh
shell: bash
check-tokio-unstable:
name: Check unstable
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo hack
uses: taiki-e/install-action@cargo-hack
- name: Check unstable
run: cargo hack check --no-dev-deps
env:
RUSTFLAGS: -Dwarnings --cfg tokio_unstable --cfg foundations_unstable
test-tokio-unstable:
name: Test unstable
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test unstable
run: cargo test --all-features
env:
RUSTFLAGS: -Dwarnings --cfg tokio_unstable --cfg foundations_unstable
_RJEM_MALLOC_CONF: prof:true
run-example-dry-run:
name: Run example (dry run)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run example (dry run)
run: cargo run --example http_server -- --dry-run --config examples/http_server/example_conf.yaml
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
thing:
- x86_64-linux
- aarch64-linux
- arm64-android
- arm-android
- aarch64-ios
- x86_64-macos
include:
- apt_packages: ""
- custom_env: {}
- build_only: false
- cargo_args: ""
- thing: x86_64-linux
target: x86_64-unknown-linux-gnu
rust: stable
os: ubuntu-latest
- thing: aarch64-linux
build_only: true
target: aarch64-unknown-linux-gnu
rust: stable
os: ubuntu-latest
apt_packages: crossbuild-essential-arm64
custom_env:
CC: aarch64-linux-gnu-gcc
CXX: aarch64-linux-gnu-g++
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-g++
- thing: arm64-android
build_only: true
target: aarch64-linux-android
rust: stable
os: ubuntu-latest
cargo_args: --no-default-features --features server-client-common-default
- thing: arm-android
build_only: true
target: armv7-linux-androideabi
rust: stable
os: ubuntu-latest
cargo_args: --no-default-features --features server-client-common-default
- thing: aarch64-ios
build_only: true
target: aarch64-apple-ios
rust: stable
os: macos-latest
cargo_args: --no-default-features --features server-client-common-default
- thing: x86_64-macos
target: x86_64-apple-darwin
rust: stable
os: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- name: Install target-specific APT dependencies
if: "matrix.apt_packages != ''"
run: sudo apt update && sudo apt install -y ${{ matrix.apt_packages }}
shell: bash
- name: Set Android Linker path
if: endsWith(matrix.thing, '-android')
run: echo "CARGO_TARGET_$(echo ${{ matrix.target }} | tr \\-a-z _A-Z)_LINKER=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/$(echo ${{ matrix.target }} | sed s/armv7/armv7a/)21-clang++" >> "$GITHUB_ENV"
- name: Build tests
# We `build` because we want the linker to verify we are cross-compiling correctly for check-only targets.
run: cargo build --target ${{ matrix.target }} ${{matrix.cargo_args}}
shell: bash
env: ${{ matrix.custom_env }}
- name: Run tests
if: "!matrix.build_only"
run: _RJEM_MALLOC_CONF=prof:true cargo test --target ${{ matrix.target }} ${{matrix.cargo_args}}
shell: bash
env: ${{ matrix.custom_env }}