Fix the issue where sending coalesced packets occasionally causes a p… #586
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: 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 | |