Skip to content

Fix the issue where sending coalesced packets occasionally causes a p… #586

Fix the issue where sending coalesced packets occasionally causes a p…

Fix the issue where sending coalesced packets occasionally causes a p… #586

Workflow file for this run

name: Rust
on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]
env:
CARGO_TERM_COLOR: always
jobs:
build_linux:
name: Build for Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Update rust
run: rustup update
- name: Build TQUIC library and tools
run: cargo build --all -F ffi --verbose
build_macos:
name: Build for MacOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Update rust
run: rustup update
- name: Build TQUIC library and tools
run: cargo build --all -F ffi --verbose && cargo test
build_freebsd:
name: Build for FreeBSD
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Build in FreeBSD VM
uses: vmactions/freebsd-vm@v1
with:
usesh: true
prepare: |
freebsd-version
pkg install -y curl gmake cmake
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
run: |
. "$HOME/.cargo/env"
cargo build --all -F ffi --verbose && cargo test
build_windows:
name: Build for Windows
runs-on: windows-2022
env:
TARGET: "x86_64-pc-windows-msvc"
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: ${{ env.TARGET }}
- name: Install dependencies
uses: crazy-max/ghaction-chocolatey@v3
with:
args: install nasm
- name: Build TQUIC library and tools
run: cargo build --all -F ffi --verbose && cargo test
build_ios:
name: Build for iOS
runs-on: macos-latest
env:
TARGET: "x86_64-apple-ios"
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install rust toolchain
run: rustup target add ${{ env.TARGET }}
- name: Remove cdylib from iOS build
run: sed -i -e 's/, "cdylib"//g' Cargo.toml
- name: Run cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ env.TARGET }} --verbose --features ffi
build_android:
name: Build for Android
runs-on: ubuntu-latest
env:
NDK_LTS_VER: "25"
API_LEVEL: "21"
TARGET: "aarch64-linux-android"
ARCH: "arm64-v8a"
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Install rust toolchain
run: rustup target add ${{ env.TARGET }}
- name: Download Android NDK
run: |
curl --http1.1 -O https://dl.google.com/android/repository/android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip
unzip -q android-ndk-r${{ env.NDK_LTS_VER }}-linux.zip
- name: Install cargo-ndk
uses: actions-rs/install@v0.1
with:
crate: cargo-ndk
- name: Run cargo ndk
uses: actions-rs/cargo@v1
with:
command: ndk
args: -t ${{ env.ARCH }} -p ${{ env.API_LEVEL }} -- build --verbose --features ffi
env:
ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk-r${{ env.NDK_LTS_VER }}
build_harmony:
name: Build for Harmony
runs-on: ubuntu-latest
env:
TARGET: "aarch64-unknown-linux-ohos"
steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Setup OpenHarmony SDK
uses: openharmony-rs/setup-ohos-sdk@v0.1.3
with:
version: '4.1'
- name: Setup Rust environment
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: 'aarch64-unknown-linux-ohos,armv7-unknown-linux-ohos,x86_64-unknown-linux-ohos'
- name: Install ohrs
run: cargo install ohrs
- name: Run ohrs build
run: ohrs build -- --verbose --features ffi --release
static_analysis:
name: Static analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Update rust
run: rustup update
- name: Code format check
run: cargo fmt --check
- name: Code spell check
run: |
cargo install typos-cli
typos -c ./typos.toml
- name: Code lint check
run: cargo clippy --all -- -D warnings
- name: Code lint check (FFI)
run: cargo clippy --all -F ffi -- -D warnings
unit_testing:
name: Unit testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Update rust
run: rustup update
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Unit testing
run: cargo test --verbose
- name: Generate code coverage
run: cargo llvm-cov --lcov --output-path lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: true
fuzz_testing:
name: Fuzz testing
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Fuzz testing
run: |
rustup install nightly
rustup default nightly
cargo install cargo-fuzz
cargo fuzz run client_conn -- -max_total_time=30
cargo fuzz run server_conn -- -max_total_time=30