falcotcp 0.2.0

TCP server/client
Documentation
name: Tests

on:
  push:
    branches: [ main, master, develop ]
  pull_request:
    branches: [ main, master, develop ]

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        features:
          - name: "Default"
            flags: "--features default"
          - name: "Complete Compression - Performance Bias"
            flags: "--features complete-compression,heuristics,heubias-performance,encryption"
          - name: "Complete Compression - Balance Bias"
            flags: "--features complete-compression,heuristics,heubias-balance,encryption"
          - name: "Complete Compression - Ratio Bias"
            flags: "--features complete-compression,heuristics,heubias-ratio,encryption"
          - name: "LZMA Only"
            flags: "--no-default-features --features LZMA,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "ZSTD Only"
            flags: "--no-default-features --features ZSTD,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "GZIP Only"
            flags: "--no-default-features --features GZIP,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "LZ4 Only"
            flags: "--no-default-features --features LZ4,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "No Compression - Encryption Only"
            flags: "--no-default-features --features encryption,falco-client,falco-server"
          - name: "Complete Compression - No Encryption"
            flags: "--no-default-features --features complete-compression,heuristics,heubias-balance,falco-client,falco-server"
          - name: "Client Only"
            flags: "--no-default-features --features falco-client,encryption,complete-compression,heuristics,heubias-balance"
          - name: "Server Only"
            flags: "--no-default-features --features falco-server,encryption,complete-compression,heuristics,heubias-balance"
          - name: "Minimal - No Features"
            flags: "--no-default-features"
          - name: "With Tokio Runtime"
            flags: "--features default,tokio-runtime"
          - name: "LZMA + ZSTD"
            flags: "--no-default-features --features LZMA,ZSTD,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "GZIP + LZ4"
            flags: "--no-default-features --features GZIP,LZ4,encryption,heuristics,heubias-balance,falco-client,falco-server"
          - name: "Heuristics - Performance (No Compression)"
            flags: "--no-default-features --features heuristics,heubias-performance,encryption,falco-client,falco-server"

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install liburing-dev
        run: sudo apt-get update && sudo apt-get install -y liburing-dev

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Cache cargo registry
        uses: actions/cache@v4
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v4
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Run tests - ${{ matrix.features.name }}
        run: time cargo test ${{ matrix.features.flags }} --lib

        continue-on-error: true

  check:
    runs-on: ubuntu-latest
    steps:
      - name: Install liburing-dev
        run: sudo apt-get update && sudo apt-get install -y liburing-dev

      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Check all feature combinations compile
        run: |
          cargo check --all-features
          cargo check --no-default-features

  clippy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install liburing-dev
        run: sudo apt-get update && sudo apt-get install -y liburing-dev

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          components: clippy

      - name: Run clippy
        run: cargo clippy --all-features -- -D warnings

  fmt:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install liburing-dev
        run: sudo apt-get update && sudo apt-get install -y liburing-dev

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          components: rustfmt

      - name: Check formatting
        run: cargo fmt --all -- --check