feat(divan): support counter
compatibility with a dummy implementation
#865
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
components: rustfmt, clippy | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- uses: pre-commit/[email protected] | |
with: | |
extra_args: --all-files | |
os-test-codspeed: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
cache-target: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo test -p codspeed | |
if: runner.os == 'Linux' | |
# We don't support Windows/MacOS for now, due to libclang not found on some runners: | |
- run: LIBCLANG_PATH= cargo test -p codspeed | |
if: runner.os == 'macOS' | |
- run: | | |
$env:LIBCLANG_PATH="" | |
cargo test -p codspeed | |
if: runner.os == 'Windows' | |
shell: powershell | |
msrv-check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: cargo-msrv | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check cospeed MSRV | |
run: cargo msrv --path crates/codspeed verify -- cargo check --all-features --config codspeed=true | |
- name: Check bencher_compat MSRV | |
run: cargo msrv --path crates/bencher_compat verify -- cargo check --all-features --config codspeed=true | |
- name: Check criterion_compat MSRV | |
run: cargo msrv --path crates/criterion_compat verify -- cargo check --all-features --config codspeed=true | |
- name: Check divan_compat MSRV | |
run: cargo msrv --path crates/divan_compat verify -- cargo check --all-features --config codspeed=true | |
tests-without-cargo-codspeed: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: cargo-nextest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo nextest run --exclude cargo-codspeed | |
test-cargo-codspeed: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
partition: [1, 2, 3, 4, 5] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
bins: cargo-nextest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo nextest run -p cargo-codspeed --partition count:${{ matrix.partition }}/5 | |
compat-integration-test-instrumentation: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build-args: | |
- "-p codspeed" | |
- "-p codspeed-bencher-compat" | |
- "--features async_futures -p codspeed-criterion-compat" | |
- "-p codspeed-divan-compat" | |
- "-p codspeed-divan-compat-examples" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
cache-target: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo install --path crates/cargo-codspeed --locked | |
- run: cargo codspeed build ${{ matrix.build-args }} | |
- name: Run the benchmarks | |
uses: CodSpeedHQ/action@main | |
env: | |
MY_ENV_VAR: "YES" | |
with: | |
run: cargo codspeed run | |
mode: instrumentation | |
token: ${{ secrets.CODSPEED_TOKEN }} | |
compat-integration-test-walltime: | |
runs-on: codspeed-macro | |
strategy: | |
matrix: | |
package: | |
- codspeed-divan-compat | |
- codspeed-divan-compat-examples | |
- codspeed-criterion-compat | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
cache-target: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo install --path crates/cargo-codspeed --locked | |
- run: | | |
# Remove the cargo config else it forces instrumentation mode | |
rm -f .cargo/config.toml | |
cargo codspeed build -p ${{ matrix.package }} | |
- name: Run the benchmarks | |
uses: CodSpeedHQ/action@main | |
env: | |
MY_ENV_VAR: "YES" | |
with: | |
run: cargo codspeed run | |
mode: walltime | |
token: ${{ secrets.CODSPEED_TOKEN }} | |
musl-build-check: | |
strategy: | |
matrix: | |
include: | |
- target: x86_64-unknown-linux-musl | |
runner: ubuntu-24.04 | |
- target: aarch64-unknown-linux-musl | |
runner: codspeedhq-arm64-ubuntu-24.04 | |
runs-on: ${{ matrix.runner }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: moonrepo/setup-rust@v1 | |
with: | |
targets: ${{ matrix.target }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install musl tools | |
run: sudo apt-get update && sudo apt-get install -y musl-tools | |
- run: cargo build --locked --release --bin cargo-codspeed --target ${{ matrix.target }} | |
check: | |
runs-on: ubuntu-latest | |
if: always() | |
needs: | |
- lint | |
- os-test-codspeed | |
- tests-without-cargo-codspeed | |
- test-cargo-codspeed | |
- msrv-check | |
- compat-integration-test-instrumentation | |
- compat-integration-test-walltime | |
- musl-build-check | |
steps: | |
- uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJson( needs ) }} |