[profiling] Fuzz virtual allocator #3960
Workflow file for this run
This file contains 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: Test | |
on: [push] | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_VERSION: 1.71.1 | |
jobs: | |
test: | |
name: "cargo test --workspace #${{ matrix.platform }} ${{ matrix.rust_version }}" | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [windows-latest, ubuntu-latest, macos-12] | |
rust_version: [""] | |
include: | |
- platform: "ubuntu-latest" | |
rust_version: "${RUST_VERSION}" | |
fail-fast: false | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
# For some reason, the windows toolchain does not always have the | |
# std-*.dll in its path, so sometimes there are failures like: | |
# > for `datadog-ipc-macros`, command | |
# > `'D:\a\libdatadog\libdatadog\target\debug\deps\datadog_ipc_macros-24212d08e4e0faca.exe' --list --format terse` | |
# > exited with code 0xc0000135: The specified module could not be found. (os error 126) | |
- name: Add toolchain bin folder to PATH | |
if: matrix.platform == 'windows-latest' | |
run: | | |
echo "$(Join-Path -Path (rustc --print sysroot) -ChildPath bin)" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Cache | |
uses: ./.github/actions/cache | |
with: | |
rust_version: ${{ matrix.rust_version }} | |
- name: Install Rust ${{ matrix.rust_version }} | |
if: matrix.rust_version != '' | |
run: rustup install ${{ matrix.rust_version }} && rustup default ${{ matrix.rust_version }} | |
- id: rust-version | |
# On Windows run happens in a PowerShell, so start bash explicitly | |
run: bash -c 'echo "version=$(rustc --version)" >> $GITHUB_OUTPUT' | |
- name: Install cargo nextest | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: [email protected] | |
- name: "Remove nextest CI report" | |
shell: bash | |
run: rm -rf target/nextest/ci/junit.xml | |
- name: Free Disk Space (Ubuntu only) | |
if: runner.os == 'Linux' && matrix.platform == 'ubuntu-latest' | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: false | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: false | |
docker-images: false | |
swap-storage: true | |
- name: "[${{ steps.rust-version.outputs.version}}] cargo build --workspace --verbose" | |
run: cargo build --workspace --verbose | |
- name: "[${{ steps.rust-version.outputs.version}}] cargo nextest run --workspace --profile ci --verbose" | |
# Run doc tests with cargo test and run tests with nextest and generate junit.xml | |
run: cargo test --workspace --doc --verbose && cargo nextest run --workspace --profile ci --verbose | |
env: | |
RUST_BACKTRACE: 1 | |
- name: "[${{ steps.rust-version.outputs.version}}] RUSTFLAGS=\"-C prefer-dynamic\" cargo nextest run --package test_spawn_from_lib --features prefer-dynamic" | |
run: cargo nextest run --package test_spawn_from_lib --features prefer-dynamic | |
env: | |
RUSTFLAGS: "-C prefer-dynamic" | |
RUST_BACKTRACE: 1 | |
- name: Report Test Results | |
if: success() || failure() | |
uses: mikepenz/action-junit-report@v4 | |
with: | |
report_paths: "target/nextest/ci/junit.xml" | |
check_name: "[${{ matrix.platform }}:${{ matrix.rust_version }}] test report" | |
include_passed: true | |
ffi: | |
name: "FFI #${{ matrix.platform }} ${{ matrix.rust_version }}" | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
matrix: | |
platform: [windows-latest, ubuntu-latest, macos-12] | |
rust_version: [""] | |
include: | |
- platform: "ubuntu-latest" | |
rust_version: "${RUST_VERSION}" | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Setup output dir | |
shell: bash | |
run: | | |
WORKSPACE_PATH=${{ github.workspace }} | |
if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then | |
WORKSPACE_PATH=$(cygpath -ua '${{ github.workspace }}') | |
fi | |
echo "OUTPUT_FOLDER=$WORKSPACE_PATH/artifacts" >> $GITHUB_ENV | |
- name: Cache | |
uses: ./.github/actions/cache | |
with: | |
rust_version: ${{ matrix.rust_version }} | |
build_profile: "release" | |
- name: Install nightly toolchain | |
run: rustup install nightly | |
- name: Install Rust ${{ matrix.rust_version }} | |
if: matrix.rust_version != '' | |
run: rustup install ${{ matrix.rust_version }} && rustup default ${{ matrix.rust_version }} | |
- id: rust-version | |
# On Windows run happens in a PowerShell, so start bash explicitly | |
run: bash -c 'echo "version=$(rustc --version)" >> $GITHUB_OUTPUT' | |
- name: Free Disk Space (Ubuntu only) | |
if: runner.os == 'Linux' && matrix.platform == 'ubuntu-latest' | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: false | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: false | |
docker-images: false | |
swap-storage: true | |
- name: "Generate profiling FFI" | |
shell: bash | |
run: | | |
./build-profiling-ffi.sh -f data-pipeline-ffi ${OUTPUT_FOLDER}/profiling | |
- name: "Generate Telemetry FFI" | |
shell: bash | |
run: | | |
./build-telemetry-ffi.sh ${OUTPUT_FOLDER}/telemetry | |
- name: 'Publish libdatadog' | |
uses: actions/upload-artifact@v4 | |
# Only upload the artifacts built with the default Rust version | |
if: (success() || failure()) && matrix.rust_version == '' | |
with: | |
if-no-files-found: error | |
name: libdatadog.${{ matrix.platform }} | |
path: ${{ github.workspace }}/artifacts | |
retention-days: 1 | |
- name: "(Windows) Test building Profiling C bindings - dynamic link vc runtime" | |
if: matrix.platform == 'windows-latest' | |
shell: bash | |
run: | | |
set -e | |
mkdir examples/ffi/build_dll | |
cd examples/ffi/build_dll | |
cmake -S .. -DDatadog_ROOT=$OUTPUT_FOLDER/profiling -DVCRUNTIME_LINK_TYPE=DLL | |
cmake --build . | |
- name: "(Windows) Test building Profiling C bindings - static link vc runtime" | |
if: matrix.platform == 'windows-latest' | |
shell: bash | |
run: | | |
set -e | |
mkdir examples/ffi/build_static | |
cd examples/ffi/build_static | |
cmake -S .. -DDatadog_ROOT=$OUTPUT_FOLDER/profiling -DVCRUNTIME_LINK_TYPE=STATIC | |
cmake --build . | |
- name: "Test building Profiling C bindings" | |
shell: bash | |
if: matrix.platform != 'windows-latest' | |
run: | | |
set -e | |
mkdir examples/ffi/build | |
cd examples/ffi/build | |
# Add BUILD_SYMBOLIZER variable only for Linux platforms | |
if [[ "${{ matrix.platform }}" == "ubuntu-latest" ]]; then | |
cmake -S .. -DDatadog_ROOT=$OUTPUT_FOLDER/profiling -DBUILD_SYMBOLIZER=true | |
cmake --build . | |
./symbolizer | |
else | |
cmake -S .. -DDatadog_ROOT=$OUTPUT_FOLDER/profiling | |
cmake --build . | |
fi | |
cross-centos7: | |
name: build and test using cross - on centos7 | |
runs-on: ubuntu-latest | |
concurrency: | |
group: ci-${{ github.ref }}-cross-centos7 | |
cancel-in-progress: true | |
steps: | |
- name: Free Disk Space | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: false | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: false | |
docker-images: false | |
swap-storage: true | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: ./.github/actions/cache | |
with: | |
rust_version: cross-centos7 | |
- run: cargo install cross || true | |
- run: cross build --workspace --target x86_64-unknown-linux-gnu | |
- run: cross test --workspace --target x86_64-unknown-linux-gnu -- --skip "::single_threaded_tests::" | |
- run: cross test --workspace --target x86_64-unknown-linux-gnu --exclude bin_tests -- --skip "::tests::" --skip "::api_tests::" --test-threads 1 | |
ffi_bake: | |
strategy: | |
matrix: | |
target: [alpine-build] # debian-build-aarch64 is oom killed at the moment | |
name: "FFI ${{ matrix.target }} via docker bake" | |
concurrency: | |
group: ci-${{ github.ref }}-${{ matrix.target }} | |
cancel-in-progress: true | |
runs-on: | |
labels: ubuntu-latest-16-cores | |
group: APM Larger Runners | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v4 | |
- | |
name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
buildkitd-config: .github/buildkitd-16-cores.toml | |
- | |
name: Build and Generate FFI | |
uses: docker/[email protected] | |
with: | |
targets: ${{ matrix.target }} | |
set: | | |
*.cache-from=type=gha,scope=${{ matrix.target }} | |
*.cache-to=type=gha,mode=max,scope=${{ matrix.target }} |