forked from
tranquil.farm/tranquil-pds
Our Personal Data Server from scratch!
8.5 kB
183 lines
1default:
2 @just --list
3
4run:
5 cargo run -p tranquil-server
6run-dev:
7 docker compose --profile dev up
8run-release:
9 cargo run -p tranquil-server --release
10gen-config:
11 cargo run -p tranquil-server -- config-template > example.toml
12build:
13 cargo build
14build-release:
15 cargo build --release
16check:
17 cargo check
18clippy:
19 cargo clippy -- -D warnings
20fmt:
21 cargo fmt
22fmt-check:
23 cargo fmt -- --check
24lint: fmt-check clippy
25
26test-store:
27 SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness
28
29test-store-sim-nightly:
30 SQLX_OFFLINE=true TRANQUIL_SIM_SEEDS=10000 cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile sim-nightly
31
32gauntlet-pr:
33 SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile gauntlet-pr --test gauntlet_smoke
34
35gauntlet-nightly HOURS="6":
36 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
37
38gauntlet-farm SCENARIO HOURS="6" DUMP="proptest-regressions":
39 SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- farm --scenario {{SCENARIO}} --hours {{HOURS}} --dump-regressions {{DUMP}}
40
41gauntlet-repro SEED SCENARIO="smoke-pr":
42 SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --scenario {{SCENARIO}} --seed {{SEED}}
43
44gauntlet-repro-config CONFIG SEED:
45 SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --config {{CONFIG}} --seed {{SEED}}
46
47gauntlet-repro-from FILE:
48 SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- repro --from {{FILE}}
49
50gauntlet-sweep CONFIG SEEDS="8" DUMP="proptest-regressions":
51 SQLX_OFFLINE=true cargo run --release --bin tranquil-gauntlet --features tranquil-store/gauntlet-cli -- sweep --config {{CONFIG}} --seeds {{SEEDS}} --dump-regressions {{DUMP}}
52
53gauntlet-soak HOURS="24" OUTPUT="":
54 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
55
56gauntlet-soak-heapprof HOURS="24" OUTPUT="" PREFIX="jeprof.gauntlet":
57 SQLX_OFFLINE=true \
58 GAUNTLET_SOAK_HOURS={{HOURS}} \
59 GAUNTLET_SOAK_OUTPUT={{OUTPUT}} \
60 MALLOC_CONF="prof:true,prof_active:true,prof_final:true,lg_prof_sample:19,prof_prefix:{{PREFIX}}" \
61 cargo nextest run -p tranquil-store \
62 --features tranquil-store/test-harness,tranquil-store/gauntlet-jemalloc-prof \
63 --profile gauntlet-soak --test gauntlet_soak --run-ignored all -- soak_long_leak_gate
64
65gauntlet-flaky SEED="1":
66 SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness --test gauntlet_flaky --run-ignored all
67
68fuzz-target TARGET SECONDS="60" SANITIZER="address":
69 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer {{SANITIZER}} {{TARGET}} -- -max_total_time={{SECONDS}}
70
71fuzz-pr SECONDS="60":
72 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}}
73 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}}
74 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}}
75 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}}
76 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}}
77
78fuzz-nightly SECONDS="21600":
79 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}}
80 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}}
81 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}}
82 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}}
83 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}}
84
85fuzz-ubsan TARGET SECONDS="60":
86 cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer undefined {{TARGET}} -- -max_total_time={{SECONDS}}
87
88test-store-asan:
89 SQLX_OFFLINE=true \
90 ASAN_OPTIONS="halt_on_error=1:abort_on_error=1:detect_leaks=1" \
91 RUSTFLAGS="-Zsanitizer=address" \
92 RUSTDOCFLAGS="-Zsanitizer=address" \
93 cargo +nightly nextest run -p tranquil-store --features tranquil-store/test-harness --target x86_64-unknown-linux-gnu
94
95test-unit:
96 SQLX_OFFLINE=true cargo test --test dpop_unit --test validation_edge_cases --test scope_edge_cases
97
98test-auth:
99 ./scripts/run-tests.sh --test oauth --test oauth_lifecycle --test oauth_scopes --test oauth_security --test jwt_security --test session_management --test change_password --test password_reset
100
101test-admin:
102 ./scripts/run-tests.sh --test admin_email --test admin_invite --test admin_moderation --test admin_search --test admin_stats
103
104test-sync:
105 ./scripts/run-tests.sh --test sync_repo --test sync_blob --test sync_conformance --test sync_deprecated --test firehose_validation
106
107test-repo:
108 ./scripts/run-tests.sh --test repo_batch --test repo_blob --test record_validation --test lifecycle_record
109
110test-identity:
111 ./scripts/run-tests.sh --test identity --test did_web --test plc_migration --test plc_operations --test plc_validation
112
113test-account:
114 ./scripts/run-tests.sh --test lifecycle_session --test delete_account --test invite --test email_update --test account_notifications
115
116test-security:
117 ./scripts/run-tests.sh --test security_fixes --test banned_words --test rate_limit --test moderation
118
119test-import:
120 ./scripts/run-tests.sh --test import_verification --test import_with_verification
121
122test-misc:
123 ./scripts/run-tests.sh --test actor --test commit_signing --test image_processing --test lifecycle_social --test notifications --test server --test signing_key --test verify_live_commit
124
125test *args:
126 @just test-unit
127 ./scripts/run-tests.sh {{args}}
128
129test-embedded *args:
130 @just test-unit
131 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 -E 'not binary(store_parity)' {{args}}
132
133test-one name:
134 ./scripts/run-tests.sh --test {{name}}
135
136infra-start:
137 ./scripts/test-infra.sh start
138infra-stop:
139 ./scripts/test-infra.sh stop
140infra-status:
141 ./scripts/test-infra.sh status
142
143clean:
144 cargo clean
145doc:
146 cargo doc --open
147db-create:
148 DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database create
149db-migrate:
150 DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx migrate run
151db-reset:
152 DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database drop -y
153 DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx database create
154 DATABASE_URL="postgres://postgres:postgres@localhost:5432/pds" sqlx migrate run
155podman-up:
156 podman compose up -d
157podman-down:
158 podman compose down
159podman-logs:
160 podman compose logs -f
161container-build:
162 podman build -t tranquil-pds:latest .
163 podman build -t tranquil-pds-frontend:latest ./frontend
164
165frontend-dev:
166 . ~/.deno/env && cd frontend && deno task dev
167frontend-build:
168 . ~/.deno/env && cd frontend && deno task build
169frontend-check:
170 . ~/.deno/env && cd frontend && deno task check
171frontend-clean:
172 rm -rf frontend/dist frontend/node_modules
173
174frontend-test *args:
175 . ~/.deno/env && cd frontend && VITEST=true deno task test:run {{args}}
176frontend-test-watch:
177 . ~/.deno/env && cd frontend && VITEST=true deno task test:watch
178frontend-test-ui:
179 . ~/.deno/env && cd frontend && VITEST=true deno task test:ui
180frontend-test-coverage:
181 . ~/.deno/env && cd frontend && VITEST=true deno task test:run --coverage
182
183build-all: frontend-build build