Files
cfal a72cc7f0bb Expand test coverage and fix the protocol bugs it exposed (#212)
Broadens unit and integration coverage of WebSocket framing, ShadowTLS and REALITY ClientHello parsing, VLESS fallback, Hysteria2 and TUIC authentication, DNS, and connection budgets across reloads, and fixes the defects it exposed: WebSocket streams now accept control frames up to RFC 6455's 125-byte limit, no longer report EOF into partly filled read buffers, and flush buffered frames before shutting down; the shared ClientHello parser reassembles hellos split across TLS records, as Go TLS stacks do; and message-stream shutdown after EOF is bounded like the stream relay's. It also builds the binary on the library crate instead of compiling every module twice, removes the unused UdpMessageStream, moves ShadowTLS interop tests to local handshake servers, makes filtered CI test steps fail when they select no tests, consolidates the WebSocket payload-reading code, and documents how to measure coverage along with the remaining gaps, including why WebSocket Close frames stay unanswered.
2026-10-23 06:18:10 -04:00

45 lines
1.0 KiB
YAML

name: Kernel TUN
on:
push:
branches: [master]
pull_request:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
CARGO_BUILD_JOBS: 1
RUST_BACKTRACE: 1
jobs:
kernel-tun:
name: Linux kernel TUN
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v7
- name: Check kernel test prerequisites
run: |
sudo -n true
test -c /dev/net/tun
command -v ip
ip -j -6 address show dev lo | jq --exit-status 'any(.[].addr_info[]; .local == "::1")'
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust build
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-tun-kernel-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run kernel TUN tests
run: >-
.github/require-tests.sh cargo test -p shoes --locked --features privileged-tests
--test privileged tun_kernel:: --verbose -- --test-threads=1