mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-21 13:41:15 +00:00
51b572108a
Captures the post-implementation autodev gates for AZ-484 multi-source tile storage: - Step 12 (Test-Spec Sync): added 7 AC rows (AZ-484 AC-1..AC-7) and a PT-07 NFR row to traceability-matrix.md; added PT-07 scenario to performance-tests.md. - Step 13 (Update Docs): refreshed data_model.md (tiles columns + indexes + selection rule + UPSERT contract + migrations 012/013), module-layout.md (Common/Enums section with L-001 guidance, DataAccess imports-from now lists 6 sites), 6 module / component docs to reflect the new repo signatures, source/captured_at fields, and Dapper enum bypass workaround. ripple_log_cycle1.md records zero out-of-scope ripple. - Step 14 (Security Audit): PASS_WITH_WARNINGS - 0 Critical, 0 High, 5 Medium, 5 Low. AZ-484 itself added zero new findings. Hardening items (Postgres default creds, .env in build context, GMaps key rotation, ASP.NET Core 8.0.21 -> 8.0.25, rate limiter) recorded for separate tickets. - Step 15 (Performance Test): all PT-01..PT-07 scenarios Unverified (non-blocking); PT-07 baseline-comparison harness deferred to a leftover for next cycle. - Step 16 (Deploy): cycle deploy report covering migration safety, rollback path, post-deploy verification, security caveats. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
2.8 KiB
Markdown
53 lines
2.8 KiB
Markdown
# Performance Test Scenarios
|
||
|
||
## PT-01: Single Tile Download Latency
|
||
|
||
**Trigger**: GET /api/satellite/tiles/latlon (uncached tile)
|
||
**Load**: 1 request
|
||
**Expected**: Response within 30s (includes Google Maps round-trip)
|
||
**Pass criterion**: Response time < 30000ms; HTTP 200
|
||
|
||
## PT-02: Cached Tile Retrieval Latency
|
||
|
||
**Trigger**: GET /api/satellite/tiles/latlon (cached tile)
|
||
**Load**: 1 request
|
||
**Expected**: Response within 500ms (DB lookup + response)
|
||
**Pass criterion**: Response time < 500ms; HTTP 200
|
||
|
||
## PT-03: Region Processing Throughput (200m)
|
||
|
||
**Trigger**: POST /api/satellite/request with 200m region
|
||
**Load**: 1 region
|
||
**Expected**: Complete processing within 60s
|
||
**Pass criterion**: status="completed" within 60s; tiles downloaded > 0
|
||
|
||
## PT-04: Region Processing Throughput (500m with stitch)
|
||
|
||
**Trigger**: POST /api/satellite/request with 500m region + stitch
|
||
**Load**: 1 region
|
||
**Expected**: Complete processing within 120s (more tiles + stitching)
|
||
**Pass criterion**: status="completed" within 120s; stitched image exists
|
||
|
||
## PT-05: Concurrent Region Requests
|
||
|
||
**Trigger**: 5 simultaneous POST /api/satellite/request (different coordinates)
|
||
**Load**: 5 concurrent requests
|
||
**Expected**: All queued immediately; all complete within 5 minutes
|
||
**Pass criterion**: All 5 regions reach status="completed"; queue does not reject
|
||
|
||
## PT-06: Route Point Interpolation Speed
|
||
|
||
**Trigger**: POST /api/satellite/route with 20 points
|
||
**Load**: 1 request
|
||
**Expected**: Route created (with interpolation) within 5s
|
||
**Pass criterion**: HTTP 200 response within 5000ms; totalPoints > 20
|
||
|
||
## PT-07: GetTilesByRegionAsync Latency Post-AZ-484 (multi-source baseline)
|
||
|
||
**Trigger**: TileRepository.GetTilesByRegionAsync exercised via POST /api/satellite/request (200m region, zoom 18) against a tiles table seeded with the pre-AZ-484 data shape (single-source rows backfilled to source='google_maps').
|
||
**Load**: 1 request, repeated 20 times to get a stable distribution.
|
||
**Expected**: 95th-percentile latency must not regress more than 10% vs the pre-AZ-484 baseline measured against PT-03 / PT-04. The new 5-column unique index `idx_tiles_unique_location_source` covers the same `(latitude, longitude, tile_zoom, tile_size_meters)` filter columns as the pre-AZ-484 4-column index, so no regression is expected.
|
||
**Pass criterion**: p95(GetTilesByRegionAsync) ≤ 1.10 × pre-AZ-484 p95 baseline.
|
||
**Source**: AZ-484 NFR (Performance) — `_docs/02_tasks/done/AZ-484_multi_source_tile_storage.md` § Non-Functional Requirements.
|
||
**Note**: This NFR is recorded for tracking. Active enforcement (running PT-07 against a real workload and comparing) is deferred to autodev Step 15 (Performance Test) when a baseline run is available. Until then, the integration test `MostRecentAcrossSourcesSelection_AZ484_AC2` provides correctness coverage for the new query shape.
|