mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 21:41:09 +02:00
Rename the flashcard/deck management app from ManaDeck to Cards: - Directory: apps/manadeck → apps/cards, packages/manadeck-database → packages/cards-database - Packages: @manadeck/* → @cards/*, @manacore/manadeck-database → @manacore/cards-database - Domain: manadeck.mana.how → cards.mana.how - Storage: manadeck-storage → cards-storage - Database: manadeck → cards - All shared packages, infra configs, services, i18n, and docs updated - 244 files changed, zero remaining manadeck references Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| README.md | ||
| sync-load.js | ||
mana-sync Load Tests
k6 load tests for the sync server (HTTP sync endpoints + WebSocket connections).
Prerequisites
# Install k6
brew install grafana/tap/k6
# Start infrastructure
pnpm docker:up
pnpm dev:auth
pnpm dev:sync
Get Auth Token
TOKEN=$(curl -s -X POST http://localhost:3001/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"password"}' | jq -r '.token')
Run Tests
Smoke Test (10 VUs, 30s)
k6 run --vus 10 --duration 30s \
--env AUTH_TOKEN=$TOKEN \
test/load/sync-load.js
Medium Load (100 VUs, 2min)
k6 run --vus 100 --duration 2m \
--env AUTH_TOKEN=$TOKEN \
test/load/sync-load.js
Stress Test (500 VUs, 5min) — ramp scenario
k6 run --env AUTH_TOKEN=$TOKEN test/load/sync-load.js
WebSocket Only (up to 1000 connections)
k6 run --env SCENARIO=websocket --env AUTH_TOKEN=$TOKEN test/load/sync-load.js
Sync Throughput (200 req/s constant)
k6 run --env SCENARIO=sync --env AUTH_TOKEN=$TOKEN test/load/sync-load.js
Thresholds
| Metric | Target |
|---|---|
| HTTP p95 | < 500ms |
| Sync push p95 | < 300ms |
| Sync pull p95 | < 200ms |
| Error rate | < 1% |
Custom Metrics
sync_push_duration— POST /sync/{appId} latencysync_pull_duration— GET /sync/{appId}/pull latencyws_connect_duration— WebSocket handshake + auth timesync_conflicts— Number of LWW conflicts detectedsync_errors— Error rate across all sync operations