Seregon/zftpd

Zero-copy FTP/HTTP Daemon compatible with all POSIX systems

C/11.0 KB/No license
tools/qa/run_all.sh
zftpd / tools / qa / run_all.sh
1#!/usr/bin/env bash
2set -euo pipefail
3 
4ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
5 
6TARGET="${TARGET:-macos}"
7ENABLE_ZHTTPD="${ENABLE_ZHTTPD:-0}"
8 
9echo "[1/6] Unit tests + ASan/UBSan (debug)"
10make -C "$ROOT_DIR" TARGET="$TARGET" BUILD_TYPE=debug ENABLE_ZHTTPD="$ENABLE_ZHTTPD" test
11 
12echo "[2/6] Clang Static Analyzer"
13make -C "$ROOT_DIR" TARGET="$TARGET" BUILD_TYPE=release ENABLE_ZHTTPD="$ENABLE_ZHTTPD" analyze
14 
15echo "[3/6] Integration: FTP roundtrip checksums"
16"$ROOT_DIR/tools/qa/ftp_roundtrip.sh" "TARGET=$TARGET" "BUILD_TYPE=debug" "FTP_PORT=21234" "PARALLEL=4" "FILE_COUNT=6" "FILE_SIZE_BYTES=$((16*1024*1024))"
17 
18echo "[4/6] Integration: FTP roundtrip (bigger, more parallel)"
19"$ROOT_DIR/tools/qa/ftp_roundtrip.sh" "TARGET=$TARGET" "BUILD_TYPE=debug" "FTP_PORT=21235" "PARALLEL=8" "FILE_COUNT=8" "FILE_SIZE_BYTES=$((32*1024*1024))"
20 
21echo "[5/6] Valgrind (if available, Linux only)"
22if command -v valgrind >/dev/null 2>&1; then
23 if [[ "$TARGET" == "linux" ]]; then
24 make -C "$ROOT_DIR" TARGET=linux BUILD_TYPE=release ENABLE_ZHTTPD="$ENABLE_ZHTTPD" clean
25 make -C "$ROOT_DIR" TARGET=linux BUILD_TYPE=release ENABLE_ZHTTPD="$ENABLE_ZHTTPD" all
26 for t in build/linux/release/tests/*; do
27 if [[ -x "$t" ]]; then
28 valgrind --leak-check=full --error-exitcode=99 "$t"
29 fi
30 done
31 else
32 echo "Skipping Valgrind: TARGET=$TARGET (Valgrind is typically run on Linux)."
33 fi
34else
35 echo "Skipping Valgrind: not installed."
36fi
37 
38echo "[6/6] Done"
39