mirror of
https://tangled.org/tranquil.farm/tranquil-pds
synced 2026-09-24 19:24:15 +00:00
Overall `just test` runs about 10-20s faster on this branch than current main, for me, with around 170s instead of around 180-190s. But the cool thing is the compile time. Making a simple edit to any file involved and running `just test` on main takes about 60s to recompile the test binaries. On this branch it takes less than 15s. This is done by replacing a ton of separate test binaries with a single megabinary. Only test files that looked safe have been included, avoiding ones that do stuff like setting env.
199 lines
8.8 KiB
Makefile
199 lines
8.8 KiB
Makefile
default:
|
|
@just --list
|
|
|
|
run:
|
|
cargo run -p tranquil-server
|
|
run-dev:
|
|
docker compose --profile dev up
|
|
run-release:
|
|
cargo run -p tranquil-server --release
|
|
gen-config:
|
|
cargo run -p tranquil-server -- config-template > example.toml
|
|
build:
|
|
cargo build
|
|
build-release:
|
|
cargo build --release
|
|
check:
|
|
cargo check
|
|
clippy:
|
|
cargo clippy --all-targets -- -D warnings
|
|
lint-no-bsky:
|
|
cargo clippy -p tranquil-server --no-default-features --features frontend,postgres,s3,valkey --all-targets -- -D warnings
|
|
cargo clippy -p tranquil-pds --no-default-features --all-targets -- -D warnings
|
|
fmt:
|
|
cargo fmt
|
|
fmt-check:
|
|
cargo fmt -- --check
|
|
lint: fmt-check clippy lint-no-bsky
|
|
|
|
test-store:
|
|
SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness
|
|
|
|
test-store-sim-nightly:
|
|
SQLX_OFFLINE=true TRANQUIL_SIM_SEEDS=10000 cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile sim-nightly
|
|
|
|
gauntlet-pr:
|
|
SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile gauntlet-pr --test gauntlet_smoke
|
|
|
|
gauntlet-nightly HOURS="6":
|
|
SQLX_OFFLINE=true GAUNTLET_DURATION_HOURS={{HOURS}} cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile gauntlet-nightly --test gauntlet_smoke --run-ignored all
|
|
|
|
gauntlet-farm SCENARIO HOURS="6" DUMP="proptest-regressions":
|
|
SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- farm --scenario {{SCENARIO}} --hours {{HOURS}} --dump-regressions {{DUMP}}
|
|
|
|
gauntlet-repro SEED SCENARIO="smoke-pr":
|
|
SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --scenario {{SCENARIO}} --seed {{SEED}}
|
|
|
|
gauntlet-repro-config CONFIG SEED:
|
|
SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --config {{CONFIG}} --seed {{SEED}}
|
|
|
|
gauntlet-repro-from FILE:
|
|
SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --from {{FILE}}
|
|
|
|
gauntlet-sweep CONFIG SEEDS="8" DUMP="proptest-regressions":
|
|
SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- sweep --config {{CONFIG}} --seeds {{SEEDS}} --dump-regressions {{DUMP}}
|
|
|
|
gauntlet-soak HOURS="24" OUTPUT="":
|
|
SQLX_OFFLINE=true GAUNTLET_SOAK_HOURS={{HOURS}} GAUNTLET_SOAK_OUTPUT={{OUTPUT}} cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile gauntlet-soak --test gauntlet_soak --run-ignored all -- soak_long_leak_gate
|
|
|
|
gauntlet-soak-heapprof HOURS="24" OUTPUT="" PREFIX="jeprof.gauntlet":
|
|
SQLX_OFFLINE=true \
|
|
GAUNTLET_SOAK_HOURS={{HOURS}} \
|
|
GAUNTLET_SOAK_OUTPUT={{OUTPUT}} \
|
|
MALLOC_CONF="prof:true,prof_active:true,prof_final:true,lg_prof_sample:19,prof_prefix:{{PREFIX}}" \
|
|
cargo nextest run -p tranquil-store \
|
|
--features tranquil-store/test-harness,tranquil-store/gauntlet-jemalloc-prof \
|
|
--profile gauntlet-soak --test gauntlet_soak --run-ignored all -- soak_long_leak_gate
|
|
|
|
gauntlet-flaky SEED="1":
|
|
SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness --test gauntlet_flaky --run-ignored all
|
|
|
|
fuzz-target TARGET SECONDS="60" SANITIZER="address":
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer {{SANITIZER}} {{TARGET}} -- -max_total_time={{SECONDS}}
|
|
|
|
fuzz-pr SECONDS="60":
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}}
|
|
|
|
fuzz-nightly SECONDS="21600":
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}}
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}}
|
|
|
|
fuzz-ubsan TARGET SECONDS="60":
|
|
cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer undefined {{TARGET}} -- -max_total_time={{SECONDS}}
|
|
|
|
test-store-asan:
|
|
SQLX_OFFLINE=true \
|
|
ASAN_OPTIONS="halt_on_error=1:abort_on_error=1:detect_leaks=1" \
|
|
RUSTFLAGS="-Zsanitizer=address" \
|
|
RUSTDOCFLAGS="-Zsanitizer=address" \
|
|
cargo +nightly nextest run -p tranquil-store --features tranquil-store/test-harness --target x86_64-unknown-linux-gnu
|
|
|
|
test-unit:
|
|
SQLX_OFFLINE=true cargo test --test it -- dpop_unit:: validation_edge_cases:: scope_edge_cases::
|
|
|
|
store_run := "SQLX_OFFLINE=true TRANQUIL_TEST_BACKEND=store TRANQUIL_PDS_ALLOW_INSECURE_SECRETS=1 DISABLE_RATE_LIMITING=1 TRANQUIL_LEXICON_OFFLINE=1 SKIP_IMPORT_VERIFICATION=true cargo nextest run --workspace --exclude tranquil-store --features tranquil-store/skip-fsync"
|
|
store_test := store_run + " -E 'not (binary(it) and test(/^store_parity::/)) and not (package(tranquil-signal) and test(/^tests::/))'"
|
|
|
|
test-auth:
|
|
{{store_run}} --test it -E 'test(/^(oauth|oauth_lifecycle|oauth_scopes|oauth_security|jwt_security|session_management|change_password|password_reset)::/)'
|
|
|
|
test-admin:
|
|
{{store_run}} --test it -E 'test(/^(admin_email|admin_invite|admin_moderation|admin_search|admin_stats)::/)'
|
|
|
|
test-sync:
|
|
{{store_run}} --test it -E 'test(/^(sync_repo|sync_blob|sync_conformance|sync_deprecated|firehose_validation)::/)'
|
|
|
|
test-repo:
|
|
{{store_run}} --test it -E 'test(/^(repo_batch|repo_blob|record_validation|lifecycle_record)::/)'
|
|
|
|
test-identity:
|
|
{{store_run}} --test it --test plc_migration -E 'binary(plc_migration) | test(/^(identity|did_web|plc_operations|plc_validation)::/)'
|
|
|
|
test-account:
|
|
{{store_run}} --test it -E 'test(/^(lifecycle_session|delete_account|invite|email_update|account_notifications)::/)'
|
|
|
|
test-security:
|
|
{{store_run}} --test it -E 'test(/^(security_fixes|banned_words|rate_limit|moderation)::/)'
|
|
|
|
test-import:
|
|
{{store_run}} --test it --test import_with_verification -E 'binary(import_with_verification) | test(/^import_verification::/)'
|
|
|
|
test-misc:
|
|
{{store_run}} --test it -E 'test(/^(actor|commit_signing|image_processing|lifecycle_social|notifications|server|signing_key|verify_live_commit)::/)'
|
|
|
|
test *args:
|
|
{{store_test}} {{args}}
|
|
|
|
test-one name:
|
|
{{store_run}} --test it -E 'test(/^{{name}}::/)'
|
|
|
|
test-full *args:
|
|
@just services-up
|
|
eval "$(tranquil-dev-services env)" && SQLX_OFFLINE=true cargo nextest run --workspace --exclude tranquil-store --features tranquil-pds/s3 {{args}}
|
|
|
|
test-pg *args:
|
|
SQLX_OFFLINE=true ./scripts/run-tests.sh {{args}}
|
|
|
|
services-up:
|
|
tranquil-dev-services up
|
|
|
|
services-down:
|
|
tranquil-dev-services down
|
|
|
|
infra-start:
|
|
./scripts/test-infra.sh start
|
|
infra-stop:
|
|
./scripts/test-infra.sh stop
|
|
infra-status:
|
|
./scripts/test-infra.sh status
|
|
|
|
clean:
|
|
cargo clean
|
|
doc:
|
|
cargo doc --open
|
|
db-create:
|
|
DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database create
|
|
db-migrate:
|
|
DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx migrate run
|
|
db-reset:
|
|
DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database drop -y
|
|
DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database create
|
|
DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx migrate run
|
|
podman-up:
|
|
podman compose up -d
|
|
podman-down:
|
|
podman compose down
|
|
podman-logs:
|
|
podman compose logs -f
|
|
container-build:
|
|
podman build -t atcr.io/tranquil.farm/tranquil-pds:latest .
|
|
container-pull:
|
|
podman pull atcr.io/tranquil.farm/tranquil-pds:latest
|
|
|
|
frontend-dev:
|
|
cd frontend && pnpm run dev
|
|
frontend-build:
|
|
cd frontend && pnpm run build
|
|
frontend-check:
|
|
cd frontend && pnpm run check
|
|
frontend-clean:
|
|
rm -rf frontend/dist frontend/node_modules
|
|
|
|
frontend-test *args:
|
|
cd frontend && VITEST=true pnpm run test:run {{args}}
|
|
frontend-test-watch:
|
|
cd frontend && VITEST=true pnpm run test:watch
|
|
frontend-test-ui:
|
|
cd frontend && VITEST=true pnpm run test:ui
|
|
frontend-test-coverage:
|
|
cd frontend && VITEST=true pnpm run test:run --coverage
|
|
|
|
build-all: frontend-build build
|